X-Git-Url: https://git.exim.org/buildfarm-server.git/blobdiff_plain/a63dde634310b9d7616b324a4fcf327059c9dbd7..0118a8258eb871570d8039faa1e042c6a869baf9:/cgi-bin/show_log.pl diff --git a/cgi-bin/show_log.pl b/cgi-bin/show_log.pl index 9173f5b..ab3d3cd 100755 --- a/cgi-bin/show_log.pl +++ b/cgi-bin/show_log.pl @@ -16,7 +16,8 @@ use CGI; use vars qw($dbhost $dbname $dbuser $dbpass $dbport $template_dir @log_file_names $local_git_clone); -require "$ENV{BFConfDir}/BuildFarmWeb.pl"; +use FindBin qw($RealBin); +require "$RealBin/../BuildFarmWeb.pl"; my $template_opts = { INCLUDE_PATH => $template_dir, EVAL_PERL => 1}; my $template = new Template($template_opts); @@ -38,6 +39,7 @@ my $conf = ""; my ($stage,$changed_this_run,$changed_since_success,$sysinfo,$branch,$scmurl); my $scm; my ($git_head_ref, $last_build_git_ref, $last_success_git_ref); +my ($stage_times, $run_time); use vars qw($info_row); @@ -57,16 +59,20 @@ if ($system && $logdate) }; my $last_build_statement = q{ - select distinct on (sysname) sysname, snapshot, stage, git_head_ref - from build_status - where sysname = ? and branch = ? and snapshot < ? - order by sysname, snapshot desc limit 1 + select git_head_ref + from build_status + where sysname = ? and branch = ? and snapshot = + (select max(snapshot) + from build_status + where sysname = ? and branch = ? and snapshot < ?) }; my $last_success_statement = q{ - select distinct on (sysname) sysname, snapshot, git_head_ref - from build_status - where sysname = ? and branch = ? and snapshot < ? and stage = 'OK' - order by sysname, snapshot desc limit 1 + select git_head_ref + from build_status + where sysname = ? and branch = ? and snapshot = + (select max(snapshot) + from build_status + where sysname = ? and branch = ? and snapshot < ? and stage = 'OK') }; my $sth=$db->prepare($statement); $sth->execute($system,$logdate); @@ -79,7 +85,7 @@ if ($system && $logdate) { $last_build_row = $db->selectrow_hashref($last_build_statement,undef, - $system,$branch,$logdate); + $system, $branch,$system,$branch,$logdate); $last_build_git_ref = $last_build_row->{git_head_ref} if $last_build_row; @@ -89,7 +95,7 @@ if ($system && $logdate) { $last_success_row = $db->selectrow_hashref($last_success_statement,undef, - $system,$branch,$logdate); + $system,$branch,$system,$branch,$logdate); $last_success_git_ref = $last_success_row->{git_head_ref} if $last_success_row; } @@ -102,6 +108,9 @@ if ($system && $logdate) $scm = $row->[7]; $scm ||= 'cvs'; # legacy scripts $scmurl = $row->[8]; + $scmurl = undef unless $scmurl =~ /^http/; # slight sanity check + $scmurl = 'http://git.postgresql.org/gitweb?p=postgresql.git;a=commit;h=' + if ($scmurl eq 'http://git.postgresql.org/git/postgresql.git'); $log_file_names =~ s/^\{(.*)\}$/$1/; @log_file_names=split(',',$log_file_names) if $log_file_names; @@ -111,7 +120,7 @@ if ($system && $logdate) select operating_system, os_version, compiler, compiler_version, architecture, - replace(owner_email,'\@',' [ a t ] ') as owner_email, + replace(owner_email,E'\@',' [ a t ] ') as owner_email, sys_notes_ts::date AS sys_notes_date, sys_notes from buildsystems where status = 'approved' @@ -135,6 +144,21 @@ if ($system && $logdate) $info_row->{compiler_version} = $latest_personality->[1]; } $sth->finish; + my $stage_times_query = q{ + select log_stage, stage_duration + from build_status_log + where sysname = ? and snapshot = ? + }; + $stage_times = + $db->selectall_hashref($stage_times_query,'log_stage',undef, + $system,$logdate); + $stage_times_query = q{ + select sum(stage_duration) + from build_status_log + where sysname = ? and snapshot = ? + }; + ($run_time) = $db->selectrow_array($stage_times_query,undef, + $system,$logdate); $db->disconnect; } @@ -157,6 +181,8 @@ $template->process('log.tt', system => $system, branch => $branch, stage => $stage, + stage_times => $stage_times, + run_time => $run_time, urldt => $logdate, log_file_names => \@log_file_names, conf => $conf, @@ -215,4 +241,3 @@ sub process_changed } return (\@changed_rows,\@commit_logs); } -