(file) Return to jsoc_build.pl CVS log (file) (dir) Up to [Development] / JSOC / build

Diff for /JSOC/build/jsoc_build.pl between version 1.5 and 1.6

version 1.5, 2009/01/09 21:45:27 version 1.6, 2010/10/04 23:45:04
Line 1 
Line 1 
 #!/usr/bin/perl --  #!/home/jsoc/bin/linux_x86_64/perl -w
  
 use strict; use strict;
 use warnings; use warnings;
 use Data::Dumper; use Data::Dumper;
  
   use constant kNContext => 5;
   
 my($TESTERR) = "no"; my($TESTERR) = "no";
 my($JSOC_DEV) = "jsoc_dev\@sun.stanford.edu"; my($JSOC_DEV) = "jsoc_dev\@sun.stanford.edu";
 #my($JSOC_DEV) = "arta\@sun.stanford.edu"; # for testing purposes #my($JSOC_DEV) = "arta\@sun.stanford.edu"; # for testing purposes
Line 37  else
Line 39  else
     `cd $ROOTDIR/JSOC; make universe -k >& $MAKELOG`;     `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";  open(FH, "<$ROOTDIR/JSOC/$MAKELOG") || die "Can't open log file: $!\n";
 my @line = <FH>;  
 my($oneline);  my(@lines) = <FH>;
 my($prevline);  my($linenum);
   my($firstidx);
   my(@errslice);
 my($errmsg) = ""; my($errmsg) = "";
 my($nerrlines);  
 my($date); my($date);
   my($chomped);
  
 close FH;  close(FH);
 if (scalar(@line)) {  
     $nerrlines = 0;  if ($#lines >= 0)
     $date = `date`;  {
     $errmsg = "${errmsg}JSOC Build Failed on ${date}:\n";     # There was a build error.
     $nerrlines++;     # Go through each line, looking for recognized error strings
     open FH, "$ROOTDIR/JSOC/$MAKELOG";     $linenum = 0;
     while($oneline = <FH>)     $firstidx = 0;
      foreach my $aline (@lines)
     {     {
         chomp($oneline);        $chomped = $aline;
         if ($oneline =~ /:\s\S*\serror:\s/)        chomp($chomped);
   
         if (RecognizedError($chomped))
         {         {
             $errmsg = "${errmsg}${oneline}\n";           # Collect kNContext lines before error
             $nerrlines++;           if ($linenum - kNContext >= 0)
             $oneline = <FH>;  
             if ($oneline)  
             {             {
                $errmsg = "${errmsg}${oneline}\n";              $firstidx = $linenum - kNContext;
                $nerrlines++;  
             }             }
             $oneline = <FH>;  
             if ($oneline)           @errslice = @lines[$firstidx..$linenum];
             {  
                $errmsg = "${errmsg}${oneline}\n";           last;
                $nerrlines++;  
             }             }
   
         $linenum++;
         }         }
         elsif ($oneline =~ /:\s+undefined reference to\s+/)  
      if ($#errslice >= 0)
         {         {
             $errmsg = "${errmsg}${prevline}\n";        # We have lines that may indicate an error - look at last few lines to be sure.
             $errmsg = "${errmsg}${oneline}\n";        # make isn't consistent so the last line doesn't always have an error code - it
             $nerrlines++;        # may appear in earlier lines.
             $nerrlines++;        my($iline);
         my($goterror);
   
         $goterror = 0;
         $iline = $#lines;
         while ($iline >= 0 && $#lines - $iline < 4)
         {
            if ($lines[$iline] =~ /\*\*\*\s+\[.+\]\s+Error/i)
            {
               $goterror = 1;
               last;
         }         }
  
         $prevline = $oneline;           $iline--;
     }     }
     close FH;  
  
     if ($nerrlines >= $MAXERRLINES)        if ($goterror)
         {
            $linenum = @errslice;
            $date = `date`;
            chomp($date);
            $errmsg = "${errmsg}JSOC Build Failed on ${date}:\n";
            $linenum++;
            $errmsg = join('', $errmsg, @errslice);
   
            if ($linenum >= $MAXERRLINES)
     {     {
         $errmsg = "${errmsg}...\n";         $errmsg = "${errmsg}...\n";
     }     }
         }
      }
  
      if (length($errmsg) > 0)
      {
     open FH, "| /usr/bin/Mail -s \"JSOC build problem\" $JSOC_DEV";     open FH, "| /usr/bin/Mail -s \"JSOC build problem\" $JSOC_DEV";
     print FH $errmsg;     print FH $errmsg;
     close FH;     close FH;
      }
 } else {  }
   else
   {
     my $cmd = "$ROOTDIR/JSOC/doc/doxygen/gendox.csh";     my $cmd = "$ROOTDIR/JSOC/doc/doxygen/gendox.csh";
     `chmod +x $cmd`;     `chmod +x $cmd`;
     `$cmd >& $ROOTDIR/JSOC/doxygen.log`;     `$cmd >& $ROOTDIR/JSOC/doxygen.log`;
     create_sl();     create_sl();
 } }
  
   sub RecognizedError
   {
      my($line) = $_[0];
      my($rv) = 0;
   
      if ($line =~ /:\s+undefined reference to\s+/ || $line =~ /:\s\S*\serror:\s/i || $line =~ /icc: error/ || $line =~ /:\serror:/)
      {
         $rv = 1;
      }
   
      return $rv;
   }
   
 sub create_sl { sub create_sl {
     my $dir = '/web/jsoc/htdocs/doxygen_html';     my $dir = '/web/jsoc/htdocs/doxygen_html';
     opendir DH, $dir;     opendir DH, $dir;


Legend:
Removed from v.1.5  
changed lines
  Added in v.1.6

Karen Tian
Powered by
ViewCVS 0.9.4