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. |
# | User | Rev | Content |
---|---|---|---|
1 | arta | 1.6 | #!/home/jsoc/bin/linux_x86_64/perl -w |
2 | arta | 1.1 | |
3 | use strict; | ||
4 | use warnings; | ||
5 | use Data::Dumper; | ||
6 | |||
7 | arta | 1.6 | use constant kNContext => 5; |
8 | |||
9 | jsoc | 1.3 | my($TESTERR) = "no"; |
10 | arta | 1.1 | my($JSOC_DEV) = "jsoc_dev\@sun.stanford.edu"; |
11 | jsoc | 1.3 | #my($JSOC_DEV) = "arta\@sun.stanford.edu"; # for testing purposes |
12 | arta | 1.2 | my($ROOTDIR) = "/tmp/jsoc"; |
13 | my($MAKELOG) = "make.log"; | ||
14 | jsoc | 1.3 | my($ret); |
15 | jsoc | 1.5 | my($MAXERRLINES) = 8; |
16 | arta | 1.1 | |
17 | jsoc | 1.3 | $ENV{'CVSROOT'} = ':ext:sunroom.stanford.edu:/home/cvsuser/cvsroot'; |
18 | $ENV{'CVS_RSH'} = 'ssh'; | ||
19 | arta | 1.1 | $ENV{'PATH'} .= ':/usr/local/bin'; |
20 | |||
21 | jsoc | 1.3 | if ($TESTERR eq "no") |
22 | { | ||
23 | if (-e "$ROOTDIR/JSOC") | ||
24 | { | ||
25 | `rm -rf "$ROOTDIR/JSOC" 2>&1 1>>/dev/null`; | ||
26 | } | ||
27 | arta | 1.1 | |
28 | jsoc | 1.3 | `mkdir -p "$ROOTDIR/JSOC" 2>&1 1>>/dev/null`; |
29 | arta | 1.1 | |
30 | arta | 1.7 | my $cmd = "cd $ROOTDIR; /home/jsoc/dlsource.pl; cd JSOC; ./configure"; |
31 | jsoc | 1.3 | $cmd = join("; ", map { |
32 | $_." 2>&1 1>>$ROOTDIR/JSOC/cmd.log"; | ||
33 | } split("; ", $cmd)); | ||
34 | arta | 1.1 | |
35 | jsoc | 1.3 | $ret = `$cmd; make universe -k >& $ROOTDIR/JSOC/$MAKELOG`; |
36 | } | ||
37 | else | ||
38 | { | ||
39 | `cd $ROOTDIR/JSOC; make universe -k >& $MAKELOG`; | ||
40 | } | ||
41 | arta | 1.1 | |
42 | arta | 1.6 | 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 | arta | 1.1 | my($errmsg) = ""; |
49 | jsoc | 1.5 | my($date); |
50 | arta | 1.6 | my($chomped); |
51 | arta | 1.1 | |
52 | arta | 1.6 | close(FH); |
53 | jsoc | 1.5 | |
54 | arta | 1.6 | 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 | arta | 1.2 | my $cmd = "$ROOTDIR/JSOC/doc/doxygen/gendox.csh"; |
128 | arta | 1.1 | `chmod +x $cmd`; |
129 | arta | 1.2 | `$cmd >& $ROOTDIR/JSOC/doxygen.log`; |
130 | arta | 1.1 | create_sl(); |
131 | } | ||
132 | |||
133 | arta | 1.6 | 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 | arta | 1.1 | 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 | } |