~ubuntu-branches/ubuntu/intrepid/net-snmp/intrepid-updates

« back to all changes in this revision

Viewing changes to dist/nsb-functions

  • Committer: Bazaar Package Importer
  • Author(s): Scott James Remnant
  • Date: 2006-11-28 12:29:34 UTC
  • mfrom: (1.1.4 upstream)
  • Revision ID: james.westby@ubuntu.com-20061128122934-82xxzy2zcvypnvy7
Tags: 5.2.3-4ubuntu1
* Merge from debian unstable, remaining changes:
  - remove stop links from rc0 and rc6

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/bin/bash
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>
5
 
 
6
 
#----------------------------------------------------------------------
7
 
#
8
 
# source user config
9
 
if [ -f $HOME/.snmp/nsb-rc ]; then
10
 
   source $HOME/.snmp/nsb-rc
11
 
fi
12
 
 
13
 
 
14
 
#----------------------------------------------------------------------
15
 
#
16
 
nsb-sysname()
17
 
{
18
 
   echo `uname -mrs | tr ' /' '__'`
19
 
}
20
 
 
21
 
#----------------------------------------------------------------------
22
 
#
23
 
# Utility vars
24
 
#
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"}
46
 
#testhandler
47
 
NSB_EXTRA_CONFIG=${NSB_EXTRA_CONFIG:=""}
48
 
NSB_VIEW=cat
49
 
NSB_PERL=
50
 
#NSB_PERL=--enable-embedded-perl
51
 
NSB_FLOW=
52
 
NSB_DATE=${NSB_DATE:=`date +%y%m%d_%H%M`}
53
 
 
54
 
#
55
 
# System specific additions
56
 
#
57
 
case `uname -s` in
58
 
 
59
 
   SunOS)
60
 
      NSB_TAIL_ARGS="-$NSB_ERR_CTX_LINES"
61
 
      ;;
62
 
 
63
 
   *)
64
 
      NSB_TAIL_ARGS="-n $NSB_ERR_CTX_LINES"
65
 
      ;;
66
 
esac
67
 
 
68
 
 
69
 
#----------------------------------------------------------------------
70
 
#
71
 
# Utility functions
72
 
#
73
 
 
74
 
nsb-abort()
75
 
{
76
 
   echo
77
 
   echo "ABORTING: $@" >&2
78
 
   exit 255
79
 
}
80
 
 
81
 
nsb-info()
82
 
{
83
 
   if [ $NSB_QUIET -ne 1 ]; then
84
 
      echo $@
85
 
   fi
86
 
}
87
 
 
88
 
nsb-prompt()
89
 
{
90
 
   if [ "x$1" = "x-f" ]; then
91
 
      shift 1
92
 
      tmp_nsb_prompt=1
93
 
   else
94
 
      tmp_nsb_prompt=$NSB_PROMPT
95
 
   fi
96
 
   if [ $tmp_nsb_prompt -eq 1 ]; then
97
 
      echo $@
98
 
      read nsb_prompt_dummy
99
 
   else
100
 
      echo "$@ (PROMPT SKIPPED)"
101
 
   fi
102
 
}
103
 
 
104
 
nsb-flow()
105
 
{
106
 
    NSB_FLOW=$NSB_FLOW:$@
107
 
    echo "Running $@" >&2
108
 
}
109
 
 
110
 
#----------------------------------------------------------------------
111
 
#
112
 
nsb-config-dist()
113
 
{
114
 
   nsb-flow config-dist
115
 
   if [ $# -lt 1 ]; then
116
 
      nsb-abort "usage: nsb-config-dist src_dir"
117
 
   fi
118
 
   ngc_src=$1
119
 
   if [ ! -d $ngc_src ]; then
120
 
      nsb-abort "$ngc_src does not exist!"
121
 
   fi
122
 
   if [ ! -d $ngc_src/agent/mibgroup ]; then
123
 
      nsb-abort "agent/mibgroup directory in $ngc_src does not exist!"
124
 
   fi
125
 
   ngc_dest=$2
126
 
   if [ ! -d $ngc_dest ]; then
127
 
      nsb-abort "$ngc_dest does not exist!"
128
 
   fi
129
 
 
130
 
   #
131
 
   # some modules might be release specific, so make sure they
132
 
   # exist before we send them off to configure
133
 
   #
134
 
   NSB_FINAL_MODULES=
135
 
   for ncd_x in $NSB_DIST_MODULES
136
 
   do
137
 
        if [ -a $ngc_src/agent/mibgroup/$ncd_x.h ]; then
138
 
                NSB_FINAL_MODULES="$NSB_FINAL_MODULES $ncd_x"
139
 
        fi
140
 
   done
141
 
 
142
 
   #
143
 
   # NOTE: for some reason, bash does not expand variables
144
 
   # inside of single quotes, so use double quotes
145
 
   #
146
 
   echo $ngc_src/configure --with-sys-location=Unknown \
147
 
      --prefix=$ngc_dest \
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 \
152
 
      --prefix=$ngc_dest \
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
158
 
   ngc_rc=$?
159
 
   if [ $ngc_rc -ne 0 ];then
160
 
      nsb-abort "Error during configure dist (rc=$ngc_rc)"
161
 
   fi
162
 
}
163
 
 
164
 
nsb-config-all()
165
 
{
166
 
   nsb-flow config-all
167
 
   if [ $# -lt 1 ]; then
168
 
      nsb-abort "usage: nsb-config-with src_dir"
169
 
   fi
170
 
   ngc_src=$1
171
 
   if [ ! -d $ngc_src ]; then
172
 
      nsb-abort "$ngc_src does not exist!"
173
 
   fi
174
 
   if [ ! -d $ngc_src/agent/mibgroup ]; then
175
 
      nsb-abort "agent/mibgroup directory in $ngc_src does not exist!"
176
 
   fi
177
 
   ngc_dest=$2
178
 
   if [ ! -d $ngc_dest ]; then
179
 
      nsb-abort "$ngc_dest does not exist!"
180
 
   fi
181
 
 
182
 
   #
183
 
   # System specific additions
184
 
   #
185
 
   case `uname -s` in
186
 
 
187
 
   Linux)
188
 
      NSB_EXTRA_TRANSPORTS="UDPIPv6 TCPIPv6 IPX"
189
 
      ;;
190
 
 
191
 
   Darwin)
192
 
      ;;
193
 
 
194
 
   *)
