Revision: | 1.7 |
Committed: | Tue Jun 12 16:46:44 2012 UTC (11 years, 3 months ago) by arta |
Content type: | text/plain |
Branch: | MAIN |
CVS Tags: | NetDRMS_Ver_6-4, NetDRMS_Ver_8-0, Ver_6-4, NetDRMS_Ver_8-8, Ver_8-5, NetDRMS_Ver_7-0, NetDRMS_Ver_8-1, Ver_7-0, Ver_LATEST, NetDRMS_Ver_LATEST, NetDRMS_Ver_8-12, NetDRMS_Ver_8-10, NetDRMS_Ver_8-11, NetDRMS_Ver_9-1, NetDRMS_Ver_9-0, NetDRMS_Ver_9-3, NetDRMS_Ver_9-2, NetDRMS_Ver_9-5, NetDRMS_Ver_9-4, NetDRMS_Ver_8-2, NetDRMS_Ver_8-3, NetDRMS_Ver_9-41, Ver_9-41, Ver_DRMSLATEST, NetDRMS_Ver_8-4, NetDRMS_Ver_8-5, NetDRMS_Ver_8-6, Ver_8-8, NetDRMS_Ver_8-7, Ver_8-2, Ver_9-3, Ver_8-0, Ver_8-1, Ver_8-6, Ver_8-7, Ver_8-4, Ver_8-11, Ver_7-1, Ver_9-1, Ver_8-3, NetDRMS_Ver_7-1, Ver_9-5, Ver_9-4, Ver_8-10, Ver_9-2, Ver_8-12, Ver_9-0, HEAD |
Changes since 1.6: | +1 -1 lines |
Log Message: | Restore daily build. Use new syntax for checking-out code tree. |
# | Content |
---|---|
1 | #!/home/jsoc/bin/linux_x86_64/perl -w |
2 | |
3 | use strict; |
4 | use warnings; |
5 | use Data::Dumper; |
6 | |
7 | use constant kNContext => 5; |
8 | |
9 | my($TESTERR) = "no"; |
10 | my($JSOC_DEV) = "jsoc_dev\@sun.stanford.edu"; |
11 | #my($JSOC_DEV) = "arta\@sun.stanford.edu"; # for testing purposes |
12 | my($ROOTDIR) = "/tmp/jsoc"; |
13 | my($MAKELOG) = "make.log"; |
14 | my($ret); |
15 | my($MAXERRLINES) = 8; |
16 | |
17 | $ENV{'CVSROOT'} = ':ext:sunroom.stanford.edu:/home/cvsuser/cvsroot'; |
18 | $ENV{'CVS_RSH'} = 'ssh'; |
19 | $ENV{'PATH'} .= ':/usr/local/bin'; |
20 | |
21 | if ($TESTERR eq "no") |
22 | { |
23 | if (-e "$ROOTDIR/JSOC") |
24 | { |
25 | `rm -rf "$ROOTDIR/JSOC" 2>&1 1>>/dev/null`; |
26 | } |
27 | |
28 | `mkdir -p "$ROOTDIR/JSOC" 2>&1 1>>/dev/null`; |
29 | |
30 | my $cmd = "cd $ROOTDIR; /home/jsoc/dlsource.pl; cd JSOC; ./configure"; |
31 | $cmd = join("; ", map { |
32 | $_." 2>&1 1>>$ROOTDIR/JSOC/cmd.log"; |
33 | } split("; ", $cmd)); |
34 | |
35 | $ret = `$cmd; make universe -k >& $ROOTDIR/JSOC/$MAKELOG`; |
36 | } |
37 | else |
38 | { |
39 | `cd $ROOTDIR/JSOC; make universe -k >& $MAKELOG`; |
40 | } |
41 | |
42 | open(FH, "<$ROOTDIR/JSOC/$MAKELOG") || die "Can't open log file: $!\n"; |
43 | |
44 | my(@lines) = <FH>; |
45 | my($linenum); |
46 | my($firstidx); |
47 | my(@errslice); |
48 | my($errmsg) = ""; |
49 | my($date); |
50 | my($chomped); |
51 | |
52 | close(FH); |
53 | |
54 | if ($#lines >= 0) |
55 | { |
56 | # There was a build error. |
57 | # Go through each line, looking for recognized error strings |
58 | $linenum = 0; |
59 | $firstidx = 0; |
60 | foreach my $aline (@lines) |
61 | { |
62 | $chomped = $aline; |
63 | chomp($chomped); |
64 | |
65 | if (RecognizedError($chomped)) |
66 | { |
67 | # Collect kNContext lines before error |
68 | if ($linenum - kNContext >= 0) |
69 | { |
70 | $firstidx = $linenum - kNContext; |
71 | } |
72 | |
73 | @errslice = @lines[$firstidx..$linenum]; |
74 | |
75 | last; |
76 | } |
77 | |
78 | $linenum++; |
79 | } |
80 | |
81 | if ($#errslice >= 0) |
82 | { |
83 | # We have lines that may indicate an error - look at last few lines to be sure. |
84 | # make isn't consistent so the last line doesn't always have an error code - it |
85 | # may appear in earlier lines. |
86 | my($iline); |
87 | my($goterror); |
88 | |
89 | $goterror = 0; |
90 | $iline = $#lines; |
91 | while ($iline >= 0 && $#lines - $iline < 4) |
92 | { |
93 | if ($lines[$iline] =~ /\*\*\*\s+\[.+\]\s+Error/i) |
94 | { |
95 | $goterror = 1; |
96 | last; |
97 | } |
98 | |
99 | $iline--; |
100 | } |
101 | |
102 | if ($goterror) |
103 | { |
104 | $linenum = @errslice; |
105 | $date = `date`; |
106 | chomp($date); |
107 | $errmsg = "${errmsg}JSOC Build Failed on ${date}:\n"; |
108 | $linenum++; |
109 | $errmsg = join('', $errmsg, @errslice); |
110 | |
111 | if ($linenum >= $MAXERRLINES) |
112 | { |
113 | $errmsg = "${errmsg}...\n"; |
114 | } |
115 | } |
116 | } |
117 | |
118 | if (length($errmsg) > 0) |
119 | { |
120 | open FH, "| /usr/bin/Mail -s \"JSOC build problem\" $JSOC_DEV"; |
121 | print FH $errmsg; |
122 | close FH; |
123 | } |
124 | } |
125 | else |
126 | { |
127 | my $cmd = "$ROOTDIR/JSOC/doc/doxygen/gendox.csh"; |
128 | `chmod +x $cmd`; |
129 | `$cmd >& $ROOTDIR/JSOC/doxygen.log`; |
130 | create_sl(); |
131 | } |
132 | |
133 | sub RecognizedError |
134 | { |
135 | my($line) = $_[0]; |
136 | my($rv) = 0; |
137 | |
138 | if ($line =~ /:\s+undefined reference to\s+/ || $line =~ /:\s\S*\serror:\s/i || $line =~ /icc: error/ || $line =~ /:\serror:/) |
139 | { |
140 | $rv = 1; |
141 | } |
142 | |
143 | return $rv; |
144 | } |
145 | |
146 | sub create_sl { |
147 | my $dir = '/web/jsoc/htdocs/doxygen_html'; |
148 | opendir DH, $dir; |
149 | |
150 | my $file; |
151 | while (defined($file = readdir(DH))) { |
152 | if ($file =~ /-example/) { |
153 | my $file2 = $file; |
154 | $file2 =~ s/-example/-source/; |
155 | my $cmd = "ln -s $dir/$file $dir/$file2"; |
156 | # print $cmd, "\n"; |
157 | `$cmd`; |
158 | } |
159 | } |
160 | |
161 | closedir DH; |
162 | } |