![]() ![]() |
![]() |
File: [Development] / JSOC / build / jsoc_build.pl
(download)
Revision: 1.5, Fri Jan 9 21:45:27 2009 UTC (14 years, 4 months ago) by jsoc Branch: MAIN CVS Tags: Ver_5-9, Ver_5-8, Ver_5-7, Ver_5-6, Ver_5-5, Ver_5-3, Ver_5-2, Ver_5-10, Ver_5-1, Ver_5-0, NetDRMS_Ver_2-3, NetDRMS_Ver_2-2, NetDRMS_Ver_2-1, NetDRMS_Ver_2-0b1, NetDRMS_Ver_2-0b, NetDRMS_Ver_2-0a2, NetDRMS_Ver_2-0a1, NetDRMS_Ver_2-0a, NetDRMS_Ver_2-0 Changes since 1.4: +25 -0 lines Add date to build failure message in jsoc_build.pl. Also catch more error cases. |
#!/usr/bin/perl -- use strict; use warnings; use Data::Dumper; my($TESTERR) = "no"; my($JSOC_DEV) = "jsoc_dev\@sun.stanford.edu"; #my($JSOC_DEV) = "arta\@sun.stanford.edu"; # for testing purposes my($ROOTDIR) = "/tmp/jsoc"; my($MAKELOG) = "make.log"; my($ret); my($MAXERRLINES) = 8; $ENV{'CVSROOT'} = ':ext:sunroom.stanford.edu:/home/cvsuser/cvsroot'; $ENV{'CVS_RSH'} = 'ssh'; $ENV{'PATH'} .= ':/usr/local/bin'; if ($TESTERR eq "no") { if (-e "$ROOTDIR/JSOC") { `rm -rf "$ROOTDIR/JSOC" 2>&1 1>>/dev/null`; } `mkdir -p "$ROOTDIR/JSOC" 2>&1 1>>/dev/null`; my $cmd = "cd $ROOTDIR; cvs co JSOC; cvs update JSOC; cd JSOC; ./configure"; $cmd = join("; ", map { $_." 2>&1 1>>$ROOTDIR/JSOC/cmd.log"; } split("; ", $cmd)); $ret = `$cmd; make universe -k >& $ROOTDIR/JSOC/$MAKELOG`; } else { `cd $ROOTDIR/JSOC; make universe -k >& $MAKELOG`; } open FH, "cd $ROOTDIR/JSOC; \(tail -n 4 $MAKELOG | grep Error\) |" || die "Can't open log file: $!\n"; my @line = <FH>; my($oneline); my($prevline); my($errmsg) = ""; my($nerrlines); my($date); close FH; if (scalar(@line)) { $nerrlines = 0; $date = `date`; $errmsg = "${errmsg}JSOC Build Failed on ${date}:\n"; $nerrlines++; open FH, "$ROOTDIR/JSOC/$MAKELOG"; while($oneline = <FH>) { chomp($oneline); if ($oneline =~ /:\s\S*\serror:\s/) { $errmsg = "${errmsg}${oneline}\n"; $nerrlines++; $oneline = <FH>; if ($oneline) { $errmsg = "${errmsg}${oneline}\n"; $nerrlines++; } $oneline = <FH>; if ($oneline) { $errmsg = "${errmsg}${oneline}\n"; $nerrlines++; } } elsif ($oneline =~ /:\s+undefined reference to\s+/) { $errmsg = "${errmsg}${prevline}\n"; $errmsg = "${errmsg}${oneline}\n"; $nerrlines++; $nerrlines++; } $prevline = $oneline; } close FH; if ($nerrlines >= $MAXERRLINES) { $errmsg = "${errmsg}...\n"; } open FH, "| /usr/bin/Mail -s \"JSOC build problem\" $JSOC_DEV"; print FH $errmsg; close FH; } else { my $cmd = "$ROOTDIR/JSOC/doc/doxygen/gendox.csh"; `chmod +x $cmd`; `$cmd >& $ROOTDIR/JSOC/doxygen.log`; create_sl(); } sub create_sl { my $dir = '/web/jsoc/htdocs/doxygen_html'; opendir DH, $dir; my $file; while (defined($file = readdir(DH))) { if ($file =~ /-example/) { my $file2 = $file; $file2 =~ s/-example/-source/; my $cmd = "ln -s $dir/$file $dir/$file2"; # print $cmd, "\n"; `$cmd`; } } closedir DH; }
Karen Tian |
Powered by ViewCVS 0.9.4 |