#!/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 # # 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 tag # # Same as (2), but create Git tag with version number. # Enter "tag" (verbatim) as 2nd argument. # This will create the Git tag "release-" 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- # where '' 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 VERSION) fltk_version="`cat VERSION`" VS="`cat VERSION | sed -e's/\([0-9]*\.[0-9]*\).*/\1/'`" 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 echo Creating configure script... autoconf -f echo Creating config.guess and config.sub \(ignore any other errors\)... automake --add-missing --copy 2>/dev/null 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!"