fltk/makesrcdist
Albrecht Schlosser ef1c2d5b26 Fix README files and remove stale config.guess and config.sub
README.Unix.txt and README.Windows.txt (MinGW, MSYS) instructed to
execute `NOCONFIGURE=1 ./autogen.sh` which is no longer necessary
(a simple `autoconf` does the job).

Remove files misc/config.guess and misc/config.sub because they are
no longer needed: these files are now in th FLTK root directory
available. Remove all references to these files.

Fix .gitattributes accordingly. Also exclude the .github folder
from exports, for instance when creating distribution tarballs.
2021-11-24 15:01:45 +01:00

185 lines
5.0 KiB
Bash
Executable File

#!/bin/sh
#
# makesrcdist - make a distribution of FLTK.
#
# There are 3 different modes of operation, dependent on commandline arguments:
#
# (1) Create snapshot:
#
# makesrcdist [snapshot]
#
# Use no arguments or "snapshot" (verbatim).
#
# (2) Create distribution tarballs for test and verification:
#
# makesrcdist <version>
#
# Use a version number as argument, e.g. "1.3.3" or "1.3.4rc2".
# This can be used for local testing.
#
# Note: the release tarballs will be created from the current
# 'HEAD' revision of your local Git repository.
#
# (3) Create distribution tarballs (final):
#
# makesrcdist <version> tag
#
# Same as (2), but create Git tag with version number.
# Enter "tag" (verbatim) as 2nd argument.
# This will create the Git tag "release-<version>" for the
# current revision in the (local) FLTK Git repository and export the
# FLTK sources from this tag for creation of distribution files.
#
# Note: You need to 'git push' the Git tag manually when you
# are satisfied with the result. You may use:
# $ git push origin release-<version>
# where '<version>' is the version number (argument #1)
#
# Note: define FLTK_TAR if you want to use a different compatible tar
# command than "tar", e.g. to use "gtar" (bash syntax):
# $ export FLTK_TAR="gtar"
#
TAR="tar"
if test "x$FLTK_TAR" != "x"; then
TAR="$FLTK_TAR"
fi
# These are the release and snapshot download URL's currently in use:
DOWNLOAD='https://www.fltk.org/pub/fltk'
SNAPSHOT='https://www.fltk.org/pub/fltk/snapshots'
DATE="`date +'%Y%m%d'`"
# VS = short version number ('major.minor'), for instance '1.4'.
# Note: VS is used only for snapshot generation
# fltk_version = full version number w/o 'rcN' (from file fltk_version.dat)
fltk_version="`cat fltk_version.dat`"
VS="`echo $fltk_version | cut -f 1-2 -d '.'`"
echo "Getting distribution..."
if test $# = 0 -o "x$1" = "xsnapshot"; then
echo Getting snapshot revision...
rev="`git rev-parse --short=8 HEAD`"
version="${VS}-${rev}"
fileversion="${VS}.x-${DATE}-$rev"
fileurl="$SNAPSHOT/fltk-$fileversion.tar.gz"
else
if test ! -e "documentation/html/"; then
echo "ERROR: Please generate the HTML documentation before distributing:"
echo " autoconf"
echo " ./configure"
echo " cd documentation; make dist"
exit
fi
if test ! -e "documentation/fltk.pdf"; then
echo "ERROR: Please generate the PDF documentation before distributing:"
echo " autoconf"
echo " ./configure"
echo " cd documentation; make dist"
exit
fi
rev="1"
version=$1
fileversion=$1
fileurl="$DOWNLOAD/$version/fltk-$fileversion-source.tar.gz"
if test "x$2" = "xtag"; then
echo "Creating Git tag 'release-$version' ..."
git tag -a -m "Release $version" release-$version || exit 1
fi
fi
# Debug:
# echo "fltk_version = $fltk_version"
# echo "version = $version"
# echo "fileversion = $fileversion"
# echo "fileurl = $fileurl"
echo Exporting $fltk_version to /tmp/fltk-$version/...
rm -rf /tmp/fltk-$version
mkdir /tmp/fltk-$version
git archive --format=tar HEAD | $TAR -C /tmp/fltk-$version -x --
if test $# != 0 -a "x$1" != "xsnapshot"; then
echo "Copying HTML and PDF documentation..."
cp -r documentation/html /tmp/fltk-$version/documentation/
cp documentation/fltk.pdf /tmp/fltk-$version/documentation/
fi
echo Applying version number...
cd /tmp/fltk-$version
sed -e '1,$s/@VERSION@/'$version'/' \
-e '1,$s/@RELEASE@/'$rev'/' \
-e '1,$s#^Source:.*#Source: '$fileurl'#' \
<fltk.spec.in >fltk.spec
echo Creating configure script...
autoconf -f
echo Cleaning developer files...
rm -rf OpenGL autom4te* bc5 config forms glut images packages themes
cd ..
if test $# != 0 -a "x$1" != "xsnapshot"; then
echo "Making HTML docs distribution..."
$TAR czf fltk-$fileversion-docs-html.tar.gz fltk-$version/documentation/html/
echo "Making PDF docs distribution..."
$TAR czf fltk-$fileversion-docs-pdf.tar.gz fltk-$version/documentation/fltk.pdf
fi
echo "Removing documentation..."
rm -rf fltk-$version/documentation/html/
rm -f fltk-$version/documentation/fltk.pdf
echo "Making UNIX (.tar.gz) distribution..."
$TAR czf fltk-$fileversion-source.tar.gz fltk-$version
echo "Making UNIX (.tar.bz2) distribution..."
$TAR cjf fltk-$fileversion-source.tar.bz2 fltk-$version
# echo "Making Windows (.zip) distribution..."
# rm -f fltk-$fileversion-source.zip
# zip -r9 fltk-$fileversion-source.zip fltk-$version
echo "Removing distribution directory..."
rm -rf fltk-$version
# Create MD5 sums
out="`pwd`/fltk-$fileversion-md5sums.txt"
echo "Creating MD5 sums in $out"
rm -f $out
touch $out
# make sure the order is source - html - pdf
for f in source docs-html docs-pdf; do
if [ -f fltk-$fileversion-$f.tar.bz2 ] ; then
md5sum fltk-$fileversion-$f.tar.bz2 >> $out
fi
if [ -f fltk-$fileversion-$f.tar.gz ] ; then
md5sum fltk-$fileversion-$f.tar.gz >> $out
fi
done
sed -e"s# # $fltk_version fltk/$fltk_version/#" -i $out
if test "x$2" = "xtag"; then
echo ""
echo "Don't forget to push the Git tag"
echo "(assuming your remote Git repository is 'origin'):"
echo ""
echo "Use: \$ git push origin release-$version"
echo ""
fi
echo "Done!"