/[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.82 - (hide annotations) (download)
Sun Jun 18 21:20:51 2006 UTC (17 years, 9 months ago) by jmc
Branch: MAIN
Changes since 1.81: +6 -4 lines
litle modif

1 edhill 1.19 #! /usr/bin/env bash
2 edhill 1.1 #
3 jmc 1.82 # $Header: /u/gcmpack/MITgcm/verification/testreport,v 1.81 2006/06/15 20:31:09 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.82 if test -d "../input" ; then
499     files=`( cd ../input ; ls -1 | grep -v CVS )`
500     for i in $files ; do
501 jmc 1.80 if test ! -d "../input/"$i ; then
502     if test ! -r $i ; then
503     ln -sf "../input/"$i $i
504     fi
505 edhill 1.24 fi
506 jmc 1.82 done
507     fi
508 edhill 1.24 fi
509 edhill 1.12 )
510 edhill 1.1 fi
511     }
512    
513     runmodel()
514     {
515 edhill 1.6 # runmodel directory
516 edhill 1.1 #
517 edhill 1.24 # runs "$COMMAND in "directory"
518 edhill 1.6 # (where "$COMMAND" is relative to "directory")
519 edhill 1.1 (
520     cd $1
521 jmc 1.75 printf 'runmodel in %s ...' $1 1>&2
522 edhill 1.6 # make output.txt
523 edhill 1.38 echo
524 jmc 1.46 rm -f run.log
525 jmc 1.76 if test $OUTPUTFILE -ot $EXECUTABLE ; then
526 jmc 1.75 ( eval $COMMAND ) > run.log 2>&1
527     RETVAL=$?
528     else
529 jmc 1.76 echo " $OUTPUTFILE is up to date " > run.log 2>&1
530 jmc 1.75 RETVAL=0
531     fi
532 edhill 1.39 # echo "COMMAND='$COMMAND'"
533     # echo "pwd='"`pwd`"'"
534 edhill 1.6 if test "x$RETVAL" = x0 ; then
535 jmc 1.46 tail run.log
536 edhill 1.20 echo successful 1>&2
537 edhill 1.44 # === Reduce the size of the testing emails!
538     # if test "x$ADM" = x ; then
539     # cp output.txt $CDIR"/output.txt"
540     # else
541 jmc 1.78 # cp output_adm.txt $CDIR"/output_adm.txt"
542 edhill 1.44 # fi
543 jmc 1.48 if test -s STDERR.0000 ; then cp STDERR.0000 $CDIR"/STDERR.0000" ; fi
544 edhill 1.6 return 0
545     else
546 edhill 1.20 tail run.log
547     echo failed 1>&2
548     cp run.log $CDIR"/run.log"
549 jmc 1.48 if test -s STDERR.0000 ; then cp STDERR.0000 $CDIR"/STDERR.0000" ; fi
550 edhill 1.6 return 1
551 edhill 1.1 fi
552     )
553     }
554    
555     createcodelet()
556     {
557     # create codelet for comparing model output
558    
559 edhill 1.34 printf "creating the comparison code... "
560 edhill 1.22 cat > tmp_cmpnum.c <<EOF
561     #include <stdio.h>
562     #include <math.h>
563     int main( int argc, char** argv ) {
564 adcroft 1.33 int linnum,best,lncnt;
565 edhill 1.52 double a,b,abave,relerr;
566 jmc 1.57 best = -22;
567 adcroft 1.33 lncnt = 0;
568     while( 1 & (lncnt+=1) < 999 ) {
569 edhill 1.22 scanf("%d", &linnum);
570     if (linnum == -1) break;
571     scanf("%lf", &a); scanf("%lf", &b);
572 edhill 1.52 abave = 0.5*(fabs(a)+fabs(b));
573     if (abave > 0.0) {
574     relerr=fabs(a-b)/abave;
575 edhill 1.64 if (relerr > 0.0) { linnum = (int)rint(log10(relerr)); }
576 jmc 1.57 else { linnum = -16 ; }
577     best = (best > linnum) ? best : linnum;
578 edhill 1.22 }
579     }
580 adcroft 1.33 if (lncnt == 999) best=-29;
581 edhill 1.22 printf("%d\n", -best);
582     return 0;
583     }
584     EOF
585 edhill 1.58 $CC -o tmp_cmpnum tmp_cmpnum.c -lm
586 edhill 1.1
587 edhill 1.22 if [ -x ./tmp_cmpnum ]; then
588 edhill 1.1 echo "OK"
589     return 0
590     else
591     echo
592 edhill 1.58 echo "ERROR: failed to compile comparison code -- please specify"
593     echo " a C compiler using the CC environment variable."
594 edhill 1.1 exit 1
595     fi
596     }
597    
598     formatresults()
599     {
600     # formatresults expt genmake depend make run results*
601    
602     nm=$1
603     printf '%s %s %s %s' $2 $3 $4 $5
604     shift; shift; shift; shift; shift;
605     printf '%3s' $@
606    
607     if [ $1 = '--' ]; then
608     printf ' N/O '
609     else
610     if [ $1 -gt 12 ]; then
611     printf ' pass'
612     else
613     printf ' FAIL'
614     fi
615     fi
616     printf ' %s' $nm
617     printf '\n'
618    
619     }
620    
621     show_help()
622     {
623     cat - << EOF
624     $0 [-help] [-quick] [-verbose] dir1 [dir2] [...]
625 edhill 1.10
626     -help|-h Show this help message
627 edhill 1.1 -quiet Reduce the amount of output
628     -verbose Produce copious amounts of output
629     -debug Produce even more output which will mean nothing to most
630     -force Do "make CLEAN" before compiling. This forces a complete rebuild.
631     -clean Do "make CLEAN" after compiling and testing.
632     -cleanup Aggresively removes all model output, executables and object files
633     and then exits. Use with care.
634    
635     Normal usage:
636     $0 * Configure, compile, run and analyze in all experiment directories
637     EOF
638     }
639    
640     scandirs()
641     {
642 jmc 1.81 if [ $# -eq 1 ]; then
643     for arg in * ; do
644     test -d $arg/$1 && echo $arg
645     done
646 edhill 1.1 else
647 jmc 1.81 echo $*
648 edhill 1.1 fi
649     }
650    
651    
652     ###############################################################################
653    
654    
655     # Default properties
656     debug=0
657     verbose=1
658     clean=0
659     expts=''
660 edhill 1.6 # ieee=1
661 edhill 1.10
662 edhill 1.40 IEEE=true
663 edhill 1.10 if test "x$MITGCM_IEEE" != x ; then
664     IEEE=$MITGCM_IEEE
665     fi
666    
667    
668     CLEANUP=f
669     QUICK=f
670     NOGENMAKE=f
671     NOCLEAN=f
672     NODEPEND=f
673 edhill 1.68 POSTCLEAN=f
674 edhill 1.1
675 edhill 1.4 BASH=
676 edhill 1.10 OPTFILE=NONE
677     ADDRESSES=
678 edhill 1.1 TESTDIRS=
679     MPACKDIR="../tools/mpack-1.6"
680 edhill 1.20 HAVE_MPACK=
681 edhill 1.1 MPACK="$MPACKDIR/mpack"
682 edhill 1.24 COMMAND=
683 edhill 1.59 if test "x$MAKE" = x ; then
684     MAKE=make
685     fi
686     if test "x$CC" = x ; then
687     CC=cc
688     fi
689 edhill 1.43 JOBS=
690 edhill 1.7 MPI=f
691 jmc 1.70 OUTDIR=
692 edhill 1.40 DELDIR=
693 edhill 1.1
694 edhill 1.24 ADM=
695    
696 edhill 1.49 # Additional monitor types
697 edhill 1.50 PTRACERS_NUM="1 2 3 4 5"
698 edhill 1.49
699 edhill 1.34 printf "parsing options... "
700 edhill 1.1
701     ac_prev=
702     for ac_option ; do
703    
704     # If the previous option needs an argument, assign it.
705     if test -n "$ac_prev"; then
706     eval "$ac_prev=\$ac_option"
707     ac_prev=
708     continue
709     fi
710    
711     ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
712    
713     case $ac_option in
714    
715     -help | --help | -h | --h)
716     usage ;;
717    
718 edhill 1.2 -optfile | --optfile | -of | --of)
719 edhill 1.10 ac_prev=OPTFILE ;;
720 edhill 1.2 -optfile=* | --optfile=* | -of=* | --of=*)
721 edhill 1.10 OPTFILE=$ac_optarg ;;
722 edhill 1.1
723     -addr | --addr | -a | --a)
724     ac_prev=ADDRESSES ;;
725     -addr=* | --addr=*)
726     ADDRESSES=$ac_optarg ;;
727    
728     -tdir | --tdir | -t | --t)
729     ac_prev=TESTDIRS ;;
730     -tdir=* | --tdir=*)
731     TESTDIRS=$ac_optarg ;;
732 edhill 1.4
733     -bash | --bash | -b | --b)
734     ac_prev=BASH ;;
735     -bash=* | --bash=*)
736     BASH=$ac_optarg ;;
737 edhill 1.5
738 edhill 1.6 -command | --command | -c | --c)
739     ac_prev=COMMAND ;;
740     -command=* | --command=*)
741     COMMAND=$ac_optarg ;;
742 edhill 1.8
743     -make | --make | -m | --m)
744     ac_prev=MAKE ;;
745     -make=* | --make=*)
746     MAKE=$ac_optarg ;;
747 edhill 1.1
748 jmc 1.70 -odir | --odir)
749     ac_prev=OUTDIR ;;
750     -odir=* | --odir=*)
751     OUTDIR=$ac_optarg ;;
752    
753 edhill 1.50 -ptracers | --ptracers | -ptr | --ptr)
754     ac_prev=PTRACERS_NUM ;;
755     -ptracers=* | --ptracers=* | -ptr=* | --ptr=*)
756     PTRACERS_NUM=$ac_optarg ;;
757    
758 edhill 1.43 -j) ac_prev=JOBS ;;
759     -j=*) JOBS=$ac_optarg ;;
760    
761 edhill 1.10 -clean | --clean)
762 jmc 1.69 CLEANUP=t ; DELDIR=t ;;
763 edhill 1.10
764     -quick | --quick | -q | --q)
765     QUICK=t ;;
766     -nogenmake | --nogenmake | -ng | --ng)
767     NOGENMAKE=t ;;
768     -noclean | --noclean | -nc | --nc)
769     NOCLEAN=t ;;
770     -nodepend | --nodepend | -nd | --nd)
771     NODEPEND=t ;;
772    
773 edhill 1.68 -postclean | --postclean | -pc | --pc)
774     POSTCLEAN=t ;;
775    
776 edhill 1.18 -mpi) MPI=t ;;
777 edhill 1.10
778 edhill 1.24 -adm | -ad) ADM=t ;;
779    
780 edhill 1.10 -ieee) IEEE=true ;;
781     -noieee) IEEE= ;;
782    
783 edhill 1.1 -verbose) verbose=2 ;;
784     -debug) debug=1 ;;
785     -quiet) verbose=0 ;;
786    
787 edhill 1.40 -deldir | -dd) DELDIR=t ;;
788    
789 edhill 1.1 -*)
790     echo "Error: unrecognized option: "$ac_option
791     usage
792     ;;
793    
794     *)
795     echo "Error: unrecognized argument: "$ac_option
796     usage
797     ;;
798    
799     esac
800    
801     done
802    
803 edhill 1.10 if test "x$QUICK" = xt ; then
804     NOGENMAKE=t
805     NOCLEAN=t
806     NODEPEND=t
807     fi
808    
809 edhill 1.1 if test "x$TESTDIRS" = x ; then
810 jmc 1.81 if test "x$ADM" = xt ; then
811     TESTDIRS=`scandirs results_ad`
812     else
813     TESTDIRS=`scandirs results`
814     fi
815 edhill 1.1 fi
816    
817 edhill 1.10 if test "x$OPTFILE" = xNONE -a "x$MITGCM_OF" != x ; then
818     OPTFILE=$MITGCM_OF
819     fi
820    
821 jmc 1.76 if test "x$ADM" = xt ; then
822     EXECUTABLE="mitgcmuv_ad"
823 jmc 1.78 OUTPUTFILE="output_adm.txt"
824 jmc 1.76 else
825     EXECUTABLE="mitgcmuv"
826     OUTPUTFILE="output.txt"
827     fi
828    
829 edhill 1.24 if test "x$ADM" = xt -a "x$COMMAND" = x ; then
830 jmc 1.77 COMMAND="./$EXECUTABLE > $OUTPUTFILE"
831 edhill 1.24 fi
832    
833     if test "x$COMMAND" = x ; then
834 jmc 1.76 COMMAND="./$EXECUTABLE > $OUTPUTFILE"
835 edhill 1.24 fi
836    
837 jmc 1.76 #echo "OK"
838     echo "OK (COMMAND= $COMMAND )"
839 edhill 1.1
840     # create the FORTRAN comparison code
841     createcodelet
842    
843     # build the mpack utility
844 edhill 1.31 if test "x$ADDRESSES" = xNONE -o "x$ADDRESSES" = x ; then
845 edhill 1.32 echo "skipping mpack build"
846     else
847 edhill 1.31 build_mpack
848     fi
849 edhill 1.1
850     # Create a uniquely named directory to store results
851     MACH=`hostname`
852 edhill 1.2 UNAMEA=`uname -a`
853 edhill 1.1 DATE=`date +%Y%m%d`
854 edhill 1.25 BASE="tr_"$MACH"_"$DATE"_"
855 jmc 1.70 if test "x$OUTDIR" != x ; then
856     BASE="tr_"$OUTDIR"_"$DATE"_"
857     fi
858 edhill 1.1 DNUM=0
859     DRESULTS="$BASE$DNUM"
860     while test -e $DRESULTS ; do
861     DNUM=$(( $DNUM + 1 ))
862     DRESULTS="$BASE$DNUM"
863     done
864     mkdir $DRESULTS
865     RETVAL=$?
866     if test "x$RETVAL" != x0 ; then
867 edhill 1.20 echo "ERROR: Can't create results directory \"./$DRESULTS\""
868 edhill 1.1 exit 1
869     fi
870     SUMMARY="$DRESULTS/summary.txt"
871 edhill 1.34 printf "Start time: " >> $SUMMARY
872 edhill 1.16 start_date=`date`
873 edhill 1.17 echo $start_date > $SUMMARY
874 edhill 1.1
875 edhill 1.11 of_path=
876 edhill 1.10 if test "x$OPTFILE" != xNONE ; then
877     if test -r $OPTFILE ; then
878 edhill 1.11 # get the path
879     path=${OPTFILE%/*}
880     if test "x$path" = x ; then
881     of_path=`pwd`
882     else
883     of_path=`( cd $path > /dev/null 2>&1 ; pwd )`
884     fi
885     file=${OPTFILE##*/}
886     OPTFILE=$of_path/$file
887 edhill 1.21 cp $OPTFILE $DRESULTS
888     echo >> $SUMMARY
889     echo " OPTFILE=$OPTFILE" >> $SUMMARY
890 edhill 1.11 else
891 edhill 1.21 echo | tee $SUMMARY
892     echo "ERROR: can't read OPTFILE=\"$OPTFILE\"" | tee $SUMMARY
893     exit 1
894 edhill 1.10 fi
895 edhill 1.21 else
896     echo >> $SUMMARY
897     echo "No \"OPTFILE\" was explicitly specified by testreport," >> $SUMMARY
898     echo " so the genmake default will be used." >> $SUMMARY
899 edhill 1.10 fi
900     echo
901     echo >> $SUMMARY
902 edhill 1.24 if test "x$ADM" = x ; then
903 edhill 1.49 line_0=" ----T----- ----S----- ----U----- ----V-----"
904     line_1="G D M c m s m s m s m s"
905     line_2="E p a R g m m e . m m e . m m e . m m e ."
906     line_3="N n k u 2 i a a d i a a d i a a d i a a d"
907     line_4="2 d e n d n x n . n x n . n x n . n x n ."
908 edhill 1.50 for ii in $PTRACERS_NUM ; do
909 edhill 1.49 # tst=`eval 'echo $HAVE_PTR0'$ii`
910     # if test "x$tst" = xt ; then
911     line_0="$line_0 --PTR 0"$ii"--"
912     line_1="$line_1 m s"
913     line_2="$line_2 m m e ."
914     line_3="$line_3 i a a d"
915     line_4="$line_4 n x n ."
916     # fi
917     done
918     echo "$line_0" | tee -a $SUMMARY
919     echo "$line_1" | tee -a $SUMMARY
920     echo "$line_2" | tee -a $SUMMARY
921     echo "$line_3" | tee -a $SUMMARY
922     echo "$line_4" | tee -a $SUMMARY
923     echo " " | tee -a $SUMMARY
924 edhill 1.24 else
925     echo "ADJOINT=true" >> $SUMMARY
926     echo >> $SUMMARY
927     cat << EOF | tee -a $SUMMARY
928     G D M C G
929     E p a R o r
930     N n k u s a
931     2 d e n t d
932    
933     EOF
934     fi
935 edhill 1.1
936 edhill 1.10 # ...and each test directory...
937     for dir in $TESTDIRS ; do
938    
939     # Cleanup only!
940     if test "x$CLEANUP" = xt ; then
941     if test -r $dir/build/Makefile ; then
942     ( cd $dir/build ; make CLEAN )
943     fi
944     if test -r $dir/input/Makefile ; then
945     ( cd $dir/input ; make CLEAN )
946     fi
947 edhill 1.62 (
948     cd $dir
949     rm -rf tr_run.*
950     )
951 edhill 1.10 continue
952 edhill 1.1 fi
953 edhill 1.3
954 edhill 1.10 # Verify that the testdir exists and contains previous
955     # results in the correct location--or skip this directory!
956 edhill 1.24 fout=
957     if test "x$ADM" = x ; then
958     fout=$dir"/results/output.txt"
959     else
960 jmc 1.78 fout=$dir"/results_ad/output_adm.txt"
961 edhill 1.24 fi
962     if test ! -r $fout ; then
963     echo "can't read \"$fout\" -- skipping $dir"
964 edhill 1.10 continue
965     fi
966 edhill 1.53 if test "x$ADM" = x ; then
967     check_for_add_mon_output $fout
968     fi
969 edhill 1.7
970 edhill 1.49 # Check for additional types of monitor output
971    
972 edhill 1.12 builddir="input"
973     rundir="input"
974     use_seperate_build=0
975     if test -d $dir/build -a -r $dir/build ; then
976     builddir="build"
977     rundir="build"
978     use_seperate_build=1
979     linkdata $use_seperate_build $dir/$rundir
980 edhill 1.10 fi
981    
982 edhill 1.34 # Check whether there are "extra runs" for this testdir
983     extra_runs=
984     if test "x$ADM" = x -a "x$use_seperate_build" = x1 ; then
985     ex_run_dirs=`( cd $dir ; echo input.* )`
986     echo "ex_run_dirs='$ex_run_dirs'"
987     for exd in $ex_run_dirs ; do
988     name=`echo $exd | sed -e 's/input.//g'`
989     outf="$dir/results/output.txt.$name"
990     if test -f $outf -a -r $outf ; then
991     extra_runs="$extra_runs $name"
992     fi
993     done
994     fi
995    
996 edhill 1.24 if test "x$ADM" = x ; then
997 edhill 1.27 code_dir=code
998 edhill 1.24 CODE_DIR=$dir/code
999     else
1000 edhill 1.27 code_dir=code_ad
1001 edhill 1.24 CODE_DIR=$dir/code_ad
1002     fi
1003 edhill 1.10 BUILD_DIR=$dir/$builddir
1004 edhill 1.28
1005 edhill 1.30 if test ! -r $CODE_DIR"/SIZE.h_mpi" -a "x$MPI" = "xt" ; then
1006 edhill 1.28 echo "can't find \"$CODE_DIR/SIZE.h_mpi\" -- skipping $dir"
1007     continue
1008     fi
1009    
1010     echo "-------------------------------------------------------------------------------"
1011     echo
1012     echo "Experiment: $dir"
1013     echo
1014     unset genmake makedepend make run
1015 jmc 1.73 results='-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --'
1016 edhill 1.10
1017     # Create an output dir for each OPTFILE/tdir combination
1018 edhill 1.20 rel_CDIR=$DRESULTS"/"$dir
1019     mkdir $rel_CDIR
1020     CDIR=`pwd`"/$rel_CDIR"
1021 edhill 1.10
1022     if test "x$CLEANUP" = xt ; then
1023     makeclean $dir/$builddir
1024     else
1025 edhill 1.1 genmakemodel $dir/$builddir && genmake=Y \
1026     && makeclean $dir/$builddir \
1027 edhill 1.27 && symlink_mpifiles $dir $code_dir $builddir \
1028 edhill 1.1 && makedependmodel $dir/$builddir && makedepend=Y \
1029     && makemodel $dir/$builddir && make=Y \
1030 edhill 1.12 && linkdata $use_seperate_build $dir/$rundir \
1031     && runmodel $dir/$rundir && run=Y \
1032 edhill 1.1 && results=`testoutput $dir $rundir`
1033 edhill 1.10 fi
1034    
1035     echo
1036 edhill 1.24 if test "x$ADM" = x ; then
1037     fres=`formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N} $results`
1038 edhill 1.34 echo
1039     echo "$fres" >> $SUMMARY
1040     echo "fresults='$fres'" > $CDIR"/summary.txt"
1041     echo "MACH='$MACH'" >> $CDIR"/summary.txt"
1042     echo "UNAMEA='$UNAMEA'" >> $CDIR"/summary.txt"
1043     echo "DATE='$DATE'" >> $CDIR"/summary.txt"
1044     echo "tdir='$dir'" >> $CDIR"/summary.txt"
1045    
1046     for ex in $extra_runs ; do
1047 jmc 1.73 unset run
1048     results='-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --'
1049     # Create an output dir for each OPTFILE/tdir.ex combination
1050     rel_CDIR=$DRESULTS"/"$dir"."$ex
1051     mkdir $rel_CDIR
1052     CDIR=`pwd`"/$rel_CDIR"
1053 edhill 1.61 test ! -e "$dir/tr_run.$ex" && mkdir "$dir/tr_run.$ex"
1054 edhill 1.62 for ldir in input.$ex input ; do
1055 edhill 1.61 (
1056     cd "$dir/$ldir" > /dev/null 2>&1
1057     ls -1 2>/dev/null \
1058     | sed -e 's|^CVS$||g' | sed -e 's|^output.txt$||g'
1059     ) > tr_exrun_links
1060     (
1061     cd "$dir/tr_run.$ex"
1062     cat ../../tr_exrun_links | while read i ; do
1063     if test ! "x$i" = x ; then
1064 edhill 1.62 test ! -r $i && ln -s "../"$ldir"/"$i $i
1065 edhill 1.61 fi
1066     done
1067     )
1068     test -e tr_exrun_links && rm -f tr_exrun_links
1069     done
1070 edhill 1.62 ldir=build
1071     (
1072 jmc 1.75 cd $dir/tr_run.$ex
1073     test ! -e mitgcmuv && ln -s "../"$ldir"/"mitgcmuv .
1074 edhill 1.62 )
1075 jmc 1.42 runmodel $dir/tr_run.$ex && run=Y \
1076     && results=`testoutput $dir tr_run.$ex "."$ex`
1077 edhill 1.34 fres=`printf '%s %s %s %s' ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N}`
1078     fres=`formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N} $results`
1079     fres="$fres.$ex"
1080     echo
1081     echo "$fres" >> $SUMMARY
1082     echo "fresults='$fres'" > $CDIR"/summary.txt"
1083     echo "MACH='$MACH'" >> $CDIR"/summary.txt"
1084     echo "UNAMEA='$UNAMEA'" >> $CDIR"/summary.txt"
1085     echo "DATE='$DATE'" >> $CDIR"/summary.txt"
1086 jmc 1.73 echo "tdir='$dir.$ex'" >> $CDIR"/summary.txt"
1087 edhill 1.34 done
1088 edhill 1.24 else
1089     fres=`printf '%s %s %s %s' ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N}`
1090     fres=$fres"$results $dir"
1091 edhill 1.34 echo
1092     echo "$fres" >> $SUMMARY
1093     echo "fresults='$fres'" > $CDIR"/summary.txt"
1094     echo "MACH='$MACH'" >> $CDIR"/summary.txt"
1095     echo "UNAMEA='$UNAMEA'" >> $CDIR"/summary.txt"
1096     echo "DATE='$DATE'" >> $CDIR"/summary.txt"
1097     echo "tdir='$dir'" >> $CDIR"/summary.txt"
1098 jmc 1.77 grep -A3 'Seconds in section "ALL' $dir/$rundir/$OUTPUTFILE \
1099     >> $CDIR"/summary.txt"
1100 edhill 1.24 fi
1101 edhill 1.68
1102     postclean $dir/$builddir
1103 edhill 1.10
1104     echo "-------------------------------------------------------------------------------"
1105    
1106 edhill 1.1 done
1107    
1108 edhill 1.34 printf "Start time: " >> $SUMMARY
1109 edhill 1.16 echo $start_date >> $SUMMARY
1110 edhill 1.34 printf "End time: " >> $SUMMARY
1111 edhill 1.13 date >> $SUMMARY
1112 edhill 1.20
1113     # If addresses were supplied and mpack built successfully, then try
1114     # to send email using mpack.
1115     if test "x$ADDRESSES" = xNONE -o "x$ADDRESSES" = x ; then
1116     echo "No results email was sent."
1117     else
1118     if test "x$HAVE_MPACK" = xt ; then
1119     tar -cf $DRESULTS".tar" $DRESULTS > /dev/null 2>&1 \
1120     && gzip $DRESULTS".tar" \
1121 edhill 1.44 && $MPACK -s MITgcm-test -m 3555000 $DRESULTS".tar.gz" $ADDRESSES
1122 edhill 1.20 RETVAL=$?
1123     if test "x$RETVAL" != x0 ; then
1124     echo
1125     echo "Warning: The tar, gzip, & mpack step failed. Please send email"
1126     echo " to <MITgcm-support@mitgcm.org> for help. You may copy the "
1127     echo " summary of results from the directory \"$DRESULTS\"."
1128     echo
1129     else
1130     echo
1131     echo "An email containing results was sent to the following addresses:"
1132     echo " \"$ADDRESSES\""
1133     echo
1134     fi
1135     test -f $DRESULTS".tar" && rm -f $DRESULTS".tar"
1136     test -f $DRESULTS".tar.gz" && rm -f $DRESULTS".tar.gz"
1137     fi
1138     fi
1139 edhill 1.13
1140 edhill 1.22 # rm -f tmp_cmpnum.f a.out
1141     rm -f tmp_cmpnum.c tmp_cmpnum
1142 edhill 1.1
1143 edhill 1.12 if test "x$CLEANUP" != xt ; then
1144 jmc 1.65 cat $SUMMARY | sed 's/ -- -- -- --//g'
1145 edhill 1.25 if test -e tr_out.txt ; then
1146     mv tr_out.txt tr_out.txt.old
1147 edhill 1.14 fi
1148 jmc 1.65 cat $SUMMARY | sed 's/ -- -- -- --//g' > tr_out.txt
1149 edhill 1.12 fi
1150 edhill 1.1
1151 edhill 1.40 if test "x$DELDIR" = xt ; then
1152     rm -rf $DRESULTS
1153     fi
1154    

  ViewVC Help
Powered by ViewVC 1.1.22