195
 
      NSB_EXTRA_TRANSPORTS="UDPIPv6 TCPIPv6"
196
 
      ;;
197
 
   esac
198
 
 
199
 
   #
200
 
   # use libwrap if we can find the header
201
 
   #
202
 
   if [ -f /usr/include/tcpd.h ]; then
203
 
      NSB_EXTRA_CONFIG="$NSB_EXTRA_CONFIG --with-libwrap"
204
 
   fi
205
 
 
206
 
   #
207
 
   # some modules might be release specific, so make sure they
208
 
   # exist before we send them off to configure
209
 
   #
210
 
   NSB_FINAL_MODULES=
211
 
   for ncd_x in $NSB_DIST_MODULES $NSB_EXTRA_MODULES
212
 
   do
213
 
        if [ -a $ngc_src/agent/mibgroup/$ncd_x.h ]; then
214
 
                NSB_FINAL_MODULES="$NSB_FINAL_MODULES $ncd_x"
215
 
        fi
216
 
   done
217
 
 
218
 
   #
219
 
   # configure
220
 
   #
221
 
   # NOTE: for some reason, bash does not expand variables
222
 
   # inside of single quotes, so use double quotes
223
 
   #
224
 
   echo $ngc_src/configure  --with-defaults \
225
 
      --prefix=$ngc_dest \
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 \
231
 
      --prefix=$ngc_dest \
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
238
 
   ngc_rc=$?
239
 
   if [ $ngc_rc -ne 0 ];then
240
 
      nsb-abort "Error during configure all (rc=$ngc_rc)"
241
 
   fi
242
 
}
243
 
 
244
 
nsb-zip()
245
 
