ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/JSOC/build/jsoc_build.pl
Revision: 1.5
Committed: Fri Jan 9 21:45:27 2009 UTC (14 years, 8 months ago) by jsoc
Content type: text/plain
Branch: MAIN
CVS Tags: Ver_5-10, NetDRMS_Ver_2-0a2, NetDRMS_Ver_2-0a1, Ver_5-2, NetDRMS_Ver_2-2, Ver_5-6, NetDRMS_Ver_2-1, Ver_5-5, NetDRMS_Ver_2-0a, NetDRMS_Ver_2-3, Ver_5-8, Ver_5-7, Ver_5-9, NetDRMS_Ver_2-0b1, Ver_5-3, NetDRMS_Ver_2-0b, Ver_5-1, Ver_5-0, NetDRMS_Ver_2-0
Changes since 1.4: +25 -0 lines
Log Message:
Add date to build failure message in jsoc_build.pl. Also catch more error cases.

File Contents

# Content
1 #!/usr/bin/perl --
2
3 use strict;
4 use warnings;
5 use Data::Dumper;
6
7 my($TESTERR) = "no";
8 my($JSOC_DEV) = "jsoc_dev\@sun.stanford.edu";
9 #my($JSOC_DEV) = "arta\@sun.stanford.edu"; # for testing purposes
10 my($ROOTDIR) = "/tmp/jsoc";
11 my($MAKELOG) = "make.log";
12 my($ret);
13 my($MAXERRLINES) = 8;
14
15 $ENV{'CVSROOT'} = ':ext:sunroom.stanford.edu:/home/cvsuser/cvsroot';
16 $ENV{'CVS_RSH'} = 'ssh';
17 $ENV{'PATH'} .= ':/usr/local/bin';
18
19 if ($TESTERR eq "no")
20 {
21 if (-e "$ROOTDIR/JSOC")
22 {
23 `rm -rf "$ROOTDIR/JSOC" 2>&1 1>>/dev/null`;
24 }
25
26 `mkdir -p "$ROOTDIR/JSOC" 2>&1 1>>/dev/null`;
27
28 my $cmd = "cd $ROOTDIR; cvs co JSOC; cvs update JSOC; cd JSOC; ./configure";
29 $cmd = join("; ", map {
30 $_." 2>&1 1>>$ROOTDIR/JSOC/cmd.log";
31 } split("; ", $cmd));
32
33 $ret = `$cmd; make universe -k >& $ROOTDIR/JSOC/$MAKELOG`;
34 }
35 else
36 {
37 `cd $ROOTDIR/JSOC; make universe -k >& $MAKELOG`;
38 }
39
40 open FH, "cd $ROOTDIR/JSOC; \(tail -n 4 $MAKELOG | grep Error\) |" || die "Can't open log file: $!\n";
41 my @line = <FH>;
42 my($oneline);
43 my($prevline);
44 my($errmsg) = "";
45 my($nerrlines);
46 my($date);
47
48 close FH;
49 if (scalar(@line)) {
50 $nerrlines = 0;
51 $date = `date`;
52 $errmsg = "${errmsg}JSOC Build Failed on ${date}:\n";
53 $nerrlines++;
54 open FH, "$ROOTDIR/JSOC/$MAKELOG";
55 while($oneline = <FH>)
56 {
57 chomp($oneline);
58 if ($oneline =~ /:\s\S*\serror:\s/)
59 {
60 $errmsg = "${errmsg}${oneline}\n";
61 $nerrlines++;
62 $oneline = <FH>;
63 if ($oneline)
64 {
65 $errmsg = "${errmsg}${oneline}\n";
66 $nerrlines++;
67 }
68 $oneline = <FH>;
69 if ($oneline)
70 {
71 $errmsg = "${errmsg}${oneline}\n";
72 $nerrlines++;
73 }
74 }
75 elsif ($oneline =~ /:\s+undefined reference to\s+/)
76 {
77 $errmsg = "${errmsg}${prevline}\n";
78 $errmsg = "${errmsg}${oneline}\n";
79 $nerrlines++;
80 $nerrlines++;
81 }
82
83 $prevline = $oneline;
84 }
85 close FH;
86
87 if ($nerrlines >= $MAXERRLINES)
88 {
89 $errmsg = "${errmsg}...\n";
90 }
91
92 open FH, "| /usr/bin/Mail -s \"JSOC build problem\" $JSOC_DEV";
93 print FH $errmsg;
94 close FH;
95
96 } else {
97 my $cmd = "$ROOTDIR/JSOC/doc/doxygen/gendox.csh";
98 `chmod +x $cmd`;
99 `$cmd >& $ROOTDIR/JSOC/doxygen.log`;
100 create_sl();
101 }
102
103 sub create_sl {
104 my $dir = '/web/jsoc/htdocs/doxygen_html';
105 opendir DH, $dir;
106
107 my $file;
108 while (defined($file = readdir(DH))) {
109 if ($file =~ /-example/) {
110 my $file2 = $file;
111 $file2 =~ s/-example/-source/;
112 my $cmd = "ln -s $dir/$file $dir/$file2";
113 # print $cmd, "\n";
114 `$cmd`;
115 }
116 }
117
118 closedir DH;
119 }