2
#----------------------------------------------------------------------
3
# $Id: nsb-functions,v 1.45.2.2 2005/11/12 14:43:58 tanders Exp $
4
# Author: Robert Story <rstory@freesnmp.com>
6
#----------------------------------------------------------------------
9
if [ -f $HOME/.snmp/nsb-rc ]; then
10
source $HOME/.snmp/nsb-rc
14
#----------------------------------------------------------------------
18
echo `uname -mrs | tr ' /' '__'`
21
#----------------------------------------------------------------------
25
NSB_VERSION=${NSB_VERSION:=""}
26
NSB_BUILD_DIR=${NSB_BUILD_DIR:=""}
27
NSB_BUILD_SUFFIX=${NSB_BUILD_SUFFIX:=""}
28
NSB_SRC_DIR=${NSB_SRC_DIR:=""}
29
NSB_INSTALL_DIR=${NSB_INSTALL_DIR:=""}
30
NSB_PLATFORM=${NSB_PLATFORM:=`nsb-sysname`}
31
# sun doesn't support hostname -s
32
NSB_HOST=${NSB_HOST:=`hostname | cut -f1 -d.`}
33
NSB_QUIET=${NSB_QUIET:=0}
34
NSB_PROMPT=${NSB_PROMPT:=0}
35
NSB_CLEAN=${NSB_CLEAN:=1}
36
NSB_CONFIG_ALL=${NSB_CONFIG_ALL:=0}
37
NSB_SKIP_CONFIG=${NSB_SKIP_CONFIG:=0}
38
NSB_SKIP_BUILD=${NSB_SKIP_BUILD:=0}
39
NSB_SKIP_TEST=${NSB_SKIP_TEST:=0}
40
NSB_SKIP_INSTALL=${NSB_SKIP_INSTALL:=0}
41
NSB_ERR_CTX_LINES=${NSB_ERR_CTX_LINES:=25}
42
NSB_DIST_TRANSPORTS="UDP TCP Unix Callback"
43
NSB_EXTRA_TRANSPORTS=""
44
NSB_DIST_MODULES=${NSB_DIST_MODULES:="host disman/event-mib smux"}
45
NSB_EXTRA_MODULES=${NSB_EXTRA_MODULES:="examples examples/example smux Rmon"}
47
NSB_EXTRA_CONFIG=${NSB_EXTRA_CONFIG:=""}
50
#NSB_PERL=--enable-embedded-perl
52
NSB_DATE=${NSB_DATE:=`date +%y%m%d_%H%M`}
55
# System specific additions
60
NSB_TAIL_ARGS="-$NSB_ERR_CTX_LINES"
64
NSB_TAIL_ARGS="-n $NSB_ERR_CTX_LINES"
69
#----------------------------------------------------------------------
77
echo "ABORTING: $@" >&2
83
if [ $NSB_QUIET -ne 1 ]; then
90
if [ "x$1" = "x-f" ]; then
94
tmp_nsb_prompt=$NSB_PROMPT
96
if [ $tmp_nsb_prompt -eq 1 ]; then
100
echo "$@ (PROMPT SKIPPED)"
106
NSB_FLOW=$NSB_FLOW:$@
107
echo "Running $@" >&2
110
#----------------------------------------------------------------------
115
if [ $# -lt 1 ]; then
116
nsb-abort "usage: nsb-config-dist src_dir"
119
if [ ! -d $ngc_src ]; then
120
nsb-abort "$ngc_src does not exist!"
122
if [ ! -d $ngc_src/agent/mibgroup ]; then
123
nsb-abort "agent/mibgroup directory in $ngc_src does not exist!"
126
if [ ! -d $ngc_dest ]; then
127
nsb-abort "$ngc_dest does not exist!"
131
# some modules might be release specific, so make sure they
132
# exist before we send them off to configure
135
for ncd_x in $NSB_DIST_MODULES
137
if [ -a $ngc_src/agent/mibgroup/$ncd_x.h ]; then
138
NSB_FINAL_MODULES="$NSB_FINAL_MODULES $ncd_x"
143
# NOTE: for some reason, bash does not expand variables
144
# inside of single quotes, so use double quotes
146
echo $ngc_src/configure --with-sys-location=Unknown \
148
--disable-developer $NSB_EXTRA_CONFIG \
149
--with-sys-contact='System Administrator' \
150
--with-defaults --with-mib-modules="$NSB_FINAL_MODULES"
151
$ngc_src/configure --with-sys-location=Unknown \
153
--disable-developer $NSB_EXTRA_CONFIG \
154
--with-sys-contact='System Administrator' \
155
--with-defaults --with-mib-modules="$NSB_FINAL_MODULES"
156
# I'd like to add ' | tee nsb-config.$NSB_DATE' to save output, but then
157
# I'd lose the rc from configure, which I need... sigh
159
if [ $ngc_rc -ne 0 ];then
160
nsb-abort "Error during configure dist (rc=$ngc_rc)"
167
if [ $# -lt 1 ]; then
168
nsb-abort "usage: nsb-config-with src_dir"
171
if [ ! -d $ngc_src ]; then
172
nsb-abort "$ngc_src does not exist!"
174
if [ ! -d $ngc_src/agent/mibgroup ]; then
175
nsb-abort "agent/mibgroup directory in $ngc_src does not exist!"
178
if [ ! -d $ngc_dest ]; then
179
nsb-abort "$ngc_dest does not exist!"
183
# System specific additions
188
NSB_EXTRA_TRANSPORTS="UDPIPv6 TCPIPv6 IPX"
195
NSB_EXTRA_TRANSPORTS="UDPIPv6 TCPIPv6"
200
# use libwrap if we can find the header
202
if [ -f /usr/include/tcpd.h ]; then
203
NSB_EXTRA_CONFIG="$NSB_EXTRA_CONFIG --with-libwrap"
207
# some modules might be release specific, so make sure they
208
# exist before we send them off to configure
211
for ncd_x in $NSB_DIST_MODULES $NSB_EXTRA_MODULES
213
if [ -a $ngc_src/agent/mibgroup/$ncd_x.h ]; then
214
NSB_FINAL_MODULES="$NSB_FINAL_MODULES $ncd_x"
221
# NOTE: for some reason, bash does not expand variables
222
# inside of single quotes, so use double quotes
224
echo $ngc_src/configure --with-defaults \
226
--disable-developer $NSB_EXTRA_CONFIG \
227
"--with-mib-modules=$NSB_FINAL_MODULES" \
228
"--with-transports=$NSB_DIST_TRANSPORTS $NSB_EXTRA_TRANSPORTS" \
229
$NSB_PERL --enable-shared
230
$ngc_src/configure --with-defaults \
232
--disable-developer $NSB_EXTRA_CONFIG \
233
"--with-mib-modules=$NSB_FINAL_MODULES" \
234
"--with-transports=$NSB_DIST_TRANSPORTS $NSB_EXTRA_TRANSPORTS" \
235
$NSB_PERL --enable-shared
236
# I'd like to add ' | tee nsb-config.$NSB_DATE' to save output, but then
237
# I'd lose the rc from configure, which I need... sigh
239
if [ $ngc_rc -ne 0 ];then
240
nsb-abort "Error during configure all (rc=$ngc_rc)"
246
if [ $# -ne 3 ]; then
247
nsb-abort "usage: $0 release build_directory dest_dir"
254
build=$build_dir/$NSB_PLATFORM
256
if [ ! -d $build ]; then
257
nsb-abort "$build directory does not exist!"
260
if [ ! -d $build/usr ]; then
261
nsb-abort "install directory $build/usr directory does not exist!"
266
rm -f $dest_dir/$release-$NSB_PLATFORM.tar
267
nsb-info "tar cf $dest_dir/$release-$NSB_PLATFORM.tar usr"
268
tar cf $dest_dir/$release-$NSB_PLATFORM.tar usr
270
nsb-info "gzip --best $dest_dir/$release-$NSB_PLATFORM.tar"
271
gzip --best $dest_dir/$release-$NSB_PLATFORM.tar
273
if [ $NSB_QUIET -ne 1 ]; then
282
nsb-flow upload to $target: config.log configure-summary nsb-make-all.$NSB_DATE nsb-make-test.$NSB_DATE
285
/usr/bin/scp config.log configure-summary nsb-make-all.$NSB_DATE nsb-make-test.$NSB_DATE\
297
if [ -z $NSB_MAKE ];then
298
#nsb-info "Searching for GNU make (set NSB_MAKE to skip this step)"
299
for p in `echo $PATH | tr ':' ' '`
302
if [ -x $p/make ];then
303
dummy=`$p/make --version 2>&1 | grep GNU`
305
#nsb-info "using $p/make ($dummy)"
310
if [ -x $p/gmake ];then
311
dummy=`$p/gmake --version 2>&1 | grep GNU`
313
#nsb-info "using $p/gmake ($dummy)"
319
if [ -z $NSB_MAKE ];then
320
nsb-abort "GNU make not found. Set NSB_MAKE to your make executable."
324
nsb_make_OUTPUT=nsb-make-$target.$NSB_DATE
325
nsb-info "Making $target... (log is $nsb_make_OUTPUT)"
327
if [ "x$target" = "xall" ]; then
328
$NSB_MAKE NOAUTODEPS=y touchit 2>&1 | tee $nsb_make_OUTPUT
330
$NSB_MAKE $NSB_MAKE_EXTRA NOAUTODEPS=y start-flag $target $parms end-flag 2>&1 | tee -a $nsb_make_OUTPUT
331
# checking $? would only get us the rc from tee, which is useless
333
nsb-info "Checking for errors..."
334
egrep -i "error|fail|warn|no such|exists|\*\*\*" $nsb_make_OUTPUT \
335
> nsb-make-$target-allerrs.$NSB_DATE
336
# allow for a few exceptions
337
egrep -v -i "testing .*failure|[a-z&]fail|warn|error(mib|\.3)|In function" nsb-make-$target-allerrs.$NSB_DATE \
338
> nsb-make-$target-errs.$NSB_DATE
339
if [ -s nsb-make-$target-errs.$NSB_DATE ]; then
340
nsb-prompt "press enter to view errors"
341
# grep ':' $nsb_make_OUTPUT > nsb-make-$target-errs2.$NSB_DATE
342
# tail -n $NSB_ERR_CTX_LINES nsb-make-$target-errs2.$NSB_DATE >&2
343
tail $NSB_TAIL_ARGS nsb-make-$target-errs.$NSB_DATE >&2
344
nsb-abort "Error(s) during make $target"
347
if [ -f build-in-progress-flag ];then
348
nsb-abort "make $target incomplete"
354
if [ -z "$NSB_VERSION" ]; then
355
NSB_VERSION="unknown-version"
357
if [ -z "$NSB_SRC_DIR" ]; then
358
NSB_SRC_DIR=$HOME/src/net-snmp-$NSB_VERSION
360
if [ -z "$NSB_BUILD_DIR" ]; then
361
NSB_BUILD_DIR=$HOME/build/$NSB_VERSION
362
if [ ! -z "$NSB_SUFFIX" ]; then
363
NSB_BUILD_DIR=$NSB_BUILD_DIR/$NSB_SUFFIX
366
if [ -z "$NSB_INSTALL_DIR" ]; then
367
NSB_INSTALL_DIR=$NSB_BUILD_DIR/usr/local
373
if [ $# -lt 5 ]; then
374
nsb-abort "usage: $0 release src_dir build_directory dest_dir config_all_flag ($@)"
385
nsb-flow build in $build_dir
386
nsb-flow host $NSB_HOST
387
nsb-flow platform $NSB_PLATFORM
389
if [ ! -d $src_dir ]; then
390
nsb-abort "$src_dir does not exist!"
393
if [ ! -d $build_dir ]; then
395
if [ ! -d $build_dir ]; then
396
nsb-abort "$build_dir directory does not exist!"
400
nsb-info "Changing directories to $build_dir"
403
if [ $NSB_CLEAN -gt 0 ]; then
404
nsb-info "Cleaning up..."
405
if [ $NSB_CLEAN -eq 2 ];then
406
if [ "x$PWD" = "/" ]; then
407
nsb-abort "Not running rm -fR from /"
409
nsb-info "rm -fR * .[a-zA-Z]* 2>&1 > /dev/null"
410
rm -fR * .[a-zA-Z]* 2>&1 > /dev/null
412
nsb-info "rm -fR nsb-* $dest_dir 2>&1 > /dev/null"
413
rm -fR nsb-* $dest_dir 2>&1 > /dev/null
414
if [ -f Makefile ]; then
415
nsb-make NOAUTODEPS=y distclean
417
if [ $nsb_build_rc -ne 0 ]; then
418
nsb-abort "Error during make distclean (rc=$nsb_build_rc)"
424
if [ ! -d $dest_dir ]; then
426
if [ ! -d $dest_dir ]; then
427
nsb-abort "$dest_dir directory does not exist!"
431
if [ $NSB_SKIP_CONFIG -ne 1 ]; then
432
nsb-info "Configuring... (log is nsb-config.$NSB_DATE)"
433
if [ $nsb_config_all -eq 0 ]; then
434
nsb-config-dist $src_dir $dest_dir
436
nsb-config-all $src_dir $dest_dir
438
nsb-prompt "press enter to continue"
441
if [ $NSB_SKIP_BUILD -eq 1 ]; then
442
nsb-info "Skipping 'make all'"
447
if [ $NSB_SKIP_TEST -eq 1 ]; then
448
nsb-info "Skipping 'make test'"
450
nsb-prompt "No errors found, press enter to run tests"
451
SNMP_TMPDIR_BASE=$build_dir/tests
452
export SNMP_TMPDIR_BASE
456
if [ $NSB_SKIP_INSTALL -eq 1 ]; then
457
nsb-info "Skipping 'make install'"
459
nsb-prompt "No errors found, press enter to install"