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