diff options
Diffstat (limited to 'dist/nsb-nightly')
-rwxr-xr-x | dist/nsb-nightly | 188 |
1 files changed, 188 insertions, 0 deletions
diff --git a/dist/nsb-nightly b/dist/nsb-nightly new file mode 100755 index 0000000..3298a26 --- /dev/null +++ b/dist/nsb-nightly @@ -0,0 +1,188 @@ +#!/bin/sh +# +# $Id$ +# Author: Robert Story <rstory@freesnmp.com> +# +######################################################################## +######################################################################## + +usage() +{ + echo "Usage: $0 [optional params] VERSION" + echo "" + echo " optional params: [-x] [-s SRCD] [-b BUILDD] [-i INSTALLD]" + echo " [-h host] [-p path]" + echo " VERSION : release number (eg 5.2.2)" + echo " -s SRCDIR : soure directory [$HOME/src/net-snmp-VERSION]" + echo " -b BUILDD : build directory [$HOME/build/]" + echo " NOTE-platform will be appended to build directory" + echo " -i INSTALLD: install directory [$HOME/build/\$PLATFORM/usr]" + echo "" + echo " -x : configure extra features for pre-release testing" + echo " -C : don't source $HOME/.snmp/nsb-nightly" + echo "" + echo " -f : from address for email results" + echo " -e : address to email error results to" + echo " -o : address to email success results to" + echo " -h : host to upload results to" + echo " -p : path to upload results to" + exit 1 +} + +#set -x + +# make getopts work on Tru64 by respawning in Posix mode +if [ "`uname`" = "OSF1" -a "$BIN_SH" != "xpg4" ]; then + BIN_SH=xpg4 + export BIN_SH + exec $0 $* +fi + +# +# find nsb-platform based on the path to this script +# +EXE_PATH=`dirname $0` +if [ ! -f $EXE_PATH/nsb-functions ];then + if [ -f $HOME/bin/nsb-functions ]; then + EXE_PATH=$HOME/bin + elif [ -f nsb-functions ];then + EXE_PATH=$PWD + else + echo "Cannot find nsb-functions in $EXE_PATH, $HOME/bin or $PWD" + exit 1 + fi +fi + +if [ "x$1" = "x-C" ]; then + shift +else + if [ -f $HOME/.snmp/nsb-nightly ];then + . $HOME/.snmp/nsb-nightly + fi +fi + +######################################################################## +######################################################################## + +# -r : remove build dir before +# -R : remove build dir after +PARMS="$PARMS -r" +NIGHTLY_VERBOSE=0 +NSB_ERR_RESULTS_TO="" +NSB_OK_RESULTS_TO="" + +while getopts b:e:f:i:o:s:xh:p:v opt +do + case "$opt" in + b) NSB_BUILD_DIR=$OPTARG;; + e) NSB_ERR_RESULTS_TO=$OPTARG;; + f) NSB_FROM=$OPTARG;; + o) NSB_OK_RESULTS_TO=$OPTARG;; + i) PARMS="-i $OPTARG $PARMS";; + s) NSB_SRC_DIR=$OPTARG;; + h) NSB_SCP_HOST=$OPTARG + PARMS="-h $NSB_SCP_HOST $PARMS" + ;; + p) NSB_SCP_DEST=$OPTARG + PARMS="-p $NSB_SCP_DEST $PARMS" + ;; + x) PARMS="-x $PARMS";; + v) NIGHTLY_VERBOSE=1;; + \?)# unknown flag + usage;; + esac +done +shift `expr $OPTIND - 1` + +if [ $# -ne 1 ]; then + echo "expecting 1 argument, got $# ($@)" + usage +fi + +NSB_VERSION=$1 + +. $EXE_PATH/nsb-functions + +nsb_default_paths + +PARMS="$PARMS -b $NSB_BUILD_DIR -s $NSB_SRC_DIR" + +######################################################################## +######################################################################## +echo "Start: `date`" +echo "Running nsb-package $PARMS $NSB_VERSION" +if [ $NIGHTLY_VERBOSE = 1 ]; then + $EXE_PATH/nsb-package $PARMS $NSB_VERSION +else + $EXE_PATH/nsb-package $PARMS $NSB_VERSION > /dev/null +fi +RC=$? +echo "Finish: `date`" +cd $NSB_BUILD_DIR +case $RC in + 0) RESULT="Success" + NSB_RESULTS_TO=$NSB_OK_RESULTS_TO + FILES="" + ;; + *) RESULT="Error (rc $RC)" + NSB_RESULTS_TO=$NSB_ERR_RESULTS_TO + FILES=`ls nsb-make-*-errs.* 2>/dev/null` + if [ "x$NSB_SCP_HOST" != "x" ]; then + nsb_upload $NSB_BUILD_DIR $NSB_SCP_HOST:$NSB_SCP_DEST/$NSB_VERSION/$NSB_SUFFIX + fi + ;; +esac +echo "Result: $RESULT" + +if [ "x$NSB_RESULTS_TO" != "x" ]; then + SUBJECT="$NSB_VERSION $RESULT on $NSB_HOST ($NSB_PLATFORM)" + echo "Sending mail to $NSB_RESULTS_TO: $SUBJECT" + case `uname -s` in + OpenBSD|FreeBSD) # mail doesn't allow setting From + # seems to be in /usr/sbin, which isn't in all paths + PATH=/usr/sbin/:$PATH + echo "From: $NSB_FROM" > mail.results + echo "To: $NSB_RESULTS_TO" >> mail.results + # mail-related errors to OK address (usully buildmaster) + echo "Errors-To: $NSB_OK_RESULTS_TO" >> mail.results + echo "Subject: $SUBJECT" >> mail.results + echo "" >> mail.results + grep CONFIGURE_OPTIONS include/net-snmp/net-snmp-config.h|sed 's:/home/[^ ]*/build:$HOME:g' >> mail.results + echo "Result: $RESULT" >> mail.results + if [ "x$FILES" != "x" ]; then + cat $FILES >> mail.results + fi + sendmail -t < mail.results + ;; + SunOS) # no sendmail, no mail -s, need -t for To + echo "From: $NSB_FROM" > mail.results + # mail-related errors to OK address (usully buildmaster) + echo "Errors-To: $NSB_OK_RESULTS_TO" >> mail.results + echo "Subject: $SUBJECT" >> mail.results + echo "" >> mail.results + grep CONFIGURE_OPTIONS include/net-snmp/net-snmp-config.h|sed 's:/home/[^ ]*/build:$HOME:g' >> mail.results + echo "Result: $RESULT" >> mail.results + if [ "x$FILES" != "x" ]; then + cat $FILES >> mail.results + fi + mail -t $NSB_RESULTS_TO < mail.results + ;; + *) + echo "Result: $RESULT" >> mail.results + if [ "x$FILES" != "x" ]; then + cat $FILES >> mail.results + fi + mail -s "$SUBJECT" $NSB_RESULTS_TO < mail.results + ;; + esac +fi + +if [ $RC -eq 0 ]; then + if [ "x$NSB_BUILD_DIR" = "/" ]; then + nsb_abort "Not running rm -fR from /" + else + /bin/rm -fR $NSB_BUILD_DIR > /dev/null 2>&1 + fi +fi + +exit $RC |