hdf5/bin/release
Robb Matzke e4aae4fd9b [svn-r549] ./bin/h5vers
Fixed a bug that caused `h5vers -i' to fail with a usage
	message.  The new behavior is the same as `h5vers -i release'
	which increments the release number.

./bin/snapshot
	A shell script intended to be run nightly from cron which
	compares the current version of hdf5 against the previous
	version.  If there are differences it creates a tar file in an
	ftp directory, increments the hdf5 release number, and commits
	the changes back into the cvs repository.  The name of the ftp
	directory in which to place the release can be given on the
	command line (default /hdf3/ftp/pub/outgoing/hdf5/snapshots).
	The CVSROOT environment variable must be set.
1998-07-30 14:48:20 -05:00

115 lines
3.0 KiB
Bash
Executable File

#!/bin/sh
# 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
#
# 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' 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.
#
# Examples:
#
# $ release
# releases/hdf5-1.0.38.tar
#
# $ release gzip
# releases/hdf5-1.0.38.tar.gz
#
# $ release -d /tmp tar compress gzip bzip2
# /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
#
# Defaults
DEST=releases
VERS=`bin/h5vers`
test "$VERS" || exit 1
verbose=yes
# Command-line arguments
if [ "X$1" = "X-d" ]; then
DEST="$2"
shift
shift
fi
methods="$*"
if [ "X$methods" = "X" ]; then
methods=tar
fi
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 that all the files in MANIFEST exist and that (if this is a
# CVS checkout) that all the CVS-managed files appear in the
# MANIFEST.
test "$verbose" && echo " Checking manifest..." 1>&2
test -f MANIFEST || exit 1
for file in `cat MANIFEST`; do
if [ ! -f $file ]; then
echo "- $file"
fail=yes
fi
done
for cvs in `find . -type d -name CVS -print`; do
path=`echo $cvs |sed s+/CVS++`
for file in `cut -d/ -f2 $cvs/Entries`; do
if (grep $path/$file MANIFEST >/dev/null); then
:
else
echo "+ $path/$file"
fail=yes
fi
done
done
if [ "X$fail" = "Xyes" ]; then
cat 1>&2 <<EOF
The MANIFEST is out of date. Files marked with a minus sign (-) no
longer exist; files marked with a plus sign (+) are CVS-managed but do
not appear in the MANIFEST. Please remedy the situation and try again.
EOF
exit 1
fi
# Prepare the source tree for a release.
test -h ../hdf5-$VERS && rm ../hdf5-$VERS
ln -s `pwd` ../hdf5-$VERS || exit 1
mv Makefile ../Makefile.x 2>/dev/null #might fail
cp -p Makefile.dist Makefile
test "$verbose" && echo " Running tar..." 1>&2
(cd ..; tar cf x.tar `sed s+^.+hdf5-$VERS+ hdf5-$VERS/MANIFEST` || exit 1)
# Compress
for comp in $methods; do
case $comp in
tar)
cp -p ../x.tar $DEST/hdf5-$VERS.tar;;
compress)
test "$verbose" && echo " Running compress..." 1>&2
compress -c <../x.tar >$DEST/hdf5-$VERS.tar.Z;;
gzip)
test "$verbose" && echo " Running gzip..." 1>&2
gzip -9 <../x.tar >$DEST/hdf5-$VERS.tar.gz;;
bzip2)
test "$verbose" && echo " Running bzip2..." 1>&2
bzip2 -9 <../x.tar >$DEST/hdf5-$VERS.tar.gz;;
esac
done
# Remove temporary things
test -f ../Makefile.x && mv ../Makefile.x Makefile
rm -f ../hdf5-$VERS
rm -f ../x.tar
exit 0