--- MITgcm/verification/testreport 2009/01/29 21:45:43 1.120 +++ MITgcm/verification/testreport 2010/10/07 20:59:39 1.142 @@ -1,6 +1,6 @@ #! /usr/bin/env bash # -# $Header: /home/ubuntu/mnt/e9_copy/MITgcm/verification/testreport,v 1.120 2009/01/29 21:45:43 utke Exp $ +# $Header: /home/ubuntu/mnt/e9_copy/MITgcm/verification/testreport,v 1.142 2010/10/07 20:59:39 jmc Exp $ # $Name: $ # @@ -11,38 +11,41 @@ echo echo "where possible OPTIONS are:" echo " (-help|-h) print usage" - echo " (-mth) run multi threaded (using eedata.mth)" + echo " (-mth) run multi-threaded (using eedata.mth)" echo " (-mpi) compile and run using MPI" - echo " (-ieee|-noieee) if possible, use IEEE compiler flags" + echo " (-ieee/-noieee) if possible, use IEEE compiler flags" echo " (DEF=\"-ieee\")" echo " (-gsl) compile with \"-gsl\" flag" - echo " (-of=|-optfile=)STRING list of optfiles to use" - echo " (-a|-addr) STRING list of email recipients" + echo " (-use_r4|-ur4) if allowed, use real*4 type for '_RS' variable" + echo " (-optfile|-of) STRING list of optfiles to use" + echo " (-addr|-a) STRING list of email recipients" echo " (DEF=\"\" no email is sent)" - echo " (-mpd|-mpackdir) DIR location of the mpack utility" + echo " (-mpackdir|-mpd) DIR location of the mpack utility" echo " (DEF=\"../tools/mpack-1.6\")" - echo " (-t|-tdir) STRING list of group and/or exp. dirs to test" + echo " (-tdir|-t) STRING list of group and/or exp. dirs to test" echo " (recognized groups: basic, tutorials)" echo " (DEF=\"\" which test all)" - echo " (-skd|-skipdir) STRING list of exp. dirs to skip" + echo " (-skipdir|-skd) STRING list of exp. dirs to skip" echo " (DEF=\"\" which test all)" - echo " (-b|-bash) STRING preferred location of a \"bash\" or" + echo " (-bash|-b) STRING preferred location of a \"bash\" or" echo " Bourne-compatible \"sh\" shell" echo " (DEF=\"\" for \"bash\")" echo " (-adm|-ad) perform an adjoint run" echo " (-oad) perform an OpenAD adjoint run" - echo " (-command) STRING command to run" - echo " (DEF=\"make output.txt\")" - echo " (-m|-make) STRING command to use for \"make\"" + 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" echo " (DEF=\"hostname\")" - echo " (-ptr|-ptracers) STRING specify which ptracers to test" + 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)" + echo " (-runonly|-ro) *ONLY* run stage (=\"-quick\" without make)" echo " (-quick|-q) same as \"-nogenmake -noclean -nodepend\"" echo " (-nogenmake|-ng) skip the genmake stage" echo " (-noclean|-nc) skip the \"make clean\" stage" @@ -104,7 +107,7 @@ { # testoutput_var dir s1 label subdir reference_output # - # compares 1 variable output selected from file $dir/$subdir/$OUTPUTFILE + # compares 1 variable output selected from file $dir/$subdir/$OUTPUTFILE # with same output from reference file $dir/results/$reference_output # using search strings s1 and text label @@ -176,7 +179,7 @@ fi fi rm -f tmp1.txt tmp2.txt tmp3.txt tmp4.txt - + return $digits_of_similarity } @@ -229,7 +232,7 @@ listVar=" $sVar "`echo "$listVar " | sed "s/ $sVar / /g"` fi if [ $debug -gt 0 ]; then echo "testoutput_run: listVar(M)='$listVar'" 1>&2 ; fi - echo "listVar='$listVar'" > $CDIR"/summary.txt" + echo "listVar='$listVar'" > $locDIR"/summary.txt" allargs="" for xx in $listVar do @@ -264,18 +267,18 @@ testoutput_var $1 "trcstat_ptracer0"$ii"_mean" "p0"$ii"_mean" $2 $3; yy=$? ;; 'pt1sd'|'pt2sd'|'pt3sd'|'pt4sd'|'pt5sd') ii=`echo $xx | sed 's/pt//' | sed 's/..$//'` testoutput_var $1 "trcstat_ptracer0"$ii"_sd" "p0"$ii"_StDv" $2 $3; yy=$? ;; - 'Qntmn') testoutput_var $1 "extforcing_qnet_min" "Qnet minimum" $2 $3; yy=$? ;; - 'Qntmx') testoutput_var $1 "extforcing_qnet_max" "Qnet maximum" $2 $3; yy=$? ;; - 'Qntav') testoutput_var $1 "extforcing_qnet_mean" "Qnet mean" $2 $3; yy=$? ;; - 'Qntsd') testoutput_var $1 "extforcing_qnet_sd" "Qnet Std.Dev" $2 $3; yy=$? ;; + 'Qntmn') testoutput_var $1 "forcing_qnet_min" "Qnet minimum" $2 $3; yy=$? ;; + 'Qntmx') testoutput_var $1 "forcing_qnet_max" "Qnet maximum" $2 $3; yy=$? ;; + 'Qntav') testoutput_var $1 "forcing_qnet_mean" "Qnet mean" $2 $3; yy=$? ;; + 'Qntsd') testoutput_var $1 "forcing_qnet_sd" "Qnet Std.Dev" $2 $3; yy=$? ;; 'aSImn') testoutput_var $1 "seaice_area_min" "SIce Area min" $2 $3; yy=$? ;; 'aSImx') testoutput_var $1 "seaice_area_max" "SIce Area max" $2 $3; yy=$? ;; 'aSIav') testoutput_var $1 "seaice_area_mean" "SIce Area mean" $2 $3; yy=$? ;; 'aSIsd') testoutput_var $1 "seaice_area_sd" "SIce Area StDv" $2 $3; yy=$? ;; 'hSImn') testoutput_var $1 "seaice_heff_min" "SIce Heff min" $2 $3; yy=$? ;; - 'hSImx') testoutput_var $1 "seaice_heff_max" "SIce Hell max" $2 $3; yy=$? ;; - 'hSIav') testoutput_var $1 "seaice_heff_mean" "SIce Hell mean" $2 $3; yy=$? ;; - 'hSIsd') testoutput_var $1 "seaice_heff_sd" "SIce Hell StDv" $2 $3; yy=$? ;; + 'hSImx') testoutput_var $1 "seaice_heff_max" "SIce Heff max" $2 $3; yy=$? ;; + 'hSIav') testoutput_var $1 "seaice_heff_mean" "SIce Heff mean" $2 $3; yy=$? ;; + 'hSIsd') testoutput_var $1 "seaice_heff_sd" "SIce Heff StDv" $2 $3; yy=$? ;; 'AthSiG') testoutput_var $1 "thSI_Ice_Area_G" "thSIc Area Global" $2 $3; yy=$? ;; 'AthSiS') testoutput_var $1 "thSI_Ice_Area_S" "thSIc Area South" $2 $3; yy=$? ;; 'AthSiN') testoutput_var $1 "thSI_Ice_Area_N" "thSIc Area North" $2 $3; yy=$? ;; @@ -291,13 +294,13 @@ done nbVar=`echo $listVar | awk '{print NF}'` - if [ $nbVar -lt $LEN_CHECK_LIST ] ; then + if [ $nbVar -lt $LEN_CHECK_LIST ] ; then #-- fill line (up to standard length) with dot: adNul=`expr $LEN_CHECK_LIST - $nbVar | awk '{for(i=1;i<=$1;i++){print "."}}'` echo $allargs $adNul else echo $allargs - fi + fi # <-- same processing for adjoint & forward test } @@ -315,15 +318,18 @@ ( 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 command="$command -adof ../../../tools/adjoint_options/adjoint_oad -mods '../code_oad ../../OpenAD/code_oad_all'" else - command="$command --mods=../code" + command="$command -mods=../code" fi if test "x$OPTFILE" != xNONE ; then - command="$command --optfile=$OPTFILE" + command="$command -optfile=$OPTFILE" fi if test "x$IEEE" != x ; then command="$command -ieee" @@ -334,29 +340,35 @@ if test "x$MPI" = xt ; then command="$command -mpi" fi + if test "x$MULTI_THREAD" = xt ; then + #- run multi-threaded using OpenMP: + command="$command -omp" + fi + if test "x$USE_R4" = xt ; then + command="$command -use_r4" + fi if test "x$TS" = xt ; then command="$command -ts" fi if test "x$PAPIS" = xt ; then command="$command -papis" - else + else if test "x$PCLS" = xt ; then command="$command -pcls" fi fi - printf 'genmake ... ' 1>&2 - # $command > make.log 2>&1 + printf 'genmake ... ' eval $command > make.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 - echo "genmakemodel: genmake failed" 1>&2 + echo "genmakemodel: genmake failed" cp genmake_* make.log $CDIR return 1 else - echo "successful" 1>&2 + echo "successful" fi ) fi @@ -372,17 +384,19 @@ cd $1; #if test -e $OUTPUTFILE ; then rm -f $OUTPUTFILE ; fi if test -r Makefile ; then - printf 'clean build-dir: make Clean ... ' 2>&1 + printf 'clean build-dir: make Clean ... ' $MAKE Clean >> make.log 2>&1 RETVAL=$? if test "x$RETVAL" != x0 ; then tail make.log - echo "makeclean: \"make Clean\" failed" 1>&2 + echo "makeclean: \"make Clean\" failed" cp make.log $CDIR"/make.log" return 1 fi + echo successful + else + echo '' fi - echo successful 1>&2 exit 0 ) fi @@ -396,7 +410,7 @@ else ( cd $1; - printf 'clean run-dir ... ' 2>&1 + printf 'clean run-dir ... ' # part of what is done after "make clean" when doing "make CLEAN" find . -name "*.meta" -exec rm {} \; find . -name "*.data" -exec rm {} \; @@ -405,7 +419,7 @@ rm -f $EXECUTABLE *.txt STD* *diagnostics.log datetime rm -rf mnc_test_* rm -f *_MIT_CE_000.opt0000 costfunction*0000 - echo successful 1>&2 + echo successful exit 0 ) fi @@ -419,16 +433,16 @@ else ( cd $1; - printf 'make depend ... ' 1>&2 + printf 'make depend ... ' $MAKE depend >> make.log 2>&1 RETVAL=$? if test "x$RETVAL" != x0 ; then tail make.log - echo "makedependmodel: make depend failed" 1>&2 + echo "makedependmodel: make depend failed" cp make.log $CDIR"/make.log" return 1 else - echo successful 1>&2 + echo successful fi ) fi @@ -438,9 +452,18 @@ { # makemodel directory ( + if test "x$NOMAKE" = xt ; then + cd $1; + if test -x $EXECUTABLE ; then + echo "make skipped!" + else + echo "no executable!" + return 2 + fi + else cd $1; if test -r Makefile ; then - printf 'make ... ' 1>&2 + printf 'make ... ' if test "x$ADM" = xt ; then $MAKE adall >> make.log 2>&1 elif test "x$OADM" = xt ; then @@ -455,13 +478,15 @@ RETVAL=$? if test "x$RETVAL" != x0 ; then tail make.log - echo failed 1>&2 + echo failed cp make.log $CDIR"/make.log" + rm -f $EXECUTABLE return 1 else - echo successful 1>&2 + echo successful fi fi + fi ) } @@ -475,7 +500,7 @@ code_dir=$2 BUILD_DIR=$dir/$3 CODE_DIR=$dir/$code_dir - + # These are files that should replace their counter-part when using -mpi MPI_FILES=`(cd $CODE_DIR; find . -name "*_mpi" -print)` @@ -510,7 +535,7 @@ fi done fi - + } linkdata() @@ -521,14 +546,33 @@ if test -d $1 ; then ( cd $1 ; shift + echo 'linkdata from dirs:' $* + inpMPI=`(cd ../$1 ; find . -name "*.mpi" -print | sed 's:^\./::')` + for xx in $inpMPI ; do + if test -r "../"$1"/"$xx ; then + # found 1 _mpi sfx file in 1rst input dir and it is readable + yy=`echo $xx | sed 's:\.mpi$::'` + if test "x$MPI" = "xt" ; then + # mpi test: remove symbolic link & link _mpi sfx file + if test -h $yy ; then rm -f $yy ; fi + if test ! -r $yy ; then + ln -sf "../"$1"/"$xx $yy ; + printf " $xx" 1>&2 + fi + else + # not mpi test: remove symbolic link + if test -h $yy ; then rm -f $yy ; fi + fi + fi + done if test -r "../"$1"/eedata.mth" ; then # found eedata.mth in 1rst input dir and it is readable if test "x$MULTI_THREAD" = "xt" ; then # multi-threaded test: remove symbolic link & link eedata.mth if test -h eedata ; then rm -f eedata ; fi - if test ! -r eedata ; then + if test ! -r eedata ; then ln -sf "../"$1"/eedata.mth" eedata ; - printf 'eedata.mth ' 1>&2 + printf ' eedata.mth' 1>&2 fi else # not multi-threaded test: remove eedata symbolic link @@ -538,7 +582,7 @@ prevDir='NONE' for ldir in $* ; do if test -d "../"$ldir -a $ldir != $prevDir ; then - printf 'ldir='${ldir} 1>&2 + printf " ldir=${ldir}:" 1>&2 files=`( cd "../"$ldir ; ls -1 | grep -v CVS )` for i in $files ; do if test ! -d "../"$ldir/$i ; then @@ -548,10 +592,12 @@ fi fi done + printf ' ;' 1>&2 if test -x "../"$ldir"/"prepare_run ; then - "../"$ldir"/"prepare_run + "../"$ldir"/"prepare_run 1>&2 + else + echo '' 1>&2 fi - printf ' ; ' 1>&2 fi prevDir=$ldir done @@ -563,16 +609,17 @@ { # runmodel directory # - # runs "$COMMAND in "directory" + # runs "$COMMAND in "directory" # (where "$COMMAND" is relative to "directory") ( cd $1 - printf 'runmodel in %s ...' $1 1>&2 - # make output.txt - echo - if test -L $EXECUTABLE -a -x "../"$builddir"/"$EXECUTABLE ; then + printf 'runmodel in %s ... ' $1 + if test -L $EXECUTABLE ; then + if test -x "../"$builddir"/"$EXECUTABLE ; then diff -q $EXECUTABLE "../"$builddir"/"$EXECUTABLE > /dev/null 2>&1 outD=$? ; if test $outD != 0 ; then rm -f $EXECUTABLE ; fi + else rm -f $EXECUTABLE + fi fi if test ! -x $EXECUTABLE -a -x "../"$builddir"/"$EXECUTABLE ; then echo " link" $EXECUTABLE "from dir ../"$builddir > run.log_tmp @@ -596,7 +643,7 @@ if test -f $RUNLOG ; then if test -f run.log_tmp ; then cat run.log_tmp >> $RUNLOG ; fi echo "---------->> $OUTPUTFILE is up to date " >> $RUNLOG 2>&1 - else + else touch $RUNLOG if test -f run.log_tmp ; then cat run.log_tmp >> $RUNLOG ; fi echo "---------->> $OUTPUTFILE is up to date " >> $RUNLOG 2>&1 @@ -606,17 +653,24 @@ ENDVAL=`cat $RUNLOG | grep -v 'ABNORMAL END' | grep -c 'NORMAL END'` fi rm -f run.log_tmp - #if test "x$RETVAL" = x0 ; then if [ $RETVAL -eq 0 -a $ENDVAL -gt 0 ] ; then - tail $RUNLOG - echo successful 1>&2 + echo successful + printf '=> output from running in %s :\n' $1 1>&2 + tail $RUNLOG | sed 's/^.*/> &/g' 1>&2 # === Reduce the size of the testing emails! #cp $OUTPUTFILE $CDIR"/"$OUTPUTFILE if test -s STDERR.0000 ; then cp STDERR.0000 $CDIR"/STDERR.0000" ; fi return 0 + elif [ $RETVAL -ne 0 -a $ENDVAL -gt 0 ] ; then + #-- for some weird cases (run is finihed but with error code) + echo 'finished with error (run:' $RETVAL ' end:' $ENDVAL ')' + printf '=> output from running in %s :\n' $1 1>&2 + tail $RUNLOG | sed 's/^.*/> &/g' 1>&2 + return 0 else - tail $RUNLOG - echo failed '(run:' $RETVAL ' end:' $ENDVAL ')' 1>&2 + echo 'failed (run:' $RETVAL ' end:' $ENDVAL ')' + printf '=> output from running in %s :\n' $1 1>&2 + tail $RUNLOG | sed 's/^.*/> &/g' 1>&2 cp $RUNLOG $CDIR"/"$RUNLOG if test -s STDERR.0000 ; then cp STDERR.0000 $CDIR"/STDERR.0000" ; fi return 1 @@ -668,7 +722,7 @@ return 0 else echo - echo "ERROR: failed to compile comparison code -- please specify" + echo "ERROR: failed to compile comparison code -- please specify" echo " a C compiler using the CC environment variable." exit 1 fi @@ -687,7 +741,7 @@ printf '%3s' $listPrt # line below does not work on hp-ux_ia64 : do those substitutions later on # printf '%3s' $listPrt | sed 's/ 99/ --/g' | sed 's/ > />/' | sed 's/ < /> $SUMMARY if test "x$ADM" = x -a "x$OADM" = x; then - if [ $MATCH_CRIT -lt 10 ] ; - then line_0="default "$MATCH_CRIT ; + if [ $MATCH_CRIT -lt 10 ] ; + then line_0="default "$MATCH_CRIT ; else line_0="default "$MATCH_CRIT ; fi line_0="$line_0 ----T----- ----S----- ----U----- ----V-----" -# line_0=" ----T----- ----S----- ----U----- ----V-----" line_1="G D M c m s m s m s m s" line_2="E p a R g m m e . m m e . m m e . m m e ." line_3="N n k u 2 i a a d i a a d i a a d i a a d" @@ -1086,8 +1192,8 @@ else echo "ADJOINT=true" >> $SUMMARY echo >> $SUMMARY - if [ $MATCH_CRIT -lt 10 ] ; - then line_0="default "$MATCH_CRIT ; + if [ $MATCH_CRIT -lt 10 ] ; + then line_0="default "$MATCH_CRIT ; else line_0="default "$MATCH_CRIT ; fi echo "$line_0" | tee -a $SUMMARY cat << EOF | tee -a $SUMMARY @@ -1098,10 +1204,11 @@ EOF fi +echo "-------------------------------------------------------------------------------" # ...and each test directory... for dir in $TESTDIRS ; do - + # set builddir & rundir: builddir="build" if test ! -d $dir/$builddir ; then mkdir $dir/$builddir ; fi @@ -1114,22 +1221,23 @@ # Cleanup only! if test "x$CLEANUP" = xt ; then - if test -r $BUILD_DIR/Makefile ; then - echo ' ------ clean dir:' $dir/$builddir - ( cd $BUILD_DIR ; make CLEAN ) - fi + echo -n ' --- dir:' $BUILD_DIR ': ' + makeclean $BUILD_DIR + rm -f $BUILD_DIR/$EXECUTABLE if test -d $dir/$rundir/CVS ; then - echo ' ------ clean dir:' $dir/$rundir + echo -n ' --- dir:' $dir/$rundir ': ' run_clean $dir/$rundir fi - ( - cd $dir - rm -rf tr_run.* - ) + trdir=`( cd $dir ; find . -type d -name "tr_run.*" -print | sed 's/^.\///')` + ttd=`echo $trdir | wc -w` + if test $ttd != 0 ; then + echo ' --- rm dir:' $trdir + ( cd $dir ; rm -rf $trdir ) + fi continue fi - # Verify that the testdir exists and contains previous + # Verify that the testdir exists and contains previous # results in the correct location--or skip this directory! fout=$dir"/results/"$ref_outp if test ! -r $fout ; then @@ -1147,30 +1255,47 @@ echo "can't find \"$dir/input/eedata.mth\" -- skipping $dir" continue fi + if test "x$MPI" = "xt" -a "x$MULTI_THREAD" = "xt" ; then + retv=`check_eedata $CODE_DIR"/SIZE.h_mpi" $dir"/input/eedata.mth"` + if test $retv != 0 ; then + echo "input/eedata.mth tiling misfit -- skipping $dir" + continue + fi + fi # Check whether there are "extra runs" for this testdir extra_runs= - ex_run_dirs=`( cd $dir ; echo $inputdir.* )` + if test "x$NORUN" = xf ; then + ex_run_dirs=`( cd $dir ; echo $inputdir.* )` + fi #echo "ex_run_dirs='$ex_run_dirs'" for exd in $ex_run_dirs ; do name=`echo $exd | sed -e "s/$inputdir\.//"` refExOut=`echo $ref_outp | sed "s/\./.${name}./"` outf="$dir/results/$refExOut" if test -f $outf -a -r $outf ; then - if test "x$MULTI_THREAD" = "xt" ; then - if test -r $dir"/"$exd"/eedata.mth" ; then + if test "x$MULTI_THREAD" = "xt" ; then + if test -r $dir"/"$exd"/eedata.mth" ; then + if test "x$MPI" = "xt" ; then + retv=`check_eedata $CODE_DIR"/SIZE.h_mpi" $dir"/"$exd"/eedata.mth"` + if test $retv = 0 ; then extra_runs="$extra_runs $name" - #else echo $dir"/"$exd"/eedata.mth: not found" + else + echo $exd"/eedata.mth tiling misfit -- skipping $dir" fi - else + else extra_runs="$extra_runs $name" + fi + #else echo $dir"/"$exd"/eedata.mth: not found" fi + else + extra_runs="$extra_runs $name" + fi fi done - echo "-------------------------------------------------------------------------------" echo - if test "x$extra_runs" = "x" ; then + if test "x$extra_runs" = "x" ; then echo "Experiment: $dir" else echo "Experiment: $dir ; extra_runs=$extra_runs" @@ -1180,40 +1305,43 @@ results=$EMPTY_RESULTS # Create an output dir for each OPTFILE/tdir combination - rel_CDIR=$DRESULTS"/"$dir - mkdir $rel_CDIR - CDIR=`pwd`"/$rel_CDIR" - - if test "x$CLEANUP" = xt ; then - echo '====>>> this is to check that we never go through this part <<< ===' - makeclean $dir/$builddir \ - && run_clean $dir/$rundir + locDIR=$DRESULTS"/"$dir + mkdir $locDIR + CDIR=`pwd`"/$locDIR" + + if test "x$NORUN" = xt ; then + run=N + genmakemodel $dir/$builddir && genmake=Y \ + && makeclean $dir/$builddir \ + && symlink_mpifiles $dir $code_dir $builddir \ + && makedependmodel $dir/$builddir && makedepend=Y \ + && makemodel $dir/$builddir && make=Y else genmakemodel $dir/$builddir && genmake=Y \ && makeclean $dir/$builddir \ - && run_clean $dir/$rundir \ && symlink_mpifiles $dir $code_dir $builddir \ && makedependmodel $dir/$builddir && makedepend=Y \ && makemodel $dir/$builddir && make=Y \ - && linkdata $dir/$rundir $inputdir input \ + && run_clean $dir/$rundir \ + && linkdata $dir/$rundir $inputdir \ && runmodel $dir/$rundir && run=Y \ && results=`testoutput_run $dir $rundir $ref_outp` fi - - echo + #echo "results='$results'" + fres=`formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N} $results` - echo + echo 1>&2 echo "$fres" | sed 's/ 99/ --/g' | sed 's/ > />/' | sed 's/ < /> $SUMMARY - touch $CDIR"/summary.txt" - echo "fresults='$fres'" | sed 's/ 99/ --/g' >> $CDIR"/summary.txt" - echo "MACH='$MACH'" >> $CDIR"/summary.txt" - echo "UNAMEA='$UNAMEA'" >> $CDIR"/summary.txt" - echo "DATE='$DATE'" >> $CDIR"/summary.txt" - echo "tdir='$dir'" >> $CDIR"/summary.txt" + touch $locDIR"/summary.txt" + echo "fresults='$fres'" | sed 's/ 99/ --/g' >> $locDIR"/summary.txt" + echo "MACH='$MACH'" >> $locDIR"/summary.txt" + echo "UNAMEA='$UNAMEA'" >> $locDIR"/summary.txt" + echo "DATE='$DATE'" >> $locDIR"/summary.txt" + echo "tdir='$dir'" >> $locDIR"/summary.txt" if test "x$ADM" = xt ; then - head -1 $dir/$builddir/taf_ad.log >> $CDIR"/summary.txt" + head -1 $dir/$builddir/taf_ad.log >> $locDIR"/summary.txt" grep -A3 'Seconds in section "ALL' $dir/$rundir/$OUTPUTFILE \ - >> $CDIR"/summary.txt" + >> $locDIR"/summary.txt" fi for ex in $extra_runs ; do @@ -1222,42 +1350,50 @@ # reference output file refExOut=`echo $ref_outp | sed "s/\./.${ex}./g"` # Create an output dir for each OPTFILE/tdir.ex combination - rel_CDIR=$DRESULTS"/"$dir"."$ex - mkdir $rel_CDIR - CDIR=`pwd`"/$rel_CDIR" + 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 input + linkdata $dir/tr_run.$ex $inputdir.$ex $inputdir runmodel $dir/tr_run.$ex && run=Y \ && results=`testoutput_run $dir tr_run.$ex $refExOut` fres=`formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N} $results` fres="$fres.$ex" - echo + echo 1>&2 echo "$fres" | sed 's/ 99/ --/g' | sed 's/ > />/' | sed 's/ < /> $SUMMARY - touch $CDIR"/summary.txt" - echo "fresults='$fres'" | sed 's/ 99/ --/g' >> $CDIR"/summary.txt" - echo "MACH='$MACH'" >> $CDIR"/summary.txt" - echo "UNAMEA='$UNAMEA'" >> $CDIR"/summary.txt" - echo "DATE='$DATE'" >> $CDIR"/summary.txt" - echo "tdir='$dir.$ex'" >> $CDIR"/summary.txt" + touch $locDIR"/summary.txt" + echo "fresults='$fres'" | sed 's/ 99/ --/g' >> $locDIR"/summary.txt" + echo "MACH='$MACH'" >> $locDIR"/summary.txt" + echo "UNAMEA='$UNAMEA'" >> $locDIR"/summary.txt" + echo "DATE='$DATE'" >> $locDIR"/summary.txt" + echo "tdir='$dir.$ex'" >> $locDIR"/summary.txt" if test "x$ADM" = xt ; then - head -1 $dir/$builddir/taf_ad.log >> $CDIR"/summary.txt" + head -1 $dir/$builddir/taf_ad.log >> $locDIR"/summary.txt" grep -A3 'Seconds in section "ALL' $dir/tr_run.$ex/$OUTPUTFILE \ - >> $CDIR"/summary.txt" + >> $locDIR"/summary.txt" fi if test "x$POSTCLEAN" = xt ; then run_clean $dir/tr_run.$ex fi done + if test -f $DRESULTS"/"genmake_state ; then : ; else + if test -f $dir/$builddir/Makefile ; then + 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 + fi + fi #postclean $dir/$builddir if test "x$POSTCLEAN" = xt ; then makeclean $dir/$builddir \ && run_clean $dir/$rundir fi - + echo "-------------------------------------------------------------------------------" - + done printf "Start time: " >> $SUMMARY @@ -1286,13 +1422,15 @@ echo "An email containing results was sent to the following addresses:" echo " \"$ADDRESSES\"" echo + test -f $DRESULTS".tar" && rm -f $DRESULTS".tar" + test -f $DRESULTS".tar.gz" && rm -f $DRESULTS".tar.gz" fi - test -f $DRESULTS".tar" && rm -f $DRESULTS".tar" - test -f $DRESULTS".tar.gz" && rm -f $DRESULTS".tar.gz" fi fi -rm -f tr_cmpnum.c tr_cmpnum +if test "x$QUICK" = xf -a "x$NORUN" = xf ; then + rm -f tr_cmpnum.c tr_cmpnum +fi if test "x$CLEANUP" != xt ; then cat $SUMMARY | sed 's/ \. \. \. \. \. \. \. \. \. \. \. \. //'