#!/bin/sh # # $Id$ # Author: Robert Story # ######################################################################## ######################################################################## 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