File: AutoExec

package info (click to toggle)
fcode-utils 1.0.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 46,768 kB
  • sloc: ansic: 9,717; csh: 241; makefile: 129; sh: 17
file content (164 lines) | stat: -rw-r--r-- 5,519 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
#!  /bin/csh -f
#
#  Part of automation of the testing process for the Tokenizer/De-Tokenizer
#  Automate Execution of Tokenizing and De-Tokenizing the various test-cases

#  Updated Thu, 09 Feb 2006 at 13:10 PST by David L. Paktor

#  Run this from the parent-directory of the various Test categories.
#  Sym-links to the binaries should be here.

#  Each Test category directory must have a TestArgs file,
#      formatted as follows:
#          Lines starting with  #  (Pound-sign Space) are comments,
#              and are ignored
#          Blank lines are also allowed, and are also ignored
#          Valid lines have four comma-separated fields:
#                 Test-file base-name
#                 Result-file label
#                 Extra command-line switches
#                 A script-command, to be run after, for specific
#                     verification of this Test.  Arguments can also
#                     be included in this field, as long as they have
#                     no commas.
#          An unspecified intermediate field must be represented as
#               an empty field separated by commas from the fields
#               preceding and following.
#          Lines that have no label, no switches, and no script
#              do not need any commas.
#          The -v (verbose) switch will always be used and does not need
#              to be explicitly specified.  However, if the "script-command"
#              field starts with +V (case-sensitive), then the -v (verbose)
#              switch will not be used.
#
#          The Test-file base-name field may have multiple base-names,
#              to run a multiple-file batch command.
#          If a multiple-file batch is run:
#              The Result-file label will apply only to the Log file.

#  To Do:
#          Contrive a way to run the second through last input files as
#              separate individual jobs (with same command-line switches)
#          This needs to be co-ordinated with the Auto-Compare script:
#              It will need to compare the .FC files from the batch with
#                   those from the individual runs.


#  Initial error-checking:
if ( ( ! -x ./toke ) || ( ! -x ./detok ) || ( ! -x ./romheaders ) ) then
    echo 'Starting in wrong directory.  Executable toke, detok and romheaders are not here.'
    exit 1
endif

set TArgFiles = `find . -name TestArgs -exec expr {} : '\./\(.*\)' \;`
if ( $#TArgFiles == 0 ) then
    echo 'No TestArgs files found in subdirectories.'
    echo 'Starting in wrong directory?'
    exit 1
endif

set parent  = `pwd`
set tokex  = `pwd`/toke
set detokex  = `pwd`/detok
set romhdrex = `pwd`/romheaders

set chirren = `echo $TArgFiles | tr ' ' \\012 | sed -e 'sX/[^/]*$XXg'`

#  The "verbose" flag is now a variable.
set vflg = '-v'

#  Let's show a progress-downcount and time, stamps and elapsed.
#  Find the count; leave the max number on display:
set cnt = `egrep '^[^#].*' $TArgFiles | wc -l`
echo ''
set starttime = `date +'%T'`
echo $starttime
echo $cnt

foreach dir ( $chirren )
   cd $dir
   set lindxmax = `cat TestArgs | wc -l`
   set lindx = 0
   while ( $lindx < $lindxmax )
      @ lindx++
      set targline = `sed -n ${lindx}p TestArgs`
      if ( $#targline == 0 ) continue
      if ( "$targline[1]" == "#" ) continue
      set ttargs = `echo $targline | awk -F , '{print $1}'`
#  One more error-check:
      set tfths = ''
      set fcfils = ''
      unset FMissing
      foreach tfth ( $ttargs )
	  if ( ! -f ${tfth}.fth ) then
             echo File Not found: ${dir}/${tfth}.fth
             echo Please update ${dir}/TestArgs file, line $lindx
	     set FMissing
	  endif
	  set tfths = ( $tfths ${tfth}.fth )
	  set fcfils = ( $fcfils ${tfth}.fc )
      end
      if ( $?FMissing ) continue

      set ttarg = $ttargs[1]

      set outfile = ''
      set label = `echo $targline | awk -F , '{print $2}'`
      if ( "$label" != "" ) then
	 set label = .$label
	 if ( $#tfths == 1 ) then
	    set fcfils = ${ttarg}${label}.fc
	    set outfile = ( -o $fcfils )
	 endif
      endif
#  We don't set the switches as a shell-variable because we might
#      need to preserve quoted groupings that have embedded spaces.

#  Collect the script-command.
#  Awkward place to expect a  "+V"  option, but it'll have to serve....
      set scriptcmd = `echo $targline | awk -F , '{print $4}'`
      if ( $#scriptcmd > 0 ) then
	 if ( "$scriptcmd[1]" == "+V" ) then
            set vflg = ""
	    if ( $#scriptcmd == 1 ) then
	       set scriptcmd = ""
	    else
	       set scriptcmd = ( $scriptcmd[2-] )
	    endif
	 endif
      endif

      echo -n X${cnt}' ' | tr X \\015
      @ cnt--

#  Now do it.
      set doromhdr = 0
      echo toke $vflg `sed -n ${lindx}p TestArgs | awk -F , '{print $3}'` $outfile ${tfths} >& ${ttarg}${label}.Log
      echo '' >>& ${ttarg}${label}.Log
      eval $tokex $vflg `sed -n ${lindx}p TestArgs | awk -F , '{print $3}'` $outfile ${tfths} >>& ${ttarg}${label}.Log
      set vflg = '-v'

      foreach fcfil ( $fcfils )
	 if ( -f ${fcfil} ) then
	    $detokex -v -o ${fcfil} > ${fcfil:r}.DeTok
	    set doromhdr = `grep 'PCI Header identified' ${fcfil:r}.DeTok | wc -l`
	    if ( $doromhdr ) then
	       $romhdrex ${fcfil} > ${fcfil:r}.RomHdr
	    endif
	 endif
      end


      if ( "$scriptcmd" != "" ) then
	 eval $scriptcmd
      endif

   end
   cd $parent
end
#  Clear the display-line
echo -n X'   'X | tr X \\015
#  Show time, stamps and elapsed.
date +'%T'
echo $starttime ' (Started)'