/[MITgcm]/MITgcm/verification/testreport
ViewVC logotype

Annotation of /MITgcm/verification/testreport

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.81 - (hide annotations) (download)
Thu Jun 15 20:31:09 2006 UTC (17 years, 10 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint58j_post
Changes since 1.80: +11 -7 lines
change scandirs: test if /results exist (or /results_ad if ad mode)
 (instead of /input previously)

1 edhill 1.19 #! /usr/bin/env bash
2 edhill 1.1 #
3 jmc 1.81 # $Header: /u/gcmpack/MITgcm/verification/testreport,v 1.80 2006/06/08 21:39:35 jmc Exp $
4 edhill 1.12 # $Name: $
5 edhill 1.1 #
6    
7     usage()
8     {
9     echo
10     echo "Usage: $0 [OPTIONS]"
11     echo
12     echo "where possible OPTIONS are:"
13     echo " (-help|-h) print usage"
14 edhill 1.7 echo " (-mpi) use MPI input files"
15 edhill 1.10 echo " (-ieee|-noieee) if possible, use IEEE compiler flags"
16 edhill 1.41 echo " (DEF=\"-ieee\")"
17 edhill 1.6 echo " (-optfile=|-of=)STRING list of optfiles to use"
18 edhill 1.20 echo " (-a|-addr) STRING list of email recipients"
19 edhill 1.6 echo " (DEF=\"edhill@mitgcm.org\")"
20 edhill 1.20 echo " (-t|-tdir) STRING list of test dirs to use"
21 edhill 1.6 echo " (DEF=\"\" which builds all)"
22 edhill 1.20 echo " (-b|-bash) STRING preferred location of a \"bash\" or"
23     echo " Bourne-compatible \"sh\" shell"
24     echo " (DEF=\"\" for \"bash\")"
25 edhill 1.24 echo " (-adm|-ad) perform an adjoint run"
26 edhill 1.20 echo " (-command) STRING command to run"
27 edhill 1.6 echo " (DEF=\"make output.txt\")"
28 edhill 1.20 echo " (-m|-make) STRING command to use for \"make\""
29 edhill 1.8 echo " (DEF=\"make\")"
30 jmc 1.70 echo " (-odir) STRING used to build output directory name"
31     echo " (DEF=\"hostname\")"
32 edhill 1.50 echo " (-ptracers|-ptr) STRING specify which ptracers to test"
33     echo " (DEF=\"1 2 3 4 5\")"
34 edhill 1.43 echo " (-j) JOBS use \"make -j JOBS\" for parallel builds"
35 edhill 1.10 echo " (-clean) *ONLY* run \"make CLEAN\""
36     echo " (-quick|-q) same as \"-nogenmake -noclean -nodepend\""
37     echo " (-nogenmake|-ng) skip the genmake stage"
38     echo " (-noclean|-nc) skip the \"make clean\" stage"
39     echo " (-nodepend|-nd) skip the \"make depend\" stage"
40 edhill 1.40 echo " (-deldir|-dd) on success, delete the output directory"
41 edhill 1.6 echo
42 edhill 1.50 echo "and where STRING can be a whitespace-delimited list"
43 edhill 1.6 echo "such as:"
44 edhill 1.50 echo
45 edhill 1.6 echo " -t 'exp0 exp2 exp3' "
46     echo " -addr='abc@123.com testing@home.org'"
47 edhill 1.1 echo
48 edhill 1.50 echo "provided that the expression is properly quoted within the current"
49     echo "shell (note the use of single quotes to protect white space)."
50     echo
51 edhill 1.1 exit 1
52     }
53    
54     # build the mpack utility
55     build_mpack()
56     {
57 edhill 1.34 printf "building the mpack utility... "
58 edhill 1.1 if test ! -x "$MPACKDIR/mpack" ; then
59     if test ! -d $MPACKDIR ; then
60 edhill 1.20 echo
61 edhill 1.1 echo "Error: can't find \"$MPACKDIR\""
62     echo " are you sure this program is being run in the correct "
63     echo " (that is, \"MITGCM_ROOT\verification\") directory?"
64 edhill 1.20 echo
65     HAVE_MPACK=f
66 edhill 1.1 fi
67 edhill 1.34 printf "building mpack... "
68 edhill 1.26 if test "x$CC" = x ; then
69     export CC=cc
70     fi
71 edhill 1.25 ( cd $MPACKDIR && ./configure && $MAKE ) > tr_build_mpack.out 2>&1
72 edhill 1.1 RETVAL=$?
73     if test "x$RETVAL" != x0 ; then
74     echo
75     echo "Error building the mpack tools at: $MPACK_DIR"
76 edhill 1.20 echo
77     HAVE_MPACK=f
78     else
79 edhill 1.25 rm -f tr_build_mpack.out
80 edhill 1.20 HAVE_MPACK=t
81 edhill 1.1 fi
82 edhill 1.20 else
83     HAVE_MPACK=t
84 edhill 1.1 fi
85     echo "OK"
86     }
87    
88     testoutput_for_prop()
89     {
90 edhill 1.34 # testoutput_for_prop dir s1 label subdir extension
91 edhill 1.1 #
92     # compares files in $dir/$subdir/output.txt and $dir/results/output.txt
93     # using search strings s1 and text label
94    
95     if [ $debug -gt 0 ]; then
96     echo testoutput_for_prop: grep "$2" $1/$4/output.txt 1>&2
97     fi
98     if [ -r $1/$4/output.txt ]; then
99 edhill 1.15 grep "$2" $1/$4/output.txt | sed 's/.*=//' | cat -n > tmp1.txt
100 jmc 1.67 lncntA=`wc -l tmp1.txt | awk '{print $1}' `
101     if [ $lncntA -lt 3 ]; then
102 edhill 1.1 if [ $verbose -gt 0 ]; then
103     echo Not enough lines of output when searching for "$2" 1>&2
104     fi
105     return 99
106     fi
107     else
108     echo testoutput_for_prop: output.txt from model run was not readable 1>&2
109     return 99
110     fi
111     if [ $debug -gt 0 ]; then
112 edhill 1.34 echo testoutput_for_prop: grep "$2" $1/results/output.txt$5 1>&2
113 edhill 1.1 fi
114 edhill 1.34 grep "$2" $1/results/output.txt$5 | sed 's/.*=//' | cat -n > tmp2.txt
115 jmc 1.67 lncntB=`wc -l tmp2.txt | awk '{print $1}' `
116     if [ $lncntB -lt 3 ]; then
117 edhill 1.1 if [ $verbose -gt 0 ]; then
118     echo Not enough lines of output when searching for "$2" 1>&2
119     fi
120     return 99
121     fi
122 jmc 1.67 if [ $lncntA -ne $lncntB ]; then
123     if [ $verbose -gt 0 ]; then
124     echo Not same Nb of lines when searching for "$2" ":" $lncntA $lncntB 1>&2
125     fi
126     return 99
127     fi
128 edhill 1.72 has_nan=`cat tmp1.txt | grep -i nan | wc -l`
129     if [ $has_nan -gt 0 ] ; then
130     echo testoutput_for_prop: output.txt contains $has_nan NaN values 1>&2
131     return 99
132     fi
133     has_inf=`cat tmp1.txt | grep -i inf | wc -l`
134     if [ $has_inf -gt 0 ] ; then
135     echo testoutput_for_prop: output.txt contains $has_inf Inf values 1>&2
136 jmc 1.71 return 99
137     fi
138 edhill 1.1 if [ $debug -gt 0 ]; then
139     echo testoutput_for_prop: join tmp1.txt tmp2.txt 1>&2
140     fi
141     join tmp1.txt tmp2.txt | awk '{print $1 " " $2 " " $3}' > tmp3.txt
142     if [ $debug -gt 0 ]; then
143     echo testoutput_for_prop: compare_lines 1>&2
144     fi
145 edhill 1.22 if [ $verbose -gt 1 ]; then
146     cat tmp3.txt 1>&2
147     fi
148     echo "-1" >> tmp3.txt
149 edhill 1.23 # On the SGI O3K (*not* the O2K), "cat -n" inserts a ":" after the line number
150     cat tmp3.txt | sed -e 's|:||g' > tmp4.txt
151     digits_of_similarity=`./tmp_cmpnum < tmp4.txt`
152 edhill 1.1 if [ $digits_of_similarity -eq 99 ]; then
153     if [ $verbose -gt 0 ]; then
154     echo testoutput_for_prop: No comparison was available for \"$2\" 1>&2
155     fi
156     digits_of_similarity=99
157     else
158     if [ $verbose -gt 0 ]; then
159     echo There were $digits_of_similarity decimal places of similarity for \"$2\" 1>&2
160     fi
161     fi
162 edhill 1.23 rm -f tmp1.txt tmp2.txt tmp3.txt tmp4.txt
163 edhill 1.1
164     return $digits_of_similarity
165     }
166    
167     dashnum()
168     {
169     # dashnum n1 n2 n3 ...
170     #
171     # print numbers using %3i format or "--" if number = 99
172    
173     for num in $@ ; do
174     if [ $num = 99 ]; then
175     printf ' --'
176     else
177     printf '%3i' $num
178     fi
179     done
180     }
181    
182 edhill 1.24 testoutput_ad()
183     {
184 jmc 1.78 grep $3 $1/results_ad/output_adm.txt | awk '{print NR " " $5}' > t05.txt
185     grep $3 $1/$2/output_adm.txt | awk '{print NR " " $5}' > t15.txt
186     grep $3 $1/results_ad/output_adm.txt | awk '{print NR " " $6}' > t06.txt
187     grep $3 $1/$2/output_adm.txt | awk '{print NR " " $6}' > t16.txt
188 edhill 1.24 join t05.txt t15.txt > t5.txt
189     join t06.txt t16.txt > t6.txt
190     echo "-1" >> t5.txt
191     echo "-1" >> t6.txt
192     digits_5=`./tmp_cmpnum < t5.txt`
193     digits_6=`./tmp_cmpnum < t6.txt`
194     dashnum $digits_5 $digits_6
195     rm -f t[01][56].txt t[56].txt
196     }
197    
198 edhill 1.49 check_for_add_mon_output()
199     {
200     # Check for additional types of monitor output
201     if test "x$1" = x ; then
202     return
203     fi
204    
205 edhill 1.50 for ii in $PTRACERS_NUM ; do
206     eval "HAVE_PTR0"$ii"=f"
207     done
208    
209 edhill 1.49 ptr_add="trcstat_ptracerXX_min trcstat_ptracerXX_max"
210     ptr_add="$ptr_add trcstat_ptracerXX_mean trcstat_ptracerXX_sd"
211 edhill 1.50 for ii in $PTRACERS_NUM ; do
212 edhill 1.49 for jj in $ptr_add ; do
213     name=`eval "echo $jj | sed -e 's|XX|0"$ii"|g'"`
214     tst=`grep $name $1 | wc -l | awk '{print $1}'`
215     if test ! "x$tst" = x0 ; then
216     eval "HAVE_PTR0"$ii"=t"
217     fi
218     done
219     # eval 'echo "HAVE_PTR0'$ii' = $HAVE_PTR0'$ii'"'
220     done
221     }
222    
223 edhill 1.1 testoutput()
224     {
225 edhill 1.34 # testoutput directory subdir extension
226 edhill 1.1 #
227     # test output in "directory"
228 edhill 1.24 if test "x$ADM" = x ; then
229     if [ $debug -gt 0 ]; then
230     echo testoutput: testoutput_for_prop $1 cg2d_init_res 1>&2
231     fi
232 edhill 1.34 testoutput_for_prop $1 "cg2d_init_res" "cg2d init. residual" $2 $3; cg2dres=$?
233 edhill 1.24 if [ $debug -gt 0 ]; then
234     echo testoutput: cg2dres=$cg2dres 1>&2
235     fi
236 edhill 1.34 testoutput_for_prop $1 "dynstat_theta_min" "theta minimum" $2 $3; tmin=$?
237     testoutput_for_prop $1 "dynstat_theta_max" "theta maximum" $2 $3; tmax=$?
238     testoutput_for_prop $1 "dynstat_theta_mean" "theta mean" $2 $3; tmean=$?
239     testoutput_for_prop $1 "dynstat_theta_sd" "theta s.d." $2 $3; tsd=$?
240     testoutput_for_prop $1 "dynstat_salt_min" "salt minimum" $2 $3; smin=$?
241     testoutput_for_prop $1 "dynstat_salt_max" "salt maximum" $2 $3; smax=$?
242     testoutput_for_prop $1 "dynstat_salt_mean" "salt mean" $2 $3; smean=$?
243     testoutput_for_prop $1 "dynstat_salt_sd" "salt s.d." $2 $3; ssd=$?
244     testoutput_for_prop $1 "dynstat_uvel_min" "U minimum" $2 $3; umin=$?
245     testoutput_for_prop $1 "dynstat_uvel_max" "U maximum" $2 $3; umax=$?
246     testoutput_for_prop $1 "dynstat_uvel_mean" "U mean" $2 $3; umean=$?
247     testoutput_for_prop $1 "dynstat_uvel_sd" "U s.d." $2 $3; usd=$?
248     testoutput_for_prop $1 "dynstat_vvel_min" "V minimum" $2 $3; vmin=$?
249     testoutput_for_prop $1 "dynstat_vvel_max" "V maximum" $2 $3; vmax=$?
250     testoutput_for_prop $1 "dynstat_vvel_mean" "V mean" $2 $3; vmean=$?
251     testoutput_for_prop $1 "dynstat_vvel_sd" "V s.d." $2 $3; vsd=$?
252 edhill 1.49
253 edhill 1.50 # This is for PTRACERS
254     for ii in $PTRACERS_NUM ; do
255     eval `echo "p0"$ii"_min=99"`
256     eval `echo "p0"$ii"_max=99"`
257     eval `echo "p0"$ii"_mean=99"`
258     eval `echo "p0"$ii"_sd=99"`
259     tst=`eval 'echo "$HAVE_PTR0'$ii'"'`
260     #echo 'tst = '$tst
261     if test "x$tst" = xt ; then
262     a="trcstat_ptracer0"
263     testoutput_for_prop $1 "$a"$ii"_min" "p0"$ii"_min" $2 $3
264     RETVAL=$? ; eval `echo "p0"$ii"_min="$RETVAL`
265     testoutput_for_prop $1 "$a"$ii"_max" "p0"$ii"_max" $2 $3
266     RETVAL=$? ; eval `echo "p0"$ii"_max="$RETVAL`
267     testoutput_for_prop $1 "$a"$ii"_mean" "p0"$ii"_mean" $2 $3
268     RETVAL=$? ; eval `echo "p0"$ii"_mean="$RETVAL`
269     testoutput_for_prop $1 "$a"$ii"_sd" "p0"$ii"_sd" $2 $3
270     RETVAL=$? ; eval `echo "p0"$ii"_sd="$RETVAL`
271     fi
272 edhill 1.49 done
273    
274     allargs="$cg2dres $tmin $tmax $tmean $tsd $smin $smax $smean $ssd"
275     allargs="$allargs $umin $umax $umean $usd $vmin $vmax $vmean $vsd"
276     allargs="$allargs $p01_min $p01_max $p01_mean $p01_sd"
277     allargs="$allargs $p02_min $p02_max $p02_mean $p02_sd"
278     allargs="$allargs $p03_min $p03_max $p03_mean $p03_sd"
279     allargs="$allargs $p04_min $p04_max $p04_mean $p04_sd"
280     allargs="$allargs $p05_min $p05_max $p05_mean $p05_sd"
281    
282     eval "dashnum $allargs"
283    
284 edhill 1.24 else
285     testoutput_ad $1 $2 "precision_grdchk_result"
286 edhill 1.1 fi
287     }
288    
289     genmakemodel()
290     {
291     # genmakemodel directory
292 edhill 1.10 if test "x$NOGENMAKE" = xt ; then
293     echo "genmake skipped!"
294     else
295 edhill 1.34 if test "x$BASH" = x ; then
296     GENMAKE2="../../../tools/genmake2"
297     else
298     GENMAKE2="$BASH ../../../tools/genmake2 -bash $BASH"
299     fi
300 edhill 1.10 (
301     cd $1;
302 edhill 1.24 command="$GENMAKE2 -ds -m $MAKE"
303     if test "x$ADM" = x ; then
304     command="$command --mods=../code"
305     else
306     command="$command --mods=../code_ad"
307     fi
308 edhill 1.10 if test "x$OPTFILE" != xNONE ; then
309     command="$command --optfile=$OPTFILE"
310     fi
311     if test "x$IEEE" != x ; then
312     command="$command -ieee"
313     fi
314 edhill 1.66 if test "x$MPI" = xt ; then
315     command="$command -mpi"
316     fi
317 edhill 1.10 printf 'genmake ... ' 1>&2
318     $command > make.log 2>&1
319     RETVAL=$?
320 edhill 1.44 # Reduce the size of the testing emails!
321 edhill 1.47 head -100 Makefile > $CDIR/Makefile_head
322 edhill 1.10 if test "x$RETVAL" != x0 ; then
323     tail make.log
324     echo "genmakemodel: genmake failed" 1>&2
325 edhill 1.21 cp genmake_* make.log $CDIR
326 edhill 1.10 return 1
327     else
328 edhill 1.20 echo "successful" 1>&2
329 edhill 1.1 fi
330 edhill 1.10 )
331     fi
332 edhill 1.1 }
333    
334     makeclean()
335     {
336     # makeclean directory
337 edhill 1.10 if test "x$NOCLEAN" = xt ; then
338     echo "make CLEAN skipped!"
339     else
340     (
341     cd $1;
342     if test -e output.txt ; then
343     rm -f output.txt
344     fi
345     printf 'make CLEAN ... ' 2>&1
346     if test -r Makefile ; then
347     $MAKE CLEAN >> make.log 2>&1
348     RETVAL=$?
349     if test "x$RETVAL" != x0 ; then
350     tail make.log
351     echo "makeclean: \"make CLEAN\" failed" 1>&2
352     cp make.log $CDIR"/make.log"
353     return 1
354     fi
355     fi
356 edhill 1.20 echo successful 1>&2
357 edhill 1.10 exit 0
358     )
359     fi
360     }
361    
362 edhill 1.68 postclean()
363     {
364     # postclean directory
365     if test "x$POSTCLEAN" = xt ; then
366     (
367     cd $1;
368     if test -r Makefile ; then
369     $MAKE CLEAN >> /dev/null 2>&1
370     fi
371     exit 0
372     )
373     fi
374     }
375    
376 edhill 1.10 makedependmodel()
377     {
378     # makedependmodel directory
379     if test "x$NODEPEND" = xt ; then
380     echo "make depend skipped!"
381     else
382     (
383     cd $1;
384     printf 'make depend ... ' 1>&2
385     $MAKE depend >> make.log 2>&1
386 edhill 1.1 RETVAL=$?
387     if test "x$RETVAL" != x0 ; then
388     tail make.log
389 edhill 1.10 echo "makedependmodel: make depend failed" 1>&2
390 edhill 1.1 cp make.log $CDIR"/make.log"
391     return 1
392 edhill 1.10 else
393 edhill 1.20 echo successful 1>&2
394 edhill 1.1 fi
395 edhill 1.10 )
396     fi
397 edhill 1.1 }
398    
399     makemodel()
400     {
401     # makemodel directory
402     (
403     cd $1;
404     if test -r Makefile ; then
405     printf 'make ... ' 1>&2
406 edhill 1.24 if test "x$ADM" = x ; then
407 edhill 1.43 if test "x$JOBS" = x ; then
408     $MAKE >> make.log 2>&1
409     else
410     $MAKE -j $JOBS >> make.log 2>&1
411     fi
412 edhill 1.24 else
413     $MAKE adall >> make.log 2>&1
414     fi
415 edhill 1.1 RETVAL=$?
416     if test "x$RETVAL" != x0 ; then
417     tail make.log
418     echo failed 1>&2
419     cp make.log $CDIR"/make.log"
420     return 1
421     else
422 edhill 1.20 echo successful 1>&2
423 edhill 1.1 fi
424     fi
425     )
426     }
427    
428 edhill 1.27 symlink_mpifiles()
429     {
430     # Put special links so that MPI specific files are used
431     # This MUST be invoked between makeclean and makelinks because
432     # the Makefile will link to non-mpi files by default
433    
434     dir=$1
435     code_dir=$2
436     BUILD_DIR=$dir/$3
437     CODE_DIR=$dir/$code_dir
438 edhill 1.45
439 edhill 1.27 # These are files that should replace their counter-part when using -mpi
440     MPI_FILES=`(cd $CODE_DIR; find . -name "*_mpi")`
441    
442     # Is this an MPI run?
443     if test "x$MPI" = xt ; then
444     # YES: We symbolically link these files to the build
445     # dir so long as there is no real file in place
446     for ii in $MPI_FILES ; do
447     i=`echo $ii | sed 's:^\./::'`
448     name=`echo $i | sed 's:_mpi::' `
449     cmp $CODE_DIR/$i $BUILD_DIR/$name > /dev/null 2>&1
450     RETVAL=$?
451     if test "x$RETVAL" != x0 ; then
452     if ! test -f $BUILD_DIR/$i ; then
453 edhill 1.45 #echo Linking $name to $i
454 edhill 1.27 (cd $BUILD_DIR; ln -sf ../$code_dir/$i $name)
455     fi
456     fi
457     done
458     else
459 edhill 1.45 # NO: We undo any _mpi symbolically linked files
460 edhill 1.27 for ii in $MPI_FILES ; do
461     i=`echo $ii | sed 's:^\./::'`
462     name=`echo $i | sed 's:_mpi::' `
463     if test -L $BUILD_DIR/$name ; then
464 edhill 1.45 cmp $BUILD_DIR/$name "../$code_dir/$name"_mpi > /dev/null 2>&1
465     RETVAL=$?
466     if test "x$RETVAL" = x0 ; then
467     #echo Un-linking $name from $linktarg
468 edhill 1.27 rm -f $BUILD_DIR/$name
469     fi
470     fi
471     done
472     fi
473    
474     }
475    
476 edhill 1.1 linkdata()
477     {
478     # linkdata flag
479     #
480     # symbolically link data files to run directory
481 edhill 1.12 if test "x$1" = x1 ; then
482     (
483     cd $2
484 edhill 1.24 if test "x$ADM" = x ; then
485     files=`( cd ../input ; ls -1 | grep -v CVS )`
486     for i in $files ; do
487 edhill 1.60 if test ! -d "../input/"$i -a ! -f $i ; then
488 edhill 1.24 ln -sf "../input/"$i $i
489     fi
490     done
491     else
492 jmc 1.80 files=`( cd ../input_ad ; ls -1 | grep -v CVS )`
493 edhill 1.24 for i in $files ; do
494 jmc 1.80 if test ! -d "../input_ad/"$i ; then
495     ln -sf "../input_ad/"$i $i
496 edhill 1.24 fi
497     done
498 jmc 1.80 files=`( cd ../input ; ls -1 | grep -v CVS )`
499 edhill 1.24 for i in $files ; do
500 jmc 1.80 if test ! -d "../input/"$i ; then
501     if test ! -r $i ; then
502     ln -sf "../input/"$i $i
503     fi
504 edhill 1.24 fi
505     done
506     fi
507 edhill 1.12 )
508 edhill 1.1 fi
509     }
510    
511     runmodel()
512     {
513 edhill 1.6 # runmodel directory
514 edhill 1.1 #
515 edhill 1.24 # runs "$COMMAND in "directory"
516 edhill 1.6 # (where "$COMMAND" is relative to "directory")
517 edhill 1.1 (
518     cd $1
519 jmc 1.75 printf 'runmodel in %s ...' $1 1>&2
520 edhill 1.6 # make output.txt
521 edhill 1.38 echo
522 jmc 1.46 rm -f run.log
523 jmc 1.76 if test $OUTPUTFILE -ot $EXECUTABLE ; then
524 jmc 1.75 ( eval $COMMAND ) > run.log 2>&1
525     RETVAL=$?
526     else
527 jmc 1.76 echo " $OUTPUTFILE is up to date " > run.log 2>&1
528 jmc 1.75 RETVAL=0
529     fi
530 edhill 1.39 # echo "COMMAND='$COMMAND'"
531     # echo "pwd='"`pwd`"'"
532 edhill 1.6 if test "x$RETVAL" = x0 ; then
533 jmc 1.46 tail run.log
534 edhill 1.20 echo successful 1>&2
535 edhill 1.44 # === Reduce the size of the testing emails!
536     # if test "x$ADM" = x ; then
537     # cp output.txt $CDIR"/output.txt"
538     # else
539 jmc 1.78 # cp output_adm.txt $CDIR"/output_adm.txt"
540 edhill 1.44 # fi
541 jmc 1.48 if test -s STDERR.0000 ; then cp STDERR.0000 $CDIR"/STDERR.0000" ; fi
542 edhill 1.6 return 0
543     else
544 edhill 1.20 tail run.log
545     echo failed 1>&2
546     cp run.log $CDIR"/run.log"
547 jmc 1.48 if test -s STDERR.0000 ; then cp STDERR.0000 $CDIR"/STDERR.0000" ; fi
548 edhill 1.6 return 1
549 edhill 1.1 fi
550     )
551     }
552    
553     createcodelet()
554     {
555     # create codelet for comparing model output
556    
557 edhill 1.34 printf "creating the comparison code... "
558 edhill 1.22 cat > tmp_cmpnum.c <<EOF
559     #include <stdio.h>
560     #include <math.h>
561     int main( int argc, char** argv ) {
562 adcroft 1.33 int linnum,best,lncnt;
563 edhill 1.52 double a,b,abave,relerr;
564 jmc 1.57 best = -22;
565 adcroft 1.33 lncnt = 0;
566     while( 1 & (lncnt+=1) < 999 ) {
567 edhill 1.22 scanf("%d", &linnum);
568     if (linnum == -1) break;
569     scanf("%lf", &a); scanf("%lf", &b);
570 edhill 1.52 abave = 0.5*(fabs(a)+fabs(b));
571     if (abave > 0.0) {
572     relerr=fabs(a-b)/abave;
573 edhill 1.64 if (relerr > 0.0) { linnum = (int)rint(log10(relerr)); }
574 jmc 1.57 else { linnum = -16 ; }
575     best = (best > linnum) ? best : linnum;
576 edhill 1.22 }
577     }
578 adcroft 1.33 if (lncnt == 999) best=-29;
579 edhill 1.22 printf("%d\n", -best);
580     return 0;
581     }
582     EOF
583 edhill 1.58 $CC -o tmp_cmpnum tmp_cmpnum.c -lm
584 edhill 1.1
585 edhill 1.22 if [ -x ./tmp_cmpnum ]; then
586 edhill 1.1 echo "OK"
587     return 0
588     else
589     echo
590 edhill 1.58 echo "ERROR: failed to compile comparison code -- please specify"
591     echo " a C compiler using the CC environment variable."
592 edhill 1.1 exit 1
593     fi
594     }
595    
596     formatresults()
597     {
598     # formatresults expt genmake depend make run results*
599    
600     nm=$1
601     printf '%s %s %s %s' $2 $3 $4 $5
602     shift; shift; shift; shift; shift;
603     printf '%3s' $@
604    
605     if [ $1 = '--' ]; then
606     printf ' N/O '
607     else
608     if [ $1 -gt 12 ]; then
609     printf ' pass'
610     else
611     printf ' FAIL'
612     fi
613     fi
614     printf ' %s' $nm
615     printf '\n'
616    
617     }
618    
619     show_help()
620     {
621     cat - << EOF
622     $0 [-help] [-quick] [-verbose] dir1 [dir2] [...]
623 edhill 1.10
624     -help|-h Show this help message
625 edhill 1.1 -quiet Reduce the amount of output
626     -verbose Produce copious amounts of output
627     -debug Produce even more output which will mean nothing to most
628     -force Do "make CLEAN" before compiling. This forces a complete rebuild.
629     -clean Do "make CLEAN" after compiling and testing.
630     -cleanup Aggresively removes all model output, executables and object files
631     and then exits. Use with care.
632    
633     Normal usage:
634     $0 * Configure, compile, run and analyze in all experiment directories
635     EOF
636     }
637    
638     scandirs()
639     {
640 jmc 1.81 if [ $# -eq 1 ]; then
641     for arg in * ; do
642     test -d $arg/$1 && echo $arg
643     done
644 edhill 1.1 else
645 jmc 1.81 echo $*
646 edhill 1.1 fi
647     }
648    
649    
650     ###############################################################################
651    
652    
653     # Default properties
654     debug=0
655     verbose=1
656     clean=0
657     expts=''
658 edhill 1.6 # ieee=1
659 edhill 1.10
660 edhill 1.40 IEEE=true
661 edhill 1.10 if test "x$MITGCM_IEEE" != x ; then
662     IEEE=$MITGCM_IEEE
663     fi
664    
665    
666     CLEANUP=f
667     QUICK=f
668     NOGENMAKE=f
669     NOCLEAN=f
670     NODEPEND=f
671 edhill 1.68 POSTCLEAN=f
672 edhill 1.1
673 edhill 1.4 BASH=
674 edhill 1.10 OPTFILE=NONE
675     ADDRESSES=
676 edhill 1.1 TESTDIRS=
677     MPACKDIR="../tools/mpack-1.6"
678 edhill 1.20 HAVE_MPACK=
679 edhill 1.1 MPACK="$MPACKDIR/mpack"
680 edhill 1.24 COMMAND=
681 edhill 1.59 if test "x$MAKE" = x ; then
682     MAKE=make
683     fi
684     if test "x$CC" = x ; then
685     CC=cc
686     fi
687 edhill 1.43 JOBS=
688 edhill 1.7 MPI=f
689 jmc 1.70 OUTDIR=
690 edhill 1.40 DELDIR=
691 edhill 1.1
692 edhill 1.24 ADM=
693    
694 edhill 1.49 # Additional monitor types
695 edhill 1.50 PTRACERS_NUM="1 2 3 4 5"
696 edhill 1.49
697 edhill 1.34 printf "parsing options... "
698 edhill 1.1
699     ac_prev=
700     for ac_option ; do
701    
702     # If the previous option needs an argument, assign it.
703     if test -n "$ac_prev"; then
704     eval "$ac_prev=\$ac_option"
705     ac_prev=
706     continue
707     fi
708    
709     ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
710    
711     case $ac_option in
712    
713     -help | --help | -h | --h)
714     usage ;;
715    
716 edhill 1.2 -optfile | --optfile | -of | --of)
717 edhill 1.10 ac_prev=OPTFILE ;;
718 edhill 1.2 -optfile=* | --optfile=* | -of=* | --of=*)
719 edhill 1.10 OPTFILE=$ac_optarg ;;
720 edhill 1.1
721     -addr | --addr | -a | --a)
722     ac_prev=ADDRESSES ;;
723     -addr=* | --addr=*)
724     ADDRESSES=$ac_optarg ;;
725    
726     -tdir | --tdir | -t | --t)
727     ac_prev=TESTDIRS ;;
728     -tdir=* | --tdir=*)
729     TESTDIRS=$ac_optarg ;;
730 edhill 1.4
731     -bash | --bash | -b | --b)
732     ac_prev=BASH ;;
733     -bash=* | --bash=*)
734     BASH=$ac_optarg ;;
735 edhill 1.5
736 edhill 1.6 -command | --command | -c | --c)
737     ac_prev=COMMAND ;;
738     -command=* | --command=*)
739     COMMAND=$ac_optarg ;;
740 edhill 1.8
741     -make | --make | -m | --m)
742     ac_prev=MAKE ;;
743     -make=* | --make=*)
744     MAKE=$ac_optarg ;;
745 edhill 1.1
746 jmc 1.70 -odir | --odir)
747     ac_prev=OUTDIR ;;
748     -odir=* | --odir=*)
749     OUTDIR=$ac_optarg ;;
750    
751 edhill 1.50 -ptracers | --ptracers | -ptr | --ptr)
752     ac_prev=PTRACERS_NUM ;;
753     -ptracers=* | --ptracers=* | -ptr=* | --ptr=*)
754     PTRACERS_NUM=$ac_optarg ;;
755    
756 edhill 1.43 -j) ac_prev=JOBS ;;
757     -j=*) JOBS=$ac_optarg ;;
758    
759 edhill 1.10 -clean | --clean)
760 jmc 1.69 CLEANUP=t ; DELDIR=t ;;
761 edhill 1.10
762     -quick | --quick | -q | --q)
763     QUICK=t ;;
764     -nogenmake | --nogenmake | -ng | --ng)
765     NOGENMAKE=t ;;
766     -noclean | --noclean | -nc | --nc)
767     NOCLEAN=t ;;
768     -nodepend | --nodepend | -nd | --nd)
769     NODEPEND=t ;;
770    
771 edhill 1.68 -postclean | --postclean | -pc | --pc)
772     POSTCLEAN=t ;;
773    
774 edhill 1.18 -mpi) MPI=t ;;
775 edhill 1.10
776 edhill 1.24 -adm | -ad) ADM=t ;;
777    
778 edhill 1.10 -ieee) IEEE=true ;;
779     -noieee) IEEE= ;;
780    
781 edhill 1.1 -verbose) verbose=2 ;;
782     -debug) debug=1 ;;
783     -quiet) verbose=0 ;;
784    
785 edhill 1.40 -deldir | -dd) DELDIR=t ;;
786    
787 edhill 1.1 -*)
788     echo "Error: unrecognized option: "$ac_option
789     usage
790     ;;
791    
792     *)
793     echo "Error: unrecognized argument: "$ac_option
794     usage
795     ;;
796    
797     esac
798    
799     done
800    
801 edhill 1.10 if test "x$QUICK" = xt ; then
802     NOGENMAKE=t
803     NOCLEAN=t
804     NODEPEND=t
805     fi
806    
807 edhill 1.1 if test "x$TESTDIRS" = x ; then
808 jmc 1.81 if test "x$ADM" = xt ; then
809     TESTDIRS=`scandirs results_ad`
810     else
811     TESTDIRS=`scandirs results`
812     fi
813 edhill 1.1 fi
814    
815 edhill 1.10 if test "x$OPTFILE" = xNONE -a "x$MITGCM_OF" != x ; then
816     OPTFILE=$MITGCM_OF
817     fi
818    
819 jmc 1.76 if test "x$ADM" = xt ; then
820     EXECUTABLE="mitgcmuv_ad"
821 jmc 1.78 OUTPUTFILE="output_adm.txt"
822 jmc 1.76 else
823     EXECUTABLE="mitgcmuv"
824     OUTPUTFILE="output.txt"
825     fi
826    
827 edhill 1.24 if test "x$ADM" = xt -a "x$COMMAND" = x ; then
828 jmc 1.77 COMMAND="./$EXECUTABLE > $OUTPUTFILE"
829 edhill 1.24 fi
830    
831     if test "x$COMMAND" = x ; then
832 jmc 1.76 COMMAND="./$EXECUTABLE > $OUTPUTFILE"
833 edhill 1.24 fi
834    
835 jmc 1.76 #echo "OK"
836     echo "OK (COMMAND= $COMMAND )"
837 edhill 1.1
838     # create the FORTRAN comparison code
839     createcodelet
840    
841     # build the mpack utility
842 edhill 1.31 if test "x$ADDRESSES" = xNONE -o "x$ADDRESSES" = x ; then
843 edhill 1.32 echo "skipping mpack build"
844     else
845 edhill 1.31 build_mpack
846     fi
847 edhill 1.1
848     # Create a uniquely named directory to store results
849     MACH=`hostname`
850 edhill 1.2 UNAMEA=`uname -a`
851 edhill 1.1 DATE=`date +%Y%m%d`
852 edhill 1.25 BASE="tr_"$MACH"_"$DATE"_"
853 jmc 1.70 if test "x$OUTDIR" != x ; then
854     BASE="tr_"$OUTDIR"_"$DATE"_"
855     fi
856 edhill 1.1 DNUM=0
857     DRESULTS="$BASE$DNUM"
858     while test -e $DRESULTS ; do
859     DNUM=$(( $DNUM + 1 ))
860     DRESULTS="$BASE$DNUM"
861     done
862     mkdir $DRESULTS
863     RETVAL=$?
864     if test "x$RETVAL" != x0 ; then
865 edhill 1.20 echo "ERROR: Can't create results directory \"./$DRESULTS\""
866 edhill 1.1 exit 1
867     fi
868     SUMMARY="$DRESULTS/summary.txt"
869 edhill 1.34 printf "Start time: " >> $SUMMARY
870 edhill 1.16 start_date=`date`
871 edhill 1.17 echo $start_date > $SUMMARY
872 edhill 1.1
873 edhill 1.11 of_path=
874 edhill 1.10 if test "x$OPTFILE" != xNONE ; then
875     if test -r $OPTFILE ; then
876 edhill 1.11 # get the path
877     path=${OPTFILE%/*}
878     if test "x$path" = x ; then
879     of_path=`pwd`
880     else
881     of_path=`( cd $path > /dev/null 2>&1 ; pwd )`
882     fi
883     file=${OPTFILE##*/}
884     OPTFILE=$of_path/$file
885 edhill 1.21 cp $OPTFILE $DRESULTS
886     echo >> $SUMMARY
887     echo " OPTFILE=$OPTFILE" >> $SUMMARY
888 edhill 1.11 else
889 edhill 1.21 echo | tee $SUMMARY
890     echo "ERROR: can't read OPTFILE=\"$OPTFILE\"" | tee $SUMMARY
891     exit 1
892 edhill 1.10 fi
893 edhill 1.21 else
894     echo >> $SUMMARY
895     echo "No \"OPTFILE\" was explicitly specified by testreport," >> $SUMMARY
896     echo " so the genmake default will be used." >> $SUMMARY
897 edhill 1.10 fi
898     echo
899     echo >> $SUMMARY
900 edhill 1.24 if test "x$ADM" = x ; then
901 edhill 1.49 line_0=" ----T----- ----S----- ----U----- ----V-----"
902     line_1="G D M c m s m s m s m s"
903     line_2="E p a R g m m e . m m e . m m e . m m e ."
904     line_3="N n k u 2 i a a d i a a d i a a d i a a d"
905     line_4="2 d e n d n x n . n x n . n x n . n x n ."
906 edhill 1.50 for ii in $PTRACERS_NUM ; do
907 edhill 1.49 # tst=`eval 'echo $HAVE_PTR0'$ii`
908     # if test "x$tst" = xt ; then
909     line_0="$line_0 --PTR 0"$ii"--"
910     line_1="$line_1 m s"
911     line_2="$line_2 m m e ."
912     line_3="$line_3 i a a d"
913     line_4="$line_4 n x n ."
914     # fi
915     done
916     echo "$line_0" | tee -a $SUMMARY
917     echo "$line_1" | tee -a $SUMMARY
918     echo "$line_2" | tee -a $SUMMARY
919     echo "$line_3" | tee -a $SUMMARY
920     echo "$line_4" | tee -a $SUMMARY
921     echo " " | tee -a $SUMMARY
922 edhill 1.24 else
923     echo "ADJOINT=true" >> $SUMMARY
924     echo >> $SUMMARY
925     cat << EOF | tee -a $SUMMARY
926     G D M C G
927     E p a R o r
928     N n k u s a
929     2 d e n t d
930    
931     EOF
932     fi
933 edhill 1.1
934 edhill 1.10 # ...and each test directory...
935     for dir in $TESTDIRS ; do
936    
937     # Cleanup only!
938     if test "x$CLEANUP" = xt ; then
939     if test -r $dir/build/Makefile ; then
940     ( cd $dir/build ; make CLEAN )
941     fi
942     if test -r $dir/input/Makefile ; then
943     ( cd $dir/input ; make CLEAN )
944     fi
945 edhill 1.62 (
946     cd $dir
947     rm -rf tr_run.*
948     )
949 edhill 1.10 continue
950 edhill 1.1 fi
951 edhill 1.3
952 edhill 1.10 # Verify that the testdir exists and contains previous
953     # results in the correct location--or skip this directory!
954 edhill 1.24 fout=
955     if test "x$ADM" = x ; then
956     fout=$dir"/results/output.txt"
957     else
958 jmc 1.78 fout=$dir"/results_ad/output_adm.txt"
959 edhill 1.24 fi
960     if test ! -r $fout ; then
961     echo "can't read \"$fout\" -- skipping $dir"
962 edhill 1.10 continue
963     fi
964 edhill 1.53 if test "x$ADM" = x ; then
965     check_for_add_mon_output $fout
966     fi
967 edhill 1.7
968 edhill 1.49 # Check for additional types of monitor output
969    
970 edhill 1.12 builddir="input"
971     rundir="input"
972     use_seperate_build=0
973     if test -d $dir/build -a -r $dir/build ; then
974     builddir="build"
975     rundir="build"
976     use_seperate_build=1
977     linkdata $use_seperate_build $dir/$rundir
978 edhill 1.10 fi
979    
980 edhill 1.34 # Check whether there are "extra runs" for this testdir
981     extra_runs=
982     if test "x$ADM" = x -a "x$use_seperate_build" = x1 ; then
983     ex_run_dirs=`( cd $dir ; echo input.* )`
984     echo "ex_run_dirs='$ex_run_dirs'"
985     for exd in $ex_run_dirs ; do
986     name=`echo $exd | sed -e 's/input.//g'`
987     outf="$dir/results/output.txt.$name"
988     if test -f $outf -a -r $outf ; then
989     extra_runs="$extra_runs $name"
990     fi
991     done
992     fi
993    
994 edhill 1.24 if test "x$ADM" = x ; then
995 edhill 1.27 code_dir=code
996 edhill 1.24 CODE_DIR=$dir/code
997     else
998 edhill 1.27 code_dir=code_ad
999 edhill 1.24 CODE_DIR=$dir/code_ad
1000     fi
1001 edhill 1.10 BUILD_DIR=$dir/$builddir
1002 edhill 1.28
1003 edhill 1.30 if test ! -r $CODE_DIR"/SIZE.h_mpi" -a "x$MPI" = "xt" ; then
1004 edhill 1.28 echo "can't find \"$CODE_DIR/SIZE.h_mpi\" -- skipping $dir"
1005     continue
1006     fi
1007    
1008     echo "-------------------------------------------------------------------------------"
1009     echo
1010     echo "Experiment: $dir"
1011     echo
1012     unset genmake makedepend make run
1013 jmc 1.73 results='-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --'
1014 edhill 1.10
1015     # Create an output dir for each OPTFILE/tdir combination
1016 edhill 1.20 rel_CDIR=$DRESULTS"/"$dir
1017     mkdir $rel_CDIR
1018     CDIR=`pwd`"/$rel_CDIR"
1019 edhill 1.10
1020     if test "x$CLEANUP" = xt ; then
1021     makeclean $dir/$builddir
1022     else
1023 edhill 1.1 genmakemodel $dir/$builddir && genmake=Y \
1024     && makeclean $dir/$builddir \
1025 edhill 1.27 && symlink_mpifiles $dir $code_dir $builddir \
1026 edhill 1.1 && makedependmodel $dir/$builddir && makedepend=Y \
1027     && makemodel $dir/$builddir && make=Y \
1028 edhill 1.12 && linkdata $use_seperate_build $dir/$rundir \
1029     && runmodel $dir/$rundir && run=Y \
1030 edhill 1.1 && results=`testoutput $dir $rundir`
1031 edhill 1.10 fi
1032    
1033     echo
1034 edhill 1.24 if test "x$ADM" = x ; then
1035     fres=`formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N} $results`
1036 edhill 1.34 echo
1037     echo "$fres" >> $SUMMARY
1038     echo "fresults='$fres'" > $CDIR"/summary.txt"
1039     echo "MACH='$MACH'" >> $CDIR"/summary.txt"
1040     echo "UNAMEA='$UNAMEA'" >> $CDIR"/summary.txt"
1041     echo "DATE='$DATE'" >> $CDIR"/summary.txt"
1042     echo "tdir='$dir'" >> $CDIR"/summary.txt"
1043    
1044     for ex in $extra_runs ; do
1045 jmc 1.73 unset run
1046     results='-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --'
1047     # Create an output dir for each OPTFILE/tdir.ex combination
1048     rel_CDIR=$DRESULTS"/"$dir"."$ex
1049     mkdir $rel_CDIR
1050     CDIR=`pwd`"/$rel_CDIR"
1051 edhill 1.61 test ! -e "$dir/tr_run.$ex" && mkdir "$dir/tr_run.$ex"
1052 edhill 1.62 for ldir in input.$ex input ; do
1053 edhill 1.61 (
1054     cd "$dir/$ldir" > /dev/null 2>&1
1055     ls -1 2>/dev/null \
1056     | sed -e 's|^CVS$||g' | sed -e 's|^output.txt$||g'
1057     ) > tr_exrun_links
1058     (
1059     cd "$dir/tr_run.$ex"
1060     cat ../../tr_exrun_links | while read i ; do
1061     if test ! "x$i" = x ; then
1062 edhill 1.62 test ! -r $i && ln -s "../"$ldir"/"$i $i
1063 edhill 1.61 fi
1064     done
1065     )
1066     test -e tr_exrun_links && rm -f tr_exrun_links
1067     done
1068 edhill 1.62 ldir=build
1069     (
1070 jmc 1.75 cd $dir/tr_run.$ex
1071     test ! -e mitgcmuv && ln -s "../"$ldir"/"mitgcmuv .
1072 edhill 1.62 )
1073 jmc 1.42 runmodel $dir/tr_run.$ex && run=Y \
1074     && results=`testoutput $dir tr_run.$ex "."$ex`
1075 edhill 1.34 fres=`printf '%s %s %s %s' ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N}`
1076     fres=`formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N} $results`
1077     fres="$fres.$ex"
1078     echo
1079     echo "$fres" >> $SUMMARY
1080     echo "fresults='$fres'" > $CDIR"/summary.txt"
1081     echo "MACH='$MACH'" >> $CDIR"/summary.txt"
1082     echo "UNAMEA='$UNAMEA'" >> $CDIR"/summary.txt"
1083     echo "DATE='$DATE'" >> $CDIR"/summary.txt"
1084 jmc 1.73 echo "tdir='$dir.$ex'" >> $CDIR"/summary.txt"
1085 edhill 1.34 done
1086 edhill 1.24 else
1087     fres=`printf '%s %s %s %s' ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N}`
1088     fres=$fres"$results $dir"
1089 edhill 1.34 echo
1090     echo "$fres" >> $SUMMARY
1091     echo "fresults='$fres'" > $CDIR"/summary.txt"
1092     echo "MACH='$MACH'" >> $CDIR"/summary.txt"
1093     echo "UNAMEA='$UNAMEA'" >> $CDIR"/summary.txt"
1094     echo "DATE='$DATE'" >> $CDIR"/summary.txt"
1095     echo "tdir='$dir'" >> $CDIR"/summary.txt"
1096 jmc 1.77 grep -A3 'Seconds in section "ALL' $dir/$rundir/$OUTPUTFILE \
1097     >> $CDIR"/summary.txt"
1098 edhill 1.24 fi
1099 edhill 1.68
1100     postclean $dir/$builddir
1101 edhill 1.10
1102     echo "-------------------------------------------------------------------------------"
1103    
1104 edhill 1.1 done
1105    
1106 edhill 1.34 printf "Start time: " >> $SUMMARY
1107 edhill 1.16 echo $start_date >> $SUMMARY
1108 edhill 1.34 printf "End time: " >> $SUMMARY
1109 edhill 1.13 date >> $SUMMARY
1110 edhill 1.20
1111     # If addresses were supplied and mpack built successfully, then try
1112     # to send email using mpack.
1113     if test "x$ADDRESSES" = xNONE -o "x$ADDRESSES" = x ; then
1114     echo "No results email was sent."
1115     else
1116     if test "x$HAVE_MPACK" = xt ; then
1117     tar -cf $DRESULTS".tar" $DRESULTS > /dev/null 2>&1 \
1118     && gzip $DRESULTS".tar" \
1119 edhill 1.44 && $MPACK -s MITgcm-test -m 3555000 $DRESULTS".tar.gz" $ADDRESSES
1120 edhill 1.20 RETVAL=$?
1121     if test "x$RETVAL" != x0 ; then
1122     echo
1123     echo "Warning: The tar, gzip, & mpack step failed. Please send email"
1124     echo " to <MITgcm-support@mitgcm.org> for help. You may copy the "
1125     echo " summary of results from the directory \"$DRESULTS\"."
1126     echo
1127     else
1128     echo
1129     echo "An email containing results was sent to the following addresses:"
1130     echo " \"$ADDRESSES\""
1131     echo
1132     fi
1133     test -f $DRESULTS".tar" && rm -f $DRESULTS".tar"
1134     test -f $DRESULTS".tar.gz" && rm -f $DRESULTS".tar.gz"
1135     fi
1136     fi
1137 edhill 1.13
1138 edhill 1.22 # rm -f tmp_cmpnum.f a.out
1139     rm -f tmp_cmpnum.c tmp_cmpnum
1140 edhill 1.1
1141 edhill 1.12 if test "x$CLEANUP" != xt ; then
1142 jmc 1.65 cat $SUMMARY | sed 's/ -- -- -- --//g'
1143 edhill 1.25 if test -e tr_out.txt ; then
1144     mv tr_out.txt tr_out.txt.old
1145 edhill 1.14 fi
1146 jmc 1.65 cat $SUMMARY | sed 's/ -- -- -- --//g' > tr_out.txt
1147 edhill 1.12 fi
1148 edhill 1.1
1149 edhill 1.40 if test "x$DELDIR" = xt ; then
1150     rm -rf $DRESULTS
1151     fi
1152    

  ViewVC Help
Powered by ViewVC 1.1.22