mirror of
https://github.com/fltk/fltk.git
synced 2025-12-10 04:31:10 +08:00
The previous version didn't delete the docs before the source files
were packed which resulted in too big release tarballs.
Notes:
(1) Release 1.4.1 has been updated (files were replaced) so all
further downloads are not affected.
(2) The git commits on tag release-1.4.1 do not include this commit
but this is OK. This will be in the next release.
(3) makesrcdist itself is not packed in the source tarballs anyway.
302 lines
9.2 KiB
Bash
Executable File
302 lines
9.2 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> <doc-dir>
|
|
#
|
|
# <version> : Use a version number as argument, e.g. "1.3.3" or "1.3.4rc2".
|
|
# This can be used for local testing.
|
|
#
|
|
# <doc-dir> : This *MUST* be a CMake build folder where all the
|
|
# documentation (HTML, PDF, Fluid-HTML, and Fluid-PDF) were built.
|
|
# The directory name can be relative to the FLTK root or absolute.
|
|
#
|
|
# Note: the release tarballs will be created from the current
|
|
# 'HEAD' revision of your local Git repository. Make sure that
|
|
# you committed all changes.
|
|
#
|
|
# (3) Create distribution tarballs (final):
|
|
#
|
|
# ./makesrcdist <version> <doc-dir> tag
|
|
#
|
|
# Same as (2), but create Git tag with version number.
|
|
# Enter "tag" (verbatim) as 3rd 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 <origin> is your remote repository, e.g. "origin" or "upstream"
|
|
# and <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
|
|
|
|
# Default version numbers from commandline, overwritten later for snapshots
|
|
version="$1"
|
|
fileversion="$1"
|
|
|
|
# Set DOC_DIR for full source distribution with documentation.
|
|
# This is not used for snapshots, see comments above.
|
|
|
|
DOC_DIR="$2"
|
|
|
|
# These are the release and snapshot download URL's currently in use.
|
|
# The 'DOWNLOAD' URL is on GitHub since FLTK 1.4.1,
|
|
# the 'SNAPSHOT' URL is on fltk.org.
|
|
|
|
DOWNLOAD="https://github.com/fltk/fltk/releases/download" # /release-$1/fltk-$1-source.tar.gz
|
|
SNAPSHOT='https://www.fltk.org/pub/fltk/snapshots'
|
|
|
|
DATE="`date +'%Y%m%d'`"
|
|
|
|
GIT_REVISION=$(git rev-parse HEAD)
|
|
git_rev=$(git rev-parse --short=12 HEAD)
|
|
|
|
# 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)
|
|
# git_rev = short Git revision (12 chars)
|
|
|
|
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...
|
|
version="${VS}-${git_rev}"
|
|
fileversion="${VS}.x-${DATE}-$git_rev"
|
|
fileurl="$SNAPSHOT/fltk-$fileversion.tar.gz"
|
|
else
|
|
# DOC_DIR must be specified
|
|
if test $# = 1 ; then
|
|
echo "ERROR: doc-dir (2nd argument) must be specified"
|
|
exit
|
|
fi
|
|
# DOC_DIR must be a CMake build folder
|
|
if test ! -f $DOC_DIR/CMakeCache.txt ; then
|
|
echo "ERROR: doc-dir (2nd argument) must be a CMake build folder."
|
|
echo "Please generate all docs in this CMake build before distributing:"
|
|
echo " cd $DOC_DIR"
|
|
echo " make|ninja html pdf fluid_docs fluid_pdf"
|
|
exit
|
|
fi
|
|
if test ! -e "$DOC_DIR/documentation/html/"; then
|
|
echo "ERROR: Please generate the HTML documentation before distributing:"
|
|
echo " cd $DOC_DIR"
|
|
echo " make|ninja html pdf fluid_docs fluid_pdf"
|
|
exit
|
|
fi
|
|
if test ! -e "$DOC_DIR/documentation/fltk.pdf"; then
|
|
echo "ERROR: Please generate the PDF documentation before distributing:"
|
|
echo " cd $DOC_DIR"
|
|
echo " make|ninja pdf fluid_docs fluid_pdf"
|
|
exit
|
|
fi
|
|
if test ! -e "$DOC_DIR/fluid/documentation/fluid.pdf"; then
|
|
echo "ERROR: Please generate the fluid documentation before distributing:"
|
|
echo " cd $DOC_DIR"
|
|
echo " ninja fluid_docs fluid_pdf"
|
|
exit
|
|
fi
|
|
|
|
fileurl="$DOWNLOAD/release-$version/fltk-$fileversion-source.tar.gz"
|
|
|
|
if test "x$3" = "xtag"; then
|
|
echo "Creating Git tag 'release-$version' ..."
|
|
git tag -a -m "Release $version" release-$version || exit 1
|
|
fi
|
|
fi
|
|
|
|
# where to build the distribution tarballs and other files:
|
|
|
|
TEMP_DIR="/tmp/fltk-$version"
|
|
|
|
# subdirectory of $TEMP_DIR for documentation in their tarballs
|
|
#
|
|
# This resembles the directory structure of releases where documentation
|
|
# would likely be installed in "/usr/share/doc/fltk".
|
|
|
|
DOC_TEMPDIR="share/doc/fltk"
|
|
|
|
# Debug:
|
|
### echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
|
|
### echo "fltk_version = $fltk_version"
|
|
### echo "version = $version"
|
|
### echo "fileversion = $fileversion"
|
|
### echo "fileurl = $fileurl"
|
|
### echo "GIT_REVISION = $GIT_REVISION"
|
|
### echo "git_rev = $git_rev"
|
|
### echo "TEMP_DIR = $TEMP_DIR"
|
|
### echo "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
|
|
|
|
echo Exporting $fltk_version to $TEMP_DIR/...
|
|
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
|
|
|
|
mkdir -p $TEMP_DIR/$DOC_TEMPDIR/fluid
|
|
|
|
echo "Copying HTML and PDF documentation..."
|
|
cp -r $DOC_DIR/documentation/html $TEMP_DIR/$DOC_TEMPDIR/
|
|
cp $DOC_DIR/documentation/fltk.pdf $TEMP_DIR/$DOC_TEMPDIR/
|
|
|
|
echo "Copying FLUID HTML and PDF documentation..."
|
|
cp -r $DOC_DIR/fluid/documentation/html $TEMP_DIR/$DOC_TEMPDIR/fluid/
|
|
cp $DOC_DIR/fluid/documentation/fluid.pdf $TEMP_DIR/$DOC_TEMPDIR/
|
|
fi
|
|
|
|
echo Applying version number...
|
|
cd /tmp/fltk-$version
|
|
|
|
sed -e '1,$s/@FLTK_VERSION@/'$version'/' \
|
|
-e '1,$s#^Source:.*#Source: '$fileurl'#' \
|
|
<fltk.spec.in >fltk.spec
|
|
|
|
# Debug:
|
|
### echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
|
|
### echo "$ egrep --color -1 'Source:|$version|$git_rev' fltk.spec"
|
|
### echo "··································································"
|
|
### egrep --color -1 "Source:|$version|$git_rev" fltk.spec
|
|
### echo "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
|
|
|
|
# Write git revision file with full git revision
|
|
# which will be stored in the distribution tarball
|
|
|
|
echo Writing git revision file...
|
|
echo "$GIT_REVISION" > fltk_git_rev.dat
|
|
|
|
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/$DOC_TEMPDIR/html/
|
|
|
|
echo "Making PDF docs distribution..."
|
|
$TAR czf fltk-$fileversion-docs-pdf.tar.gz fltk-$version/$DOC_TEMPDIR/fltk.pdf
|
|
|
|
echo "Making Fluid HTML docs distribution..."
|
|
$TAR czf fltk-$fileversion-fluid-docs-html.tar.gz fltk-$version/$DOC_TEMPDIR/fluid/html/
|
|
|
|
echo "Making Fluid PDF docs distribution..."
|
|
$TAR czf fltk-$fileversion-fluid-docs-pdf.tar.gz fltk-$version/$DOC_TEMPDIR/fluid.pdf
|
|
|
|
fi
|
|
|
|
echo "Removing documentation..."
|
|
rm -rf fltk-$version/$DOC_TEMPDIR
|
|
|
|
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 releases.txt and sha256sums.txt
|
|
|
|
OUT="`pwd`/fltk-$fileversion-releases.txt"
|
|
SHA="`pwd`/fltk-$fileversion-sha256sums.txt"
|
|
|
|
echo
|
|
echo "Creating Release Info in $OUT and $SHA"
|
|
|
|
echo "" > $OUT
|
|
echo "github $fltk_version $fileversion" >> $OUT
|
|
echo "" >> $OUT
|
|
rm -f $SHA
|
|
touch $SHA
|
|
|
|
# make sure the order is source, html, pdf, fluid-html, fluid-pdf and gz, bz2
|
|
|
|
for f in source docs-html docs-pdf fluid-docs-html fluid-docs-pdf; do
|
|
for t in gz bz2; do
|
|
FILE="fltk-$fileversion-$f.tar.$t"
|
|
if [ -f $FILE ] ; then
|
|
|
|
# (a) releases file:
|
|
MD5=`md5sum $FILE | cut -f1 -d' '`
|
|
SIZ=`wc -c $FILE | cut -f1 -d' '`
|
|
echo "$MD5 $FILE $SIZ" >> $OUT
|
|
|
|
# (b) sha256sum file
|
|
sha256sum $FILE >> $SHA
|
|
fi
|
|
done
|
|
done
|
|
|
|
# finally add the sha256sum file (after it is complete) to the releases file
|
|
|
|
FILE="fltk-$fileversion-sha256sums.txt"
|
|
MD5=`md5sum $FILE | cut -f1 -d' '`
|
|
SIZ=`wc -c $FILE | cut -f1 -d' '`
|
|
echo "$MD5 $FILE $SIZ" >> $OUT
|
|
|
|
echo
|
|
echo "Done!"
|
|
echo
|
|
echo "================================================================================"
|
|
echo
|
|
echo "$OUT:"
|
|
echo
|
|
echo "--- copy the contents of this file to the top of data/releases.dat:"
|
|
cat $OUT
|
|
echo "--- end of file ---"
|
|
|
|
echo
|
|
echo "$SHA:"
|
|
echo
|
|
cat $SHA
|
|
|
|
if test "x$3" = "xtag"; then
|
|
echo
|
|
echo "================================================================================"
|
|
echo "Don't forget to push the Git tag if the result is OK"
|
|
echo "(assuming your remote Git repository is 'origin'):"
|
|
echo
|
|
echo "Use: \$ git push origin release-$version"
|
|
echo
|
|
echo "If test results are not OK you can delete the tag before pushing:"
|
|
echo
|
|
echo "$ git tag -d release-$version"
|
|
fi
|
|
|
|
echo
|
|
echo "================================================================================"
|
|
echo
|