mirror of
https://github.com/HDFGroup/hdf5.git
synced 2024-11-27 02:10:55 +08:00
c9d2d8f74c
Feature - md5 checksum Description: Added md5 checksumming to snapshot releases. When bin/release is run, it will by default create a .tar archive and a .md5 checksum of that archive in the destination directory. Solution: md5 is now a method in bin/release, along with the various ways to compress hdf5. The checksum is always of the .tar archive, even when other forms of compression are used (this is so that a given release always has only one checksum, for simplicity). Platforms tested: mir (change to bin/release only) Misc. update:
242 lines
6.0 KiB
Bash
Executable File
242 lines
6.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
|
|
#
|
|
# --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 <dir>] [-h] <methods> ...
|
|
-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'
|
|
|
|
# Restore previous Version information
|
|
RESTORE_VERSION()
|
|
{
|
|
if [ X-${VERS_OLD} != X- ]; then
|
|
echo restoring version information back to $VERS_OLD
|
|
bin/h5vers -s $VERS_OLD
|
|
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
|
|
|
|
# setup restoration in case of abort.
|
|
trap RESTORE_VERSION 0
|
|
|
|
if [ X$pmode = Xyes ]; then
|
|
VERS_OLD=$VERS
|
|
# 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=/tmp/H5_MANIFEST.$$
|
|
grep '^\.' MANIFEST | grep -v _DO_NOT_DISTRIBUTE_ >$MANIFEST
|
|
|
|
# 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
|
|
|
|
# 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 ..; \
|
|
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 ../$HDF5_VERS.tar $DEST/$HDF5_VERS.tar;;
|
|
compress)
|
|
test "$verbose" && echo " Running compress..." 1>&2
|
|
compress -c <../$HDF5_VERS.tar >$DEST/$HDF5_VERS.tar.Z;;
|
|
gzip)
|
|
test "$verbose" && echo " Running gzip..." 1>&2
|
|
gzip -9 <../$HDF5_VERS.tar >$DEST/$HDF5_VERS.tar.gz;;
|
|
bzip2)
|
|
test "$verbose" && echo " Running bzip2..." 1>&2
|
|
bzip2 -9 <../$HDF5_VERS.tar >$DEST/$HDF5_VERS.tar.bz2;;
|
|
md5)
|
|
test "$verbose" && echo " Creating checksum..." 1>&2
|
|
( cd .. && md5sum $HDF5_VERS.tar >$HDF5_VERS.tar.md5 )
|
|
cp -p ../$HDF5_VERS.tar.md5 $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
|
|
|
|
# Remove temporary things
|
|
test -f ../Makefile.x && mv ../Makefile.x Makefile
|
|
rm -f $MANIFEST
|
|
rm -f ../$HDF5_VERS
|
|
rm -f ../$HDF5_VERS.tar
|
|
rm -f ../$HDF5_VERS.tar.md5
|
|
|
|
# Restore OLD version information, then no need for trap.
|
|
if [ X$pmode = Xyes ]; then
|
|
RESTORE_VERSION
|
|
trap 0
|
|
fi
|
|
|
|
exit 0
|