#!/usr/bonsaitools/bin/perl -- # -*- Mode: perl; indent-tabs-mode: nil -*- # # The contents of this file are subject to the Netscape Public License # Version 1.0 (the "License"); you may not use this file except in # compliance with the License. You may obtain a copy of the License at # http://www.mozilla.org/NPL/ # # Software distributed under the License is distributed on an "AS IS" # basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the # License for the specific language governing rights and limitations # under the License. # # The Original Code is the Tinderbox build tool. # # The Initial Developer of the Original Code is Netscape Communications # Corporation. Portions created by Netscape are Copyright (C) 1998 # Netscape Communications Corporation. All Rights Reserved. use lib "../bonsai"; require 'globals.pl'; require 'lloydcgi.pl'; require 'header.pl'; $|=1; $LINES_AFTER_ERROR = 5; $LINES_BEFORE_ERROR = 30; $error_file = ''; $error_file_ref = ''; $error_line = 0; $error_guess = 0; print "Content-type: text/html\n\n"; $error_count = 0; $next_err = 0; @log_errors = (); $log_ln = 0; if (1) { $tree = $form{'tree'}; $errorparser = $form{'errorparser'}; $logfile = $form{'logfile'}; $summary = $form{'summary'}; $buildname = $form{'buildname'}; $buildtime = $form{'buildtime'}; $enc_buildname = &url_encode($buildname); $frames = $form{'frames'}; $fulltext = $form{'fulltext'}; $mainframe = $form{'mainframe'}; #print "$buildname \n $buildtime \n $errorparser \n $logfile \n $tree \n $enc_buildname \n"; } else { $tree = 'FreeSource'; $errorparser = 'windows'; $logfile = '19692.gz'; } die "the \"tree\" parameter must be provided\n" unless $tree; require "$tree/treedata.pl"; if( $mainframe ){ print " "; exit 0; } if( $frames ){ $source_target = "target=SOURCEFRAME"; } # # Dynamically load the error parser # die "the \"errorparser\" parameter must be provided\n" unless $errorparser; require "ep_${errorparser}.pl"; $time_str = print_time( $form{'buildtime'} ); if( $fulltext ){ $s = 'Show Brief Log'; $s1 = ''; $s2 = 'Full'; } else { $s = 'Show Full Log'; $s1 = 1; $s2 = 'Brief'; } print "\n"; my $heading = "Build Log ($s2)"; my $subheading = "$form{'buildname'} on $time_str"; my $title = "$heading - $subheading"; EmitHtmlTitleAndHeader($title, $heading, $subheading); print "
$s
Return to the Build Page
Add a Comment to the Log "; # # Print notes # $found_note = 0; open(NOTES,"<$tree/notes.txt") || print "

warning: Couldn't open $tree/notes.txt

\n"; while(){ chop; ($nbuildtime,$nbuildname,$nwho,$nnow,$nenc_note) = split(/\|/); #print "$_
\n"; if( $nbuildtime == $buildtime && $nbuildname eq $buildname ){ if( !$found_note ){ print "

Build Comments

\n"; $found_note = 1; } $now_str = &print_time($nnow); $note = &url_decode($nenc_note); print "
\n[$nwho - $now_str]\n$note\n
"; } } close(NOTES); # # Print the summery fisrt # print "

Build Error Summary

Click error to take you to the error in the log.

";
$log_ln = 0;
open( BUILD_IN, "$gzip -d -c $tree/$logfile|" );
while( $line =  ){
    &output_summary_line( $line );
}
close( BUILD_IN );
push @log_errors, 9999999;        

print "
\n"; # # reset the error counter # $next_err = 0; print "

Build Error Log

\n
";
$log_ln = 0;
open( BUILD_IN, "$gzip -d -c $tree/$logfile|" );
while( $line =  ){
    &output_log_line( $line );
}
close( BUILD_IN );


print
"

No More Errors


"; sub output_summary_line { local( $line ) = @_; local( $has_error ); $has_error = &has_error( $line ); $line =~ s/&/&/g; $line =~ s/$line"; $next_err++; } $last_was_error = 1; } else { $last_was_error = 0; } $log_ln++; } sub output_log_line { local( $line, $bSummary ) = @_; local( $has_error, $dur, $dur_min,$dur_sec, $dur_str, $logline ); $has_error = &has_error( $line ); $has_warning = &has_warning( $line ); $line =~ s/&/&/g; $line =~ s/ $error_line - 10 : 1 ); $goto_line = ($error_line > 10 ? $error_line - 10 : 1 ); $cvsblame = ($error_guess ? "cvsguess.cgi" : "cvsblame.cgi"); $line =~ s@$q@$error_file@ } if( $has_error ){ if( ! $last_was_error ) { $logline .= ""; $next_err++; $logline .= "NEXT "; } else { $logline .= " "; } $logline .= "$line"; $last_was_error = 1; } elsif( $has_warning ){ $logline .= " "; $logline .= "$line"; } else { $logline .= " $line"; $last_was_error = 0; } &push_log_line( $logline ); } sub push_log_line { local( $ln ) = @_; if( $fulltext ){ print $ln; return; } if( $log_ln > $log_errors[$cur_error] ){ $cur_error++; } if( $log_ln >= $log_errors[$cur_error] - $LINES_BEFORE_ERROR ){ if( $log_skip != 0 ){ print "\n Skipping $log_skip Lines...\n\n"; $log_skip = 0; } print $ln; } else { $log_skip++; } $log_ln++; }