ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/JSOC/build/jsoc_build.pl
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.

File Contents

# 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 }