#!/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 "\n[$nwho - $now_str]\n$note\n"; } } close(NOTES); # # Print the summery fisrt # print "
Click error to take you to the error in the log.
"; $log_ln = 0; open( BUILD_IN, "$gzip -d -c $tree/$logfile|" ); while( $line =\n"; # # reset the error counter # $next_err = 0; print "){ &output_summary_line( $line ); } close( BUILD_IN ); push @log_errors, 9999999; print "
"; $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/</g;
if( $has_error ){
push @log_errors, $log_ln + $LINES_AFTER_ERROR;
if( ! $last_was_error ) {
print "$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/</g;
$logline = '';
if( ($has_error || $has_warning) && &has_errorline( $line ) ) {
$q = quotemeta( $error_file );
#$goto_line = ($error_line ? 10 > $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++;
}