summaryrefslogtreecommitdiffstats
path: root/bin
diff options
context:
space:
mode:
authorScot Breitenfeld <brtnfld@hdfgroup.org>2022-04-08 14:25:14 (GMT)
committerGitHub <noreply@github.com>2022-04-08 14:25:14 (GMT)
commit6fad870737605a39103dc8f26b9799e158a3ee16 (patch)
tree1dc7a66327199cd9fa80c714243f33a83f13d1f5 /bin
parent304d33f88b657c3a93da311c47a62cfca5af12c3 (diff)
downloadhdf5-feature/parallel_h5repack.zip
hdf5-feature/parallel_h5repack.tar.gz
hdf5-feature/parallel_h5repack.tar.bz2
Sync branch with develop (#1616)feature/parallel_h5repack
Sync branch with develop
Diffstat (limited to 'bin')
-rw-r--r--bin/README2
-rwxr-xr-xbin/bbrelease242
-rwxr-xr-xbin/checkposix11
-rwxr-xr-xbin/chkmanifest154
-rwxr-xr-xbin/h5vers12
-rwxr-xr-xbin/locate_sw238
-rwxr-xr-xbin/release84
-rwxr-xr-xbin/restore.sh3
-rwxr-xr-xbin/runtest966
-rwxr-xr-xbin/snapshot837
-rw-r--r--bin/snapshot_version19
-rwxr-xr-xbin/timekeeper129
12 files changed, 122 insertions, 2575 deletions
diff --git a/bin/README b/bin/README
deleted file mode 100644
index 1c77043..0000000
--- a/bin/README
+++ /dev/null
@@ -1,2 +0,0 @@
-The daily tests run copies of some of the scripts in this directory from another repository, notably snapshot and runtest. The copies in this directory should work, but are not used in daily tests, though they should be tested occasionally.
-
diff --git a/bin/bbrelease b/bin/bbrelease
index cdb8678..d056f6d 100755
--- a/bin/bbrelease
+++ b/bin/bbrelease
@@ -14,32 +14,13 @@
# Make a release of hdf5.
#
-# Programmer: Robb Matzke
-# Creation date: on or before 1998-01-29.
+# NOTE:
+# This script differs from bin/release in that this has an added
+# --revision option to create private releases with the code revision
+# hash in the version strings.
#
-# 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.
-#
-# Larry Knox, 2016-08-30
-# Added the --revision option to create private releases with the
-# code revision hash in the version strings. Currently the version
-# of this script with the --revision option is named bbrelease. It
-# can probably be merged into the original release script in the
-# future.
-# Commands to get the revision hash have now been converted to git
-# to match the source repository change.
+# This script can probably be merged into the original release script in
+# the future.
# Function definitions
#
@@ -47,26 +28,25 @@
USAGE()
{
cat << EOF
-Usage: $0 -d <dir> [--docver BRANCHNAME] [-h] [--nocheck] [--private] <methods> ...
- -d DIR The name of the directory where the release(s) should be
+Usage: $0 -d <dir> [--docver BRANCHNAME] [-h] [--private] [--revision] <methods> ...
+ -d DIR The name of the directory where the release(s) 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.
- --revision Make a private release with the code revision number in version information.
-
+ --private Make a private release with today's date in version information.
+ --revision Make a private release with the code revision number 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.
+ 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.
+ zip -- convert all text files to DOS style and form a zip file for Windows use.
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.
@@ -97,15 +77,10 @@ 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 maybe around.
+# 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.
#
@@ -119,8 +94,8 @@ EOF
tar2zip()
{
if [ $# -ne 3 ]; then
- echo "usage: tar2zip <tarfilename> <zipfilename>"
- return 1
+ echo "usage: tar2zip <tarfilename> <zipfilename>"
+ return 1
fi
ztmpdir=/tmp/tmpdir$$
mkdir -p $ztmpdir
@@ -132,23 +107,23 @@ tar2zip()
(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
+ 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
+ # -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
+ 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
@@ -163,14 +138,6 @@ tar2zip()
# This command must be run at the top level of the hdf5 source directory.
# Verify this requirement.
-# Since we are running bbrelease to create an HDF5 source tarfile for buildbot
-# testing with source that is not for release, there is not a file named
-# "configure" but there will be one named "configure.ac". The "configure"
-# file will be created when autogen.sh runs. There probably will always
-# be a bin/release file, but just in case it is removed, we can check for
-# this script, bbrelease, in the bin directory. The bin/release script should
-# continue to check for "configure" because it should be present in release
-# source.
if [ ! \( -f configure.ac -a -f bin/bbrelease \) ]; then
echo "$0 must be run at the top level of the hdf5 source directory"
exit 1
@@ -182,12 +149,11 @@ 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'
revmode='no'
-tmpdir="../#release_tmp.$$" # tmp work directory
+tmpdir="../#release_tmp.$$" # tmp work directory
DOC_URL=https://git@bitbucket.hdfgroup.org/scm/hdffv/hdf5doc.git
CPPLUS_RM_NAME=cpplus_RM
@@ -195,11 +161,11 @@ CPPLUS_RM_NAME=cpplus_RM
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=
+ 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
}
@@ -209,20 +175,17 @@ while [ -n "$1" ]; do
arg=$1
shift
case "$arg" in
- -d)
- DEST=$1
- shift
- ;;
- --nocheck)
- check=no
- ;;
- -h)
- USAGE
- exit 0
- ;;
- --private)
- pmode=yes
- ;;
+ -d)
+ DEST=$1
+ shift
+ ;;
+ -h)
+ USAGE
+ exit 0
+ ;;
+ --private)
+ pmode=yes
+ ;;
--revision)
revmode=yes
;;
@@ -230,14 +193,14 @@ while [ -n "$1" ]; do
DOCVERSION=$1
shift
;;
- -*)
- echo "Unknown switch: $arg" 1>&2
- USAGE
- exit 1
- ;;
- *)
- methods="$methods $arg"
- ;;
+ -*)
+ echo "Unknown switch: $arg" 1>&2
+ USAGE
+ exit 1
+ ;;
+ *)
+ methods="$methods $arg"
+ ;;
esac
done
@@ -278,7 +241,7 @@ if [ X$revmode = Xyes ]; then
cp config/lt_vers.am $tmpdir
branch=`git branch | grep '*' | awk '{print $NF}'`
revision=`git rev-parse --short HEAD`
-# Set version information to m.n.r-r$revision.
+ # Set version information to m.n.r-r$revision.
# (h5vers does not correctly handle just m.n.r-$today.)
VERS=`echo $VERS | sed -e s/-.*//`-$revision
echo Private release of $VERS
@@ -299,30 +262,17 @@ if [ ! -d $DEST ]; then
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=$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
+# Create a symlink to the source so files in the tarball have the prefix
+# we want (gnu's --transform isn't portable)
ln -s `pwd` $tmpdir/$HDF5_IN_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
+# Update README.md and release_docs/RELEASE.txt with release information in
# line 1.
-for f in README.txt release_docs/RELEASE.txt; do
+for f in README.md 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
@@ -330,64 +280,60 @@ for f in README.txt release_docs/RELEASE.txt; do
chmod 644 $f
done
-# trunk is different than branches.
+# develop is different than branches.
if [ "${DOCVERSION}" ]; then
DOC_URL=https://git@bitbucket.hdfgroup.org/scm/hdffv/hdf5doc.git -b ${DOCVERSION}
fi
# Create the tar file
test "$verbose" && echo " Running tar..." 1>&2
-( \
- cd $tmpdir; \
- tar cf $HDF5_VERS.tar $HDF5_IN_VERS/Makefile \
- `sed 's/^\.\//'$HDF5_IN_VERS'\//' $MANIFEST` || exit 1 \
-)
+(cd "$tmpdir" && exec tar -ch --exclude-vcs -f "$HDF5_VERS.tar" "./$HDF5_IN_VERS" || 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)
- ;;
- 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_IN_VERS $tmpdir/$HDF5_VERS.tar $DEST/$HDF5_VERS.zip 1>&2
- (cd $DEST; md5sum $HDF5_VERS.zip >> $MD5file)
- ;;
- doc)
+ 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)
+ ;;
+ 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_IN_VERS $tmpdir/$HDF5_VERS.tar $DEST/$HDF5_VERS.zip 1>&2
+ (cd $DEST; md5sum $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 $DOC_URL > /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
+ test "$verbose" && echo " Creating docs..." 1>&2
+ # Check out docs from git repo
+ (cd $tmpdir; git clone $DOC_URL > /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
mv c++/src/$CPPLUS_RM_NAME $tmpdir/${DOCVERSION}/html/$CPPLUS_RM_NAME
# Compress the docs and move them to the release area
mv $tmpdir/$DOCVERSION $tmpdir/${HDF5_VERS}_docs
- (cd $tmpdir && tar cf ${HDF5_VERS}_docs.tar ${HDF5_VERS}_docs)
- mv $tmpdir/${HDF5_VERS}_docs.tar $DEST
- ;;
- *)
- echo "***Error*** Unknown method $comp"
- exit 1
- ;;
+ (cd $tmpdir && tar cf ${HDF5_VERS}_docs.tar ${HDF5_VERS}_docs)
+ mv $tmpdir/${HDF5_VERS}_docs.tar $DEST
+ ;;
+ *)
+ echo "***Error*** Unknown method $comp"
+ exit 1
+ ;;
esac
done
@@ -408,4 +354,6 @@ fi
# Remove temporary things
rm -rf $tmpdir
+echo "DONE"
+
exit 0
diff --git a/bin/checkposix b/bin/checkposix
index 36d07a8..bca259d 100755
--- a/bin/checkposix
+++ b/bin/checkposix
@@ -115,7 +115,7 @@ foreach $arg (@ARGV) {
# These are really HDF5 functions/macros even though they don't
# start with `h' or `H'.
- next if $name =~ /^FUNC_(ENTER|LEAVE)(_(NO)?API|_PACKAGE|_STATIC)?(_NOFS|_NOCLEAR|_NOINIT|_NOPUSH)?(_NOFUNC|_TAG)?$/;
+ next if $name =~ /^FUNC_(ENTER|LEAVE)(_(NO)?API|_PACKAGE|_STATIC)?(_NAMECHECK_ONLY|_NOFS|_NOCLEAR|_NOINIT|_NOPUSH)?(_NOFUNC|_TAG)?$/;
next if $name =~ /^(BEGIN|END)_FUNC$/;
next if $name =~ /^U?INT(8|16|32|64)(ENCODE|DECODE)(_VAR)?$/;
next if $name =~ /^CI_(PRINT_STATS|INC_SRC|INC_DST)$/;
@@ -123,10 +123,13 @@ foreach $arg (@ARGV) {
next if $name =~ /^(MIN3?|MAX3?|NELMTS|POWER_OF_TWO|REGION_OVERFLOW)$/;
next if $name =~ /^(SIZE_OVERFLOW|UNIQUE_MEMBERS|S_ISDIR)$/;
next if $name =~ /^addr_defined$/;
+ next if $name =~ /^TERMINATOR$/;
- # These functions/macros are exempt.
- # op, cb, and OP are often spuriously flagged so ignore them.
- next if $name =~ /^(main|op|cb|OP)$/;
+ # Ignore callback invocation
+ next if $name =~ /^(op|cb|OP|iter_op|func)$/;
+
+ # Ignore main
+ next if $name =~ /^main$/;
# This often appears in preprocessor lines that span multiple lines
next if $name =~ /^(defined)$/;
diff --git a/bin/chkmanifest b/bin/chkmanifest
deleted file mode 100755
index 08ca1fa..0000000
--- a/bin/chkmanifest
+++ /dev/null
@@ -1,154 +0,0 @@
-#!/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://www.hdfgroup.org/licenses.
-# If you do not have access to either file, you may request a copy from
-# help@hdfgroup.org.
-#
-
-# Check that all the files in MANIFEST exist and (if this is a
-# GIT checkout) that all the GIT-managed files appear in the
-# MANIFEST.
-#
-
-verbose=yes
-MANIFEST=/tmp/HD_MANIFEST.$$
-AUTOGEN=./autogen.sh
-AUTOGEN_LOG=/tmp/autogen.log.$$
-
-# Main
-test "$verbose" && echo " Checking MANIFEST..." 1>&2
-# clean up $MANIFEST file when exits
-trap "rm -f $MANIFEST" 0
-
-# Only split lines on newline, not whitespace
-set -f
-IFS='
-'
-
-# First make sure i am in the directory in which there is an MANIFEST file
-# and then do the checking from there. Will try the following,
-# current directory, parent directory, the directory this command resides.
-if [ -f MANIFEST ]; then
- continue
-elif [ -f ../MANIFEST ]; then
- cd ..
-else
- commanddir=`dirname $0`
- if [ -d "$commanddir" -a -f $commanddir/MANIFEST ]; then
- cd $commanddir
- continue
- else
- echo MANIFEST file not found. Abort.
- exit 1
- fi
-fi
-
-# Do an autogen if generated files (e.g., configure) is not present
-if [ ! -f configure ]; then
- echo " running $AUTOGEN"
- $AUTOGEN > $AUTOGEN_LOG 2>&1
- if [ $? -ne 0 ]; then
- echo $AUTOGEN encountered error. Abort.
- echo output from $AUTOGEN:
- cat $AUTOGEN_LOG
- exit 1
- fi
- rm $AUTOGEN_LOG
-fi
-
-# Check for duplicate entries. This can be done at any time, but it may as
-# well be sooner so that if something else fails the presence of duplicates
-# will already be known.
-errcode=0
-DUPLICATES=`perl -ne 's/#.*//; next if /^\s*$/; if ($uniq{$_}++) { print $_; }' MANIFEST`
-if [ "$DUPLICATES" ]; then
- cat 1>&2 <<EOF
-These entries appear more than once in the MANIFEST:
-$DUPLICATES
-Please remove the duplicate lines and try again.
-
-EOF
-errcode=1
-fi
-
-# Copy the manifest file to get a list of file names.
-grep '^\.' MANIFEST | expand | cut -f1 -d' ' >$MANIFEST
-
-for file in `cat $MANIFEST`; do
- if [ ! -f $file ]; then
- echo "- $file"
- fail=yes
- fi
-done
-
-# Get the list of files under version control and check that they are
-# present.
-#
-# First get a list of all the pending files with git status and
-# check those.
-git_stat=`git status -s`
-for file in $git_stat; do
-
- # Newly added files are not listed by git ls-files, which
- # we check later.
-
- # The line listing new files starts with 'A'.
- letter=`echo $file | head -c 1`
- if [ "$letter" = "A" ]; then
- # Convert the git status columns to './' so it matches
- # the manifest file name.
- #
- # There is a space between the status columns and file name, hence
- # the '3'.
- path=`echo $file | sed 's/^.\{3\}/\.\//g'`
- # Ignore directories
- if [ ! -d $path ]; then
- if (grep ^$path$ $MANIFEST >/dev/null); then
- :
- else
- echo "- $path"
- fail=yes
- fi
- fi
- fi
-done
-
-# Next check git ls-files, which gets a list of all files that are
-# checked in.
-git_ls=`git ls-files`
-for file in $git_ls; do
- path="./${file}"
- # Ignore directories
- if [ ! -d $path ]; then
- if (grep ^$path$ $MANIFEST >/dev/null); then
- :
- else
- echo "+ $path"
- fail=yes
- fi
- fi
-done
-
-# Finish up
-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 GIT-managed but do
-not appear in the MANIFEST. Please remedy the situation and try again.
-EOF
- exit 1
-fi
-
-if [ $errcode -ne 0 ]; then
- exit 1
-fi
-
-test "$verbose" && echo " The MANIFEST is up to date." 1>&2
-exit 0
diff --git a/bin/h5vers b/bin/h5vers
index 8f75df1..04d5d03 100755
--- a/bin/h5vers
+++ b/bin/h5vers
@@ -66,7 +66,7 @@ use strict;
# ./H5public.h or ./src/H5public.h.
#
# If the version number is changed (either `-s' or `-i' was used on
-# the command line) then the first line of the README.txt and RELEASE.txt files
+# the command line) then the version line of the README.md and RELEASE.txt files
# one directory above the H5public.h file is also modified so it looks
# something like: This is hdf5-1.2.3-pre1 currently under development.
# The AC_INIT macro in configure.ac will also change in this case to be
@@ -156,10 +156,10 @@ while ($_ = shift) {
}
die "mutually exclusive options given\n" if $set && $inc;
-# Determine file to use as H5public.h, README.txt,
+# Determine file to use as H5public.h, README.md,
# release_docs/RELEASE.txt, configure.ac, windows/src/H5pubconf.h
# config/lt_vers.am and config/cmake/scripts/HDF5config.cmake.
-# The README.txt, release_docs/RELEASE.txt, configure.ac,
+# The README.md, release_docs/RELEASE.txt, configure.ac,
# windows/src/H5pubconf.h, config/lt_vers.am and
# config/cmake/scripts/HDF5config.cmake
# files are always in the directory above H5public.h
@@ -178,9 +178,9 @@ die "unable to read file: $LT_VERS\n" unless -r $file;
my $HDF5CONFIGCMAKE = $file;
$HDF5CONFIGCMAKE =~ s/[^\/]*$/..\/config\/cmake\/scripts\/HDF5config.cmake/;
die "unable to read file: $HDF5CONFIGCMAKE\n" unless -r $file;
-# README.txt
+# README.md
my $README = $file;
-$README =~ s/[^\/]*$/..\/README.txt/;
+$README =~ s/[^\/]*$/..\/README.md/;
die "unable to read file: $README\n" unless -r $file;
# release_docs/RELEASE.txt
my $RELEASE = $file;
@@ -303,7 +303,7 @@ if ($LT_VERS && $version_increased) {
# close FILE;
}
-# Update the README.txt file
+# Update the README.md file
if ($README) {
open FILE, $README or die "$README: $!\n";
my @contents = <FILE>;
diff --git a/bin/locate_sw b/bin/locate_sw
deleted file mode 100755
index 1cf84e2..0000000
--- a/bin/locate_sw
+++ /dev/null
@@ -1,238 +0,0 @@
-#!/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://www.hdfgroup.org/licenses.
-# If you do not have access to either file, you may request a copy from
-# help@hdfgroup.org.
-#
-
-# Try to locate the software as named in argument.
-# This is a sequential search of all possible locations of the software.
-# Usage: locate_sw <SW-Name>
-# It prints a string showing the paths leading to the include, lib and bin
-# directory of the software, separated by colons. E.g., if the software is
-# located in /usr/sdt/*, it prints
-# /usr/sdt/include:/usr/sdt/lib:/usr/sdt/bin
-# Any component that is not found will be returned as an empty string. E.g.,
-# if somehow the header files of the software are not found, it prints
-# :/usr/sdt/lib;/usr/sdt/bin
-
-# Function definitions
-USAGE()
-{
- echo "Usage: locate_sw <SW-Name>"
- echo " where <SW-Name> can be hdf4, hdf5, zlib"
- echo " It prints the paths leading the header files (include),"
- echo " library (lib), and tools (bin). E.g.,"
- echo " /usr/sdt/include:/usr/sdt/lib:/usr/sdt/bin"
- echo " Any component that is not found will be returned as an empty string. E.g.,"
- echo " if somehow the header files of the software are not found, it prints"
- echo " :/usr/sdt/lib;/usr/sdt/bin"
- echo "Exit code: 0 if software located; otherwise non-zero"
-}
-
-# locate hdf4 software
-locate_hdf4()
-{
-# this default is the best guess of locating hdf4 software
-swpaths_defaults="/usr/ncsa /usr/sdt /usr/local"
-swpaths=
-
-case "$OSname" in
- SunOS)
- case "$OSrelease" in
- 5.7)
- swpaths="/afs/ncsa/packages/hdf/SunOS_5.7"
- ;;
- *)
- # use default
- ;;
- esac
- ;;
- HP-UX)
- case "$OSrelease" in
- B.11.00)
- swpaths="/afs/ncsa/packages/hdf/HPUX_11.00"
- ;;
- *)
- # use default
- ;;
- esac
- ;;
- Linux)
- swpaths="/afs/ncsa/packages/hdf/Linux"
- ;;
- OSF1)
- swpaths="/afs/ncsa/packages/hdf/OSF1_V4.0"
- ;;
- *)
- # just use the defaults
- ;;
-esac
-
-# Check if the hdf4 software is actually available.
-# Accept the directory only if needed .h, .a and tools are found
-# in the same place. That way, they are more likely to be of the
-# same version.
-#
-swpaths="$swpaths $swpaths_defaults"
-for sw in $swpaths; do
- if [ -r $sw/include/hdf.h -a -r $sw/lib/libdf.a -a -r $sw/bin/hdp ]; then
- SW_inc=$sw/include
- SW_lib=$sw/lib
- SW_bin=$sw/bin
- SW_Location=$sw
- break
- fi
-done
-}
-
-# locate hdf5 software
-locate_hdf5()
-{
-# this default is the best guess of locating hdf5 software
-swpaths_defaults="/usr/ncsa /usr/sdt /usr/local"
-swpaths=
-
-case "$OSname" in
- SunOS)
- case "$OSrelease" in
- 5.7)
- swpaths="/afs/ncsa/packages/hdf5/SunOS_5.7"
- ;;
- *)
- # use default
- ;;
- esac
- ;;
- HP-UX)
- case "$OSrelease" in
- B.11.00)
- swpaths="/afs/ncsa/packages/hdf5/HPUX_11.00"
- ;;
- *)
- # use default
- ;;
- esac
- ;;
- Linux)
- swpaths="/afs/ncsa/packages/hdf5/Linux"
- ;;
- FreeBSD)
- swpaths="/afs/ncsa/packages/hdf5/FreeBSD"
- ;;
- OSF1)
- swpaths="/afs/ncsa/packages/hdf5/OSF1_V4.0"
- ;;
- *)
- # just use the defaults
- ;;
-esac
-
-# Check if the hdf5 software is actually available.
-# Accept the directory only if needed .h, .a and tools are found
-# in the same place. That way, they are more likely to be of the
-# same version.
-#
-swpaths="$swpaths $swpaths_defaults"
-for sw in $swpaths; do
- if [ -r $sw/include/hdf5.h -a -r $sw/lib/libhdf5.a -a -r $sw/bin/h5dump ]; then
- SW_inc=$sw/include
- SW_lib=$sw/lib
- SW_bin=$sw/bin
- SW_Location=$sw
- break
- fi
-done
-}
-
-# locate zlib software
-locate_zlib()
-{
-# this default is the best guess of locating zlib software
-swpaths_defaults="/usr /usr/local /usr/ncsa /usr/sdt"
-swpaths=
-
-
-# Check if the zlib software is actually available.
-# Accept the directory only if needed .h, .a and tools are found
-# in the same place. That way, they are more likely to be of the
-# same version.
-# Don't know something specific to check the bin directory. Maybe gzip?
-# Just make sure it exists.
-#
-swpaths="$swpaths $swpaths_defaults"
-for sw in $swpaths; do
- if [ -r $sw/include/zlib.h -a \
- \( -r $sw/lib/libz.a -o -r $sw/lib/libz.so \) -a -d $cw/bin ]; then
- SW_inc=$sw/include
- SW_lib=$sw/lib
- SW_bin=$sw/bin
- SW_Location=$sw
- break
- fi
-done
-
-# if none found, try HDF4 software which contains a version of zlib.
-if [ x-$SW_Location = x- ]; then
- locate_hdf4
-fi
-
-}
-
-# Main
-#
-# Options
-#
-if [ $# -lt 1 ]; then
- USAGE
- exit 1
-fi
-
-if [ "$1" = -h ]; then
- USAGE
- exit 0
-fi
-
-SW=$1
-shift
-
-# locations of the software seeked.
-SW_inc= # include place
-SW_lib= # library place
-SW_bin= # binary place
-SW_Location= # parent directory of all the above
-
-OSname=`uname -s`
-OSrelease=`uname -r`
-
-case $SW in
-hdf4|hdf)
- locate_hdf4
- ;;
-hdf5)
- locate_hdf5
- ;;
-zlib)
- locate_zlib
- ;;
-*)
- echo "unknown software ($SW)"
- USAGE
- exit 1
- ;;
-esac
-
-# show the results located, separated by commas.
-if [ -n "${SW_inc}" -a -n "${SW_lib}" -a -n "${SW_bin}" ]; then
- echo ${SW_inc},${SW_lib},${SW_bin}
- exit 0
-else
- exit 1
-fi
diff --git a/bin/release b/bin/release
index e40c3d3..84555b6 100755
--- a/bin/release
+++ b/bin/release
@@ -13,24 +13,6 @@
#
# 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
#
@@ -38,14 +20,13 @@
USAGE()
{
cat << EOF
-Usage: $0 -d <dir> [--docver BRANCHNAME] [-h] [--nocheck] [--private] <methods> ...
- -d DIR The name of the directory where the release(es) should be
+Usage: $0 -d <dir> [--docver BRANCHNAME] [-h] [--private] <methods> ...
+ -d DIR The name of the directory where the release(s) 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.
@@ -100,11 +81,6 @@ 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
@@ -167,11 +143,6 @@ tar2zip()
# 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
@@ -269,10 +240,6 @@ tar2cmakezip()
# 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;
@@ -347,11 +314,6 @@ tar2cmaketgz()
# 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
@@ -443,7 +405,6 @@ 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'
@@ -482,9 +443,6 @@ while [ -n "$1" ]; do
DEST=$1
shift
;;
- --nocheck)
- check=no
- ;;
-h)
USAGE
exit 0
@@ -546,35 +504,17 @@ if [ ! -d $DEST ]; then
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.
+# Create a symlink to the source so files in the tarball have the prefix
+# we want (gnu's --transform isn't portable)
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
+# Update README.md and release_docs/RELEASE.txt with release information in
# line 1.
-for f in README.txt release_docs/RELEASE.txt; do
+for f in README.md 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
@@ -582,18 +522,14 @@ for f in README.txt release_docs/RELEASE.txt; do
chmod 644 $f
done
-# trunk is different than branches.
+# develop 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 \
-)
+(cd "$tmpdir" && exec tar -ch --exclude-vcs -f "$HDF5_VERS.tar" "./$HDF5_VERS" || exit 1 )
# Compress
MD5file=$HDF5_VERS.md5
@@ -680,4 +616,6 @@ fi
# Remove temporary things
rm -rf $tmpdir
+echo "DONE"
+
exit 0
diff --git a/bin/restore.sh b/bin/restore.sh
index 47dde11..0597572 100755
--- a/bin/restore.sh
+++ b/bin/restore.sh
@@ -48,6 +48,9 @@ rm -f bin/missing
rm -f bin/test-driver
rm -f bin/depcomp
+echo "Remove files generated by autoheader"
+rm -f src/H5config.h.in
+
echo "Remove files generated by bin/make_err"
rm -f src/H5Epubgen.h
rm -f src/H5Einit.h
diff --git a/bin/runtest b/bin/runtest
deleted file mode 100755
index 5e05abb..0000000
--- a/bin/runtest
+++ /dev/null
@@ -1,966 +0,0 @@
-#! /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://www.hdfgroup.org/licenses.
-# If you do not have access to either file, you may request a copy from
-# help@hdfgroup.org.
-#
-
-# run the hdf5/bin/snapshot
-# Usage:
-# runtest run the test for the local host
-# runtest <hostname> run the test for <hostname>
-# runtest -all run the test for all predefined hosts
-#
-# Assumptions in knowing where to find the right scripts to execute.
-# 1. assume we are at the top level of the hdf5 source. So, bin/* are
-# where the script files are.
-# 2. after the cvs update is completed, we can go to the snapshot area
-# hdf5 source tree and use the bin/* there.
-# 3. Cannot use the snapshot area scripts from the beginning because
-# for one, the current directory is renamed as previous right after
-# a snapshot release; and for another, some scripts may be changed
-# by the cvs update while it is being used.
-
-# local setup
-DEBUGMODE=""
-test -n "$DEBUGMODE" && echo "******** DEBUGMODE is $DEBUGMODE ************"
-WHEREAMI='pwd'
-CMD=
-
-# the name of this program
-PROGNAME="bin/runtest $DEBUGMODE"
-
-# Setup
-HOSTNAME=`hostname | cut -f1 -d.` # no domain part
-TODAY=`date +%m%d%a`
-WEEKDAY=`date +%a`
-H5VER= # default to current CVS version
-H5VERSION= # default to current CVS version
-n_test=0 # Number of tests ran
-n_pass=0 # Number of tests passed
-n_fail=0 # Number of tests failed
-n_skip=0 # Number of tests skipped
-
-# Default to do checkout (only once) and test, no release.
-# Will run test only if there is significant differences from previous version.
-# If srcdir is not used, don't launched multiple tests
-SNAPSHOT="${DEBUGMODE:+echo }bin/snapshot"
-SRCDIR="srcdir"
-# Default standard Snaptest commands
-SNAPCMD="$SRCDIR test clean"
-# Default Standard snaptest command options
-STANDARD_OPT=""
-ENABLE_PARALLEL="--enable-parallel"
-CONFIGNAME=$HOSTNAME # Name used in the SNAPTESTCFG file
-
-# test host default as local host.
-TESTHOST=""
-
-#################################
-# Function definitions
-#################################
-
-# Print messages to stdout
-# Use this to show output heading to stdout
-PRINT()
-{
- echo "$*"
-}
-
-# Show seconds since midnight.
-# This is used to calculate seconds elapsed
-SecOfDay()
-{
- set `date '+%H %M %S'`
- t_sec=`expr $1 \* 3600 + $2 \* 60 + $3`
- echo $t_sec
-}
-
-# Calculated the elapsed time (in seconds) between the first
-# and second time. If second time is smaller than the first,
-# we assume the clock has passed midnight and calculate appropriately.
-ElapsedTime()
-{
- if [ $2 -lt $1 ]; then
- t_sec=`expr 3600 \* 24 - $1 + $2`
- else
- t_sec=`expr $2 - $1`
- fi
- echo `expr $t_sec / 60`m `expr $t_sec % 60`s
-}
-
-# Report errors
-# $1--an error message to be printed
-REPORT_ERR()
-{
- ERRMSG=$1
- # print it with a banner shifted right a bit
- PRINT " *************************************"
- PRINT " `date`"
- PRINT " $ERRMSG"
- PRINT " *************************************"
- # report it in the FAILED-LOG file too
- PRINT "$ERRMSG" >> $FAILEDLOG
-}
-
-#
-# Report results of the last test done
-REPORT_RESULT()
-{
- if [ $retcode -eq 0 ]; then
- if [ $skiptest = yes ]; then
- n_skip=`expr $n_skip + 1`
- PRINT "SKIPPED ${HOSTNAME}: $TEST_TYPE" | tee -a $SKIPPEDLOG
- else
- n_pass=`expr $n_pass + 1`
- PRINT "PASSED ${HOSTNAME}: $TEST_TYPE" | tee -a $PASSEDLOG
- fi
- else
- # test failed.
- n_fail=`expr $n_fail + 1`
- REPORT_ERR "****FAILED ${HOSTNAME}: $TEST_TYPE****"
- fi
-}
-
-# Print a blank line
-PRINT_BLANK()
-{
- PRINT
-}
-
-# Print test trailer
-PRINT_TEST_TRAILER()
-{
- PRINT "*** finished $TEST_TYPE tests for $HOSTNAME ***"
- date; EndTime=`SecOfDay`
- PRINT Total time = `ElapsedTime $StartTime $EndTime`
- PRINT_BLANK
-}
-
-# Print trailer summary
-PRINT_TRAILER()
-{
- PRINT "*** finished tests in $HOSTNAME ***"
- date; TotalEndTime=`SecOfDay`
- PRINT "${HOSTNAME}: Ran $n_test($n_pass/$n_fail/$n_skip) $runtest_type, Grand total test time = " \
- "`ElapsedTime $TotalStartTime $TotalEndTime`" | tee -a $TIMELOG
- PRINT_BLANK
-}
-
-# Figure out which remote command to use to reach a host.
-# Try ssh first, then rsh since fewer machines support rsh exec.
-# $1--hostname to reach.
-CHECK_RSH()
-{
- # Figure out how to use ping command in this host.
- # Some hosts use "ping host count", some use "ping -c count host".
- # Test "ping -c 3 -w 5" since it has timeout feature.
- # Test "ping -c ..." style before "ping host 3" because some machines
- # that recognize -c treat 'ping localhost 3' as to ping host '3'.
- if [ -z "$PING" ]; then
- if ping -c 3 -w 5 localhost >/dev/null 2>&1; then
- PING='ping -c 3 -w 5'
- PINGCOUNT=
- elif ping -c 3 localhost >/dev/null 2>&1; then
- PING='ping -c 3'
- PINGCOUNT=
- elif ping localhost 3 >/dev/null 2>&1; then
- PING=ping
- PINGCOUNT=3
- else # don't know how to use ping.
- PING=no_ping
- PINGCOUNT=
- fi
- fi
- #
- host=$1
- # Try remote command with host if it responds to ping.
- # Still try it if we don't know how to do ping.
- if [ no_ping = "$PING" ] || $PING $host $PINGCOUNT >/dev/null 2>&1; then
- if ssh $host -n hostname >/dev/null 2>&1; then
- RSH=ssh
- elif rsh $host -n hostname >/dev/null 2>&1; then
- RSH=rsh
- else
- PRINT cannot remote command with $host
- RSH="NoRemoteCommand"
- fi
- else
- RSH="NotReachable"
- fi
-}
-
-
-# Wait for a file for at most number of minutes
-# $1--the file
-# $2--number of minutes
-# WAIT_STATUS set to:
-# -1 if errors encountered
-# 0 if file found within time limit
-# 1 if file not found within time limit
-WAITFOR()
-{
- wait_file=$1
- nminutes=$2
- if [ -z "$wait_file" -o ! "$nminutes" -ge 0 ]
- then
- PRINT "errors in argument of WAITFOR(): wait_file($1) or nminutes($2)"
- WAIT_STATUS=-1
- return
- fi
- while [ ! -f $wait_file ]; do
- if [ $nminutes -gt 0 ]; then
- PRINT "Wait For $wait_file to appear"
- sleep 60 #sleep 1 minute
- else
- WAIT_STATUS=1
- return
- fi
- nminutes=`expr $nminutes - 1`
- done
- WAIT_STATUS=0
- return
-}
-
-
-# Wait till a file disappears for at most number of minutes.
-# Useful to wait till a lock is removed by another process.
-# $1--the file
-# $2--number of minutes
-# WAIT_STATUS set to:
-# -1 if errors encountered
-# 0 if file disappears within time limit
-# 1 if file has not disappeared within time limit
-WAITTILL()
-{
- wait_file=$1
- nminutes=$2
- if [ -z "$wait_file" -o ! "$nminutes" -ge 0 ]
- then
- PRINT "errors in argument of WAITTILL(): wait_file($1) or nminutes($2)"
- WAIT_STATUS=-1
- return
- fi
- while [ -f $wait_file ]; do
- if [ $nminutes -gt 0 ]; then
- PRINT "Wait till $wait_file has disappeared"
- sleep 60 #sleep 1 minute
- else
- WAIT_STATUS=1
- return
- fi
- nminutes=`expr $nminutes - 1`
- done
- WAIT_STATUS=0
- return
-}
-
-
-# Run one snapshot test
-# $*--Types of test being run
-RUNSNAPTEST()
-{
- SNAPCMD_OPT="$STANDARD_OPT" # snapshot test option
- SRCDIRNAME=${HOSTNAME}
- # restore CC, PATH in case they were changed in the last test.
- CC="$CC_SAVED"
- PATH=$PATH_SAVED
- export PATH # DEC OSF1 needs to export PATH explicitly
- TEST_TYPE=$*
- retcode=0
- skiptest=no
- date
- PRINT "*** starting $TEST_TYPE tests in $HOSTNAME ***"
- PRINT "Uname -a: `uname -a`"
-
- # Parse the test type and set options accordingly.
- # See comments of SNAPTEST_CONFIG_PARSE().
- while [ $# -gt 0 ]; do
- case $1 in
- -n32) # want -n32 option
- SRCDIRNAME=${SRCDIRNAME}-n32
- CC="cc -n32"
- export CC
- ;;
- -64) # want -64 option
- SRCDIRNAME=${SRCDIRNAME}-64
- CC="cc -64"
- export CC
- ;;
- parallel) # want parallel test
- SNAPCMD_OPT="$SNAPCMD_OPT $ENABLE_PARALLEL"
- SRCDIRNAME=${SRCDIRNAME}-pp
- ;;
- standard) # standard test
- ;;
- --*)
- # option for configure
- SNAPCMD_OPT="$SNAPCMD_OPT $1"
- ;;
- op-configure)
- # option for configure
- SNAPCMD_OPT="$SNAPCMD_OPT $1 $2"
- shift
- ;;
- op-snapshot)
- # option for snapshot
- shift
- SNAPCMD_OPT="$SNAPCMD_OPT $1"
- ;;
- setenv)
- # pass them along to snapshot set environment variable
- shift
- SNAPCMD_OPT="$SNAPCMD_OPT setenv $1 $2"
- shift
- ;;
- setenvN)
- # set environment variable with $1 values
- # e.g., setenvN 3 x a b c is same as setenv x="a b c".
- # pass them along to snapshot set environment variable
- shift
- envN=$1
- shift
- envname=$1
- SNAPCMD_OPT="$SNAPCMD_OPT setenvN $envN $envname"
- envalue=
- while test $envN -gt 0; do
- shift
- envalue="$envalue $1"
- envN=`expr $envN - 1`
- done
- SNAPCMD_OPT="$SNAPCMD_OPT $envalue"
- ;;
- skip)
- # skip this test
- skiptest=yes
- ;;
- srcdirname)
- # Use this before using parallel and -n32 since this overrides
- # the others.
- shift
- SRCDIRNAME=$1
- ;;
- deploy)
- # deploy the built binary.
- shift
- SNAPCMD_OPT="$SNAPCMD_OPT deploy $1"
- ;;
- deploydir)
- # default directory for deployment.
- shift
- SNAPCMD_OPT="$SNAPCMD_OPT deploydir $1"
- ;;
- *) # unknown test
- PRINT "$0: unknown type of test ($1)"
- retcode=1
- ;;
- esac
- shift
- done
-
- if [ $retcode -ne 0 -o $skiptest = yes ]; then
- errcode=$retcode
- return $retcode
- fi
-
- # Track down the zlib software
- ans=`$SNAPYARD/current/bin/locate_sw zlib`
- if [ $? = 0 ]; then
- Z_INC=`echo $ans | cut -f1 -d,`
- Z_LIB=`echo $ans | cut -f2 -d,`
- SNAPCMD_OPT="$SNAPCMD_OPT zlib $Z_INC,$Z_LIB"
- else
- # cannot locate zlib software.
- # continue the test, maybe configure can find it.
- :
- fi
-
- if [ -n "${SRCDIRNAME}" ]; then
- SNAPCMD_OPT="$SNAPCMD_OPT srcdirname ${SRCDIRNAME}"
- fi
-
- # Setup log file name to save test output
- THIS_MINUTE=`date +%H%M`
- LOGFILE=${LOGBASENAME}/${SRCDIRNAME}_${TODAY}_${THIS_MINUTE}
- PRINT "Running snapshot with output saved in"
- PRINT " $LOGFILE"
- (date; PRINT Hostname=$HOSTNAME) >> $LOGFILE
-
- (
- cd $SNAPYARD/current
- $SNAPSHOT $SNAPCMD $SNAPCMD_OPT
- ) >> $LOGFILE 2>&1
- retcode=$?
- [ $retcode -ne 0 ] && errcode=$retcode
-
- date >> $LOGFILE
- if [ $retcode -ne 0 ]; then
- # Dump the first 10 lines and the last 30 lines of the LOGFILE.
- ( ntail=30
- echo =========================
- echo "Dumping logfile of ${HOSTNAME}: $TEST_TYPE"
- echo "Last $ntail lines of $LOGFILE"
- echo =========================
- tail -$ntail $LOGFILE
- echo =========================
- echo Dumping done
- echo =========================
- echo ""
- ) >> $FAILEDDETAIL
- fi
-}
-
-TIMELIMIT_PARSE()
-{
- # Function returns timeparam for timekeeper via standard out -
- # any debug statements should be 'echo "Debug string" >&2' or timekeeper
- # will declare timeparam to be non-numeric and ignore it.
- while read x y ; do
- # Scan for entry for this weekday.
- xd=`echo $x | cut -f1 -d/`
- if [ "$xd" = ${WEEKDAY} ]; then
- # strip away the weekday/ part.
- timeparam=`echo $x | cut -f2 -d/`
- break
- fi
- case "$x" in
- '' | '#'*)
- # blank or comment lines. Continue.
- ;;
- ???/*)
- # Ignore any entry not of this weekday.
- ;;
- *)
- timeparam="$x"
- ;;
- esac
- done
- echo $timeparam
- return
-}
-
-# configuration parsing.
-# Taking configuration from input.
-# This should be invoke with configure file as stdin.
-# Syntax of the configure file:
-# All lines started with the # are comment lines and are ignored.
-# Blank lines are ignored too.
-# Each config line starts with a "Scope" followed by test types.
-#
-# Scope can be:
-# standard ... # what the standard test types are.
-# <host>: <test> Do <test> for <host>
-# all: <test> Do <test> for all hosts.
-# <weekday>/... Use this scope if the <weekday> matches.
-# <weekday> can be {Mon,Tue,Wed,Thu,Fri,Sat,Sun}
-# If no <host>: input for a <host>, the standard test is used.
-#
-# Test types:
-# standard tests defined in standard scope.
-# -n32 -n32 mode. Apply to 64/32 bit OS such as IRIX64.
-# parallel parallel mode.
-# op-configure <option> configure option
-# op-snapshot <option> snapshot option
-# --* configure option
-# setenv <name> <value> set environment variable <name> to <value>
-# Pass along to snapshot
-# setenvN <N> <name> <value> ...
-# set environment variable with <N> values
-# e.g., setenvN 3 x a b c is same as setenv x="a b c".
-# Pass along to snapshot.
-# skip skip this test
-# srcdirname <name> use <name> as the build-directory.
-# deploy <name> deploy the built binary at directory <name>.
-# deploydir <name> use <name> as the default directory for deployment.
-SNAPTEST_CONFIG_PARSE()
-{
- while read x y ; do
- # Scan for entry for this weekday.
- xd=`echo $x | cut -f1 -d/`
- if [ "$xd" = ${WEEKDAY} ]; then
- # strip away the weekday/ part.
- x=`echo $x | cut -f2 -d/`
- fi
- case "$x" in
- '' | '#'*)
- # blank or comment lines. Continue.
- ;;
- ???/*)
- # Ignore any entry not of this weekday.
- ;;
- standard)
- #standard configuration
- STANDARD_OPT="$y"
- ;;
- all: | ${CONFIGNAME}:)
- # types of test for all hosts or this host
- if [ -n "$TEST_TYPES" ]; then
- TEST_TYPES="$TEST_TYPES ; $y"
- else
- TEST_TYPES="$y"
- fi
- ;;
- *:) # ignore types of test for other hosts
- ;;
- *) # unknown configuration option
- PRINT $x $y
- PRINT "***Unknown configuration option. Ignored.***"
- ;;
- esac
- done
-}
-
-# Snap Test configuration parsing.
-# If TEST_TYPES is not set, set it to do the "standard" test.
-SNAPTEST_CONFIG()
-{
- TEST_TYPES=
- STANDARD_OPT=
- if [ -f $SNAPTESTCFG ]; then
- SNAPTEST_CONFIG_PARSE < $SNAPTESTCFG
- fi
- TEST_TYPES=${TEST_TYPES:-'standard'}
-}
-
-
-# Show usage page
-USAGE()
-{
-cat <<EOF
-Usage: runtest [-h] [-debug] [-r<version>] [-all] [-nocvs] [-nodiff] [<host> ...]
- -h
- print this help page
- -debug
- turn on debug mode
- -r<version>
- do runtest for <version>
- -all
- launch tests for all pre-defined testing hosts
- -nocvs
- do not do cvs commands
- -nodiff
- do not do diff commands
- -setup
- setup the directory structure for snapshot test
- -configname <name>
- use <name> as hostname in the parsing of the snaptest configure file
- <host>
- launch tests for <host>
-
--all and <host> are contradictory and whichever is specified last, is
-the one to take effect. If neither are given, do the test for the
-local host.
-EOF
-}
-
-
-# Verify if directory ($1) exists. If not, create it.
-CHECK_DIR()
-{
- dir=$1
- if test ! -e $1; then
- echo mkdir $1
- mkdir $1
- errcode=$?
- elif test ! -d $1; then
- echo $1 is not a directory
- errcode=1
- fi
-}
-
-
-#################################
-# Main
-#################################
-#################################
-# Set up global variables
-#################################
-retcode=0 # error code of individula task
-errcode=0 # error code of the whole test
-skiptest=no # if test is skipped
-CC_SAVED="$CC" # CC & PATH maybe changed within a test.
-PATH_SAVED=$PATH # These save the original values.
-timelimit=300 # default time limit (minutes) for the timekeeper
-
-#################################
-# Parse options
-#################################
-while [ $# -gt 0 ]; do
- case "$1" in
- -h) # help--show usage
- USAGE
- exit 0
- ;;
- -debug*)
- # set debug mode
- DEBUGMODE="$1"
- SNAPSHOT="echo bin/snapshot"
- PROGNAME="$PROGNAME $DEBUGMODE"
- PRINT "******** DEBUGMODE is $DEBUGMODE ************"
- ;;
- -r*)
- # version string
- H5VER="$1"
- ;;
- -all)
- # Test all hosts.
- TESTHOST=-all
- ;;
- -nocvs)
- # do not do cvs commands.
- NOCVS=nocvs
- ;;
- -nodiff)
- # do not do diff commands.
- NODIFF=nodiff
- ;;
- -configname)
- # use <name> as hostname in the parsing of the snaptest configure file.
- shift
- CONFIGNAME=$1
- ;;
- -setup)
- # setup the directory structure for snapshot test.
- CMD=setup
- ;;
- -*) # Unknown option
- PRINT "Unknown option ($1)"
- USAGE
- exit 1
- ;;
- *)
- TESTHOST=$*
- break
- ;;
- esac
- shift
-done
-
-# setup H5VER if not set yet
-if [ -z "$H5VER" -a -f bin/snapshot_version ]
-then
- . bin/snapshot_version
-fi
-
-if [ -n "$H5VER" ]
-then
- H5VERSION=hdf5_`echo $H5VER | sed -e s/-r// -e s/\\\./_/g`
- PROGNAME="$PROGNAME $H5VER"
-else
- H5VERSION=hdf5
-fi
-
-#################################
-# Setup snapshot test directories
-#################################
-BASEDIR=${HOME}/snapshots-${H5VERSION}
-# initial processing of setup option if requested
-if test x-$CMD = x-setup; then
- CHECK_DIR $BASEDIR
- test $errcode -ne 0 && exit 1
-elif [ ! -d ${BASEDIR} ]; then
- echo "BASEDIR ($BASEDIR) does not exist"
- exit 1
-fi
-# Show the real physical path rather than the symbolic path
-SNAPYARD=`cd $BASEDIR && /bin/pwd`
-# Log file basename
-LOGDIR=${SNAPYARD}/log
-LOGBASENAME=${LOGDIR}
-PASSEDLOG=${LOGDIR}/PASSED_LOG_${TODAY}
-FAILEDLOG=${LOGDIR}/FAILED_LOG_${TODAY}
-FAILEDDETAIL=${LOGDIR}/FAILED_DETAIL_${TODAY}
-SKIPPEDLOG=${LOGDIR}/SKIPPED_LOG_${TODAY}
-TIMELOG=${LOGDIR}/TIME_LOG_${TODAY}
-TIMEKEEPERLOG=${LOGDIR}/TIMEKEEPER_LOG_${TODAY}
-CVSLOG=${LOGDIR}/CVS_LOG_${TODAY}
-CVSLOG_LOCK=${LOGDIR}/CVS_LOG_LOCK_${TODAY}
-DIFFLOG=${LOGDIR}/DIFF_LOG_${TODAY}
-COPYRIGHT_ERR=${LOGDIR}/COPYRIGHT_ERR_${TODAY}
-# Snap Test hosts and Configuration files
-ALLHOSTSFILE=${SNAPYARD}/allhostfile
-SNAPTESTCFG=${SNAPYARD}/snaptest.cfg
-TIMELIMIT=${SNAPYARD}/timelimit
-TMPFILE="${LOGDIR}/#runtest.${TODAY}.$$"
-
-# more processing of setup option if requested
-if test x-$CMD = x-setup; then
- CHECK_DIR $LOGDIR
- test $errcode -ne 0 && exit 1
- CHECK_DIR $LOGDIR/OLD
- test $errcode -ne 0 && exit 1
- CHECK_DIR $SNAPYARD/TestDir
- test $errcode -ne 0 && exit 1
- # create empty test hosts or configure files if non-existing
- for f in $ALLHOSTSFILE $SNAPTESTCFG; do
- if test ! -f $f; then
- echo Creating $f
- touch $f
- fi
- done
- # create or update the current source.
- echo update current source
- $SNAPSHOT checkout
- # setup completed. Exit.
- exit 0
-fi
-
-#################################
-# Show some host status numbers
-#################################
-# df sometimes hangs due to file system problems. Invoke it as background
-# process and give it 10 seconds to finish. If it hangs, just continue.
-uptime
-df &
-sleep 10
-
-#################################
-# Setup test host(s)
-#################################
-if [ "$TESTHOST" = -all ]; then
- if [ -f $ALLHOSTSFILE ]; then
- TESTHOST=`sed -e '/^#/d;/^ *$/d' $ALLHOSTSFILE`
- else
- PRINT "could not access the all-hosts-file ($ALLHOSTSFILE)"
- USAGE
- exit 1
- fi
-fi
-
-
-#################################
-# Setup to print a trailer summary when exiting not via
-# the normal end of the script.
-#################################
-trap PRINT_TRAILER 0
-
-#
-TotalStartTime=`SecOfDay`
-
-# Process the configuration
-SNAPTEST_CONFIG
-PRINT STANDARD_OPT=$STANDARD_OPT
-PRINT TEST_TYPES=$TEST_TYPES
-PRINT_BLANK
-
-# Do a checkout if one has not been done today.
-# Then check MANIFEST file and copyrights noitces.
-if [ -z "$NOCVS" ]; then
- PRINT "Running CVS checkout with output saved in"
- PRINT " $CVSLOG"
- # Set CVS lock first
- touch $CVSLOG_LOCK
- ($SNAPSHOT checkout ) >> $CVSLOG 2>&1
- # Save error code and remove the lock
- errcode=$?
- rm -f $CVSLOG_LOCK
- if [ $errcode -ne 0 ]; then
- # test failed.
- REPORT_ERR "****FAILED ${HOSTNAME}: CVS checkout****"
- exit $errcode
- fi
- # ===================
- # Check MANIFEST file
- # ===================
- PRINT Checking MAINFEST file ...
- (cd $SNAPYARD/current; bin/chkmanifest) > $TMPFILE 2>&1
- errcode=$?
- if [ $errcode -eq 0 ]; then
- # test passed.
- cat $TMPFILE
- else
- # test failed.
- REPORT_ERR "****FAILED ${HOSTNAME}: MANIFEST check****"
- ( echo =========================
- echo "MANIFEST checking failed output"
- echo =========================
- cat $TMPFILE
- echo =========================
- echo "MANIFEST checking failed output done"
- echo =========================
- echo ""
- ) >> $FAILEDDETAIL
- fi
- rm $TMPFILE
- PRINT_BLANK
- # No copyright checking until what need copyright is decided. 2006/4/7.
- if false; then
- # ======================
- # Check Copyright notice
- # ======================
- PRINT Checking Copyrights notices ...
- if (cd $SNAPYARD/current; bin/chkcopyright) > $TMPFILE 2>&1 ; then
- echo Passed.
- else
- # Save the output and report some of it.
- # Do not report it as failed for runtest yet.
- # Send a separate report mail via hardcoding.
- # Need fixes/cleanup later.
- echo "Failed. See detail in another report mail"
- cp $TMPFILE $COPYRIGHT_ERR
- nheadlines=300
- ntaillines=5 # Number of lines in report summary.
- (
- echo =========================
- echo "Copyright checking failed. Showing first $nheadlines lines of output."
- echo "Complete output is in file $COPYRIGHT_ERR"
- echo =========================
- nreportlines=`wc -l < $COPYRIGHT_ERR`
- if [ $nreportlines -le `expr $nheadlines + $ntaillines` ]; then
- # Just print the whole file.
- cat $COPYRIGHT_ERR
- else
- # Show the first $nheadlines plus report summary
- head -$nheadlines $COPYRIGHT_ERR
- echo ...
- tail -$ntaillines $COPYRIGHT_ERR
- fi
- ) | Mail -s "${H5VERSION} Copyrights check Failed" hdf5lib
- fi
- rm $TMPFILE
- PRINT_BLANK
- fi
-else
- # make sure the cvs update, if done by another host, has completed.
- # First wait for the presence of $CVSLOG which signals some host
- # has started the cvs update. Then wait for the absence of $CVSLOG_LOCK
- # which signals the host has completed the cvs update.
- WAITFOR $CVSLOG 90
- if [ $WAIT_STATUS -ne 0 ]; then
- errcode=$WAIT_STATUS
- REPORT_ERR "****FAILED ${HOSTNAME}: Time expired waiting CVS update to start****"
- exit $errcode
- fi
- WAITTILL $CVSLOG_LOCK 10
- if [ $WAIT_STATUS -ne 0 ]; then
- errcode=$WAIT_STATUS
- REPORT_ERR "****FAILED ${HOSTNAME}: Time expired waiting CVS update to finish****"
- exit $errcode
- fi
-fi
-
-# run a snapshot diff to see if any significant differences between
-# the current and previous versions
-if [ -z "$NODIFF" ]; then
- $SNAPSHOT diff >> $DIFFLOG 2>&1
- errcode=$?
- # check the errcode only if NOT in DEBUG MODE
- if [ -z "$DEBUGMODE" -a $errcode -eq 0 ]; then
- # no need to run test
- PRINT "NO TEST: no significant differences between current and previous versions" |
- tee -a $PASSEDLOG
- exit 0
- fi
-fi
-
-# we can use the version of script in SNAPYARD/current now.
-# Don't do the diff or cvs update any more.
-PROGNAME="$SNAPYARD/current/$PROGNAME -nodiff -nocvs"
-
-# Decide to do test for the local host or for remote hosts
-if [ -n "$TESTHOST" -a $HOSTNAME != "$TESTHOST" ]; then
- date
- PRINT "*** launching tests from $HOSTNAME ***"
- PRINT_BLANK
- TEST_TYPE="launching"
- cd ${SNAPYARD}/log
- # Fork off timekeeper if concurrent tests will be used.
- if [ -n "$SRCDIR" ]; then
- timelimit=`TIMELIMIT_PARSE < $TIMELIMIT`
- ($SNAPYARD/current/bin/timekeeper $timelimit > $TIMEKEEPERLOG 2>&1 &)
- PRINT " Fork off timekeeper $timelimit"
- fi
- runtest_type="hosts"
- for h in $TESTHOST; do
- # Must do CONFIGNAME before $h got changed by the second cut.
- # cut returns the whole string if there is no / in the string
- # at all. But that works okay for the CONFIGNAME too.
- CONFIGNAME=`echo $h | cut -f2 -d/`
- h=`echo $h | cut -f1 -d/`
- n_test=`expr $n_test + 1`
- TMP_OUTPUT="#${h}_${CONFIGNAME}.out"
- (PRINT "=============="
- PRINT "Testing $h"
- PRINT "==============") > $TMP_OUTPUT
- CHECK_RSH $h
- # run the remote shell command with output to $TMP_OUTPUT
- case "$RSH" in
- rsh|ssh)
- CMD="$RSH $h -n $PROGNAME -configname $CONFIGNAME"
- PRINT $CMD
-
- # launch concurrent tests only if srcdir is used
- if [ -n "$SRCDIR" ]; then
- $CMD || REPORT_ERR "****FAILED ${h}: Abnormal exit from runtest****" && PRINT_BLANK &
- echo $! > PID.${h}_${CONFIGNAME}
- else
- $CMD || REPORT_ERR "****FAILED ${h}: Abnormal exit from runtest****" && PRINT_BLANK
- fi
- ;;
- NoRemoteCommand)
- PRINT $h does not accept Remote Command "(`date`)"
- ;;
- NotReachable)
- PRINT $h is not reachable "(`date`)"
- ;;
- *)
- PRINT "CHECK_RSH for $h returned unknown result ($RSH)"
- ;;
- esac >> $TMP_OUTPUT 2>&1
- done
- # wait for all launched tests to finish, then cat them back out.
- wait
- # Pause a moment in case the timekeeper is terminating processes.
- wait 30
- for h in $TESTHOST; do
- CONFIGNAME=`echo $h | cut -f2 -d/`
- h=`echo $h | cut -f1 -d/`
- TMP_OUTPUT="#${h}_${CONFIGNAME}.out"
- cat $TMP_OUTPUT
- # Verify test script did complete by checking the last lines
- (tail -5 $TMP_OUTPUT | grep -s 'Grand total' > /dev/null 2>&1) ||
- (REPORT_ERR "****FAILED ${h}: snaptest did not complete****" &&
- PRINT_BLANK)
- rm -f $TMP_OUTPUT PID.${h}_${CONFIGNAME}
- done
- exit 0
-fi
-
-# run the test(s)
-# Note that first field is cut without -s but all subsequent cut
-# must use -s. If -s is not used at all, a $TEST_TYPES that has
-# no ';' (only 1 test), will pass through intact in all cut. That
-# results in infinite looping.
-# If -s is used with the first field, it will suppress completely
-# a $TYPE_TYPES that has no ';' (only 1 tst ). That results in no
-# test at all.
-# Note that n_test must start as 1.
-#
-n_test=1
-runtest_type="tests"
-TEST="`echo $TEST_TYPES | cut -f$n_test -d';'`"
-while [ -n "$TEST" ]; do
- StartTime=`SecOfDay`
- RUNSNAPTEST $TEST
- REPORT_RESULT
- PRINT_TEST_TRAILER
-
- n_test=`expr $n_test + 1`
- TEST="`echo $TEST_TYPES | cut -f$n_test -s -d';'`"
-done
-# dec n_test to show the actual number of tests ran.
-n_test=`expr $n_test - 1`
-
-PRINT_TRAILER
-
-# disable trailer summary printing since all trailers have been
-# printed and we are exiting normally.
-trap 0
-exit $errcode
diff --git a/bin/snapshot b/bin/snapshot
deleted file mode 100755
index 7fcf3ab..0000000
--- a/bin/snapshot
+++ /dev/null
@@ -1,837 +0,0 @@
-#!/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://www.hdfgroup.org/licenses.
-# If you do not have access to either file, you may request a copy from
-# help@hdfgroup.org.
-
-# This script should be run nightly from cron. It checks out the source
-# from the source repository and compares it against the previous
-# snapshot. If anything significant changed then a new snapshot is
-# created, the minor version number is incremented, and the change is
-# checked back into the source repository.
-#
-
-
-# function definitions
-TIMESTAMP()
-{
- echo "=====" "$1": "`date`" "====="
-}
-
-EXIT_BANNER()
-{
- TIMESTAMP "Exit $PROGNAME with status=$?"
-}
-
-# Show current total disk usage.
-DISKUSAGE()
-{
- du -ks | \
- ( read x y; echo "Disk Usage=$x KB" )
-}
-
-# function provided for testing software downloaded as tar files. A version of
-# this function that properly extracts the downloaded files can be provided in
-# the snapshots-${sw}-overrides file.
-EXTRACT()
-{
- echo "Error: ${SWVERSION} is in source repository - does not need extraction."
-}
-
-# Standard procedure for checking out or updating source code from an hdfgroup
-# git repository. Override the function for other repositories or procedures.
-SOURCE_CHECKOUT()
-{
- if test -n $GIT_URL; then
- if [ -n "$AUTOGEN" ]; then
- echo "Creating fresh clone of $GIT_URL in $BASEDIR/current_src"
- # Check out the current version from source repository.
- (cd $BASEDIR; rm -rf current_src
- if test -z $GIT_BRANCH; then
- echo "Testing empty branch $GIT_BRANCH."
- git clone $GIT_URL current_src
- else
- echo "Testing branch $GIT_BRANCH."
- git clone $GIT_URL -b $GIT_BRANCH current_src
- fi
- ) || exit 1
- else
- echo "Creating fresh clone of $GIT_URL in $BASEDIR/current"
- # Check out the current version from source repository.
- (cd $BASEDIR; rm -rf current
- if test -n $GIT_BRANCH; then
- git clone $GIT_URL -b $GIT_BRANCH current
- else
- git clone $GIT_URL current
- fi ) || exit 1
- fi
- else
- echo "Warning! Source directory ("current") is not checked out from git."
- fi
-}
-
-# Standard procedure for running the configure command in a build (test)
-# directory
-RUNCONFIGURE()
-{
- if [ "${CURRENT}" != "${TESTDIR}" -a "$CPSRC" = "yes" ]; then
- echo "Copying source files to ${TESTDIR}."
- cp -pr ${CURRENT}/* ${TESTDIR}
- cd ${TESTDIR}
- ./${CONFIGURE}
- elif [ -n "${AUTOGEN}" ]; then
- ${CURRENTSRC}/${CONFIGURE}
- else
- ${CURRENT}/${CONFIGURE}
- fi
-}
-
-# Sometimes "make distclean" doesn't adequately remove files from the previous
-# build. If a build (test) directory was used, its contents can be entirely
-# deleted to provide a clean start. If the test is building in the source
-# directory, the contents can't be deleted, so run "make distclean".
-DISTCLEAN()
-{
- if [ "${srcdir}" = "yes" -a -n "${SRCDIRNAME}" -a -d ${BASEDIR}/TestDir/${SRCDIRNAME} ]; then
- echo "Remove contents of $SRCDIRNAME.\n"
- rm -rf ${BASEDIR}/TestDir/${SRCDIRNAME}/*
- else
- echo "$MAKE distclean"
- (cd ${TESTDIR} && ${MAKE} distclean)
- fi
-}
-
-# Several of the software packages tested do not support make check-install.
-# Those that support it should have a version of this function in their
-# override with the following lines:
-# TIMESTAMP "check-install $1"
-# ${MAKE} check-install $1
-CHECKINSTALL()
-{
- echo "check-install is not supported for ${SWVERSION}"
-}
-
-# Function for hdf4 and hdf5 to override to check in changes after snapshot.
-# Safety measure to avoid unintended checkins to other repositories.
-COMMITSNAPSHOT()
-{
- echo "original hdf5 script committed code changes back into git."
-}
-
-DISPLAYUSAGE()
-{
- set -
- cat <<EOF
-Usage: $PROGNAME [all] [checkout] [ftp <URL> [diff] [test] [srcdir] [release] [help]
- [clean] [distclean] [echo] [deploy <dir>] [deploydir <dir>]
- [zlib <zlib_path>] [releasedir <dir>] [srcdirname <dir>] [check-vfd]
- [check-passthrough-vol]
- [exec <command>] [module-load <module-list>] [op-configure <option>]
- [--<option>]
- all: Run all commands (checkout, test & release)
- [Default is all]
- checkout: Run source checkout
- diff: Run diff on current and previous versions. Exit 0 if
- no significant differences are found. Otherwise, non-zero.
- deploy: deploy binary to directory <dir>
- deploydir: use <dir> as the default directory for deployment
- test: Run test
- release: Run release
- clean: Run make clean
- distclean:Run make distclean
- echo: Turn on echo mode (set -x)
- setenv <name> <value>:
- Set environment variable <name> to <value>.
- setenvN <N> <name> <value> ...:
- Set environment variable with <N> values.
- E.g., setenvN 3 x a b c is same as setenv x="a b c".
- srcdir: Use srcdir option (does not imply other commands)
- "snapshot srcdir" is equivalent to "snapshot srcdir all"
- "snapshot srcdir checkout" is equivalent to "snapshot checkout"
- srcdirname <dir>:
- Use <dir> as the srcdir testing directory if srcdir is chosen.
- If <dir> starts with '-', it is append to the default name
- E.g., "snapshot srcdir srcdirname -xx" uses hostname-xx
- [Default is hostname]
- help: Print this message
- echo: Turn on shell echo
- zlib <zlib_path>:
- Use <zlib_path> as the ZLIB locations
- [Default is $ZLIB_default]
- releasedir <dir>:
- Use <dir> as the release directory
- [Default is $ReleaseDir_default]
- check-vfd:
- Run make check-vfd instead of just make check.
- check-passthrough-vol:
- Run make check-passthrough-vol instead of just make check.
- NOTE: Will only succeed with passthrough VOL connectors
- that use the native VOL connector as the terminal
- connector.
- exttest <testscript>;
- Run testscript;
- exec <command>:
- Run <command>;
- module-load <module-list>:
- Load modules in comma-separated <module-list>;
- op-configure <option>:
- Pass <option> to the configure command
- E.g., "snapshot op-configure --enable-parallel"
- configures for parallel mode
- --<option>:
- Pass --<option> to the configure command
- E.g., "snapshot --enable-parallel"
- configures for parallel mode
-EOF
- exit $errcode
-}
-
-# MAIN
-# SGI /bin/sh replaces $0 as function name if used in a function.
-# Set the name here to avoid that ambiguity and better style too.
-PROGNAME=$0
-SNAPSHOTNAME=
-HDFREPOS=
-DOCVERSION=""
-MODULELIST=""
-
-if [ -f bin/snapshot_params ]; then
- . bin/snapshot_params
- echo "Added snapshot_params."
-fi
-if [ -z "$SWVER" -a -f bin/snapshot_version ]
-then
- . bin/snapshot_version
- echo "Added snapshot_version."
-fi
-if [ -n ${HDFREPOS} -a -f bin/snapshot-${HDFREPOS}-overrides ]; then
- . bin/snapshot-${HDFREPOS}-overrides
- echo "Added snapshot-${HDFREPOS}-overrides."
-fi
-
-echo "====================================="
-echo "$PROGNAME $*"
-echo "====================================="
-TIMESTAMP MAIN
-uname -a
-
-# setup exit banner message
-trap EXIT_BANNER 0 1 2 9 15
-
-# Dump environment variables before option parsing
-echo ===Dumping environment variables before option parsing ===
-printenv | sort
-echo ===Done Dumping environment variables before option parsing ===
-
-# snapshots release directory. Default relative to $BASEDIR.
-ReleaseDir_default=release_dir
-
-# Where is the zlib library?
-# At NCSA, half of the machines have it in /usr/lib, the other half at
-# /usr/ncsa/lib. Leave it unset.
-ZLIB_default=
-ZLIB=$ZLIB_default
-
-# What compression methods to use? (md5 does checksum). Doc was apparently
-# added as a compression method to create a separate tarfile containing the
-# documentation files for v 1.8 and above.
-if [ "${SWVERSION}" = "hdf5_1_6" ]; then
- METHODS="gzip bzip2 md5"
-else
- METHODS="gzip bzip2 doc"
-fi
-
-# Use User's MAKE if set. Else use generic make.
-MAKE=${MAKE:-make}
-
-# Default check action.
-CHECKVAL=check
-
-#
-# Command options
-cmd="all"
-test_opt=""
-errcode=0
-AUTOGEN=""
-EXTTEST=""
-EXEC_CMD_ARG=""
-while [ $# -gt 0 ] ; do
- case "$1" in
- all)
- cmd="all"
- ;;
- checkout-autogen)
- cmdcheckout="checkout"
- AUTOGEN="autogen"
- cmd=""
- ;;
- checkout)
- cmdcheckout="checkout"
- cmd=""
- ;;
- ftp)
- echo "Setting ftp flags in snapshot script"
- cmdcheckout="checkout"
- cmdftp="ftp"
- cmd=""
- shift
- if [ $# -lt 1 ]; then
- echo "URL missing"
- errcode=1
- cmd="help"
- break
- fi
- ftp_url="$1"
- echo "ftp_url is $ftp_url"
- ;;
- diff)
- cmddiff="diff"
- cmd=""
- ;;
- deploy)
- # deploy the built binary.
- shift
- if [ $# -lt 1 ]; then
- echo "deploy <dir> missing"
- errcode=1
- cmd="help"
- break
- fi
- cmddeploy="deploy"
- DEPLOYDIRNAME="$1"
- ;;
- deploydir)
- # default directory for deployment.
- shift
- if [ $# -lt 1 ]; then
- echo "deploydir <dir> missing"
- errcode=1
- cmd="help"
- break
- fi
- deploydir="$1"
- ;;
- test)
- cmdtest="test"
- cmd=""
- ;;
- setenv)
- # set environment variable
- shift
- eval $1="$2"
- export $1
- shift
- ;;
- setenvN)
- # set environment variable with $1 values
- # e.g., setenvN 3 x a b c is same as setenv x="a b c".
- # a kludge now--the extra single quotes are needed
- # else eval complains.
- shift
- envN=$1
- shift
- envname=$1
- envalue=
- while test $envN -gt 0; do
- shift
- envalue="$envalue $1"
- envN=`expr $envN - 1`
- done
- eval $envname="'$envalue'"
- export $envname
- ;;
- srcdir)
- #use srcdir option for test
- srcdir="yes"
- ;;
- srcdirname)
- shift
- if [ $# -lt 1 ]; then
- echo "srcdirname <dir> missing"
- errcode=1
- cmd="help"
- break
- fi
- SRCDIRNAME="$1"
- ;;
- release)
- cmdrel="release"
- cmd=""
- ;;
- autogen-release)
- cmdrel="autogen-release"
- cmd=""
- ;;
- clean | distclean)
- cmdclean="$1"
- cmd=""
- ;;
- help)
- cmd="help"
- break
- ;;
- echo)
- set -x
- break
- ;;
- zlib)
- shift
- if [ $# -lt 1 ]; then
- echo "ZLIB information missing"
- errcode=1
- cmd="help"
- break
- fi
- ZLIB="$1"
- ;;
- releasedir)
- shift
- if [ $# -lt 1 ]; then
- echo "Release directory name missing"
- errcode=1
- cmd="help"
- break
- fi
- ReleaseDir="$1"
- ;;
- exttest)
- shift
- if [ $# -lt 1 ]; then
- echo "exttest script name missing"
- errcode=1
- cmd="help"
- break
- fi
- cmd=""
- EXTTEST="$1"
- ;;
- exec)
- shift
- if [ $# -lt 1 ]; then
- echo "exec command name missing"
- errcode=1
- cmd="help"
- break
- fi
- cmd=""
- EXEC_CMD_ARG="$@"
- # exit the parsing while loop since all arguments have been consumed.
- break
- ;;
- check-vfd)
- CHECKVAL=check-vfd
- ;;
- check-passthrough-vol)
- CHECKVAL=check-passthrough-vol
- ;;
- module-load)
- shift
- if [ $# -lt 1 ]; then
- echo "missing module list to load"
- errcode=1
- cmd="help"
- break
- fi
- MODULELIST="$1"
- ;;
- --*)
- OP_CONFIGURE="$OP_CONFIGURE $1"
- ;;
- op-configure)
- shift
- if [ $# -lt 1 ]; then
- echo "op-configure option missing"
- errcode=1
- cmd="help"
- break
- fi
- OP_CONFIGURE="$OP_CONFIGURE $1"
- ;;
- *)
- echo "Unknown option $1"
- errcode=1
- cmd="help"
- break
- ;;
- esac
- shift
-done
-
-if [ -n "$MODULELIST" ]; then
- . ~/.bashrc
- module use /opt/pkgs/modules/all
- # load module command will take a space separated list of modules.
- # If we have a comma separated list, convert ',' to ' '.
- MODULELIST="$( echo -e "$MODULELIST" | tr ',' ' ' )"
- module load $MODULELIST
-fi
-
-# Dump environment variables after option parsing
-echo ===Dumping environment variables after option parsing ===
-printenv | sort
-echo ===Done Dumping environment variables after option parsing ===
-
-if [ "$cmd" = help ]; then
- DISPLAYUSAGE
-fi
-
-# Setup the proper configure option (--with-zlib) to use zlib library
-# provide ZLIB is non-empty.
-ZLIB=${ZLIB:+"--with-zlib="$ZLIB}
-# Adding --prefix as a configure option will put the path to the deploy
-# directory in the initial libhdf5*.la files
-if [ -n "$DEPLOYDIRNAME" ]; then
- OP_CONFIGURE="$OP_CONFIGURE --prefix=${deploydir}/${DEPLOYDIRNAME}"
-fi
-CONFIGURE="configure $OP_CONFIGURE"
-# echo "Configure command is $CONFIGURE"
-
-# Execute the requests
-snapshot=yes
-
-BASEDIR=${HOME}/snapshots-${SNAPSHOTNAME}
-if [ ! -d ${BASEDIR} ]; then
- echo "BASEDIR ($BASEDIR) does not exist"
- exit 1
-fi
-
-CURRENT=${BASEDIR}/current
-PREVIOUS=${BASEDIR}/previous
-ReleaseDir=${ReleaseDir:=${BASEDIR}/${ReleaseDir_default}}
-HOSTNAME=`hostname | cut -f1 -d.` # no domain part
-
-# Try finding a version of diff that supports the -I option too.
-DIFF=diff
-for d in `echo $PATH | sed -e 's/:/ /g'` ; do
- test -x $d/diff && $d/diff -I XYZ /dev/null /dev/null > /dev/null 2>&1 &&
- DIFF=$d/diff && break
-done
-
-#=============================
-# Run source checkout
-#=============================
-if [ "$cmd" = "all" -o -n "$cmdcheckout" ]; then
- TIMESTAMP "checkout"
- # ${BASEDIR}/bin is now updated from git by EveningMaint or DailyMaint
- # to avoid updating the scripts in ${BASEDIR}/bin while they are running.
-
- if [ -z "$AUTOGEN" ]; then
- # If there is a Makefile in ${CURRENT}, the last test done in it
- # has not been distclean'ed. They would interfere with other
- # --srcdir build since make considers the files in ${CURRENT}
- # take precedence over files in its own build-directory. Run
- # a "make distclean" to clean them all out. This is not really
- # part of the "checkout" functions but this is the most convenient
- # spot to do the distclean. We will also continue the checkout process
- # regardless of the return code of distclean.
- ( cd ${CURRENT}; test -f Makefile && ${MAKE} distclean)
- fi
- # echo "cmdftp is $cmdftp; ftp_url is $ftp_url"
- if [ -n "$cmdftp" ]; then
- echo "Get the NetCDF4 source from their ftp server."
- echo "Command executed is: 2>&1 wget -N $ftp_url"
- cd ${BASEDIR};
- WGET_OUTPUT="`2>&1 wget -N $ftp_url`"
- errcode=$?
- if [[ $errcode -ne 0 ]]; then
- exit $errcode
- fi
-
- if [ $? -ne 0 ];then
- echo $0: "$WGET_OUTPUT" Exiting.
- exit 1
- fi
-
- # echo "Wget output was $WGET_OUTPUT"
-
- if echo "$WGET_OUTPUT" | fgrep 'not retrieving' &> /dev/null
- then
- echo "Snapshot unchanged"
- else
- echo "New snapshot downloaded"
- EXTRACT
- fi
- else
- SOURCE_CHECKOUT
- fi
-fi # Do source checkout
-
-
-#=============================
-# Run Test the HDF5 library
-#=============================
-if [ "$cmd" = "all" -o -n "$cmdtest" -o -n "$cmddiff" ]; then
- TIMESTAMP "Run Tests"
- # setup if srcdir is used.
- if [ -z "$srcdir" ]; then
- TESTDIR=${CURRENT}
- else
- #create TESTDIR if not exist yet
- case "$SRCDIRNAME" in
- "")
- SRCDIRNAME=$HOSTNAME
- ;;
- -*)
- SRCDIRNAME="$HOSTNAME$SRCDIRNAME"
- ;;
- esac
- TESTDIR=${BASEDIR}/TestDir/${SRCDIRNAME}
- test -d ${TESTDIR} || mkdir ${TESTDIR}
- # set TESTDIR to use the direct path to the local test directory
- # rather than the path through ${BASEDIR}.
- cd ${TESTDIR}
- TESTDIR=`pwd -P`
- cd ${CURRENT}
- fi
- # Make sure current version exists and is clean
- if [ -d ${TESTDIR} ]; then
- DISTCLEAN
- else
- errcode=$?
- snapshot=no
- exit $errcode
- fi
-
- # Compare it with the previous version. Compare only files listed in
- # the MANIFEST plus the MANIFEST itself.
- if [ -d ${PREVIOUS} ]; then
- if [ -z "${AUTOGEN}" ]; then
- CURRENTSRC=${CURRENT}
- else
- CURRENTSRC=${BASEDIR}/current_src
- fi
- if (${DIFF} -c ${PREVIOUS}/MANIFEST ${CURRENTSRC}/MANIFEST); then
- snapshot=no
- for src in `grep '^\.' ${CURRENTSRC}/MANIFEST|expand|cut -f1 -d' '`; do
- if ${DIFF} -I H5_VERS_RELEASE -I " released on " \
- -I " currently under development" \
- ${PREVIOUS}/$src ${CURRENTSRC}/$src
- then
- : #continue
- else
- snapshot=yes
- break
- fi
- done
- fi
- fi
-
- # if diff is chosen, exit 0 if no significant differences are found.
- # otherwise, exit 1. This includes cases of other failures.
- if [ -n "$cmddiff" ]; then
- if [ $snapshot = no ]; then
- exit 0
- else
- exit 1
- fi
- fi
-
- #=============================
- # Execute command if defined
- #=============================
- #echo BEFORE EXEC command
- #echo EXEC_CMD_ARG=${EXEC_CMD_ARG}
-
- if [ -n "$EXEC_CMD_ARG" ]; then
- TIMESTAMP ${EXEC_CMD_ARG}
- TESTDIR=${BASEDIR}/TestDir/${SRCDIRNAME}
- test -d ${TESTDIR} || mkdir ${TESTDIR}
- if cd ${TESTDIR}; then
- # clean up the directory before executing the command
- # Do we need to clean first?
- # rm -rf *
- #
- # If EXEC_CMD_ARG starts with a '/', it has an absolute path, else it is
- # relative to the BASEDIR.
- case "$EXEC_CMD_ARG" in
- /*)
- ${EXEC_CMD_ARG}
- ;;
- *)
- ${BASEDIR}/${EXEC_CMD_ARG}
- ;;
- esac
- errcode=$?
- else
- echo "${TESTDIR} not accessible"
- errcode=1
- fi
- # exit snapshot since nothing else to do, for now.
- exit $errcode
- fi
-
- # Build, run tests and install procedures
- if [ "$snapshot" = "yes" ] && [ "$NOMAKE" != "yes" ]; then
- FAIL_SECTION=""
- if [ -f ${TESTDIR}/failsection ]; then
- rm ${TESTDIR}/failsection
- fi
- if (cd ${TESTDIR} && \
- TIMESTAMP "configure" && echo "configure" > ${TESTDIR}/failsection && \
- RUNCONFIGURE && \
- sleep 2 && \
- TIMESTAMP "make" && echo "make" > ${TESTDIR}/failsection && \
- ${MAKE} && DISKUSAGE \
- TIMESTAMP ${CHECKVAL} && echo "make check" > ${TESTDIR}/failsection && \
- ${MAKE} ${CHECKVAL} && DISKUSAGE \
- TIMESTAMP "install" && echo "make install" > ${TESTDIR}/failsection && \
- ${MAKE} install && DISKUSAGE \
- TIMESTAMP "check-install" && echo "make check-install" > ${TESTDIR}/failsection && \
- CHECKINSTALL && DISKUSAGE \
- TIMESTAMP "uninstall" && echo "make uninstall" > ${TESTDIR}/failsection && \
- ${MAKE} uninstall && DISKUSAGE); then
- :
- else
- errcode=$?
- FAIL_SECTION=`cat ${TESTDIR}/failsection`
- echo "Failed running ${FAIL_SECTION}"
- snapshot=no
- exit $errcode
- fi
- elif [ $CPSRC ]; then
- cp -pr ${CURRENT}/* ${TESTDIR}
- else
- cmdclean=""
- fi
-fi # Test the HDF5 library
-
-# Run external test if configured
-
-#=============================
-#=============================
-#if [ -d "$CURRENT" ]; then
-if [ "$EXTTEST" != "" ]; then
- TIMESTAMP ${EXTTEST}
- TESTDIR=${BASEDIR}/TestDir/${SRCDIRNAME}
- test -d ${TESTDIR} || mkdir ${TESTDIR}
- cd ${TESTDIR}
- sleep 1
- TIMESTAMP $pwd
- ls
- ${BASEDIR}/${EXTTEST}
- errcode=$?
- exit $errcode
-fi
-
-#=============================
-# Run deployment if requested.
-#=============================
-if [ -n "$DEPLOYDIRNAME" ]; then
- # The daily tests deploy to .../hdf5/... or .../hdf4/... except on cobalt where the
- # deploy directory is in .../HDF5/... lc will take care of this. If hdf4 or hdf5
- # either upper or lower case isn't in the path, RELEASE.txt won't be found unless
- # it is in $CURRENT.
- POS4=`perl -e "print index(lc(\"${deploydir}/${DEPLOYDIRNAME}\"), 'hdf4')"`
- POS5=`perl -e "print index(lc(\"${deploydir}/${DEPLOYDIRNAME}\"), 'hdf5')"`
- if [ "${POS4}" -ge "0" ]; then
- RELEASE_TXT_LOC="release_notes"
- elif [ "${POS5}" -ge "0" ]; then
- RELEASE_TXT_LOC="release_docs"
- else
- RELEASE_TXT_LOC=""
- fi
-
- if [ "$snapshot" = "yes" ]; then
- TIMESTAMP "deploy"
- if (cd ${TESTDIR} &&
- ${BASEDIR}/bin/deploy ${deploydir}/${DEPLOYDIRNAME} && \
- TIMESTAMP "clean" && \
- ${MAKE} clean && \
- TIMESTAMP "check-install prefix=${deploydir}/${DEPLOYDIRNAME}" && \
- CHECKINSTALL prefix=${deploydir}/${DEPLOYDIRNAME}); then
- cd ${CURRENT}
- cp ${RELEASE_TXT_LOC}/RELEASE.txt ${deploydir}/${DEPLOYDIRNAME}
- cp COPYING ${deploydir}/${DEPLOYDIRNAME}
- #: #continue
- else
- errcode=$?
- exit $errcode
- fi
- fi
-fi # Deploy
-
-
-#=============================
-# Run Release snapshot, update version, and commit to source repository
-#=============================
-if [ "$cmd" = "all" -o -n "$cmdrel" ]; then
- if [ "$snapshot" = "yes" ]; then
- TIMESTAMP "release"
- DISTCLEAN
- (
- # Turn on exit on error in the sub-shell so that it does not
- # commit source if errors encounter here.
- set -e
- if [ "$cmdrel" = "autogen-release" ]; then
- cd ${BASEDIR}/current_src
- else
- cd ${CURRENT}
- fi
- if [ "$HDFREPOS" = "hdf4" ]; then
- RELEASE_VERSION="`perl bin/h4vers -v`"
- echo "Making snapshot release ($RELEASE_VERSION) to ${ReleaseDir}..."
- bin/release -d $ReleaseDir $METHODS
- perl bin/h4vers -i
- elif [ "$HDFREPOS" = "hdf5" ]; then
- RELEASE_VERSION="`perl bin/h5vers -v`"
- echo "Making snapshot release ($RELEASE_VERSION) to ${ReleaseDir}..."
- if [ "${DOCVERSION}" ]; then
- bin/release -d $ReleaseDir --docver ${DOCVERSION} $METHODS
- else
- bin/release -d $ReleaseDir $METHODS
- fi
- perl bin/h5vers -i
- else
- echo "need real release steps. For now, only move current version to previous"
- fi
- COMMITSNAPSHOT
- )
- errcode=$?
- fi
-
- # Replace the previous version with the current version.
- # Should check if the errcode of the release process but there
- # are other failures after release was done (e.g. h5vers or git failures)
- # that should allow the replacement to occur.
- rm -rf ${PREVIOUS}
- mv ${CURRENT} ${PREVIOUS}
-fi #Release snapshot
-
-
-#=============================
-# Clean the test area. Default is no clean.
-#=============================
-if [ -n "$cmdclean" ] && [ "$NOMAKE" != "yes" ]; then
- TIMESTAMP "clean"
- # setup if srcdir is used.
- if [ -z "$srcdir" ]; then
- TESTDIR=${CURRENT}
- else
- case "$SRCDIRNAME" in
- "")
- SRCDIRNAME=$HOSTNAME
- ;;
- -*)
- SRCDIRNAME="$HOSTNAME$SRCDIRNAME"
- ;;
- esac
- TESTDIR=${BASEDIR}/TestDir/${SRCDIRNAME}
- fi
- # clean it
- if (cd ${TESTDIR} && ${MAKE} $cmdclean ) then
- :
- else
- errcode=$?
- snapshot=no
- exit $errcode
- fi
-fi # Clean the Test directory
-
-exit $errcode
diff --git a/bin/snapshot_version b/bin/snapshot_version
deleted file mode 100644
index da2e190..0000000
--- a/bin/snapshot_version
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# 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://www.hdfgroup.org/licenses.
-# If you do not have access to either file, you may request a copy from
-# help@hdfgroup.org.
-#
-
-# default version for snapshot test
-# H5VERSION matches with a source version symbolic name. Will test use the
-# latest revision of that branch. If set to "hdf5", it uses the main
-# version.
-# H5VER tells runtest which version to run
-H5VERSION=hdf5
diff --git a/bin/timekeeper b/bin/timekeeper
deleted file mode 100755
index 03bc8d5..0000000
--- a/bin/timekeeper
+++ /dev/null
@@ -1,129 +0,0 @@
-#!/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://www.hdfgroup.org/licenses.
-# If you do not have access to either file, you may request a copy from
-# help@hdfgroup.org.
-##
-# As a time keeper of the remote daily test process launched by runtest.
-# It sleeps for a certain time and then wakes up to hangup those processes
-# that are still around, assuming they have run too long.
-#
-# Programmer: Albert Cheng
-# Created Date: 2004/12/23
-
-# variable initialization
-waitminutes=300 # default to 5 hours == 300 minutes
-debugtimelimit=
-debugflag= # no debug
-
-# Function definitions
-#
-# PRINTMSG
-# Print a one line message left justified in a field of 70 characters
-# without newline. More output for this line later.
-#
-PRINTMSG() {
- SPACES=" "
- echo "$* $SPACES" | cut -c1-70 | tr -d '\012'
-}
-
-
-USAGE()
-{
- echo "Usage: %0 [-h] [-debug] [<time-limit>]"
- echo " Run timekeeper with <time-limit> minutes, default is $waitminutes."
- echo " If <time-limit> is in the form of HH:MM, it means wait till then."
- echo " -h print this help page"
- echo " -debug run debug mode"
-}
-
-
-ParseOption()
-{
- if [ $# -gt 0 -a "$1" = -h ]; then
- shift
- USAGE
- exit 0
- fi
- if [ $# -gt 0 -a "$1" = -debug ]; then
- shift
- debugflag=yes
- waitminutes=1 # use shorter time for debug
- fi
- if [ $# -gt 0 ]; then
- targettime=$1
- shift
-
- # find out it is minutes to wait or HH:MM to wake up
- case $targettime in
- *:*) # HH:MM
- currenttime=`date +%H:%M`
- currenthour=`echo $currenttime | cut -f1 -d:`
- currentminute=`echo $currenttime | cut -f2 -d:`
- targethour=`echo $targettime | cut -f1 -d:`
- targetminute=`echo $targettime | cut -f2 -d:`
- waitminutes=`expr \( $targethour - $currenthour \) \* 60 + $targetminute - $currentminute`
- if test $waitminutes -le 0; then
- # target time is in tomorrow, add 1 day of minutes
- waitminutes=`expr 24 \* 60 + $waitminutes`
- fi
- ;;
- *)
- waitminutes=$targettime
- ;;
- esac
- fi
-}
-
-
-# Main body
-echo "Timekeeper started at `date`"
-ParseOption $*
-waitperiod=`expr $waitminutes \* 60` # convert to seconds
-
-if [ -z "$debugflag" ]; then
- # normal time keeping mode
- # sleep first
- echo Timekeeper sleeping for $waitperiod seconds
- sleep $waitperiod
- # Look for any processes still around
- echo "Timekeeper woke up at `date`, looking for processes to terminate..."
- for x in PID.* ; do
- if [ -f $x ]; then
- pid=`cat $x`
- # check if process is still around
- if test X$pid \!= X && ps -p $pid > /dev/null; then
- echo "terminating process $x ($pid)"
- kill -HUP $pid
- echo "Remote shell command ended. But some processes might still be"
- echo "running in the remote machine. Login there to verify."
- fi
- fi
- done
-else
- # Debug mode. Launch two rsh process, one ends before, the other after
- # waitperiod. Must launch timekeeper from a subshell, else the debug
- # will wait for it too.
- myhostname=`hostname`
- ( $0 $waitminutes &)
- debugtimelimit=`expr $waitperiod - 10`
- echo rsh $myhostname sleep $debugtimelimit
- rsh $myhostname sleep $debugtimelimit &
- echo $! > PID.before
- debugtimelimit=`expr $waitperiod + 10`
- echo rsh $myhostname sleep $debugtimelimit
- rsh $myhostname sleep $debugtimelimit &
- echo $! > PID.after
-
- wait
- rm PID.before PID.after
-fi
-
-echo "Timekeeper ended at `date`"