#!/bin/sh # # Copyright by the Board of Trustees of the University of Illinois. # All rights reserved. # # This file is part of HDF5. The full HDF5 copyright notice, including # terms governing use, modification, and redistribution, is contained in # the files COPYING and Copyright.html. COPYING can be found at the root # of the source code distribution tree; Copyright.html can be found at the # root level of an installed copy of the electronic HDF5 document set and # is linked from the top-level documents page. It can also be found at # http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have # access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. # # Make a release of hdf5. The command-line switches are: # # -d DIR The name of the directory where the releas(es) should be # placed. By default, the directory is ./releases # # --nocheck Ignore errors in MANIFEST file. # # The other command-line options are the names of the programs to use # for compressing the resulting tar archive (if none are given then # `tar md5' is assumed): # # tar -- use tar and don't do any compressing. # compress -- use compress and append `.Z' to the output name. # gzip -- use gzip with `-9' and append `.gz' to the output name. # bzip2 -- use bzip2 with `-9' and append `.bz2' to the output name. # md5 -- produce a md5 checksum in addition to the archive. # # Examples: # # $ release # releases/hdf5-1.0.38.tar # releases/hdf5-1.0.38.tar.md5 # # $ release gzip # releases/hdf5-1.0.38.tar.gz # # $ release -d /tmp tar compress gzip bzip2 md5 # /tmp/hdf5-1.0.38.tar # /tmp/hdf5-1.0.38.tar.Z # /tmp/hdf5-1.0.38.tar.gz # /tmp/hdf5-1.0.38.tar.bz2 # /tmp/hdf5-1.0.38.tar.md5 # # Modifications # Robb Matzke, 1999-07-16 # The SunOS 5.6 sed *must* have slashes as delimiters. I changed things like # `sed s+/CVS++' to `sed 's/\/CVS//' # # Albert Cheng, 1999-10-26 # Moved the MANIFEST checking to a separate command file so that # it can be invoked individually. # Function definitions # # Print Usage page USAGE() { cat << EOF Usage: $0 [--nocheck] [-d ] [-h] ... -d DIR The name of the directory where the releas(es) should be placed. By default, the directory is ./releases --nocheck Ignore errors in MANIFEST file. --private Make a private release with today's date in version information. The other command-line options are the names of the programs to use for compressing the resulting tar archive (if none are given then "tar md5" is assumed): tar -- use tar and don't do any compressing. compress -- use compress and append ".Z" to the output name. gzip -- use gzip with "-9" and append ".gz" to the output name. bzip2 -- use bzip2 with "-9" and append ".bz2" to the output name. md5 -- produce a md5 checksum in addition to the archive. Examples: $ release releases/hdf5-1.0.38.tar releases/hdf5-1.0.38.tar.md5 $ release gzip releases/hdf5-1.0.38.tar.gz $ release -d /tmp tar compress gzip bzip2 md5 /tmp/hdf5-1.0.38.tar /tmp/hdf5-1.0.38.tar.Z /tmp/hdf5-1.0.38.tar.gz /tmp/hdf5-1.0.38.tar.bz2 /tmp/hdf5-1.0.38.tar.md5 EOF } # Defaults DEST=releases VERS=`perl bin/h5vers` VERS_OLD= test "$VERS" || exit 1 verbose=yes check=yes today=`date +%Y%m%d` pmode='no' tmpdir="../#release_tmp.$$" # tmp work directory # Restore previous Version information RESTORE_VERSION() { if [ X-${VERS_OLD} != X- ]; then echo restoring version information back to $VERS_OLD rm -f config/lt_vers.am cp $tmpdir/lt_vers.am config/lt_vers.am bin/h5vers -s $VERS_OLD > vers_out VERS_OLD= fi } # Command-line arguments while [ -n "$1" ]; do arg=$1 shift case "$arg" in -d) DEST=$1 shift ;; --nocheck) check=no ;; -h) USAGE exit 0 ;; --private) pmode=yes ;; -*) echo "Unknown switch: $arg" 1>&2 USAGE exit 1 ;; *) methods="$methods $arg" ;; esac done # Default methods are tar and md5 if [ "X$methods" = "X" ]; then methods="tar md5" fi # Create the temporay work directory. if mkdir $tmpdir; then echo "temporary work directory for release. "\ "Can be deleted after release completes." > $tmpdir/READEME else echo "Failed to mkdir tmpdir($tmpdir)" exit 1 fi # setup restoration in case of abort. trap RESTORE_VERSION 0 if [ X$pmode = Xyes ]; then VERS_OLD=$VERS # Copy old version of config/lt_vers.am, since it's hard to # "undo" changes to it. cp config/lt_vers.am $tmpdir # Set version information to m.n.r-of$today. # (h5vers does not correctly handle just m.n.r-$today.) VERS=`echo $VERS | sed -e s/-.*//`-of$today echo Private release of $VERS bin/h5vers -s $VERS fi # Store hdf5-$VERS ("hdf5-1.7.51", e.g.) to a variable to avoid typos HDF5_VERS=hdf5-$VERS test "$verbose" && echo "Releasing $HDF5_VERS to $DEST" 1>&2 if [ ! -d $DEST ]; then echo " Destination directory $DEST does not exist" 1>&2 exit 1 fi # Check the validity of the MANIFEST file. bin/chkmanifest || fail=yes if [ "X$fail" = "Xyes" ]; then if [ $check = yes ]; then exit 1 else echo "Continuing anyway..." fi fi # Create a manifest that contains only files for distribution. MANIFEST=$tmpdir/H5_MANIFEST grep '^\.' MANIFEST | grep -v _DO_NOT_DISTRIBUTE_ >$MANIFEST # Prepare the source tree for a release. ln -s `pwd` $tmpdir/$HDF5_VERS || exit 1 mv Makefile $tmpdir/Makefile.x 2>/dev/null #might fail cp -p Makefile.dist Makefile # Update README.txt and release_docs/RELEASE.txt with release information. for f in README.txt release_docs/RELEASE.txt; do echo "HDF5 version $VERS released on `date`" >$f.x tail +2l $f >>$f.x mv $f.x $f # Make sure new files are of the right access mode chmod 644 $f done # Create the tar file test "$verbose" && echo " Running tar..." 1>&2 ( \ cd $tmpdir; \ tar cf $HDF5_VERS.tar $HDF5_VERS/Makefile \ `sed 's/^\.\//hdf5-'$VERS'\//' $MANIFEST` || exit 1 \ ) # Compress for comp in $methods; do case $comp in tar) cp -p $tmpdir/$HDF5_VERS.tar $DEST/$HDF5_VERS.tar ;; compress) test "$verbose" && echo " Running compress..." 1>&2 compress -c <$tmpdir/$HDF5_VERS.tar >$DEST/$HDF5_VERS.tar.Z ;; gzip) test "$verbose" && echo " Running gzip..." 1>&2 gzip -9 <$tmpdir/$HDF5_VERS.tar >$DEST/$HDF5_VERS.tar.gz ;; bzip2) test "$verbose" && echo " Running bzip2..." 1>&2 bzip2 -9 <$tmpdir/$HDF5_VERS.tar >$DEST/$HDF5_VERS.tar.bz2 ;; md5) test "$verbose" && echo " Creating checksum..." 1>&2 (cd $tmpdir; md5sum $HDF5_VERS.tar ) > $DEST/$HDF5_VERS.tar.md5 ;; esac done # Copy the RELEASE.txt to the release area. cp release_docs/RELEASE.txt $DEST/$HDF5_VERS-RELEASE.txt # Restore previous Makefile if existed. test -f $tmpdir/Makefile.x && mv $tmpdir/Makefile.x Makefile # Restore OLD version information, then no need for trap. if [ X$pmode = Xyes ]; then RESTORE_VERSION trap 0 fi # Remove temporary things #rm -rf $tmpdir exit 0