mirror of
https://github.com/HDFGroup/hdf5.git
synced 2024-12-03 02:32:04 +08:00
118 lines
3.1 KiB
Bash
Executable File
118 lines
3.1 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
|
|
echo "This is hdf5-$VERS released on `date`" >README.x
|
|
tail -n +2 <README >>README.x
|
|
mv README.x README
|
|
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
|