xref: /minix3/minix/commands/worldstone/worldstone.sh (revision 433d6423c39e34ec4b79c950597bb2d236f886be)
1*433d6423SLionel Sambuc
2*433d6423SLionel Sambucif [ ! "$MAKE" ]; then	MAKE=make; fi
3*433d6423SLionel SambucITERATIONS=5
4*433d6423SLionel SambucPRECMD="$MAKE clean"
5*433d6423SLionel SambucCOMMAND="$MAKE all"
6*433d6423SLionel SambucTAG=time.$(basename $(git --git-dir=/usr/src/.git describe --all --dirty))
7*433d6423SLionel Sambuc
8*433d6423SLionel Sambucset -e
9*433d6423SLionel Sambuc
10*433d6423SLionel Sambucwhile getopts "n:d:p:c:r:s" c
11*433d6423SLionel Sambucdo
12*433d6423SLionel Sambuc        case "$c" in
13*433d6423SLionel Sambuc		s)	PROFILE=1 ;;
14*433d6423SLionel Sambuc		n)	ITERATIONS=$OPTARG ;;
15*433d6423SLionel Sambuc		p)	PRECMD="$OPTARG" ;;
16*433d6423SLionel Sambuc		c)	COMMAND="$OPTARG" ;;
17*433d6423SLionel Sambuc		t)	TAG=$OPTARG	;;
18*433d6423SLionel Sambuc		r)	echo "Reading settings from $OPTARG"; cat $OPTARG; . $OPTARG ; echo "Reading done.";;
19*433d6423SLionel Sambuc		*)	exit 1	;;
20*433d6423SLionel Sambuc	esac
21*433d6423SLionel Sambucdone
22*433d6423SLionel Sambuc
23*433d6423SLionel SambucCONFIGPREFIX=".worldstone"
24*433d6423SLionel SambucCONFIGVARS="ITERATIONS PRECMD COMMAND MAKE"
25*433d6423SLionel SambucTMPF=.worldstone.tmpconfig.$$
26*433d6423SLionel Sambucrm -f $TMPF
27*433d6423SLionel Sambucfor d in $CONFIGVARS
28*433d6423SLionel Sambucdo	eval "echo $d=\\\"\$$d\\\"" >>$TMPF
29*433d6423SLionel Sambucdone
30*433d6423SLionel SambucCONFIGTAG=`crc <$TMPF | awk '{ print $1 }'`
31*433d6423SLionel SambucCONFIGFILE=$CONFIGPREFIX.$CONFIGTAG
32*433d6423SLionel Sambucmv -f $TMPF $CONFIGFILE
33*433d6423SLionel Sambuc
34*433d6423SLionel SambucLOGFILE=$TAG.worldstone.log
35*433d6423SLionel Sambuc
36*433d6423SLionel Sambucwhile [ -f $LOGFILE ]
37*433d6423SLionel Sambucdo	echo "$0: WARNING: $LOGFILE already exists, appending."
38*433d6423SLionel Sambuc	LOGFILE=$LOGFILE.next
39*433d6423SLionel Sambucdone
40*433d6423SLionel Sambuc
41*433d6423SLionel Sambucecho "Logging to $LOGFILE."
42*433d6423SLionel Sambuc
43*433d6423SLionel Sambucecho "First run."
44*433d6423SLionel Sambucsh -c "$PRECMD"
45*433d6423SLionel Sambucsh -c "$COMMAND"
46*433d6423SLionel Sambuc
47*433d6423SLionel Sambucif [ "$PROFILE" ]; then profile stop || true; fi
48*433d6423SLionel Sambuc
49*433d6423SLionel Sambucfor n in `seq 1 $ITERATIONS`
50*433d6423SLionel Sambucdo	echo -n "$n"
51*433d6423SLionel Sambuc	sh -c "$PRECMD >/dev/null 2>&1"
52*433d6423SLionel Sambuc	echo -n "."
53*433d6423SLionel Sambuc	sync
54*433d6423SLionel Sambuc	PROF=$LOGFILE.p.$n
55*433d6423SLionel Sambuc	if [ "$PROFILE" ]; then profile start --rtc -o $PROF -f 3; fi
56*433d6423SLionel Sambuc	time -C sh -c "$COMMAND >/dev/null 2>&1; sync" 2>>$LOGFILE
57*433d6423SLionel Sambuc	if [ "$PROFILE" ]; then profile stop; sprofalyze -d $PROF >$PROF.d; fi
58*433d6423SLionel Sambuc	echo -n " "
59*433d6423SLionel Sambucdone
60*433d6423SLionel Sambucecho "Done."
61*433d6423SLionel Sambucecho "Time measurements logfile is $LOGFILE."
62*433d6423SLionel Sambucecho "Config file is $CONFIGFILE."
63