summaryrefslogtreecommitdiff
path: root/dist/nsb-nightly
blob: 3298a26baa54987dde5eee3364517afd4e6e8509 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
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