{
246
 
   if [ $# -ne 3 ]; then
247
 
      nsb-abort "usage: $0 release build_directory dest_dir"
248
 
   fi
249
 
 
250
 
   release=$1
251
 
   build_dir=$2
252
 
   dest_dir=$3
253
 
 
254
 
   build=$build_dir/$NSB_PLATFORM
255
 
 
256
 
   if [ ! -d $build ]; then
257
 
      nsb-abort "$build directory does not exist!"
258
 
   fi
259
 
 
260
 
   if [ ! -d $build/usr ]; then
261
 
      nsb-abort "install directory $build/usr directory does not exist!"
262
 
   fi
263
 
 
264
 
   cd $build
265
 
 
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
269
 
 
270
 
   nsb-info "gzip --best $dest_dir/$release-$NSB_PLATFORM.tar"
271
 
   gzip --best $dest_dir/$release-$NSB_PLATFORM.tar
272
 
 
273
 
   if [ $NSB_QUIET -ne 1 ]; then
274
 
      ls -lt $dest_dir
275
 
   fi
276
 
}
277
 
 
278
 
nsb-upload()
279
 
{
280
 
   build_dir=$1
281
 
   target=$2
282
 
   nsb-flow upload to $target: config.log configure-summary nsb-make-all.$NSB_DATE nsb-make-test.$NSB_DATE
283
 
   dir=$PWD
284
 
   cd $build_dir
285
 
   /usr/bin/scp config.log configure-summary nsb-make-all.$NSB_DATE nsb-make-test.$NSB_DATE\
286
 
                 $target
287
 
   cd $dir
288
 
}
289
 
 
290
 
nsb-make()
291
 
{
292
 
   nsb-flow make $1
293
 
   target=$1
294
 
   shift 1
295
 
   parms=$@
296
 
 
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 ':' ' '`
300
 
      do
301
 
         #echo $p
302
 
         if [ -x $p/make ];then
303
 
            dummy=`$p/make --version 2>&1 | grep GNU`
304
 
            if [ $? -eq 0 ];then
305
 
               #nsb-info "using $p/make ($dummy)"
306
 
               NSB_MAKE=$p/make
307
 
               break
308
 
            fi
309
 
         fi
310
 
         if [ -x $p/gmake ];then
311
 
            dummy=`$p/gmake --version 2>&1 | grep GNU`
312
 
            if [ $? -eq 0 ];then
313
 
               #nsb-info "using $p/gmake ($dummy)"
314
 
               NSB_MAKE=$p/gmake
315
 
               break
316
 
            fi
317
 
         fi
318
 
      done
319
 
      if [ -z $NSB_MAKE ];then
320
 
         nsb-abort "GNU make not found. Set NSB_MAKE to your make executable."
321
 
      fi
322
 
   fi
323
 
 
324
 
   nsb_make_OUTPUT=nsb-make-$target.$NSB_DATE
325
 
   nsb-info "Making $target... (log is $nsb_make_OUTPUT)"
326
 
   #
327
 
   if [ "x$target" = "xall" ]; then
328
 
      $NSB_MAKE NOAUTODEPS=y touchit 2>&1 | tee $nsb_make_OUTPUT
329
 
   fi
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
332
 
 
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"
345
 
   fi
346
 
 
347
 
   if [ -f build-in-progress-flag ];then
348
 
     nsb-abort "make $target incomplete"
349
 
   fi
350
 
}
351
 
 
352
 
nsb-default-paths()
353
 
{
354
 
   if [ -z "$NSB_VERSION" ]; then
355
 
      NSB_VERSION="unknown-version"
356
 
   fi
357
 
   if [ -z "$NSB_SRC_DIR" ]; then
358
 
      NSB_SRC_DIR=$HOME/src/net-snmp-$NSB_VERSION
359
 
   fi
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
364
 
      fi
365
 
   fi
366
 
   if [ -z "$NSB_INSTALL_DIR" ]; then
367
 
      NSB_INSTALL_DIR=$NSB_BUILD_DIR/usr/local
368
 
   fi
369
 
}
370
 
 
371
 
nsb-build()
372
 
{
373
 
   if [ $# -lt 5 ]; then
374
 
      nsb-abort "usage: $0 release src_dir build_directory dest_dir config_all_flag ($@)"
375
 
   fi
376
 
 
377
 
   nsb_config_all=0
378
 
   release=$1
379
 
   src_dir=$2
380
 
   build_dir=$3
381
 
   dest_dir=$4
382
 
   nsb_config_all=$5
383
 
   shift 5
384
 
 
385
 
   nsb-flow build in $build_dir
386
 
   nsb-flow host $NSB_HOST
387
 
   nsb-flow platform $NSB_PLATFORM
388
 
 
389
 
   if [ ! -d $src_dir ]; then
390
 
      nsb-abort "$src_dir does not exist!"
391
 
   fi
392
 
 
393
 
   if [ ! -d $build_dir ]; then
394
 
      mkdir $build_dir
395
 
      if [ ! -d $build_dir ]; then
396
 
         nsb-abort "$build_dir directory does not exist!"
397
 
      fi
398
 
   fi
399
 
 
400
 
   nsb-info "Changing directories to $build_dir"
401
 
   cd $build_dir
402
 
 
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 /"
408
 
        fi
409
 
        nsb-info "rm -fR * .[a-zA-Z]* 2>&1 > /dev/null"
410
 
        rm -fR * .[a-zA-Z]* 2>&1 > /dev/null
411
 
      else
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
416
 
            nsb_build_rc=$?
417
 
            if [ $nsb_build_rc -ne 0 ]; then
418
 
                nsb-abort "Error during make distclean (rc=$nsb_build_rc)"
419
 
            fi
420
 
        fi
421
 
      fi
422
 
   fi
423
 
 
424
 
   if [ ! -d $dest_dir ]; then
425
 
      mkdir -p $dest_dir
426
 
      if [ ! -d $dest_dir ]; then
427
 
         nsb-abort "$dest_dir directory does not exist!"
428
 
      fi
429
 
   fi
430
 
 
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
435
 
      else
436
 
          nsb-config-all $src_dir $dest_dir
437
 
      fi
438
 
      nsb-prompt "press enter to continue"
439
 
   fi
440
 
 
441
 
   if [ $NSB_SKIP_BUILD -eq 1 ]; then
442
 
      nsb-info "Skipping 'make all'"
443
 
   else
444
 
      nsb-make all
445
 
   fi
446
 
 
447
 
   if [ $NSB_SKIP_TEST -eq 1 ]; then
448
 
      nsb-info "Skipping 'make test'"
449
 
   else
450
 
      nsb-prompt "No errors found, press enter to run tests"
451
 
      SNMP_TMPDIR_BASE=$build_dir/tests
452
 
      export SNMP_TMPDIR_BASE
453
 
      nsb-make test
454
 
   fi
455
 
 
456
 
   if [ $NSB_SKIP_INSTALL -eq 1 ]; then
457
 
      nsb-info "Skipping 'make install'"
458
 
   else
459
 
      nsb-prompt "No errors found, press enter to install"
460
 
      nsb-make install
461
 
   fi
462
 
 
463
 
   return 0
464
 
}