Files
hdf5/bin/build_and_package_hdf5_binaries.sh
Larry Knox bb8a12533c [svn-r25770] Check in initial versions of scripts to build, package and test release binaries.
Further work is needed to make them version independent.
2014-11-03 16:54:04 -05:00

181 lines
5.9 KiB
Bash

#! /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