1: #! /bin/sh
2:
3: IAM=`hostname || uname -n`
4: MYNAME=`IFS=. ; set $IAM ; echo $1`
5:
6: case "$1" in
7: '--one'|'-1')
8: shift
9: FB_FIRSTONLY=1
10: LIST=$MYNAME
11: ;;
12: *)
13: FB_FIRSTONLY=0
14: esac
15:
16: BUILD_ARGS="$@"
17: PARSE="--enable-parse-clocks"
18: #PARSE=
19: STD="--enable-simulator"
20:
21: case "$SIMUL::$FB_FIRSTONLY" in
22: ::*)
23: PARALLEL_BUILDS=1
24: ;;
25: *::0)
26: PARALLEL_BUILDS=$SIMUL
27: ;;
28: *)
29: PARALLEL_BUILDS=1
30: esac
31:
32: case "$PARALLEL_BUILDS" in
33: 1) ;;
34: *) echo Launching $PARALLEL_BUILDS parallel builds on each machine
35: esac
36:
37: # Backroom:
38: # barnstable freebsd-6.1
39: # beauregard freebsd-6.0
40: # X churchy alpha-dec-osf5.1
41: # deacon sparc-sun-solaris2.10
42: # grundoon freebsd-6.2
43: # howland freebsd-6.1
44: # o macabre freebsd-6.1-STABLE
45: # o mort freebsd-6.1
46: # whimsy sparc-sun-solaris2.10
47:
48: # Campus:
49: # * baldwin sparc-sun-solaris2.10
50: # * bridgeport sparc-sun-solaris2.10
51: # * malarky sparc-sun-solaris2.10
52: # * pogo sparc-sun-solaris2.10
53: # * rackety freebsd-6.1
54:
55: # HMS: we need $PWD because solaris produces /deacon/backroom when
56: # we are in /backroom and in general there is no /deacon/backroom.
57: c_d=${PWD:-`pwd`}
58:
59: SIG=`perl -e 'print rand'`
60:
61: case "$LIST" in
62: '') LIST="malarky rackety" ;;
63: esac
64:
65: for i in $LIST
66: do
67: SKIPTHIS=0
68: [ -f .buildkey-$i ] && SKIPTHIS=1
69: case "$SKIPTHIS" in
70: 1)
71: echo flock-build running on $i? check LIST, skipping
72: ;;
73: 0)
74: echo $i
75: echo $SIG > .buildkey-$i
76: case "1" in
77: 0)
78: ssh $i "cd $c_d ; ./build $SIG $PARSE $STD $BUILD_ARGS" &
79: ssh $i "cd $c_d ; ./build $SIG $PARSE $STD --without-crypto $BUILD_ARGS" &
80: ssh $i "cd $c_d ; ./build $SIG $STD --disable-all-clocks $BUILD_ARGS" &
81: ;;
82: 1)
83: cat > .flockbuild-$i-$SIG <<-ENDQUOT
84: #!/bin/sh
85:
86: # script uses job control and expects to be invoked
87: # in a ssh session started with the -tt option,
88: # which forces a pseudo-tty to be used.
89:
90: cd $c_d
91: COUNT=0
92:
93: ./build $SIG $PARSE $STD $BUILD_ARGS &
94:
95: COUNT=\`expr \$COUNT + 1\`
96: echo \`date -u '+%H:%M:%S'\` $i started build \$COUNT of 4
97: [ 0 -lt \`expr \$COUNT % $PARALLEL_BUILDS\` ] || wait
98:
99: case $FB_FIRSTONLY in
100: '0')
101: ./build $SIG $PARSE $STD --disable-debugging $BUILD_ARGS &
102:
103: COUNT=\`expr \$COUNT + 1\`
104: echo \`date -u '+%H:%M:%S'\` $i started build \$COUNT of 4
105: [ 0 -lt \`expr \$COUNT % $PARALLEL_BUILDS\` ] || wait
106:
107: ./build $SIG $PARSE $STD --without-crypto $BUILD_ARGS &
108:
109: COUNT=\`expr \$COUNT + 1\`
110: echo \`date -u '+%H:%M:%S'\` $i started build \$COUNT of 4
111: [ 0 -lt \`expr \$COUNT % $PARALLEL_BUILDS\` ] || wait
112:
113: ./build $SIG $STD --disable-all-clocks $BUILD_ARGS &
114:
115: COUNT=\`expr \$COUNT + 1\`
116: echo \`date -u '+%H:%M:%S'\` $i started build \$COUNT of 4
117: wait
118: esac
119: echo \`date -u '+%H:%M:%S'\` $i flock-build $c_d done.
120: rm .buildkey-$i
121: ENDQUOT
122: chmod +x .flockbuild-$i-$SIG
123: ssh -tt $i "$c_d/.flockbuild-$i-$SIG ; \
124: rm $c_d/.flockbuild-$i-$SIG" 2>/dev/null &
125: esac
126: esac
127: done
128: echo `date -u '+%H:%M:%S'` flock-build launched
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>