diff options
author | lrknox <lrknox> | 2017-02-13 15:18:12 (GMT) |
---|---|---|
committer | lrknox <lrknox> | 2017-02-13 15:18:12 (GMT) |
commit | f37f35245d10afc251aa2398b7cfe186ea927c78 (patch) | |
tree | 8131d69584eaef6d375be67d3e897c4725d5c6ae | |
parent | fc8866d41e0b585b6c6f3e2ec7fd012d543e2624 (diff) | |
download | hdf5-f37f35245d10afc251aa2398b7cfe186ea927c78.zip hdf5-f37f35245d10afc251aa2398b7cfe186ea927c78.tar.gz hdf5-f37f35245d10afc251aa2398b7cfe186ea927c78.tar.bz2 |
Check in changes to snapshot script from hdfdts repository to copy in
HDF5 develop branch. Most of the changes are for the switch from
subversion to it repositories. This copy is not used for THG daily
tests, but is available for testing on remote machines.
-rwxr-xr-x | bin/snapshot | 581 |
1 files changed, 465 insertions, 116 deletions
diff --git a/bin/snapshot b/bin/snapshot index a496edd..081755d4 100755 --- a/bin/snapshot +++ b/bin/snapshot @@ -13,13 +13,14 @@ # http://hdfgroup.org/HDF5/doc/Copyright.html. 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 hdf5 +# 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() { @@ -28,7 +29,7 @@ TIMESTAMP() EXIT_BANNER() { -TIMESTAMP "Exit $PROGNAME with status=$?" + TIMESTAMP "Exit $PROGNAME with status=$?" } # Show current total disk usage. @@ -38,11 +39,208 @@ DISKUSAGE() ( 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 svn 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 + SVNROOT=https://svn.hdfgroup.org + if [ -n "$AUTOGEN" ]; then + if [ ! -d $BASEDIR/current_src ]; then + mkdir -p $BASEDIR/current_src + echo "Checking out from $SVNROOT/${SVNVERSION} into $BASEDIR/current_src" + (cd $BASEDIR; svn co ${SVNROOT}/${SVNVERSION} ./current_src ) || exit 1 + else + cd $BASEDIR/current_src; + svn -q update + echo "Updating $BASEDIR/current_src from svn." + fi + elif [ ! -d $BASEDIR/current ]; then + mkdir $BASEDIR/current + echo "Checking out from $SVNROOT/${SVNVERSION} into $BASEDIR/current" + # Check out the current version from source repository. + (cd $BASEDIR; svn co ${SVNROOT}/${SVNVERSION} current ) || exit 1 + else + cd $BASEDIR/current; svn info + # "svn info" returns 0 if $BASEDIR/current was previously checked out from an + # svn repository - i.e. it contains .svn directories and files. If so it can + # be updated to the current version. If not it can be checked out from the + # repository. + if [ "$?" = 0 ];then + # $BASEDIR/current was checked out from an svn repository, so update + # to the current version. + svn -q update + echo "Updating $BASEDIR/current from svn." + else + echo "Warning! Source directory ("current") is not checked out from svn." + fi + fi + 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 checked code back into svn." +} + +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] + [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 choosen. + 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. + 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 $*" @@ -51,7 +249,7 @@ TIMESTAMP MAIN uname -a # setup exit banner message -trap EXIT_BANNER 0 +trap EXIT_BANNER 0 1 2 9 15 # Dump environment variables before option parsing echo ===Dumping environment variables before option parsing === @@ -67,8 +265,14 @@ ReleaseDir_default=release_dir ZLIB_default= ZLIB=$ZLIB_default -# What compression methods to use? -METHODS="gzip zip bzip2 doc" +# 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} @@ -81,15 +285,38 @@ CHECKVAL=check 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="" @@ -164,6 +391,10 @@ while [ $# -gt 0 ] ; do cmdrel="release" cmd="" ;; + autogen-release) + cmdrel="autogen-release" + cmd="" + ;; clean | distclean) cmdclean="$1" cmd="" @@ -196,12 +427,43 @@ while [ $# -gt 0 ] ; do 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 consummed. + break + ;; check-vfd) CHECKVAL=check-vfd ;; - yodconfigure) - YODCONFIGURE=yes - ;; + 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" ;; @@ -225,87 +487,39 @@ while [ $# -gt 0 ] ; do 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 - set - - cat <<EOF -Usage: $PROGNAME [all] [checkout] [diff] [test] [srcdir] [release] [help] - [clean] [distclean] [echo] [deploy <dir>] [deploydir <dir>] - [zlib <zlib_path>] [releasedir <dir>] [srcdirname <dir>] [check-vfd] - [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 choosen. - 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. - 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 + DISPLAYUSAGE fi # Setup the proper configure option (--with-zlib) to use zlib library # provide ZLIB is non-empty. ZLIB=${ZLIB:+"--with-zlib="$ZLIB} -if [ -n "$YODCONFIGURE" ]; then - cp configure configure.yod - bin/yodconfigure configure.yod - CONFIGURE="./configure.yod" -else - CONFIGURE="./configure" +# 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 $ZLIB $OP_CONFIGURE" +CONFIGURE="configure $OP_CONFIGURE" +# echo "Configure command is $CONFIGURE" # Execute the requests snapshot=yes -if [ -f bin/snapshot_version ]; then - . bin/snapshot_version -else - H5VERSION=hdf5 -fi - -BASEDIR=${HOME}/snapshots-${H5VERSION} +BASEDIR=${HOME}/snapshots-${SNAPSHOTNAME} if [ ! -d ${BASEDIR} ]; then echo "BASEDIR ($BASEDIR) does not exist" exit 1 @@ -315,10 +529,10 @@ CURRENT=${BASEDIR}/current PREVIOUS=${BASEDIR}/previous ReleaseDir=${ReleaseDir:=${BASEDIR}/${ReleaseDir_default}} HOSTNAME=`hostname | cut -f1 -d.` # no domain part -if [ $H5VERSION != hdf5 ]; then - SVNVERSION="hdf5/branches/$H5VERSION" +if [ "${SWVERSION}" != "${HDFREPOS}" ]; then + SVNVERSION="$HDFREPOS/$SWVERSION" else - SVNVERSION=hdf5/trunk # use the default (trunk) version + SVNVERSION="$HDFREPOS/trunk" # use the default (trunk) version fi # Try finding a version of diff that supports the -I option too. @@ -333,19 +547,48 @@ done #============================= if [ "$cmd" = "all" -o -n "$cmdcheckout" ]; then TIMESTAMP "checkout" - # 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) - - SVNROOT=http://svn.hdfgroup.uiuc.edu - # Check out the current version from source repository. - (cd $BASEDIR; svn -q co ${SVNROOT}/${SVNVERSION} current ) || exit 1 + # ${BASEDIR}/bin is now updated from svn 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 @@ -353,7 +596,7 @@ fi # Do source checkout # Run Test the HDF5 library #============================= if [ "$cmd" = "all" -o -n "$cmdtest" -o -n "$cmddiff" ]; then - TIMESTAMP "diff" + TIMESTAMP "Run Tests" # setup if srcdir is used. if [ -z "$srcdir" ]; then TESTDIR=${CURRENT} @@ -369,10 +612,15 @@ if [ "$cmd" = "all" -o -n "$cmdtest" -o -n "$cmddiff" ]; then 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 - (cd ${TESTDIR} && ${MAKE} distclean) + DISTCLEAN else errcode=$? snapshot=no @@ -382,12 +630,17 @@ if [ "$cmd" = "all" -o -n "$cmdtest" -o -n "$cmddiff" ]; then # Compare it with the previous version. Compare only files listed in # the MANIFEST plus the MANIFEST itself. if [ -d ${PREVIOUS} ]; then - if (${DIFF} -c ${PREVIOUS}/MANIFEST ${CURRENT}/MANIFEST); 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 '^\.' ${CURRENT}/MANIFEST|expand|cut -f1 -d' '`; do + 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 ${CURRENT}/$src + ${PREVIOUS}/$src ${CURRENTSRC}/$src then : #continue else @@ -408,44 +661,123 @@ if [ "$cmd" = "all" -o -n "$cmdtest" -o -n "$cmddiff" ]; then 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" ]; then + if [ "$snapshot" = "yes" ] && [ "$NOMAKE" != "yes" ]; then + FAIL_SECTION="" + if [ -f ${TESTDIR}/failsection ]; then + rm ${TESTDIR}/failsection + fi if (cd ${TESTDIR} && \ - TIMESTAMP "configure" && \ - ${srcdir:+${CURRENT}/}${CONFIGURE} && \ - TIMESTAMP "make" && \ + TIMESTAMP "configure" && echo "configure" > ${TESTDIR}/failsection && \ + RUNCONFIGURE && \ + sleep 2 && \ + TIMESTAMP "make" && echo "make" > ${TESTDIR}/failsection && \ ${MAKE} && DISKUSAGE \ - TIMESTAMP ${CHECKVAL} && \ + TIMESTAMP ${CHECKVAL} && echo "make check" > ${TESTDIR}/failsection && \ ${MAKE} ${CHECKVAL} && DISKUSAGE \ - TIMESTAMP "install" && \ - ${MAKE} install-all && DISKUSAGE \ - TIMESTAMP "check-install" && \ - ${MAKE} check-install && DISKUSAGE \ - TIMESTAMP "uninstall" && \ - ${MAKE} uninstall-all && DISKUSAGE); then + 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} && - ${CURRENT}/bin/deploy ${deploydir}/${DEPLOYDIRNAME} && \ + ${BASEDIR}/bin/deploy ${deploydir}/${DEPLOYDIRNAME} && \ TIMESTAMP "clean" && \ ${MAKE} clean && \ TIMESTAMP "check-install prefix=${deploydir}/${DEPLOYDIRNAME}" && \ - ${MAKE} check-install prefix=${deploydir}/${DEPLOYDIRNAME}); then - : #continue + CHECKINSTALL prefix=${deploydir}/${DEPLOYDIRNAME}); then + cd ${CURRENT} + cp ${RELEASE_TXT_LOC}/RELEASE.txt ${deploydir}/${DEPLOYDIRNAME} + cp COPYING ${deploydir}/${DEPLOYDIRNAME} + #: #continue else errcode=$? exit $errcode @@ -460,17 +792,34 @@ fi # Deploy if [ "$cmd" = "all" -o -n "$cmdrel" ]; then if [ "$snapshot" = "yes" ]; then TIMESTAMP "release" - (cd ${CURRENT} && ${MAKE} distclean) + DISTCLEAN ( # Turn on exit on error in the sub-shell so that it does not # commit source if errors encounter here. set -e - cd ${CURRENT} - RELEASE_VERSION="`perl bin/h5vers -v`" - echo "Making snapshot release ($RELEASE_VERSION) to ${ReleaseDir}..." - bin/release -d $ReleaseDir $METHODS - perl bin/h5vers -i - svn -q commit -m "Snapshot $RELEASE_VERSION" + 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 @@ -487,7 +836,7 @@ fi #Release snapshot #============================= # Clean the test area. Default is no clean. #============================= -if [ -n "$cmdclean" ]; then +if [ -n "$cmdclean" ] && [ "$NOMAKE" != "yes" ]; then TIMESTAMP "clean" # setup if srcdir is used. if [ -z "$srcdir" ]; then |