summaryrefslogtreecommitdiffstats
path: root/bin/build_and_package_hdf5_binaries.sh
diff options
context:
space:
mode:
authorLarry Knox <lrknox@hdfgroup.org>2014-11-03 21:54:04 (GMT)
committerLarry Knox <lrknox@hdfgroup.org>2014-11-03 21:54:04 (GMT)
commitbb8a12533c994741ffefa2db680051684ccee464 (patch)
treec6fbe71da45936f0d914ee82bb66aaae45024e88 /bin/build_and_package_hdf5_binaries.sh
parent0659d17e059088de8f17ac3d0889c3450b08f326 (diff)
downloadhdf5-bb8a12533c994741ffefa2db680051684ccee464.zip
hdf5-bb8a12533c994741ffefa2db680051684ccee464.tar.gz
hdf5-bb8a12533c994741ffefa2db680051684ccee464.tar.bz2
[svn-r25770] Check in initial versions of scripts to build, package and test release binaries.
Further work is needed to make them version independent.
Diffstat (limited to 'bin/build_and_package_hdf5_binaries.sh')
-rw-r--r--bin/build_and_package_hdf5_binaries.sh180
1 files changed, 180 insertions, 0 deletions
diff --git a/bin/build_and_package_hdf5_binaries.sh b/bin/build_and_package_hdf5_binaries.sh
new file mode 100644
index 0000000..b6f67b5
--- /dev/null
+++ b/bin/build_and_package_hdf5_binaries.sh
@@ -0,0 +1,180 @@
+#! /bin/sh
+# (Use -e to abort at any unexpected error.)
+# Submit daily tests of HDF5 base software
+# Usauge: DailyHDFTests [-r<version>]
+# Example: DailyHDFTests # test the CVS current version
+# DailyHDFTests -r1.2 # test version 1.2
+# DailyHDFTests -r1.4 # test version 1.4
+
+# This script assumes we are building binaries for a release in
+# a directory named $HOME/snapshots-bin-${sw}${SWVERSTR}, i.e.
+# /home/hdftest/snapshots-bin-hdf5_1_8_14 for the HDF5 v1.8.14 release.
+
+# This script should be run from the $HOME/snapshots-bin-${sw}${SWVERSTR}
+# directory with the command
+# "sh current/bin/build_and_package_hdf5_binaries.sh -r<version> -b<path to package dir>"
+
+# general setup
+PROGRAMNAME=`basename $0`
+DEBUGMODE="" # change to -debug for debug mode
+
+# Setup
+HOSTNAME=`hostname | cut -f1 -d.` # no domain part
+TODAY=`date +%m%d%a`
+SW=HDF5 # Name of Software.
+sw=hdf5 # Name of Software in lower cases.
+SWVER= # Software version, default to current CVS version.
+SWVERSTR= # Software version string.
+TITLE="${SW} Tests on $TODAY"
+errcode=0 # error code so far
+
+# Parse command options
+while [ $# -gt 0 ]; do
+ case "$1" in
+ -r*)
+ SWVER="$1"
+ SWVERSTR=_`echo $SWVER | sed -e s/-r// -e s/\\\./_/g`
+ ;;
+ -debug*)
+ DEBUGMODE="$1"
+ ;;
+ -b*)
+ BINARYDIR=`echo $1 | sed -e s/-b//`
+ ;;
+ *)
+ echo "Unknown option ($1)"
+ exit 1
+ ;;
+ esac
+ shift
+done
+
+# Mail addresses for reports
+# TOWHOM_PASSED--normal report
+# TOWHOM_FAILED--Failure Report
+# If in debug mode, email output to myself; else to the "group".
+if [ -n "$DEBUGMODE" ]; then
+ echo "******** DEBUGMODE is $DEBUGMODE ************"
+# TOWHOM_PASSED=hdftest
+# TOWHOM_FAILED=hdftest
+ TOWHOM_PASSED=lrknox
+ TOWHOM_FAILED=lrknox
+else
+# TOWHOM_PASSED="hdf5repo@lists.hdfgroup.org repo-all@lists.hdfgroup.org"
+# TOWHOM_FAILED=hdf5lib@lists.hdfgroup.org
+# TOWHOM_PASSED=hdftest
+# TOWHOM_FAILED=hdftest
+ TOWHOM_PASSED=lrknox
+ TOWHOM_FAILED=lrknox
+fi
+
+# Setup test directories
+LOGDIR=$HOME/snapshots-bin-${sw}${SWVERSTR}/log
+LOGDIRLOCK=${LOGDIR}/.lock-${HOSTNAME}
+LOGFILE=${LOGDIR}/${PROGRAMNAME}-${HOSTNAME}_${TODAY}
+FAILEDLOG=${LOGDIR}/FAILED_LOG_${TODAY}
+FAILEDDETAIL=${LOGDIR}/FAILED_DETAIL_${TODAY}
+INCOMPLETELOG=${LOGDIR}/INCOMPLETE_LOG_${TODAY}
+PASSEDLOG=${LOGDIR}/PASSED_LOG_${TODAY}
+SKIPPEDLOG=${LOGDIR}/SKIPPED_LOG_${TODAY}
+TIMELOG=${LOGDIR}/TIME_LOG_${TODAY}
+TIMEKEEPERLOG=${LOGDIR}/TIMEKEEPER_LOG_${TODAY}
+REPORTED=${LOGDIR}/REPORTED_${TODAY}
+REPOLOG=${LOGDIR}/REPO_LOG_${TODAY}
+REPOLOG_LOCK=${LOGDIR}/REPO_LOG_LOCK_${TODAY}
+SNAPSHOTLOG=${LOGDIR}/SNAPSHOT_LOG_${TODAY}
+RELEASE_ASAP=${LOGDIR}/../release_asap # make a special release asap
+RELEASE_ALWAYS=${LOGDIR}/../release_always # always release
+RELEASE_NOT=${LOGDIR}/../release_not # Do not release
+RELEASED=${LOGDIR}/RELEASED_${TODAY}
+WATCHERFILE=${LOGDIR}/../watchers # List of platform watchers
+CMD="bin/runtest $DEBUGMODE ${SWVER}"
+
+# Setup Mailing command and Report title
+MAIL=mail
+TEST_TITLE="$HOSTNAME ${SW}${SWVERSTR}_Daily_Tests_${TODAY}"
+
+# set up auto-cleanup
+trap "rm -f $LOGDIRLOCK" 0
+trap "rm -f $LOGDIRLOCK" 1 2 3 4 5 6 7 8 9 10 12 13 14 15
+
+# Clean up LOGDIR by moving all files that are not "of today" to OLD.
+# Then go into OLD and move all files older than 7 days to OLDER.
+# Then go into OLDer and remove all files older than 30 days.
+# This procedure keeps old logfiles in two tiers. The first tier is OLD
+# which should be in AFS space so that the files are available to most hosts.
+# The second tier is OLDER which could be in HDF's own NFS space which has
+# much bigger capacity but not as widely available.
+# Do all these in a sub-shell with -e to abort the cleaning if any error is
+# encountered.
+(set -e
+nold=6
+nolder=31
+echo cleaning $LOGDIR by moving all old logfiles to OLD
+cd $LOGDIR
+test -d OLD/. || mkdir OLD
+#find . \( -name OLD -prune \) \
+# -o -type f ! -name '*'$TODAY'*' -exec mv '{}' OLD/. \;
+
+echo cleaning $LOGDIR/OLD by moving all files older than $nold days to OLDER
+cd OLD
+test -d OLDER/. || mkdir OLDER
+find . \( -name OLDER -prune \) \
+ -o -type f -mtime +$nold -exec mv '{}' OLDER/. \;
+
+echo cleaning $LOGDIR/OLDER by removing all files older than $nolder days.
+cd OLDER
+find . -type f -mtime +$nolder -exec rm -f '{}' \;
+
+if [ -f $LOGFILE ]; then
+ if [ -n "$DEBUGMODE" ]; then
+ echo "$LOGFILE exists. No more daily tests today"
+ fi
+ exit 1
+fi
+)
+
+#(cd $HOME/snapshots-bin-${sw}${SWVERSTR}; touch $REPOLOG; $CMD -nodiff -norepo -all) > $LOGFILE 2>&1
+
+# Verify test script did complete by checking the last lines
+#(tail -4 $LOGFILE | grep -s "^*** finished .* in $HOSTNAME ***" > /dev/null 2>&1) ||
+# (echo "****snaptest launcher FAILED to complete in $HOSTNAME****" >> $FAILEDLOG)
+
+#CURRENT_DIR=`pwd`
+#cd $HOME/snapshots-bin-${sw}${SWVERSTR}/current
+#pwd
+#SVN_URL=`svn info | grep URL`
+#BRANCHNAME=`echo $SVN_URL | sed -e 's/URL:.*\///' | sed -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+#REVISION=`svn info | grep Revision`
+#LAST_INFO=`svn info | grep "Last Changed"`
+#TEST_TITLE="$HOSTNAME ${BRANCHNAME}${SWVERSTR}_Daily_Tests_${TODAY}"
+#TITLE="${BRANCHNAME} Tests on $TODAY"
+#cd $CURRENT_DIR
+
+# Check result
+if [ -f $FAILEDLOG ]; then
+ errcode=1
+elif [ -f $INCOMPLETELOG ]; then
+ errcode=1
+ echo "Not all builds were completed!"
+fi
+
+if [ $errcode -eq 0 ]; then
+ DEPLOYDIR=`grep "deploydir \/mnt" ./snaptest.cfg | sed "s/^.*deploydir //"`
+ echo "Make binary tar files from deployed files in $DEPLOYDIR in $BINARYDIR"
+ CURRENT_DIR=`pwd`
+ cd current/bin;perl ./make1814TarFiles.pl $DEPLOYDIR $BINARYDIR
+ cd $CURRENT_DIR
+else
+ echo "errcode was $errcode; no tar files were created."
+fi
+
+# remove lock
+rm -f $LOGDIRLOCK
+
+# test binaries on 3 linux binary test machines.
+
+
+# final exit
+exit $errcode
+