[svn-r25096] Bug: HDFFV-8433

Need to unify Windows release process (zip file) and Unix release process (bin/release-> tarfile)

Solution:
Added a new option (zip) to generate Windows zip file from the release tarball.

Tested: by hand running "bin/release ... gzip zip" to verify zip file looks right.
Allen and Dana then confirmed the zip file can be used to build and test HDF5
library without error.
This commit is contained in:
Albert Cheng 2014-04-24 16:38:54 -05:00
parent 3bdb116942
commit ead005cc27
2 changed files with 73 additions and 1 deletions

View File

@ -56,6 +56,7 @@ for compressing the resulting tar archive (if none are given then
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.
zip -- convert all text files to DOS style and form a zip file for Windows use.
md5 -- produce a md5 checksum in addition to the archive.
doc -- produce the latest doc tree in addition to the archive.
@ -79,6 +80,73 @@ EOF
}
# Function name: tar2zip
# Convert the release tarball to a Windows zipball.
#
# Programmer: Albert Cheng
# Creation date: 2014-04-23
#
# Modifications
#
# Steps:
# 1. untar the tarball in a temporay directory;
# Note: do this in a temporary directory to avoid changing
# the original source directory which maybe around.
# 2. convert all its text files to DOS (LF-CR) style;
# 3. form a zip file which is usable by Windows users.
#
# Parameters:
# $1 version
# $2 release tarball
# $3 output zipball file name
#
# Returns 0 if successful; 1 otherwise
#
tar2zip()
{
if [ $# -ne 3 ]; then
echo "usage: tar2zip <tarfilename> <zipfilename>"
return 1
fi
tmpdir=/tmp/tmpdir$$
mkdir -p $tmpdir
version=$1
tarfile=$2
zipfile=$3
# step 1: untar tarball in tmpdir
(cd $tmpdir; tar xf -) < $tarfile
# sanity check
if [ ! -d $tmpdir/$version ]; then
echo "untar did not create $tmp/$version source dir"
# cleanup
rm -rf $tmpdir
return 1
fi
# step 2: convert text files
# There maybe a simpler way to do this.
# options used in unix2dos:
# -k Keep the date stamp
# -q quiet mode
# grep redirect output to /dev/null because -q or -s are not portable.
find $tmpdir/$version | \
while read inf; do \
if file $inf | grep "$inf\: .*text" > /dev/null 2>&1 ; then \
unix2dos -q -k $inf; \
fi\
done
# step 3: make zipball
# -9 maximum compression
# -y Store symbolic links as such in the zip archive
# -r recursive
# -q quiet
(cd $tmpdir; zip -9 -y -r -q $version.zip $version)
mv $tmpdir/$version.zip $zipfile
# cleanup
rm -rf $tmpdir
}
# This command must be run at the top level of the hdf5 source directory.
# Verify this requirement.
if [ ! \( -f configure -a -f bin/release \) ]; then
@ -237,6 +305,10 @@ for comp in $methods; do
test "$verbose" && echo " Running bzip2..." 1>&2
bzip2 -9 <$tmpdir/$HDF5_VERS.tar >$DEST/$HDF5_VERS.tar.bz2
;;
zip)
test "$verbose" && echo " Creating zip ball..." 1>&2
tar2zip $HDF5_VERS $tmpdir/$HDF5_VERS.tar $DEST/$HDF5_VERS.zip 1>&2
;;
md5)
test "$verbose" && echo " Creating checksum..." 1>&2
(cd $tmpdir; md5sum $HDF5_VERS.tar ) > $DEST/$HDF5_VERS.tar.md5

View File

@ -68,7 +68,7 @@ ZLIB_default=
ZLIB=$ZLIB_default
# What compression methods to use? (md5 does checksum).
METHODS="gzip bzip2 md5 doc"
METHODS="gzip zip bzip2 md5 doc"
# Use User's MAKE if set. Else use generic make.
MAKE=${MAKE:-make}