#! /bin/sh # # Script to help running coverage profiles # vfile=`dirname $0`/VERSIONS-COVERAGE if [ ! -r ${vfile} ] ; then echo VERSIONS-COVERAGE file not found exit 1 fi source ${vfile} if [ ! -d ${BASEDIR} ] ; then echo Have you set the BASEDIR in VERSIONS correctly? exit 1 fi progname=${0##*/} # fast basename hack for ksh, bash USAGE=\ "usage: $progname [ -opts ] cmd [ more cmds] -t -- publish the results to ftp site (default=yes) -f -- save the results locally (default=yes) -v -- verbose where cmds are: update - to update the RTEMS and Test Support source BSP_TESTSET - to perform TESTSET on BSP TESTSET may be baseline, O2, or Os " # log an error to stderr prerr() { echo "$*" >&2 } fatal() { prerr "$USAGE" [ "$1" ] && (prerr ; prerr $*); exit 1 } warn() { [ "$1" ] && prerr $* } check_status() { if [ $1 -ne 0 ] ; then shift echo "FAILED: " "$*" >&2 exit 1 fi } toggle() { case $1 in no) echo "yes" ;; yes) echo "no" ;; *) fatal "Unknown value to toggle ($1)" ;; esac } do_one() { bsp=${1} shift echo "time ${COVBASE}/do_coverage -A -v -u -m ${SAVE} ${PUBLISH} ${*} -B ${bsp}" time ${COVBASE}/do_coverage -A -v -u -m ${SAVE} ${PUBLISH} ${*} -B ${bsp} check_status $? "FAILED ${bsp}" rm -rf b-${bsp} ${bsp}-tests } validate_bsp() { case ${1} in edb7312|gumstix|smdk2410) ;; # ARM pc386|qemu) ;; # i386 lm32_evr) ;; # lm32 uC5282) ;; # m68k/Coldfire qemuppc) ;; # PowerPC erc32|leon2|leon3) ;; # SPARC *) echo "ERROR - does BSP (${bsp}) really exist and support coverage?" exit 1 esac } verbose="no" do_publish="yes" do_save_tarballs="yes" while getopts ftv OPT do case "$OPT" in f) do_publish=`toggle ${do_publish}` ;; t) do_save_tarballs=`toggle ${do_save_tarballs}` ;; v) verbose=`toggle ${verbose}` ;; *) fatal;; esac done # Set the publish and save options if [ ${do_publish} = "yes" ] ; then PUBLISH="-f" fi if [ ${do_save_tarballs} = "yes" ] ; then SAVE="-t" fi shiftcount=`expr $OPTIND - 1` shift $shiftcount args=$* if [ $# -eq 0 ] ; then echo "No actions requested" exit 0 fi for cmd in $* do case ${cmd} in update) ;; # general command *_O[sS2][pP][dD]|*_baseline) # one BSP at specific -Ox level case ${cmd} in lm32_evr*) bsp=lm32_evr ;; *) bsp=`echo $cmd | sed -e 's/_.*$//'` ;; esac validate_bsp ${bsp} ;; *) echo "Unknown command (${cmd})" exit 1 ;; esac done START=`date` cd ${BASEDIR} RESULTSDIR=${BASEDIR}/covrun-results test -d ${RESULTSDIR} || mkdir -p ${RESULTSDIR} for cmd in $* do echo $cmd case ${cmd} in update) time ${COVBASE}/do_coverage -u -m -B erc32 ;; *_O[sS2][pP][dD]) bsp=`echo $cmd | sed -e 's/_O.*$//'` args=`echo $cmd | sed -e 's/^.*_//'` Olevel=`echo $cmd | sed -e 's/.*_O\(.\).*$/\1/'` posix=`echo $cmd | sed -e 's/.*_O.\(.\).*$/\1/'` devel=`echo $cmd | sed -e 's/.*_O..\(.\)$/\1/'` echo $bsp $args $Olevel $posix $devel optArg="-S" if [ ${Olevel} = "2" ] ; then optArg="" fi posixArg="" if [ ${posix} = "p" ] ; then posixArg="-P" fi develArg="" if [ ${devel} = "d" ] ; then develArg="-D" fi # echo do_one ${bsp} ${optArg} ${posixArg} ${develArg} do_one ${bsp} ${optArg} ${posixArg} ${develArg} ;; *_baseline) bsp=`echo $cmd | sed -e 's/_baseline$//'` # Each run does both developmental and core. So this is 8 configurations do_one ${bsp} -S # -Os / POSIX enabled do_one ${bsp} -S -P # -Os / POSIX disabled do_one ${bsp} # -O2 / POSIX enabled do_one ${bsp} -P # -O2 / POSIX disabled ;; *) echo "Unknown command (${cmd})" exit 1 ;; esac done STOP=`date` echo "STARTED AT: " ${START} echo "STOPPED AT: " ${STOP} exit 0