xref: /netbsd-src/external/bsd/ntp/dist/flock-build (revision ba65fde2d7fefa7d39838fa5fa855e62bd606b5e)
1#! /bin/sh
2
3IAM=`hostname || uname -n`
4MYNAME=`IFS=. ; set $IAM ; echo $1`
5
6case "$1" in
7 '--one'|'-1')
8     shift
9     FB_FIRSTONLY=1
10     LIST=$MYNAME
11     ;;
12 *)
13     FB_FIRSTONLY=0
14esac
15
16BUILD_ARGS="$@"
17PARSE="--enable-parse-clocks"
18#PARSE=
19STD="--enable-simulator"
20
21case "$SIMUL::$FB_FIRSTONLY" in
22 ::*)
23    PARALLEL_BUILDS=1
24    ;;
25 *::0)
26    PARALLEL_BUILDS=$SIMUL
27    ;;
28 *)
29    PARALLEL_BUILDS=1
30esac
31
32case "$PARALLEL_BUILDS" in
33 1)  ;;
34 *)  echo Launching $PARALLEL_BUILDS parallel builds on each machine
35esac
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.
57c_d=${PWD:-`pwd`}
58
59SIG=`perl -e 'print rand'`
60
61case "$LIST" in
62 '') LIST="malarky rackety" ;;
63esac
64
65for i in $LIST
66do
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
121ENDQUOT
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
127done
128echo `date -u '+%H:%M:%S'` flock-build launched
129