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