--- MITgcm/verification/testreport 2010/04/30 13:07:19 1.140 +++ MITgcm/verification/testreport 2010/12/17 17:32:24 1.152 @@ -1,6 +1,6 @@ #! /usr/bin/env bash # -# $Header: /home/ubuntu/mnt/e9_copy/MITgcm/verification/testreport,v 1.140 2010/04/30 13:07:19 jmc Exp $ +# $Header: /home/ubuntu/mnt/e9_copy/MITgcm/verification/testreport,v 1.152 2010/12/17 17:32:24 jmc Exp $ # $Name: $ # @@ -25,6 +25,8 @@ echo " (-tdir|-t) STRING list of group and/or exp. dirs to test" echo " (recognized groups: basic, tutorials)" echo " (DEF=\"\" which test all)" + echo " (if list= 'start_from THIS_EXP' then" + echo " test THIS_EXP + all the following)" echo " (-skipdir|-skd) STRING list of exp. dirs to skip" echo " (DEF=\"\" which test all)" echo " (-bash|-b) STRING preferred location of a \"bash\" or" @@ -33,6 +35,7 @@ echo " (-adm|-ad) perform an adjoint run" echo " (-oad) perform an OpenAD adjoint run" echo " (-command|-c) STRING command to run" + echo " (-makedepend|-md) STRING command to use for \"makedepend\"" echo " (-make|-m) STRING command to use for \"make\"" echo " (DEF=\"make\")" echo " (-odir) STRING used to build output directory name" @@ -40,7 +43,7 @@ echo " (-ptracers|-ptr) STRING specify which ptracers to test" echo " (DEF=\"1 2 3 4 5\")" echo " (-match) NUMBER Matching Criteria (number of digits)" - echo " (DEF=\"12\")" + echo " (DEF=\"$MATCH_CRIT\")" echo " (-j) JOBS use \"make -j JOBS\" for parallel builds" echo " (-clean) *ONLY* run \"make CLEAN\"" echo " (-norun|-nr) skip the \"runmodel\" stage (stop after make)" @@ -317,6 +320,9 @@ ( cd $1; command="$GENMAKE2 -ds -m $MAKE" + if test "x$MKDEPEND" != x ; then + command="$command -makedepend=$MKDEPEND" + fi if test "x$ADM" = xt ; then command="$command --mods=../code_ad" elif test "x$OADM" = xt ; then @@ -354,14 +360,14 @@ fi fi printf 'genmake ... ' - eval $command > make.log 2>&1 + eval $command > genmake.tr_log 2>&1 RETVAL=$? # Reduce the size of the testing emails! head -100 Makefile > $CDIR/Makefile_head if test "x$RETVAL" != x0 ; then - tail make.log + tail genmake.tr_log echo "genmakemodel: genmake failed" - cp genmake_* make.log $CDIR + cp genmake.log genmake_* genmake.tr_log $CDIR return 1 else echo "successful" @@ -373,6 +379,7 @@ makeclean() { # makeclean directory + if test "x$NODEPEND" = xf ; then rm -f $1/make.tr_log ; fi if test "x$NOCLEAN" = xt ; then echo "make Clean skipped!" else @@ -381,12 +388,13 @@ #if test -e $OUTPUTFILE ; then rm -f $OUTPUTFILE ; fi if test -r Makefile ; then printf 'clean build-dir: make Clean ... ' - $MAKE Clean >> make.log 2>&1 + rm -f Makefile.old + $MAKE Clean >> make.tr_log 2>&1 RETVAL=$? if test "x$RETVAL" != x0 ; then - tail make.log + tail make.tr_log echo "makeclean: \"make Clean\" failed" - cp make.log $CDIR"/make.log" + cp make.tr_log genmake.log genmake.tr_log $CDIR return 1 fi echo successful @@ -412,7 +420,7 @@ find . -name "*.data" -exec rm {} \; find . -name "fort.*" -exec rm {} \; find . -type l -exec rm {} \; - rm -f $EXECUTABLE *.txt STD* *diagnostics.log datetime + rm -f $EXECUTABLE $RUNLOG *.txt STD* *diagnostics.log datetime rm -rf mnc_test_* rm -f *_MIT_CE_000.opt0000 costfunction*0000 echo successful @@ -430,12 +438,12 @@ ( cd $1; printf 'make depend ... ' - $MAKE depend >> make.log 2>&1 + $MAKE depend >> make.tr_log 2>&1 RETVAL=$? if test "x$RETVAL" != x0 ; then - tail make.log + tail make.tr_log echo "makedependmodel: make depend failed" - cp make.log $CDIR"/make.log" + cp make.tr_log genmake.log genmake.tr_log $CDIR return 1 else echo successful @@ -461,21 +469,21 @@ if test -r Makefile ; then printf 'make ... ' if test "x$ADM" = xt ; then - $MAKE adall >> make.log 2>&1 + $MAKE adall >> make.tr_log 2>&1 elif test "x$OADM" = xt ; then - $MAKE adAll >> make.log 2>&1 + $MAKE adAll >> make.tr_log 2>&1 else if test "x$JOBS" = x ; then - $MAKE >> make.log 2>&1 + $MAKE >> make.tr_log 2>&1 else - $MAKE -j $JOBS >> make.log 2>&1 + $MAKE -j $JOBS >> make.tr_log 2>&1 fi fi RETVAL=$? if test "x$RETVAL" != x0 ; then - tail make.log + tail make.tr_log echo failed - cp make.log $CDIR"/make.log" + cp make.tr_log genmake.log genmake.tr_log $CDIR rm -f $EXECUTABLE return 1 else @@ -829,6 +837,7 @@ HAVE_MPACK= MPACK= COMMAND= +MKDEPEND= if test "x$MAKE" = x ; then MAKE=make fi @@ -848,7 +857,7 @@ # list of pTracers to check for monitor output PTRACERS_NUM="1 2 3 4 5" -MATCH_CRIT=13 +MATCH_CRIT=10 printf "parsing options... " @@ -903,6 +912,11 @@ -command=* | --command=* | -c=* | --c=*) COMMAND=$ac_optarg ;; + -makedepend | --makedepend | -md | --md) + ac_prev=MKDEPEND ;; + -makedepend=* | --makedepend=* | -md=* | --md=*) + MKDEPEND=$ac_optarg ;; + -make | --make | -m | --m) ac_prev=MAKE ;; -make=* | --make=* | -m=* | --m=*) @@ -1005,8 +1019,12 @@ EXECUTABLE="mitgcmuv" fi +xx=`echo $TESTDIRS | awk '{print $1}'` if test "x$TESTDIRS" = x ; then LIST=`scandirs results/$ref_outp` +elif test $xx = 'start_from' ; then + xx=`echo $TESTDIRS | awk '{print $2}'` + LIST=`scandirs results/$ref_outp | sed -n "/$xx/,$ p"` else #- expand group of experiments: LIST=" " @@ -1050,7 +1068,7 @@ OPTFILE=$MITGCM_OF fi -RUNLOG="run.log" +RUNLOG="run.tr_log" OUTPUTFILE=$ref_outp if test "x$COMMAND" = x ; then COMMAND="./$EXECUTABLE > $OUTPUTFILE" @@ -1148,8 +1166,8 @@ fi else echo >> $SUMMARY - echo "No \"OPTFILE\" was explicitly specified by testreport," >> $SUMMARY - echo " so the genmake default will be used." >> $SUMMARY + echo "No \"OPTFILE\" was specified ; genmake2 found and uses:" >> $SUMMARY + #-note: to be filled later after 1rst run fi echo echo >> $SUMMARY @@ -1199,6 +1217,7 @@ builddir="build" if test ! -d $dir/$builddir ; then mkdir $dir/$builddir ; fi rundir="run" + pfxdir="tr_$rundir" if test ! -d $dir/$rundir ; then rundir=$builddir fi @@ -1209,12 +1228,16 @@ if test "x$CLEANUP" = xt ; then echo -n ' --- dir:' $BUILD_DIR ': ' makeclean $BUILD_DIR - rm -f $BUILD_DIR/$EXECUTABLE + ( cd $BUILD_DIR + rm -f $EXECUTABLE *.bak + rm -f genmake_state genmake_*optfile genmake.log + rm -f genmake.tr_log make.tr_log + ) if test -d $dir/$rundir/CVS ; then echo -n ' --- dir:' $dir/$rundir ': ' run_clean $dir/$rundir fi - trdir=`( cd $dir ; find . -type d -name "tr_run.*" -print | sed 's/^.\///')` + trdir=`( cd $dir ; find . -type d -name "$pfxdir.*" -print | sed 's/^.\///')` ttd=`echo $trdir | wc -w` if test $ttd != 0 ; then echo ' --- rm dir:' $trdir @@ -1339,11 +1362,11 @@ locDIR=$DRESULTS"/"$dir"."$ex mkdir $locDIR CDIR=`pwd`"/$locDIR" - test ! -e "$dir/tr_run.$ex" && mkdir "$dir/tr_run.$ex" - run_clean $dir/tr_run.$ex - linkdata $dir/tr_run.$ex $inputdir.$ex $inputdir - runmodel $dir/tr_run.$ex && run=Y \ - && results=`testoutput_run $dir tr_run.$ex $refExOut` + test ! -e "$dir/$pfxdir.$ex" && mkdir "$dir/$pfxdir.$ex" + run_clean $dir/$pfxdir.$ex + linkdata $dir/$pfxdir.$ex $inputdir.$ex $inputdir + runmodel $dir/$pfxdir.$ex && run=Y \ + && results=`testoutput_run $dir $pfxdir.$ex $refExOut` fres=`formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N} $results` fres="$fres.$ex" echo 1>&2 @@ -1356,11 +1379,11 @@ echo "tdir='$dir.$ex'" >> $locDIR"/summary.txt" if test "x$ADM" = xt ; then head -1 $dir/$builddir/taf_ad.log >> $locDIR"/summary.txt" - grep -A3 'Seconds in section "ALL' $dir/tr_run.$ex/$OUTPUTFILE \ + grep -A3 'Seconds in section "ALL' $dir/$pfxdir.$ex/$OUTPUTFILE \ >> $locDIR"/summary.txt" fi if test "x$POSTCLEAN" = xt ; then - run_clean $dir/tr_run.$ex + run_clean $dir/$pfxdir.$ex fi done @@ -1369,7 +1392,28 @@ mkOpt=`grep '^# OPTFILE=' $dir/$builddir/Makefile 2>/dev/null | head -1 | sed 's/^# //'` echo "from '$dir/$builddir/Makefile', extract:" > $DRESULTS/genmake_state sed -n '/^# executed by:/,+1 p' $dir/$builddir/Makefile >> $DRESULTS/genmake_state - echo $mkOpt >> $DRESULTS/genmake_state + echo " $mkOpt" >> $DRESULTS/genmake_state + if test "x$OPTFILE" = xNONE ; then + eval $mkOpt + sed "/^No \"OPTFILE\" was specified ; genmake2/a\ OPTFILE=${OPTFILE}"\ + $SUMMARY > tr_0.tmp_log + RETVAL=$? + if test "x$RETVAL" = x0 ; then rm -f $SUMMARY + cp tr_0.tmp_log $SUMMARY + else rm -f tr_0.tmp_log + fi + fi + gmkLog=$dir/$builddir/genmake.log + grep '^Get compiler version using:' $gmkLog > /dev/null 2>&1 + RETVAL=$? + if test "x$RETVAL" = x0 ; then + echo "from '$gmkLog', extract compiler version:" >> $DRESULTS/genmake_state + sed -n '/Get compiler version/,/<-- compiler version/p' $gmkLog \ + | grep -v '^... compiler version ' > tr_1.tmp_log + sed -n '1,/^$/p' tr_1.tmp_log | sed '/^$/d' | sed 's/^./ &/' \ + >> $DRESULTS/genmake_state + rm -f tr_1.tmp_log + fi fi fi #postclean $dir/$builddir