mirror of
https://github.com/HDFGroup/hdf5.git
synced 2024-11-27 02:10:55 +08:00
679 lines
23 KiB
Bash
Executable File
679 lines
23 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# Copyright by The HDF Group.
|
|
# 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 COPYING file, which can be found at the root of the source code
|
|
# distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases.
|
|
# If you do not have access to either file, you may request a copy from
|
|
# help@hdfgroup.org.
|
|
#
|
|
|
|
# Make a release of hdf5.
|
|
#
|
|
# Programmer: Robb Matzke
|
|
# Creation date: on or before 1998-01-29.
|
|
#
|
|
# 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.
|
|
#
|
|
# Albert Cheng, 2004-08-14
|
|
# Added the --private option.
|
|
#
|
|
# James Laird, 2005-09-07
|
|
# Added the md5 method.
|
|
|
|
# Function definitions
|
|
#
|
|
# Print Usage page
|
|
USAGE()
|
|
{
|
|
cat << EOF
|
|
Usage: $0 -d <dir> [--docver BRANCHNAME] [-h] [--nocheck] [--private] <methods> ...
|
|
-d DIR The name of the directory where the releas(es) should be
|
|
placed.
|
|
--docver BRANCHNAME This is added for 1.8 and beyond to get the correct
|
|
version of documentation files from the hdf5docs
|
|
repository. BRANCHNAME for v1.8 should be hdf5_1_8.
|
|
-h print the help page.
|
|
--nocheck Ignore errors in MANIFEST file.
|
|
--private Make a private release with today's date in version information.
|
|
|
|
This must be run at the top level of the source directory.
|
|
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.
|
|
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.
|
|
cmake-tgz -- create a tar file using the gzip default level with a build-unix.sh
|
|
command file and all other CMake files needed to build HDF5 source
|
|
using CMake on unix machines.
|
|
cmake-zip -- convert all text files to DOS style and create a zip file inluding cmake
|
|
scripts and .bat files to build HDF5 source using CMake on Windows.
|
|
hpc-cmake-tgz
|
|
-- create a tar file using the gzip default level with a build-unix.sh
|
|
command file and all other CMake files needed to build HDF5 source
|
|
using CMake on unix machines, with HDF5options.cmake files for serial
|
|
and parallel builds on machines requiring batch jobs to run tests.
|
|
The default is for parallel build, with serial only build by changing
|
|
the HDF5options.cmake symlink to ser-HDF5options.cmake. More
|
|
information is available in the README_HPC file.
|
|
doc -- produce the latest doc tree in addition to the archive.
|
|
|
|
An md5 checksum is produced for each archive created and stored in the md5 file.
|
|
|
|
Examples:
|
|
|
|
$ bin/release -d /tmp
|
|
/tmp/hdf5-1.8.13-RELEASE.txt
|
|
/tmp/hdf5-1.8.13.md5
|
|
/tmp/hdf5-1.8.13.tar
|
|
|
|
$ bin/release -d /tmp gzip
|
|
/tmp/hdf5-1.8.13-RELEASE.txt
|
|
/tmp/hdf5-1.8.13.md5
|
|
/tmp/hdf5-1.8.13.tar.gz
|
|
|
|
$ bin/release -d /tmp tar gzip zip
|
|
/tmp/hdf5-1.8.13-RELEASE.txt
|
|
/tmp/hdf5-1.8.13.md5
|
|
/tmp/hdf5-1.8.13.tar
|
|
/tmp/hdf5-1.8.13.tar.gz
|
|
/tmp/hdf5-1.8.13.tar.zip
|
|
|
|
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 temporary directory;
|
|
# Note: do this in a temporary directory to avoid changing
|
|
# the original source directory which may be 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
|
|
ztmpdir=/tmp/ztmpdir$$
|
|
mkdir -p $ztmpdir
|
|
version=$1
|
|
tarfile=$2
|
|
zipfile=$3
|
|
|
|
# step 1: untar tarball in ztmpdir
|
|
(cd $ztmpdir; tar xf -) < $tarfile
|
|
# sanity check
|
|
if [ ! -d $ztmpdir/$version ]; then
|
|
echo "untar did not create $ztmpdir/$version source dir"
|
|
# cleanup
|
|
rm -rf $ztmpdir
|
|
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 $ztmpdir/$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 $ztmpdir; zip -9 -y -r -q $version.zip $version)
|
|
mv $ztmpdir/$version.zip $zipfile
|
|
|
|
# cleanup
|
|
rm -rf $ztmpdir
|
|
}
|
|
|
|
# Function name: tar2cmakezip
|
|
# Convert the release tarball to a Windows zipball with files to run CMake build.
|
|
#
|
|
# Programmer: Larry Knox
|
|
# Creation date: 2017-02-20
|
|
#
|
|
# Modifications
|
|
#
|
|
# Steps:
|
|
# 1. untar the tarball in a temporary directory;
|
|
# Note: do this in a temporary directory to avoid changing
|
|
# the original source directory which may be around.
|
|
# 2. add build-unix.sh script.
|
|
# 3. add SZIP.tar.gz, ZLib.tar.gz and cmake files to top level directory.
|
|
# 4. create gzipped tar file with these contents:
|
|
# build-unix.sh script
|
|
# hdf5-<version> source code directory extracted from tar file
|
|
# CTestScript.cmake cmake file copied from <hdf5 source code>/config/cmake/scripts
|
|
# HDF5config.cmake cmake file copied from <hdf5 source code>/config/cmake/scripts
|
|
# HDF5options.cmake cmake file copied from <hdf5 source code>/config/cmake/scripts
|
|
# SZip.tar.gz copied from /mnt/scr1/pre-release/hdf5/CMake
|
|
# ZLib.tar.gz copied from /mnt/scr1/pre-release/hdf5/CMake
|
|
|
|
|
|
# Parameters:
|
|
# $1 version
|
|
# $2 release tarball
|
|
# $3 output zipball file name
|
|
#
|
|
# Returns 0 if successful; 1 otherwise
|
|
#
|
|
# need function to create another temporary directory, extract the
|
|
# $tmpdir/$HDF5_VERS.tar into it, create build-VS*.bat files,
|
|
# add CTestScript.cmake, HDF5config.cmake, SZIP.tar.gz
|
|
# ZLib.tar.gz, HDF5 examples, and then zip it.
|
|
tar2cmakezip()
|
|
{
|
|
if [ $# -ne 3 ]; then
|
|
echo "usage: tar2cmakezip <tarfilename> <zipfilename>"
|
|
return 1
|
|
fi
|
|
cmziptmpdir=/tmp/cmziptmpdir$$
|
|
cmziptmpsubdir=$cmziptmpdir/CMake-$HDF5_VERS
|
|
mkdir -p $cmziptmpsubdir
|
|
version=$1
|
|
tarfile=$2
|
|
zipfile=$3
|
|
|
|
# step 1: untar tarball in cmgztmpdir
|
|
(cd $cmziptmpsubdir; tar xf -) < $tarfile
|
|
# sanity check
|
|
if [ ! -d $cmziptmpsubdir/$version ]; then
|
|
echo "untar did not create $cmziptmpsubdir/$version source dir"
|
|
# cleanup
|
|
rm -rf $cmziptmpdir
|
|
return 1
|
|
fi
|
|
|
|
# step 2: add batch file for building CMake on window
|
|
(cd $cmziptmpsubdir; echo "ctest -S HDF5config.cmake,BUILD_GENERATOR=VS2013 -C Release -V -O hdf5.log" > build-VS2013-32.bat; chmod 755 build-VS2013-32.bat)
|
|
(cd $cmziptmpsubdir; echo "ctest -S HDF5config.cmake,BUILD_GENERATOR=VS201364 -C Release -V -O hdf5.log" > build-VS2013-64.bat; chmod 755 build-VS2013-64.bat)
|
|
(cd $cmziptmpsubdir; echo "ctest -S HDF5config.cmake,BUILD_GENERATOR=VS2015 -C Release -V -O hdf5.log" > build-VS2015-32.bat; chmod 755 build-VS2015-32.bat)
|
|
(cd $cmziptmpsubdir; echo "ctest -S HDF5config.cmake,BUILD_GENERATOR=VS201564 -C Release -V -O hdf5.log" > build-VS2015-64.bat; chmod 755 build-VS2015-64.bat)
|
|
(cd $cmziptmpsubdir; echo "ctest -S HDF5config.cmake,BUILD_GENERATOR=VS2017 -C Release -V -O hdf5.log" > build-VS2017-32.bat; chmod 755 build-VS2017-32.bat)
|
|
(cd $cmziptmpsubdir; echo "ctest -S HDF5config.cmake,BUILD_GENERATOR=VS201764 -C Release -V -O hdf5.log" > build-VS2017-64.bat; chmod 755 build-VS2017-64.bat)
|
|
|
|
# step 3: add SZIP.tar.gz, ZLib.tar.gz and cmake files
|
|
cp /mnt/scr1/pre-release/hdf5/CMake/SZip.tar.gz $cmziptmpsubdir
|
|
cp /mnt/scr1/pre-release/hdf5/CMake/ZLib.tar.gz $cmziptmpsubdir
|
|
cp /mnt/scr1/pre-release/hdf5/CMake/HDF5Examples-1.14.1-Source.zip $cmziptmpsubdir
|
|
cp $cmziptmpsubdir/$version/config/cmake/scripts/CTestScript.cmake $cmziptmpsubdir
|
|
cp $cmziptmpsubdir/$version/config/cmake/scripts/HDF5config.cmake $cmziptmpsubdir
|
|
cp $cmziptmpsubdir/$version/config/cmake/scripts/HDF5options.cmake $cmziptmpsubdir
|
|
|
|
# step 4: 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 $cmziptmpsubdir/$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 $cmziptmpdir; zip -9 -y -r -q CMake-$version.zip *)
|
|
mv $cmziptmpdir/CMake-$version.zip $zipfile
|
|
|
|
# cleanup
|
|
rm -rf $cmziptmpdir
|
|
}
|
|
|
|
# Function name: tar2cmaketgz
|
|
# Convert the release tarball to a gzipped tar file with files to run CMake build.
|
|
#
|
|
# Programmer: Larry Knox
|
|
# Creation date: 2017-02-20
|
|
#
|
|
# Modifications
|
|
#
|
|
# Steps:
|
|
# 1. untar the tarball in a temporary directory;
|
|
# Note: do this in a temporary directory to avoid changing
|
|
# the original source directory which may be around.
|
|
# 2. add build-unix.sh script.
|
|
# 3. add SZIP.tar.gz, ZLib.tar.gz and cmake files to top level directory.
|
|
# 4. create gzipped tar file with these contents:
|
|
# build-unix.sh script
|
|
# hdf5-<version> source code directory extracted from tar file
|
|
# CTestScript.cmake cmake file copied from <hdf5 source code>/config/cmake/scripts
|
|
# HDF5config.cmake cmake file copied from <hdf5 source code>/config/cmake/scripts
|
|
# HDF5options.cmake cmake file copied from <hdf5 source code>/config/cmake/scripts
|
|
# SZip.tar.gz copied from /mnt/scr1/pre-release/hdf5/CMake
|
|
# ZLib.tar.gz copied from /mnt/scr1/pre-release/hdf5/CMake
|
|
|
|
|
|
# Parameters:
|
|
# $1 version
|
|
# $2 release tarball
|
|
# $3 output zipball file name
|
|
#
|
|
# Returns 0 if successful; 1 otherwise
|
|
#
|
|
# need function to create another temporary directory, extract the
|
|
# $tmpdir/$HDF5_VERS.tar into it, create build-unix.sh,
|
|
# add CTestScript.cmake, HDF5config.cmake, SZIP.tar.gz
|
|
# ZLib.tar.gz, HDF5 examples, and then tar.gz it.
|
|
tar2cmaketgz()
|
|
{
|
|
if [ $# -ne 3 ]; then
|
|
echo "usage: tar2cmaketgz <tarfilename> <tgzfilename>"
|
|
return 1
|
|
fi
|
|
cmgztmpdir=/tmp/cmgztmpdir$$
|
|
cmgztmpsubdir=$cmgztmpdir/CMake-$HDF5_VERS
|
|
mkdir -p $cmgztmpsubdir
|
|
version=$1
|
|
tarfile=$2
|
|
tgzfile=$3
|
|
|
|
# step 1: untar tarball in cmgztmpdir
|
|
(cd $cmgztmpsubdir; tar xf -) < $tarfile
|
|
# sanity check
|
|
if [ ! -d $cmgztmpsubdir/$version ]; then
|
|
echo "untar did not create $cmgztmpsubdir/$version source dir"
|
|
# cleanup
|
|
rm -rf $cmgztmpdir
|
|
return 1
|
|
fi
|
|
|
|
|
|
# step 2: add build-unix.sh script
|
|
(cd $cmgztmpsubdir; echo "ctest -S HDF5config.cmake,BUILD_GENERATOR=Unix -C Release -V -O hdf5.log" > build-unix.sh; chmod 755 build-unix.sh)
|
|
|
|
# step 3: add SZIP.tar.gz, ZLib.tar.gz and cmake files
|
|
cp /mnt/scr1/pre-release/hdf5/CMake/SZip.tar.gz $cmgztmpsubdir
|
|
cp /mnt/scr1/pre-release/hdf5/CMake/ZLib.tar.gz $cmgztmpsubdir
|
|
cp /mnt/scr1/pre-release/hdf5/CMake/HDF5Examples-1.14.1-Source.tar.gz $cmgztmpsubdir
|
|
cp $cmgztmpsubdir/$version/config/cmake/scripts/CTestScript.cmake $cmgztmpsubdir
|
|
cp $cmgztmpsubdir/$version/config/cmake/scripts/HDF5config.cmake $cmgztmpsubdir
|
|
cp $cmgztmpsubdir/$version/config/cmake/scripts/HDF5options.cmake $cmgztmpsubdir
|
|
tar czf $DEST/CMake-$HDF5_VERS.tar.gz -C $cmgztmpdir . || exit 1
|
|
|
|
# cleanup
|
|
rm -rf $cmgztmpdir
|
|
}
|
|
|
|
# Function name: tar2hpccmaketgz
|
|
# Convert the release tarball to a gzipped tarfile with files to run CMake build
|
|
# and HDF5options.cmake files for parallel or serial only builds where build
|
|
# tests are run on compute nodes using batch scripts.
|
|
#
|
|
# Programmer: Larry Knox
|
|
# Creation date: 2019-01-28
|
|
#
|
|
# Modifications
|
|
#
|
|
# Steps:
|
|
# 1. untar the tarball in a temporary directory;
|
|
# Note: do this in a temporary directory to avoid changing
|
|
# the original source directory which may be around.
|
|
# 2. add build-unix.sh script.
|
|
# 3. add SZIP.tar.gz, ZLib.tar.gz and cmake files to top level directory.
|
|
# 4. create gzipped tar file with these contents:
|
|
# build-unix.sh script
|
|
# hdf5-<version> source code directory extracted from tar file
|
|
# CTestScript.cmake cmake file copied from <hdf5 source code>/config/cmake/scripts
|
|
# HDF5config.cmake cmake file copied from <hdf5 source code>/config/cmake/scripts
|
|
# HDF5options.cmake cmake file copied from <hdf5 source code>/config/cmake/scripts
|
|
# SZip.tar.gz copied from /mnt/scr1/pre-release/hdf5/CMake
|
|
# ZLib.tar.gz copied from /mnt/scr1/pre-release/hdf5/CMake
|
|
#
|
|
# 5. For HPC-CMake tgz file the following are also needed in the top-level directory:
|
|
# README_HPC copied from release_docs
|
|
# ser-HDF5options.cmake copied from <hdf5 source code>/config/cmake/scripts/HPC
|
|
# par-HDF5options.cmake copied from <hdf5 source code>/config/cmake/scripts/HPC
|
|
# HDF5options.cmake symlink to par-HDF5options.cmake
|
|
#
|
|
|
|
# Parameters:
|
|
# $1 version
|
|
# $2 release tarball
|
|
# $3 output zipball file name
|
|
#
|
|
# Returns 0 if successful; 1 otherwise
|
|
#
|
|
# need function to create another temporary directory, extract the
|
|
# $tmpdir/$HDF5_VERS.tar into it, create build-unix.sh,
|
|
# add CTestScript.cmake, HDF5config.cmake, SZIP.tar.gz
|
|
# ZLib.tar.gz, HDF5 examples, and then tar.gz it.
|
|
tar2hpccmaketgz()
|
|
{
|
|
if [ $# -ne 3 ]; then
|
|
echo "usage: tar2hpccmaketgz <tarfilename> <tgzfilename>"
|
|
return 1
|
|
fi
|
|
cmgztmpdir=/tmp/cmgztmpdir$$
|
|
cmgztmpsubdir=$cmgztmpdir/HPC-CMake-$HDF5_VERS
|
|
mkdir -p $cmgztmpsubdir
|
|
version=$1
|
|
tarfile=$2
|
|
tgzfile=$3
|
|
|
|
# step 1: untar tarball in cmgztmpdir
|
|
(cd $cmgztmpsubdir; tar xf -) < $tarfile
|
|
# sanity check
|
|
if [ ! -d $cmgztmpsubdir/$version ]; then
|
|
echo "untar did not create $cmgztmpsubdir/$version source dir"
|
|
# cleanup
|
|
rm -rf $cmgztmpdir
|
|
return 1
|
|
fi
|
|
|
|
|
|
# step 2: add build-unix.sh script
|
|
(cd $cmgztmpsubdir; echo "ctest -S HDF5config.cmake,BUILD_GENERATOR=Unix -C Release -V -O hdf5.log" > build-unix.sh; chmod 755 build-unix.sh)
|
|
|
|
# step 3: add SZIP.tar.gz, ZLib.tar.gz and cmake files
|
|
cp /mnt/scr1/pre-release/hdf5/CMake/SZip.tar.gz $cmgztmpsubdir
|
|
cp /mnt/scr1/pre-release/hdf5/CMake/ZLib.tar.gz $cmgztmpsubdir
|
|
cp /mnt/scr1/pre-release/hdf5/CMake/HDF5Examples-1.14.1-Source.tar.gz $cmgztmpsubdir
|
|
cp $cmgztmpsubdir/$version/config/cmake/scripts/CTestScript.cmake $cmgztmpsubdir
|
|
cp $cmgztmpsubdir/$version/config/cmake/scripts/HDF5config.cmake $cmgztmpsubdir
|
|
|
|
cp $cmgztmpsubdir/$version/release_docs/README_HPC $cmgztmpsubdir
|
|
cp $cmgztmpsubdir/$version/config/cmake/scripts/HPC/ser-HDF5options.cmake $cmgztmpsubdir
|
|
cp $cmgztmpsubdir/$version/config/cmake/scripts/HPC/par-HDF5options.cmake $cmgztmpsubdir
|
|
(cd $cmgztmpsubdir; ln -s par-HDF5options.cmake HDF5options.cmake)
|
|
tar czf $DEST/HPC-CMake-$HDF5_VERS.tar.gz -C $cmgztmpdir . || exit 1
|
|
|
|
# cleanup
|
|
rm -rf $cmgztmpdir
|
|
}
|
|
|
|
# This command must be run at the top level of the hdf5 source directory.
|
|
# Verify this requirement.
|
|
if [ ! \( -f configure.ac -a -f bin/release \) ]; then
|
|
echo "$0 must be run at the top level of the hdf5 source directory"
|
|
exit 1
|
|
fi
|
|
|
|
# Defaults
|
|
DEST=releases
|
|
VERS=`perl bin/h5vers`
|
|
VERS_OLD=
|
|
test "$VERS" || exit 1
|
|
verbose=yes
|
|
check=yes
|
|
release_date=`date +%F`
|
|
today=`date +%Y%m%d`
|
|
pmode='no'
|
|
tmpdir="../#release_tmp.$$" # tmp work directory
|
|
DOC_URL=https://git@bitbucket.hdfgroup.org/scm/hdffv/hdf5doc.git
|
|
CPPLUS_RM_NAME=cpplus_RM
|
|
MAINT_MODE_ENABLED=""
|
|
|
|
# If maintainer mode is enabled in configure, it should be disabled for release,
|
|
# and enabled again after release files have been created. If already disabled
|
|
# there's no need to do either.
|
|
MAINT_MODE_ENABLED=`grep ^AM_MAINTAINER_MODE ./configure.ac | grep enable`
|
|
if [ "${MAINT_MODE_ENABLED}" != "" ]; then
|
|
bin/switch_maint_mode -disable ./configure.ac
|
|
fi
|
|
|
|
# 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_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
|
|
;;
|
|
--docver)
|
|
DOCVERSION=$1
|
|
shift
|
|
;;
|
|
-*)
|
|
echo "Unknown switch: $arg" 1>&2
|
|
USAGE
|
|
exit 1
|
|
;;
|
|
*)
|
|
methods="$methods $arg"
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# Default method is tar
|
|
if [ "X$methods" = "X" ]; then
|
|
methods="tar"
|
|
fi
|
|
|
|
# Create the temporay work directory.
|
|
if mkdir $tmpdir; then
|
|
echo "temporary work directory for release. "\
|
|
"Can be deleted after release completes." > $tmpdir/README
|
|
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
|
|
else
|
|
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
|
|
echo ""
|
|
echo "Note! If you are running bin/release in a development branch"
|
|
echo "later than v 1.8 the MANIFEST check is expected to fail when"
|
|
echo "autogen.sh has not been run successfully. Either run autogen.sh "
|
|
echo "with /usr/hdf/bin/AUTOTOOLS at the beginning of PATH or add the"
|
|
echo "--nocheck argument to the bin/release command."
|
|
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
|
|
# Save a backup copy of Makefile if exists.
|
|
test -f Makefile && mv Makefile $tmpdir/Makefile.x
|
|
cp -p Makefile.dist Makefile
|
|
|
|
# Update README.txt and release_docs/RELEASE.txt with release information in
|
|
# line 1.
|
|
for f in README.txt release_docs/RELEASE.txt; do
|
|
echo "HDF5 version $VERS released on $release_date" >$f.x
|
|
sed -e 1d $f >>$f.x
|
|
mv $f.x $f
|
|
# Make sure new files are of the right access mode
|
|
chmod 644 $f
|
|
done
|
|
|
|
# trunk is different than branches.
|
|
if [ "${DOCVERSION}" ]; then
|
|
DOC_URL="$DOC_URL -b ${DOCVERSION}"
|
|
fi
|
|
|
|
# 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
|
|
MD5file=$HDF5_VERS.md5
|
|
cp /dev/null $DEST/$MD5file
|
|
for comp in $methods; do
|
|
case $comp in
|
|
tar)
|
|
cp -p $tmpdir/$HDF5_VERS.tar $DEST/$HDF5_VERS.tar
|
|
(cd $DEST; md5sum $HDF5_VERS.tar >> $MD5file)
|
|
;;
|
|
gzip)
|
|
test "$verbose" && echo " Running gzip..." 1>&2
|
|
gzip -9 <$tmpdir/$HDF5_VERS.tar >$DEST/$HDF5_VERS.tar.gz
|
|
(cd $DEST; md5sum $HDF5_VERS.tar.gz >> $MD5file)
|
|
;;
|
|
cmake-tgz)
|
|
test "$verbose" && echo " Creating CMake tar.gz file..." 1>&2
|
|
tar2cmaketgz $HDF5_VERS $tmpdir/$HDF5_VERS.tar $DEST/CMake-$HDF5_VERS.tar.gz 1>&2
|
|
(cd $DEST; md5sum CMake-$HDF5_VERS.tar.gz >> $MD5file)
|
|
;;
|
|
hpc-cmake-tgz)
|
|
test "$verbose" && echo " Creating HPC-CMake tar.gz file..." 1>&2
|
|
tar2hpccmaketgz $HDF5_VERS $tmpdir/$HDF5_VERS.tar $DEST/HPC-CMake-$HDF5_VERS.tar.gz 1>&2
|
|
(cd $DEST; md5sum HPC-CMake-$HDF5_VERS.tar.gz >> $MD5file)
|
|
;;
|
|
bzip2)
|
|
test "$verbose" && echo " Running bzip2..." 1>&2
|
|
bzip2 -9 <$tmpdir/$HDF5_VERS.tar >$DEST/$HDF5_VERS.tar.bz2
|
|
(cd $DEST; md5sum $HDF5_VERS.tar.bz2 >> $MD5file)
|
|
;;
|
|
zip)
|
|
test "$verbose" && echo " Creating zip ball..." 1>&2
|
|
tar2zip $HDF5_VERS $tmpdir/$HDF5_VERS.tar $DEST/$HDF5_VERS.zip 1>&2
|
|
(cd $DEST; md5sum $HDF5_VERS.zip >> $MD5file)
|
|
;;
|
|
cmake-zip)
|
|
test "$verbose" && echo " Creating CMake-zip ball..." 1>&2
|
|
tar2cmakezip $HDF5_VERS $tmpdir/$HDF5_VERS.tar $DEST/CMake-$HDF5_VERS.zip 1>&2
|
|
(cd $DEST; md5sum CMake-$HDF5_VERS.zip >> $MD5file)
|
|
;;
|
|
doc)
|
|
if [ "${DOCVERSION}" = "" ]; then
|
|
DOCVERSION=master
|
|
fi
|
|
test "$verbose" && echo " Creating docs..." 1>&2
|
|
# Check out docs from git repo
|
|
(cd $tmpdir; git clone -q $DOC_URL ${DOCVERSION} > /dev/null) || exit 1
|
|
# Create doxygen C++ RM
|
|
(cd c++/src && doxygen cpp_doc_config > /dev/null ) || exit 1
|
|
# Replace version of C++ RM with just-created version
|
|
rm -rf $tmpdir/${DOCVERSION}/html/$CPPLUS_RM_NAME || exit 1
|
|
mv c++/src/$CPPLUS_RM_NAME $tmpdir/${DOCVERSION}/html/$CPPLUS_RM_NAME || exit 1
|
|
# Compress the docs and move them to the release area
|
|
mv $tmpdir/${DOCVERSION} $tmpdir/${HDF5_VERS}_docs || exit 1
|
|
(cd $tmpdir && tar cf ${HDF5_VERS}_docs.tar ${HDF5_VERS}_docs) || exit 1
|
|
mv $tmpdir/${HDF5_VERS}_docs.tar $DEST || exit 1
|
|
;;
|
|
*)
|
|
echo "***Error*** Unknown method $comp"
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# If AM_MAINTAINER_MODE was enabled before running this script
|
|
# restore it to "enabled".
|
|
if [ "${MAINT_MODE_ENABLED}" != "" ]; then
|
|
bin/switch_maint_mode -enable ./configure.ac
|
|
fi
|
|
|
|
# Copy the RELEASE.txt to the release area.
|
|
cp release_docs/RELEASE.txt $DEST/$HDF5_VERS-RELEASE.txt
|
|
|
|
# Remove distributed Makefile and restore previous Makefile if existed.
|
|
rm -f Makefile
|
|
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
|