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

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