--- /dev/null
+#------------------------------------------------------------------------
+# Compiled template generated by the Template Toolkit version 2.14
+#------------------------------------------------------------------------
+
+Template::Document->new({
+ METADATA => {
+ 'modtime' => '1107104454',
+ 'name' => 'bfwrapper.tt',
+ },
+ BLOCK => sub {
+ my $context = shift || die "template sub called without context\n";
+ my $stash = $context->stash;
+ my $output = '';
+ my $error;
+
+ eval { BLOCK: {
+ $output .= "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n <meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n <title>PostgreSQL BuildFarm Status</title>\n <link rel=\"stylesheet\" rev=\"stylesheet\" href=\"/inc/pgbf.css\" charset=\"utf-8\"\n />\n <style type=\"text/css\"><!--\n li#status a { color:rgb(17,45,137); background: url(/inc/b/r.png) no-repeat \n100% -20px; } \n li#status { background: url(/inc/b/l.png) no-repeat 0% -20px; }\n --></style>\n</head>\n<body>\n<div id=\"wrapper\">\n<div id=\"banner\">\n<a href=\"/index.html\"><img src=\"/inc/pgbuildfarm-banner.png\" alt=\"PostgreSQL Bui\nldFarm\" width=\"800\" height=\"73\" /></a>\n<div id=\"nav\">\n<ul>\n <li id=\"home\"><a href=\"/index.html\" title=\"PostgreSQL BuildFarm Home\">Home</\na></li>\n <li id=\"status\"><a href=\"/cgi-bin/show_status.pl\" title=\"Current results\">St\natus</a></li>\n <li id=\"members\"><a href=\"/cgi-bin/show_members.pl\" title=\"Platforms tested\"\n>Members</a></li>\n <li id=\"register\"><a href=\"/register.html\" title=\"Join PostgreSQL BuildFarm\"\n>Register</a></li>\n <li id=\"pgfoundry\"><a href=\"http://pgfoundry.org/projects/pgbuildfarm/\">PGFo\nundry</a></li>\n <li id=\"postgresql.org\"><a href=\"http://www.postgresql.org\">PostgreSQL.org</\na></li>\n</ul>\n</div><!-- nav -->\n</div><!-- banner -->\n<div id=\"main\">\n";
+ #line 38 "/home/community/pgbuildfarm/templates/bfwrapper.tt"
+ $output .= $stash->get('content');
+ $output .= "\n</div><!-- main -->\n</div><!-- wrapper -->\n </body>\n</html>\n";
+ } };
+ if ($@) {
+ $error = $context->catch($@, \$output);
+ die $error unless $error->type eq 'return';
+ }
+
+ return $output;
+ },
+ DEFBLOCKS => {
+
+ },
+});
--- /dev/null
+#------------------------------------------------------------------------
+# Compiled template generated by the Template Toolkit version 2.14
+#------------------------------------------------------------------------
+
+Template::Document->new({
+ METADATA => {
+ 'modtime' => '1127835909',
+ 'name' => 'dashboard.tt',
+ },
+ BLOCK => sub {
+ my $context = shift || die "template sub called without context\n";
+ my $stash = $context->stash;
+ my $output = '';
+ my $error;
+
+ eval { BLOCK: {
+ #line 1 "/home/community/pgbuildfarm/templates/dashboard.tt"
+ $stash->set('flag_imgs', { 'perl' => '/img/camel.png', 'python' => '/img/python.png', 'debug' => '/img/bug.png', 'pam' => '/img/pam.png', 'cassert' => '/img/cassert.png', 'openssl' => '/img/ssl_icon.gif', 'nls' => '/img/translateicon.gif', 'krb5' => '/img/krb.gif', 'tcl' => '/img/tcl.png', 'thread-safety' => '/img/threads.gif', 'integer-datetimes' => '/img/days.png' });
+
+
+ $output .= "\n<div id=\"main\">\n <h1>PostgreSQL BuildFarm Status</h1>\n <p>\n Shown here is the latest status of each farm member \n for each branch it has reported on in the last 30 days.\n </p>\n <p>\n Use the farm member link for history of that member \n on the relevant branch.\n </p>\n<table><tr><th class=\"head\" rowspan=\"2\">Legend</th>\n";
+ #line 45 "/home/community/pgbuildfarm/templates/dashboard.tt"
+
+ # FOREACH
+ do {
+ my ($value, $error, $oldloop);
+ my $list = $stash->get('flag_imgs');
+
+ unless (UNIVERSAL::isa($list, 'Template::Iterator')) {
+ $list = Template::Config->iterator($list)
+ || die $Template::Config::ERROR, "\n";
+ }
+
+ ($value, $error) = $list->get_first();
+ eval { $oldloop = $stash->get('loop') };
+ $stash->set('loop', $list);
+ eval {
+ LOOP: while (! $error) {
+ $stash->{'flagset'} = $value;
+ $output .= "\n<td><img src=\"";
+ #line 43 "/home/community/pgbuildfarm/templates/dashboard.tt"
+ $output .= $stash->get(['flagset', 0, 'value', 0]);
+ $output .= "\" title=\"";
+ #line 43 "/home/community/pgbuildfarm/templates/dashboard.tt"
+ $output .= $stash->get(['flagset', 0, 'key', 0]);
+ $output .= "\" alt=\"";
+ #line 43 "/home/community/pgbuildfarm/templates/dashboard.tt"
+ $output .= $stash->get(['flagset', 0, 'key', 0]);
+ $output .= "\" height=\"16\" width=\"16\" class=\"inline\" align=\"center\"/> = ";
+ #line 43 "/home/community/pgbuildfarm/templates/dashboard.tt"
+ $output .= $stash->get(['flagset', 0, 'key', 0]);
+ $output .= "</td>\n";
+ #line 44 "/home/community/pgbuildfarm/templates/dashboard.tt"
+ if ($stash->get(['loop', 0, 'count', 0]) eq 5) {
+ $output .= "</tr><tr>";
+ }
+
+ $output .= "\n";;
+ ($value, $error) = $list->get_next();
+ }
+ };
+ $stash->set('loop', $oldloop);
+ die $@ if $@;
+ $error = 0 if $error && $error eq Template::Constants::STATUS_DONE;
+ die $error if $error;
+ };
+
+ $output .= "\n</tr></table>\n<br />\n <table cellspacing=\"0\">\n";
+ #line 49 "/home/community/pgbuildfarm/templates/dashboard.tt"
+ $stash->set('brch', '');
+ $output .= "\n";
+ #line 81 "/home/community/pgbuildfarm/templates/dashboard.tt"
+
+ # FOREACH
+ do {
+ my ($value, $error, $oldloop);
+ my $list = $stash->get('statrows');
+
+ unless (UNIVERSAL::isa($list, 'Template::Iterator')) {
+ $list = Template::Config->iterator($list)
+ || die $Template::Config::ERROR, "\n";
+ }
+
+ ($value, $error) = $list->get_first();
+ eval { $oldloop = $stash->get('loop') };
+ $stash->set('loop', $list);
+ eval {
+ LOOP: while (! $error) {
+ $stash->{'row'} = $value;
+ $output .= "\n";
+ #line 54 "/home/community/pgbuildfarm/templates/dashboard.tt"
+ if ($stash->get(['row', 0, 'branch', 0]) ne $stash->get('brch')) {
+ #line 51 "/home/community/pgbuildfarm/templates/dashboard.tt"
+ $stash->set('brch', $stash->get(['row', 0, 'branch', 0]));
+ $output .= "\n<tr><th class=\"head\" colspan=\"4\">Branch: ";
+ #line 52 "/home/community/pgbuildfarm/templates/dashboard.tt"
+ $output .= $stash->get('brch');
+ $output .= "</th></tr>\n<tr><th>Alias</th><th>System</th><th>Status</th><th>Flags</th></tr>\n";
+ }
+
+ $output .= "\n<tr ";
+ #line 55 "/home/community/pgbuildfarm/templates/dashboard.tt"
+ $output .= $context->process('cl', { 'bgfor' => $stash->get(['row', 0, 'stage', 0]) });
+ $output .= ">\n <td><a \n href=\"show_history.pl?nm=";
+ #line 57 "/home/community/pgbuildfarm/templates/dashboard.tt"
+ $output .= $stash->get(['row', 0, 'sysname', 0]);
+ $output .= "&br=";
+ #line 57 "/home/community/pgbuildfarm/templates/dashboard.tt"
+ $output .= $stash->get(['row', 0, 'branch', 0]);
+ $output .= "\"\n title=\"History\"\n >";
+ #line 59 "/home/community/pgbuildfarm/templates/dashboard.tt"
+ $output .= $stash->get(['row', 0, 'sysname', 0]);
+ $output .= "</a></td>\n <td><span class=\"opsys\">";
+ #line 60 "/home/community/pgbuildfarm/templates/dashboard.tt"
+ $output .= $stash->get(['row', 0, 'operating_system', 0]);
+ $output .= "\n ";
+ #line 61 "/home/community/pgbuildfarm/templates/dashboard.tt"
+ $output .= $stash->get(['row', 0, 'os_version', 0]);
+ $output .= "</span> <span class=\"compiler\">";
+ #line 63 "/home/community/pgbuildfarm/templates/dashboard.tt"
+ $output .= $stash->get(['row', 0, 'compiler', 0]);
+ $output .= "\n ";
+ #line 64 "/home/community/pgbuildfarm/templates/dashboard.tt"
+ $output .= $stash->get(['row', 0, 'compiler_version', 0]);
+ $output .= "</span> <span class=\"arch\">";
+ #line 66 "/home/community/pgbuildfarm/templates/dashboard.tt"
+ $output .= $stash->get(['row', 0, 'architecture', 0]);
+ $output .= "</span></td>\n <td class=\"status\">";
+ #line 69 "/home/community/pgbuildfarm/templates/dashboard.tt"
+
+ # FILTER
+ $output .= do {
+ my $output = '';
+ my $filter = $context->filter('replace', [ '\s', ' ' ])
+ || $context->throw($context->error);
+
+ $output .= $stash->get(['row', 0, 'when_ago', 0]);
+
+ &$filter($output);
+ };
+
+ $output .= " ago \n ";
+ #line 70 "/home/community/pgbuildfarm/templates/dashboard.tt"
+ $output .= $stash->get(['row', 0, 'stage', 0]);
+ $output .= " <a href=\"show_log.pl?nm=";
+ #line 73 "/home/community/pgbuildfarm/templates/dashboard.tt"
+ $output .= $stash->get(['row', 0, 'sysname', 0]);
+ $output .= "&dt=";
+ #line 75 "/home/community/pgbuildfarm/templates/dashboard.tt"
+
+ # FILTER
+ $output .= do {
+ my $output = '';
+ my $filter = $context->filter('uri')
+ || $context->throw($context->error);
+
+ $output .= $stash->get(['row', 0, 'snapshot', 0]);
+
+ &$filter($output);
+ };
+
+ $output .= "\">";
+ #line 77 "/home/community/pgbuildfarm/templates/dashboard.tt"
+ if ($stash->get(['row', 0, 'stage', 0]) ne 'OK') {
+ $output .= "Details";
+ }
+ else {
+ $output .= "Config";
+ }
+
+ $output .= "</a></td>\n\n <td class=\"flags\">";
+ #line 79 "/home/community/pgbuildfarm/templates/dashboard.tt"
+
+ # FOREACH
+ do {
+ my ($value, $error, $oldloop);
+ my $list = $stash->get(['row', 0, 'build_flags', 0, 'split', 0, 'sort', 0]);
+
+ unless (UNIVERSAL::isa($list, 'Template::Iterator')) {
+ $list = Template::Config->iterator($list)
+ || die $Template::Config::ERROR, "\n";
+ }
+
+ ($value, $error) = $list->get_first();
+ eval { $oldloop = $stash->get('loop') };
+ $stash->set('loop', $list);
+ eval {
+ LOOP: while (! $error) {
+ $stash->{'flag'} = $value;
+ #line 79 "/home/community/pgbuildfarm/templates/dashboard.tt"
+ $output .= $context->process('img');;
+ ($value, $error) = $list->get_next();
+ }
+ };
+ $stash->set('loop', $oldloop);
+ die $@ if $@;
+ $error = 0 if $error && $error eq Template::Constants::STATUS_DONE;
+ die $error if $error;
+ };
+
+ $output .= "</td>\n</tr>\n";;
+ ($value, $error) = $list->get_next();
+ }
+ };
+ $stash->set('loop', $oldloop);
+ die $@ if $@;
+ $error = 0 if $error && $error eq Template::Constants::STATUS_DONE;
+ die $error if $error;
+ };
+
+ $output .= "\n </table>\n</div>\n\n";
+ } };
+ if ($@) {
+ $error = $context->catch($@, \$output);
+ die $error unless $error->type eq 'return';
+ }
+
+ return $output;
+ },
+ DEFBLOCKS => {
+ 'cl' => sub {
+ my $context = shift || die "template sub called without context\n";
+ my $stash = $context->stash;
+ my $output = '';
+ my $error;
+
+ eval { BLOCK: {
+ $output .= " class=\"";
+ #line 27 "/home/community/pgbuildfarm/templates/dashboard.tt"
+
+ # SWITCH
+ do {
+ my $result = $stash->get('bgfor');
+ my $match;
+ SWITCH: {
+ $match = 'OK';
+ $match = [ $match ] unless ref $match eq 'ARRAY';
+ if (grep(/^$result$/, @$match)) {
+ $output .= "pass";
+ last SWITCH;
+ }
+ $match = 'ContribCheck';
+ $match = [ $match ] unless ref $match eq 'ARRAY';
+ if (grep(/^$result$/, @$match)) {
+ $output .= "warn";
+ last SWITCH;
+ }
+ $match = [ 'Check', 'InstallCheck' ];
+ $match = [ $match ] unless ref $match eq 'ARRAY';
+ if (grep(/^$result$/, @$match)) {
+ $output .= "warnx";
+ last SWITCH;
+ }
+ $output .= "fail";
+ }
+ };
+
+ $output .= "\"";
+ } };
+ if ($@) {
+ $error = $context->catch($@, \$output);
+ die $error unless $error->type eq 'return';
+ }
+
+ return $output;
+ },
+ 'img' => sub {
+ my $context = shift || die "template sub called without context\n";
+ my $stash = $context->stash;
+ my $output = '';
+ my $error;
+
+ eval { BLOCK: {
+ #line 22 "/home/community/pgbuildfarm/templates/dashboard.tt"
+ if ($stash->get('flag') eq 'depend' || $stash->get('flag') eq 'gnu-ld') {
+
+ }
+ elsif ($stash->get(['flag_imgs', 0, $stash->get('flag'), 0])) {
+ #line 22 "/home/community/pgbuildfarm/templates/dashboard.tt"
+
+ # FILTER
+ $output .= do {
+ my $output = '';
+ my $filter = $context->filter('collapse')
+ || $context->throw($context->error);
+
+ $output .= "<img src=\"";
+ #line 19 "/home/community/pgbuildfarm/templates/dashboard.tt"
+ $output .= $stash->get(['flag_imgs', 0, $stash->get('flag'), 0]);
+ $output .= "\" \n title=\"";
+ #line 20 "/home/community/pgbuildfarm/templates/dashboard.tt"
+ $output .= $stash->get('flag');
+ $output .= "\" alt=\"";
+ #line 20 "/home/community/pgbuildfarm/templates/dashboard.tt"
+ $output .= $stash->get('flag');
+ $output .= "\" \n height=\"16\" width=\"16\" class=\"inline\" align=\"bottom\" /> \n ";
+
+ &$filter($output);
+ };
+
+ }
+
+ } };
+ if ($@) {
+ $error = $context->catch($@, \$output);
+ die $error unless $error->type eq 'return';
+ }
+
+ return $output;
+ },
+ },
+});
--- /dev/null
+[%- BLOCK cl %] class="[% SWITCH bgfor -%]
+ [%- CASE 'OK' %]pass[% CASE 'ContribCheck' %]warn[% CASE [ 'Check' 'InstallCheck' ] %]warnx[% CASE %]fail[% END %]"
+[%- END -%]
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+ <title>PostgreSQL BuildFarm History</title>
+ <link rel="stylesheet" rev="stylesheet" href="/inc/pgbf.css" charset="utf-8" />
+ <style type="text/css"><!--
+ li#status a { color:rgb(17,45,137); background: url(/inc/b/r.png) no-repeat 100% -20px; }
+ li#status { background: url(/inc/b/l.png) no-repeat 0% -20px; }
+ --></style>
+</head>
+<body class="history">
+<div id="wrapper">
+<div id="banner">
+<a href="/index.html"><img src="/inc/pgbuildfarm-banner.png" alt="PostgreSQL BuildFarm" width="800" height="73" /></a>
+<div id="nav">
+<ul>
+ <li id="home"><a href="/index.html" title="PostgreSQL BuildFarm Home">Home</a></li>
+ <li id="status"><a href="/cgi-bin/show_status.pl" title="Current results">Status</a></li>
+ <li id="members"><a href="/cgi-bin/show_members.pl" title="Platforms tested">Members</a></li>
+ <li id="register"><a href="/cgi-bin/register-form.pl" title="Join PostgreSQL BuildFarm">Register</a></li>
+ <li id="pgfoundry"><a href="http://pgfoundry.org/projects/pgbuildfarm/">PGFoundry</a></li>
+</ul>
+</div><!-- nav -->
+</div><!-- banner -->
+<div id="main">
+<h1>PostgreSQL BuildFarm Status History</h1>
+<table cellspacing="0">
+ <tr><th class="head" colspan="3">System Detail</th></tr>
+ <tr class="member"><th>Farm member</th><td>[% member %]</td></tr>
+ <tr><th>OS</th><td>[% statrows.0.operating_system %] [% statrows.0.os_version %]</td></tr>
+<!-- <tr><th>OS Version</th><td>[% statrows.0.os_version %]</td></tr> -->
+ <tr><th>Compiler</th><td>[% statrows.0.compiler %] [% statrows.0.compiler_version %]</td></tr>
+<!-- <tr><th>Compiler Version</th><td>[% statrows.0.compiler_version %]</td></tr> -->
+ <tr><th>Architecture</th><td>[% statrows.0.architecture %]</td></tr>
+ </table>
+ <h3>Branch: [% branch %][% IF statrows.size >= 240 %] (last 240 entries shown)[% END %]</h3>
+[% BLOCK stdet %]
+<tr [% PROCESS cl bgfor=row.stage %]>
+ <td>[%- row.when_ago | replace('\s',' ') %] ago </td>
+ <td class="status">[% row.stage -%]</td>
+ <td class="status"><a href="show_log.pl?nm=
+ [%- row.sysname %]&dt=
+ [%- row.snapshot | uri %]">
+ [%- IF row.stage != 'OK' %]Details[% ELSE %]Config[% END -%]</a></td>
+
+</tr>
+[% END %]
+<table border="0"> <tr>
+[% FOREACH offset IN [0,1,2] %][% low = offset * statrows.size / 3 ; high = -1 + (offset + 1) * statrows.size / 3 %]
+[% TRY %][% PERL %]
+ use POSIX qw(floor);
+ $stash->set(low => floor($stash->get('low')));
+ $stash->set(high => floor($stash->get('high')));
+[% END %][% CATCH %]<!-- [% error.info %] --> [% END %]
+ <td><table cellspacing="0">
+<!-- <tr><th colspan=3>low = [% low %], high = [% high %]</th></tr> -->
+ [% FOREACH xrow IN statrows.slice(low,high) %][% PROCESS stdet row=xrow %][% END %]
+ </table></td>
+[% END %]
+</table>
+ </div><!-- main -->
+ </div><!-- wrapper -->
+ </body>
+</html>
--- /dev/null
+[%- BLOCK cl %] class=" [% SWITCH bgfor -%]
+ [%- CASE 'OK' %]pass[% CASE 'ContribCheck' %]warn[% CASE [ 'Check' 'InstallCheck' ] %]warnx[% CASE %]fail[% END %]"
+[%- END -%]
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+ <title>PostgreSQL BuildFarm Status</title>
+ <link rel="stylesheet" rev="stylesheet" href="/inc/pgbf.css" charset="utf-8" />
+ <style type="text/css"><!--
+ li#status a { color:rgb(17,45,137); background: url(/inc/b/r.png) no-repeat 100% -20px; }
+ li#status { background: url(/inc/b/l.png) no-repeat 0% -20px; }
+ --></style>
+</head>
+<body>
+<div id="wrapper">
+<div id="banner">
+<a href="/index.html"><img src="/inc/pgbuildfarm-banner.png" alt="PostgreSQL BuildFarm" width="800" height="73" /></a>
+<div id="nav">
+<ul>
+ <li id="home"><a href="/index.html" title="PostgreSQL BuildFarm Home">Home</a></li>
+ <li id="status"><a href="/cgi-bin/show_status.pl" title="Current results">Status</a></li>
+ <li id="members"><a href="/cgi-bin/show_members.pl" title="Platforms tested">Members</a></li>
+ <li id="register"><a href="/cgi-bin/register-form.pl" title="Join PostgreSQL BuildFarm">Register</a></li>
+ <li id="pgfoundry"><a href="http://pgfoundry.org/projects/pgbuildfarm/">PGFoundry</a></li>
+ <li id="postgresql.org"><a href="http://www.postgresql.org">PostgreSQL.org</a></li>
+</ul>
+</div><!-- nav -->
+</div><!-- banner -->
+<div id="main">
+ <h1>PostgreSQL BuildFarm Status</h1>
+ <p>
+ Shown here is the latest status of each farm member
+ for each branch it has reported on in the last 30 days.
+ </p>
+ <p>
+ Use the farm member link for history of that member
+ on the relevant branch.
+ </p>
+ <table cellspacing="0">
+[% brch = "" %]
+[% FOREACH row IN statrows %]
+[% IF row.branch != brch ; brch = row.branch %]
+<tr><th class="head" colspan="3">Branch: [% brch %]</th></tr>
+<tr><th>Alias</th><th>System</th><th>Status</th></tr>
+[% END %]
+<tr [% PROCESS cl bgfor=row.stage %]>
+ <td><a
+ href="show_history.pl?nm=[% row.sysname %]&br=[% row.branch %]"
+ title="History"
+ >[% row.sysname %]</a></td>
+ <td><span class="opsys">[% row.operating_system %]
+ [% row.os_version %]</span> <span class="compiler">
+ [%- row.compiler %]
+ [% row.compiler_version %]</span> <span class="arch">
+ [%- row.architecture %]</span></td>
+ <td class="status">
+ [%- row.when_ago | replace('\s',' ') %] ago
+ [% row.stage -%]
+ <a href="show_log.pl?nm=
+ [%- row.sysname %]&dt=
+ [%- row.snapshot | uri %]">
+ [%- IF row.stage != 'OK' %]Details[% ELSE %]Config[% END -%]</a></td>
+
+</tr>
+[% END %]
+ </table>
+</div><!-- main -->
+</div><!-- wrapper -->
+ </body>
+</html>
+
+
+
+
+
+
+
+
--- /dev/null
+[%- BLOCK cl %] class="[% SWITCH bgfor -%]
+ [%- CASE 'OK' %]pass[% CASE 'ContribCheck' %]warn[% CASE [ 'Check' 'InstallCheck' ] %]warnx[% CASE %]fail[% END %]"
+[%- END -%]
+[% WRAPPER 'page.tt'
+ title = 'PostgreSQL BuildFarm History'
+ bodyclass = 'history'
+ pagebutton = 'none'
+%]
+<h1>PostgreSQL BuildFarm Status History</h1>
+ <table cellspacing="0">
+ <tr><th class="head" colspan="3">System Detail</th></tr>
+ <tr class="member"><th>Farm member</th><td>[% member %]</td></tr>
+ <tr><th>OS</th><td>[% statrows.0.operating_system %] [% statrows.0.os_version %]</td></tr>
+ <tr><th>Compiler</th><td>[% statrows.0.compiler %] [% statrows.0.compiler_version %]</td></tr>
+ <tr><th>Architecture</th><td>[% statrows.0.architecture %]</td></tr>
+ <tr><th>Owner</th><td>[% statrows.0.owner_email %]</td></tr>
+ </table>
+[% IF statrows.0.sys_notes %]
+ <br />
+ <table>
+ <tr>
+ <th class="head" rowspan="2">System Notes</th>
+ <th>Date</th>
+ <th>Notes</th>
+ </tr>
+ <tr>
+ <td>[% statrows.0.sys_notes_date %]</td>
+ <td>[% statrows.0.sys_notes %]</td>
+ </tr>
+ </table>
+[% END %]
+ <h3>Branch: [% branch %][% IF statrows.size >= hm %] (last [% hm %] entries shown)[% END %]</h3>
+[% BLOCK stdet %]
+ <tr [% PROCESS cl bgfor=row.stage %]>
+ <td>[%- row.when_ago | replace('\s',' ') %] ago </td>
+ <td class="status">[% row.stage -%]</td>
+ <td class="status"><a href="show_log.pl?nm=
+ [%- row.sysname %]&dt=
+ [%- row.snapshot | uri %]">
+ [%- IF row.stage != 'OK' %]Details[% ELSE %]Config[% END -%]</a></td>
+
+ </tr>
+[% END %]
+<table border="0"> <tr>
+ [% FOREACH offset IN [0,1,2] %][% low = offset * statrows.size / 3 ; high = -1 + (offset + 1) * statrows.size / 3 %]
+ [% TRY %][% PERL %]
+ use POSIX qw(floor);
+ $stash->set(low => floor($stash->get('low')));
+ $stash->set(high => floor($stash->get('high')));
+ [% END %][% CATCH %]<!-- [% error.info %] --> [% END %]
+ <td><table cellspacing="0">
+ [% FOREACH xrow IN statrows.slice(low,high) %][% PROCESS stdet row=xrow %][% END %]
+ </table></td>
+ [% END %]
+</table>
+[% END %]
--- /dev/null
+[%#
+
+ Use this template to generate the index page, with something like:
+
+ tpage index.tt > ../htdocs/index.html
+
+-%]
+[% WRAPPER 'page.tt'
+ title = 'PostgreSQL BuildFarm'
+ bodyclass = 'none'
+ pagebutton = 'home'
+%]
+<!-- html generated from index.tt -->
+<p>
+The PostgreSQL build farm is a distributed system for automatically testing
+changes in the source code for PostgreSQL as they occur, on a wide variety
+of platforms. This server is the central repository for the results of those
+tests.
+</p>
+<p>
+To see the current status of tests on various branches, check the
+<a href="/cgi-bin/show_status.pl" title="Status Page">Status Page</a>.
+</p>
+<p>
+If you are interested in running a member of the build farm, then please visit
+the <a href="/cgi-bin/register-form.pl" title="Register">Registration Page</a>.
+We are particularly interested in unusual platforms or combinations of
+architecture, operating system and compiler.
+</p>
+<p>To see what is involved in running a buildfarm member, please
+read <a href="http://wiki.postgresql.org/wiki/PostgreSQL_Buildfarm_Howto">http://wiki.postgresql.org/wiki/PostgreSQL_Buildfarm_Howto</a>.
+The client code can be found at the
+<a href="http://pgfoundry.org/projects/pgbuildfarm/">project page</a> at
+<a href="http://pgfoundry.org/">PGFoundry</a>.
+</p>
+<p>The build farm software should run on all platforms that can support PostgreSQL.
+</p>
+[% END %]
--- /dev/null
+[% PERL %]
+ use POSIX qw(ceil);
+ my $lrfactor = 6;
+ $stash->set(lrfactor => $lrfactor);
+ my $rows = $stash->get('log_file_names');
+ my $logrows = ceil(scalar(@$rows)/$lrfactor);
+ my $logcells = $lrfactor * $logrows;
+ $stash->set( logcells => $logcells);
+ $stash->set( logrows => $logrows );
+[% END -%]
+[% mytitle = BLOCK %]PostgreSQL BuildFarm | [% IF stage != 'OK' %]Log for system "[% system %]" failure on snapshot taken [% urldt ; ELSE %]Configuration summary for system "[% system %]" snapshot taken [% urldt ; END ; END -%]
+[%
+ cvsurl = 'http://anoncvs.postgresql.org/cvsweb.cgi';
+ giturl = scmurl || 'http://git.postgresql.org/gitweb?p=postgresql.git;a=commit;h=';
+-%]
+[% WRAPPER 'page.tt'
+ title = mytitle
+ bodyclass = 'none'
+ pagebutton = 'none'
+%]
+<h1>PostgreSQL Build Farm Log</h1>
+<h2>Details for system "[% system %]"[% IF stage != 'OK' %] failure at stage [% stage ; ELSE %], status 'OK'[% END %], snapshot taken [% urldt %]</h2>
+<table cellspacing="0">
+ <tr>
+ <th class="head" rowspan="2">System Information</th>
+ <th>Farm member</th>
+ <th>Branch</th>
+ <th>OS</th>
+ <th>Compiler</th>
+ <th>Architecture</th>
+ <th>Owner</th>
+ </tr>
+ <tr>
+ <td>[% system %]</td>
+ <td><a href="/cgi-bin/show_history.pl?nm=[% system %]&br=[% branch %]">[% branch %]</a></td>
+ <td>[% info_row.operating_system %] [% info_row.os_version %]</td>
+ <td>[% info_row.compiler %] [% info_row.compiler_version %]</td>
+ <td>[% info_row.architecture %]</td>
+ <td>[% info_row.owner_email %]</td>
+ </tr>
+ </table>
+[% IF info_row.sys_notes %]
+ <br />
+ <table>
+ <tr>
+ <th class="head" rowspan="2">System Notes</th>
+ <th>Date</th>
+ <th>Notes</th>
+ </tr>
+ <tr>
+ <td>[% info_row.sys_notes_date %]</td>
+ <td>[% info_row.sys_notes %]</td>
+ </tr>
+ </table>
+[% END %]
+[% cell = 0; FOREACH logstage IN log_file_names ; striplog = logstage.replace('\.log$','') ; cell = loop.count %]
+ [% IF loop.first %]
+ <br /> <table><tr><th class='head' rowspan='[% logrows %]'>Stage Logs</th>
+ [% END %]
+ [% IF loop.count > 1 and loop.count % lrfactor == 1 %]<tr>[% END %]
+ <td><a href='show_stage_log.pl?nm=[% system %]&dt=[% urldt | uri %]&stg=[% striplog %]'>[% striplog %]</a></td>
+ [% IF loop.count % lrfactor == 0 %]</tr>[% END %]
+[% END %]
+
+[% IF cell > 0 ; nrcell = cell + 1; ncells = [ nrcell .. logcells ] ; FOREACH rcell IN ncells %]
+ [% IF rcell > 1 and rcell % lrfactor == 1 %]<tr>[% END %]
+ <td> </td>
+ [% IF rcell % lrfactor == 0 %]</tr>[% END %]
+ [% END %]
+ </table>
+[% END %]
+
+<h3>Configuration summary</h3>
+<pre>
+[% conf | html %]
+</pre>
+<h3>Files changed this run</h3>
+<pre>
+[%- IF changed_this_run.0 -%]
+[%- FOREACH changed IN changed_this_run %]
+<a href="[% IF scm == 'git' ; giturl; changed.1; ELSE ; cvsurl ; changed.0; 'rev='; changed.1; END %]">[% changed.0 ; IF scm == 'cvs'; ' '; changed.1; END %]</a>
+[%- END -%]
+[%- ELSE %]
+not recorded
+[% END -%]
+</pre>
+[% IF stage != 'OK' %]
+<h3>Files changed since last success</h3>
+<pre>
+[%- IF changed_since_success.0 %]
+[%- FOREACH changed IN changed_since_success %]
+<a href="[% IF scm == 'git' ; giturl; changed.1; ELSE ; cvsurl ; changed.0; 'rev='; changed.1; END %]">[% changed.0 ; IF scm == 'cvs'; ' '; changed.1; END %]</a>
+[%- END -%]
+[%- ELSE %]
+not recorded
+[% END -%]
+</pre>
+[% END %]
+<h3>Log</h3>
+<pre>
+[% log | html %]
+</pre>
+[% END %]
--- /dev/null
+[% WRAPPER 'page.tt'
+ title = 'PostgreSQL BuildFarm Members'
+ bodyclass = 'members'
+ pagebutton = 'members'
+%]
+<h1>PostgreSQL BuildFarm Members</h1>
+ <p>Click branch links to see build history. Click the heading links to resort the list. Select members by checkbox and hit the button at the bottom to create a status custom filter.</p>
+ <form name="filter" method="GET" action="/cgi-bin/show_status.pl">
+ <table cellspacing="0">
+ <tr>
+ <td> </td>
+ <th><a href="/cgi-bin/show_members.pl?sort_by=name">Name</a><br /><a href="/cgi-bin/show_members.pl?sort_by=owner">Owner</a></th>
+ <th><a href="/cgi-bin/show_members.pl?sort_by=os">OS / Version</a></th>
+ <th><a href="/cgi-bin/show_members.pl?sort_by=compiler">Compiler / Version</a></th>
+ <th><a href="/cgi-bin/show_members.pl?sort_by=arch">Arch</a></th>
+ <th>Branches reported on<br />(most recent report)</th>
+ </tr>
+[% alt = true %]
+[% FOREACH row IN statrows ;
+ have_recent = 0;
+ FOREACH branch_days IN row.branches.split(',') ;
+ branch_fields = branch_days.split(':');
+ branch_day = branch_fields.1;
+ IF branch_day < 365 ; have_recent = 1; END;
+ END;
+ IF have_recent ;
+%] <tr [%- IF alt %]class="alt"[% END -%]>
+ [% alt = ! alt %]
+ <td><input type="checkbox" name="member" value="[% row.name %]" /></td>
+ <td>[% row.name %]<br />[% row.owner_email %]
+[% IF row.sys_notes %]
+ <br />
+ Notes: ([% row.sys_notes_date %]) [% row.sys_notes %]
+[% END %]
+ </td>
+ <td>[% row.operating_system %]<br />[% row.os_version %]
+ [% prev_osver = row.osversion;
+ FOREACH personality IN row.personalities;
+ IF personality.os_version != prev_osver
+ %]
+ <br / > w.e.f. [% personality.effective_date %]: [% personality.os_version %]
+ [% prev_osver = personality.os_version; END; END %]
+ </td>
+ <td>[% row.compiler %]<br />[% row.compiler_version %]
+ [% prev_compver = row.compiler_version;
+ FOREACH personality IN row.personalities;
+ IF personality.compiler_version != prev_compver
+ %]
+ <br / > w.e.f. [% personality.effective_date %]: [% personality.compiler_version %]
+ [% prev_compver = personality.compiler_version; END; END %]
+ </td>
+ <td>[% row.arch %]</td>
+ <td class="branch">[% IF ! row.branches ; ' ' ; END -%]
+ <ul>
+ [%-
+ FOREACH branch_days IN row.branches.split(',') ;
+ branch_fields = branch_days.split(':');
+ branch = branch_fields.0;
+ branch_day = branch_fields.1;
+ IF branch_day < 365 ;
+ %]<li><a
+ href="show_history.pl?nm=[% row.name %]&br=[% branch %]"
+ title="History"
+ >[% branch %]</a> ([% branch_day %] days ago)</li>[% END; END %]</ul></td>
+ </tr>
+[% END; END %]
+ </table>
+ <input type="submit" value="Make Filter" />
+ </form>
+[% END %]
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+ <title>[% title %]</title>
+ <link rel="icon" type="image/png" href="/elephant-icon.png" />
+ <link rel="stylesheet" rev="stylesheet" href="/inc/pgbf.css" charset="utf-8" />
+ <style type="text/css"><!--
+ li#[% pagebutton %] a { color:rgb(17,45,137); background: url(/inc/b/r.png) no-repeat 100% -20px; }
+ li#[% pagebutton %] { background: url(/inc/b/l.png) no-repeat 0% -20px; }
+ --></style>
+ </head>
+ <body class="[% bodyclass %]">
+ <div id="wrapper">
+ <div id="banner">
+ <a href="/index.html"><img src="/inc/pgbuildfarm-banner.png" alt="PostgreSQL BuildFarm" width="800" height="73" /></a>
+ <div id="nav">
+ <ul>
+ <li id="home"><a href="/index.html" title="PostgreSQL BuildFarm Home">Home</a></li>
+ <li id="status"><a href="/cgi-bin/show_status.pl" title="Current results">Status</a></li>
+ <li id="members"><a href="/cgi-bin/show_members.pl" title="Platforms tested">Members</a></li>
+ <li id="register"><a href="/cgi-bin/register-form.pl" title="Join PostgreSQL BuildFarm">Register</a></li>
+ <li id="pgfoundry"><a href="http://pgfoundry.org/projects/pgbuildfarm/">PGFoundry</a></li>
+ </ul>
+ </div><!-- nav -->
+ </div><!-- banner -->
+ <div id="main">
+ [% content %]
+ </div><!-- main -->
+ <hr />
+ <p style="text-align: center;">
+ Hosting for the PostgreSQL Buildfarm is generously
+ provided by:
+ <a href="http://www.commandprompt.com">CommandPrompt, The PostgreSQL Company</a>
+ </p>
+ </div><!-- wrapper -->
+ </body>
+</html>
--- /dev/null
+[% WRAPPER 'page.tt'
+ title = 'PostgreSQL BuildFarm Application'
+ bodyclass = 'application'
+ pagebutton = 'register'
+%]
+<h1>Application to join PostgreSQL BuildFarm</h1>
+
+<p>Here is a short description of what is required to join the buildfarm successfully. Please read it carefully
+before submitting this form.</p>
+
+<ul>
+<li> your machine will need to be able to contact <a href="http://www.pgbuildfarm.org">http://www.pgbuildfarm.org</a>
+ either directly or via proxy, and it will need access to a PostgreSQL CVS repository,
+ either the one at postgresql.org or a mirror (you can set up your own mirror using CSVup on a Linux or FreeBSD machine -
+ this is recommended).</li>
+<li> have a working Postgresql build environment for your platform
+ (for Windows this means MSys/MinGW with the libz and libintl stuff, and ideally native Python and Tcl).</li>
+<li> Windows only: you will need a native perl installed as well as the one in the MSys DTK. The one from ActiveState works fine.</li>
+<li> download and unpack the latest release of client code from
+ <a href="http://pgfoundry.org/frs/?group_id=1000040">http://pgfoundry.org/frs/?group_id=1000040</a></li>
+<li> read instructions at
+ <a href="http://wiki.postgresql.org/wiki/PostgreSQL_Buildfarm_Howto">http://wiki.postgresql.org/wiki/PostgreSQL_Buildfarm_Howto</a></li>
+<li> get the software running locally using flags --force --nostatus --nosend</li>
+<li> register your machine on this page</li>
+<li> when you receive credentials, put them in the config file, and schedule regular builds (without those flags)
+ for the branches you want to support - which should be at least HEAD and the most recent stable branch.</li>
+</ul>
+<hr />
+
+<p>Please complete all items.</p>
+<p>For Linux, please specify the name and version of the <b>Distribution</b> for the Operating Systems items.
+Do not use the name "Linux". For example, for my test machine the Operating
+Systems is "Fedora Core" and the version is "4".</p>
+<form method="post" action="/cgi-bin/register.pl">
+<table cellspacing="0">
+<tr>
+ <th>Operating System</th>
+ <td><input type="text" name="os" value="" /></td>
+</tr>
+<tr>
+ <th>OS Version</th>
+ <td><input type="text" name="osv" value="" /></td>
+</tr>
+<tr>
+ <th>Compiler</th>
+ <td><input type="text" name="comp" value="" /></td>
+</tr>
+<tr>
+ <th>Compiler Version</th>
+ <td><input type="text" name="compv" value="" /></td>
+</tr>
+<tr>
+ <th>Architecture</th>
+ <td><input type="text" name="arch" value="" /></td>
+</tr>
+<tr>
+ <th>Your name</th>
+ <td><input type="text" name="owner" value="" /></td>
+</tr>
+<tr>
+ <th>Your email address</th>
+ <td><input type="text" name="email" value="" /></td>
+</tr>
+<tr>
+<th colspan="2">[% captcha %]</th>
+</tr>
+<tr>
+ <th class="submit" colspan="2"><input type="submit" /></th>
+</tr>
+</table>
+</form>
+[% END %]
--- /dev/null
+[% WRAPPER 'page.tt'
+ title = 'PostgreSQL BuildFarm Application'
+ bodyclass = 'application'
+ pagebutton = 'none'
+%]
+<p>You need to complete all the form items.
+<a href="/cgi-bin/register-form.pl">Please click here to try again.</a>
+</p>
+[% END %]
--- /dev/null
+[% WRAPPER 'page.tt'
+ title = 'PostgreSQL BuildFarm Application'
+ bodyclass = 'application'
+ pagebutton = 'none'
+%]
+<h1>PostgreSQL BuildFarm Application received</h1>\
+<p>Thank you. You should hear from us shortly.</p>
+[% END %]
--- /dev/null
+[%
+ flag_imgs = {
+ perl = '/img/camel.png',
+ python = '/img/python.png',
+ debug = '/img/bug.png',
+ pam => '/img/pam.png',
+ cassert => '/img/cassert.png',
+ openssl => '/img/ssl_icon.gif',
+ nls => '/img/translateicon.gif',
+ krb5 => '/img/krb.gif',
+ tcl => '/img/tcl.png',
+ vpath => '/img/vpath.png',
+ xml => '/img/xml.png',
+ 'thread-safety' => '/img/threads.gif',
+ 'integer-datetimes' = '/img/days.png',
+ git => '/img/git.png',
+ }
+-%]
+[%- BLOCK img ; IF flag == 'depend' or flag == 'gnu-ld' ; ; ELSIF flag_imgs.$flag %]<img src="[% flag_imgs.$flag %]" title="[% flag %]" alt="[% flag %]" height="16" width="16" class="inline" align="bottom" /> [% ELSE %][%#
+ flag ; ' '
+%][% END ; END -%]
+[%- BLOCK sysnotes ; IF row.sys_notes %]<img src="/img/notes.png" height="16" width="16" title="[% row.sys_notes_ts.replace(' .*','') | html %]: [% row.sys_notes | html %]" />
+[%- ELSE %] [% END ; END -%]
+[%- BLOCK cl %] class="[% SWITCH bgfor.replace('-.*','') -%]
+ [%- CASE 'OK' %]pass[% CASE 'ContribCheck' %]warn[% CASE [ 'Check' 'InstallCheck' ] %]warnx[% CASE %]fail[% END %]"
+[%- END -%]
+[% WRAPPER 'page.tt'
+ title = 'PostgreSQL BuildFarm Status'
+ bodyclass = 'none'
+ pagebutton = 'status'
+%]
+ <h1>PostgreSQL BuildFarm Status</h1>
+ <p>
+ Shown here is the latest status of each farm member
+ for each branch it has reported on in the last 30 days.
+ </p>
+ <p>
+ Use the farm member link for history of that member
+ on the relevant branch.
+ </p>
+<table><tr><th class="head" rowspan="2">Legend</th>
+[% FOREACH flagset IN flag_imgs %]
+<td><img src="[% flagset.value %]" title="[% flagset.key %]" alt="[% flagset.key %]" height="16" width="16" class="inline" align="center"/> = [% flagset.key %]</td>
+[% IF loop.count == 7 %]</tr><tr>[% END %]
+[% END %]
+</tr></table>
+<br />
+ <table cellspacing="0">
+[% brch = "" %]
+[% FOREACH row IN statrows %]
+[% IF row.branch != brch ; brch = row.branch %]
+<tr><th class="head" colspan="5">Branch: [% brch %]</th></tr>
+<tr><th colspan="2">Alias</th><th>System</th><th>Status</th><th>Flags</th></tr>
+[% END %]
+<tr [% PROCESS cl bgfor=row.stage %]>
+ <td><a
+ href="show_history.pl?nm=[% row.sysname %]&br=[% row.branch %]"
+ title="History"
+ >[% row.sysname %]</a></td>
+ <td>[% PROCESS sysnotes %]</td>
+ <td><span class="opsys">[% row.operating_system %]
+ [% row.os_version %]</span> <span class="compiler">
+ [%- row.compiler %]
+ [% row.compiler_version %]</span> <span class="arch">
+ [%- row.architecture %]</span></td>
+ <td class="status">
+ [%- row.when_ago | replace('\s',' ') %] ago
+ [% row.stage -%]
+ <a href="show_log.pl?nm=
+ [%- row.sysname %]&dt=
+ [%- row.snapshot | uri %]">
+ [%- IF row.stage != 'OK' %]Details[% ELSE %]Config[% END -%]</a></td>
+
+ <td class="flags">[% FOREACH flag IN row.build_flags.split().sort() ; PROCESS img ; END %]</td>
+</tr>
+[% END %]
+ </table>
+[% END %]
+++ /dev/null
-#------------------------------------------------------------------------
-# Compiled template generated by the Template Toolkit version 2.14
-#------------------------------------------------------------------------
-
-Template::Document->new({
- METADATA => {
- 'modtime' => '1107104454',
- 'name' => 'bfwrapper.tt',
- },
- BLOCK => sub {
- my $context = shift || die "template sub called without context\n";
- my $stash = $context->stash;
- my $output = '';
- my $error;
-
- eval { BLOCK: {
- $output .= "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n <meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n <title>PostgreSQL BuildFarm Status</title>\n <link rel=\"stylesheet\" rev=\"stylesheet\" href=\"/inc/pgbf.css\" charset=\"utf-8\"\n />\n <style type=\"text/css\"><!--\n li#status a { color:rgb(17,45,137); background: url(/inc/b/r.png) no-repeat \n100% -20px; } \n li#status { background: url(/inc/b/l.png) no-repeat 0% -20px; }\n --></style>\n</head>\n<body>\n<div id=\"wrapper\">\n<div id=\"banner\">\n<a href=\"/index.html\"><img src=\"/inc/pgbuildfarm-banner.png\" alt=\"PostgreSQL Bui\nldFarm\" width=\"800\" height=\"73\" /></a>\n<div id=\"nav\">\n<ul>\n <li id=\"home\"><a href=\"/index.html\" title=\"PostgreSQL BuildFarm Home\">Home</\na></li>\n <li id=\"status\"><a href=\"/cgi-bin/show_status.pl\" title=\"Current results\">St\natus</a></li>\n <li id=\"members\"><a href=\"/cgi-bin/show_members.pl\" title=\"Platforms tested\"\n>Members</a></li>\n <li id=\"register\"><a href=\"/register.html\" title=\"Join PostgreSQL BuildFarm\"\n>Register</a></li>\n <li id=\"pgfoundry\"><a href=\"http://pgfoundry.org/projects/pgbuildfarm/\">PGFo\nundry</a></li>\n <li id=\"postgresql.org\"><a href=\"http://www.postgresql.org\">PostgreSQL.org</\na></li>\n</ul>\n</div><!-- nav -->\n</div><!-- banner -->\n<div id=\"main\">\n";
- #line 38 "/home/community/pgbuildfarm/templates/bfwrapper.tt"
- $output .= $stash->get('content');
- $output .= "\n</div><!-- main -->\n</div><!-- wrapper -->\n </body>\n</html>\n";
- } };
- if ($@) {
- $error = $context->catch($@, \$output);
- die $error unless $error->type eq 'return';
- }
-
- return $output;
- },
- DEFBLOCKS => {
-
- },
-});
+++ /dev/null
-#------------------------------------------------------------------------
-# Compiled template generated by the Template Toolkit version 2.14
-#------------------------------------------------------------------------
-
-Template::Document->new({
- METADATA => {
- 'modtime' => '1127835909',
- 'name' => 'dashboard.tt',
- },
- BLOCK => sub {
- my $context = shift || die "template sub called without context\n";
- my $stash = $context->stash;
- my $output = '';
- my $error;
-
- eval { BLOCK: {
- #line 1 "/home/community/pgbuildfarm/templates/dashboard.tt"
- $stash->set('flag_imgs', { 'perl' => '/img/camel.png', 'python' => '/img/python.png', 'debug' => '/img/bug.png', 'pam' => '/img/pam.png', 'cassert' => '/img/cassert.png', 'openssl' => '/img/ssl_icon.gif', 'nls' => '/img/translateicon.gif', 'krb5' => '/img/krb.gif', 'tcl' => '/img/tcl.png', 'thread-safety' => '/img/threads.gif', 'integer-datetimes' => '/img/days.png' });
-
-
- $output .= "\n<div id=\"main\">\n <h1>PostgreSQL BuildFarm Status</h1>\n <p>\n Shown here is the latest status of each farm member \n for each branch it has reported on in the last 30 days.\n </p>\n <p>\n Use the farm member link for history of that member \n on the relevant branch.\n </p>\n<table><tr><th class=\"head\" rowspan=\"2\">Legend</th>\n";
- #line 45 "/home/community/pgbuildfarm/templates/dashboard.tt"
-
- # FOREACH
- do {
- my ($value, $error, $oldloop);
- my $list = $stash->get('flag_imgs');
-
- unless (UNIVERSAL::isa($list, 'Template::Iterator')) {
- $list = Template::Config->iterator($list)
- || die $Template::Config::ERROR, "\n";
- }
-
- ($value, $error) = $list->get_first();
- eval { $oldloop = $stash->get('loop') };
- $stash->set('loop', $list);
- eval {
- LOOP: while (! $error) {
- $stash->{'flagset'} = $value;
- $output .= "\n<td><img src=\"";
- #line 43 "/home/community/pgbuildfarm/templates/dashboard.tt"
- $output .= $stash->get(['flagset', 0, 'value', 0]);
- $output .= "\" title=\"";
- #line 43 "/home/community/pgbuildfarm/templates/dashboard.tt"
- $output .= $stash->get(['flagset', 0, 'key', 0]);
- $output .= "\" alt=\"";
- #line 43 "/home/community/pgbuildfarm/templates/dashboard.tt"
- $output .= $stash->get(['flagset', 0, 'key', 0]);
- $output .= "\" height=\"16\" width=\"16\" class=\"inline\" align=\"center\"/> = ";
- #line 43 "/home/community/pgbuildfarm/templates/dashboard.tt"
- $output .= $stash->get(['flagset', 0, 'key', 0]);
- $output .= "</td>\n";
- #line 44 "/home/community/pgbuildfarm/templates/dashboard.tt"
- if ($stash->get(['loop', 0, 'count', 0]) eq 5) {
- $output .= "</tr><tr>";
- }
-
- $output .= "\n";;
- ($value, $error) = $list->get_next();
- }
- };
- $stash->set('loop', $oldloop);
- die $@ if $@;
- $error = 0 if $error && $error eq Template::Constants::STATUS_DONE;
- die $error if $error;
- };
-
- $output .= "\n</tr></table>\n<br />\n <table cellspacing=\"0\">\n";
- #line 49 "/home/community/pgbuildfarm/templates/dashboard.tt"
- $stash->set('brch', '');
- $output .= "\n";
- #line 81 "/home/community/pgbuildfarm/templates/dashboard.tt"
-
- # FOREACH
- do {
- my ($value, $error, $oldloop);
- my $list = $stash->get('statrows');
-
- unless (UNIVERSAL::isa($list, 'Template::Iterator')) {
- $list = Template::Config->iterator($list)
- || die $Template::Config::ERROR, "\n";
- }
-
- ($value, $error) = $list->get_first();
- eval { $oldloop = $stash->get('loop') };
- $stash->set('loop', $list);
- eval {
- LOOP: while (! $error) {
- $stash->{'row'} = $value;
- $output .= "\n";
- #line 54 "/home/community/pgbuildfarm/templates/dashboard.tt"
- if ($stash->get(['row', 0, 'branch', 0]) ne $stash->get('brch')) {
- #line 51 "/home/community/pgbuildfarm/templates/dashboard.tt"
- $stash->set('brch', $stash->get(['row', 0, 'branch', 0]));
- $output .= "\n<tr><th class=\"head\" colspan=\"4\">Branch: ";
- #line 52 "/home/community/pgbuildfarm/templates/dashboard.tt"
- $output .= $stash->get('brch');
- $output .= "</th></tr>\n<tr><th>Alias</th><th>System</th><th>Status</th><th>Flags</th></tr>\n";
- }
-
- $output .= "\n<tr ";
- #line 55 "/home/community/pgbuildfarm/templates/dashboard.tt"
- $output .= $context->process('cl', { 'bgfor' => $stash->get(['row', 0, 'stage', 0]) });
- $output .= ">\n <td><a \n href=\"show_history.pl?nm=";
- #line 57 "/home/community/pgbuildfarm/templates/dashboard.tt"
- $output .= $stash->get(['row', 0, 'sysname', 0]);
- $output .= "&br=";
- #line 57 "/home/community/pgbuildfarm/templates/dashboard.tt"
- $output .= $stash->get(['row', 0, 'branch', 0]);
- $output .= "\"\n title=\"History\"\n >";
- #line 59 "/home/community/pgbuildfarm/templates/dashboard.tt"
- $output .= $stash->get(['row', 0, 'sysname', 0]);
- $output .= "</a></td>\n <td><span class=\"opsys\">";
- #line 60 "/home/community/pgbuildfarm/templates/dashboard.tt"
- $output .= $stash->get(['row', 0, 'operating_system', 0]);
- $output .= "\n ";
- #line 61 "/home/community/pgbuildfarm/templates/dashboard.tt"
- $output .= $stash->get(['row', 0, 'os_version', 0]);
- $output .= "</span> <span class=\"compiler\">";
- #line 63 "/home/community/pgbuildfarm/templates/dashboard.tt"
- $output .= $stash->get(['row', 0, 'compiler', 0]);
- $output .= "\n ";
- #line 64 "/home/community/pgbuildfarm/templates/dashboard.tt"
- $output .= $stash->get(['row', 0, 'compiler_version', 0]);
- $output .= "</span> <span class=\"arch\">";
- #line 66 "/home/community/pgbuildfarm/templates/dashboard.tt"
- $output .= $stash->get(['row', 0, 'architecture', 0]);
- $output .= "</span></td>\n <td class=\"status\">";
- #line 69 "/home/community/pgbuildfarm/templates/dashboard.tt"
-
- # FILTER
- $output .= do {
- my $output = '';
- my $filter = $context->filter('replace', [ '\s', ' ' ])
- || $context->throw($context->error);
-
- $output .= $stash->get(['row', 0, 'when_ago', 0]);
-
- &$filter($output);
- };
-
- $output .= " ago \n ";
- #line 70 "/home/community/pgbuildfarm/templates/dashboard.tt"
- $output .= $stash->get(['row', 0, 'stage', 0]);
- $output .= " <a href=\"show_log.pl?nm=";
- #line 73 "/home/community/pgbuildfarm/templates/dashboard.tt"
- $output .= $stash->get(['row', 0, 'sysname', 0]);
- $output .= "&dt=";
- #line 75 "/home/community/pgbuildfarm/templates/dashboard.tt"
-
- # FILTER
- $output .= do {
- my $output = '';
- my $filter = $context->filter('uri')
- || $context->throw($context->error);
-
- $output .= $stash->get(['row', 0, 'snapshot', 0]);
-
- &$filter($output);
- };
-
- $output .= "\">";
- #line 77 "/home/community/pgbuildfarm/templates/dashboard.tt"
- if ($stash->get(['row', 0, 'stage', 0]) ne 'OK') {
- $output .= "Details";
- }
- else {
- $output .= "Config";
- }
-
- $output .= "</a></td>\n\n <td class=\"flags\">";
- #line 79 "/home/community/pgbuildfarm/templates/dashboard.tt"
-
- # FOREACH
- do {
- my ($value, $error, $oldloop);
- my $list = $stash->get(['row', 0, 'build_flags', 0, 'split', 0, 'sort', 0]);
-
- unless (UNIVERSAL::isa($list, 'Template::Iterator')) {
- $list = Template::Config->iterator($list)
- || die $Template::Config::ERROR, "\n";
- }
-
- ($value, $error) = $list->get_first();
- eval { $oldloop = $stash->get('loop') };
- $stash->set('loop', $list);
- eval {
- LOOP: while (! $error) {
- $stash->{'flag'} = $value;
- #line 79 "/home/community/pgbuildfarm/templates/dashboard.tt"
- $output .= $context->process('img');;
- ($value, $error) = $list->get_next();
- }
- };
- $stash->set('loop', $oldloop);
- die $@ if $@;
- $error = 0 if $error && $error eq Template::Constants::STATUS_DONE;
- die $error if $error;
- };
-
- $output .= "</td>\n</tr>\n";;
- ($value, $error) = $list->get_next();
- }
- };
- $stash->set('loop', $oldloop);
- die $@ if $@;
- $error = 0 if $error && $error eq Template::Constants::STATUS_DONE;
- die $error if $error;
- };
-
- $output .= "\n </table>\n</div>\n\n";
- } };
- if ($@) {
- $error = $context->catch($@, \$output);
- die $error unless $error->type eq 'return';
- }
-
- return $output;
- },
- DEFBLOCKS => {
- 'cl' => sub {
- my $context = shift || die "template sub called without context\n";
- my $stash = $context->stash;
- my $output = '';
- my $error;
-
- eval { BLOCK: {
- $output .= " class=\"";
- #line 27 "/home/community/pgbuildfarm/templates/dashboard.tt"
-
- # SWITCH
- do {
- my $result = $stash->get('bgfor');
- my $match;
- SWITCH: {
- $match = 'OK';
- $match = [ $match ] unless ref $match eq 'ARRAY';
- if (grep(/^$result$/, @$match)) {
- $output .= "pass";
- last SWITCH;
- }
- $match = 'ContribCheck';
- $match = [ $match ] unless ref $match eq 'ARRAY';
- if (grep(/^$result$/, @$match)) {
- $output .= "warn";
- last SWITCH;
- }
- $match = [ 'Check', 'InstallCheck' ];
- $match = [ $match ] unless ref $match eq 'ARRAY';
- if (grep(/^$result$/, @$match)) {
- $output .= "warnx";
- last SWITCH;
- }
- $output .= "fail";
- }
- };
-
- $output .= "\"";
- } };
- if ($@) {
- $error = $context->catch($@, \$output);
- die $error unless $error->type eq 'return';
- }
-
- return $output;
- },
- 'img' => sub {
- my $context = shift || die "template sub called without context\n";
- my $stash = $context->stash;
- my $output = '';
- my $error;
-
- eval { BLOCK: {
- #line 22 "/home/community/pgbuildfarm/templates/dashboard.tt"
- if ($stash->get('flag') eq 'depend' || $stash->get('flag') eq 'gnu-ld') {
-
- }
- elsif ($stash->get(['flag_imgs', 0, $stash->get('flag'), 0])) {
- #line 22 "/home/community/pgbuildfarm/templates/dashboard.tt"
-
- # FILTER
- $output .= do {
- my $output = '';
- my $filter = $context->filter('collapse')
- || $context->throw($context->error);
-
- $output .= "<img src=\"";
- #line 19 "/home/community/pgbuildfarm/templates/dashboard.tt"
- $output .= $stash->get(['flag_imgs', 0, $stash->get('flag'), 0]);
- $output .= "\" \n title=\"";
- #line 20 "/home/community/pgbuildfarm/templates/dashboard.tt"
- $output .= $stash->get('flag');
- $output .= "\" alt=\"";
- #line 20 "/home/community/pgbuildfarm/templates/dashboard.tt"
- $output .= $stash->get('flag');
- $output .= "\" \n height=\"16\" width=\"16\" class=\"inline\" align=\"bottom\" /> \n ";
-
- &$filter($output);
- };
-
- }
-
- } };
- if ($@) {
- $error = $context->catch($@, \$output);
- die $error unless $error->type eq 'return';
- }
-
- return $output;
- },
- },
-});
+++ /dev/null
-[%- BLOCK cl %] class="[% SWITCH bgfor -%]
- [%- CASE 'OK' %]pass[% CASE 'ContribCheck' %]warn[% CASE [ 'Check' 'InstallCheck' ] %]warnx[% CASE %]fail[% END %]"
-[%- END -%]
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
- <title>PostgreSQL BuildFarm History</title>
- <link rel="stylesheet" rev="stylesheet" href="/inc/pgbf.css" charset="utf-8" />
- <style type="text/css"><!--
- li#status a { color:rgb(17,45,137); background: url(/inc/b/r.png) no-repeat 100% -20px; }
- li#status { background: url(/inc/b/l.png) no-repeat 0% -20px; }
- --></style>
-</head>
-<body class="history">
-<div id="wrapper">
-<div id="banner">
-<a href="/index.html"><img src="/inc/pgbuildfarm-banner.png" alt="PostgreSQL BuildFarm" width="800" height="73" /></a>
-<div id="nav">
-<ul>
- <li id="home"><a href="/index.html" title="PostgreSQL BuildFarm Home">Home</a></li>
- <li id="status"><a href="/cgi-bin/show_status.pl" title="Current results">Status</a></li>
- <li id="members"><a href="/cgi-bin/show_members.pl" title="Platforms tested">Members</a></li>
- <li id="register"><a href="/cgi-bin/register-form.pl" title="Join PostgreSQL BuildFarm">Register</a></li>
- <li id="pgfoundry"><a href="http://pgfoundry.org/projects/pgbuildfarm/">PGFoundry</a></li>
-</ul>
-</div><!-- nav -->
-</div><!-- banner -->
-<div id="main">
-<h1>PostgreSQL BuildFarm Status History</h1>
-<table cellspacing="0">
- <tr><th class="head" colspan="3">System Detail</th></tr>
- <tr class="member"><th>Farm member</th><td>[% member %]</td></tr>
- <tr><th>OS</th><td>[% statrows.0.operating_system %] [% statrows.0.os_version %]</td></tr>
-<!-- <tr><th>OS Version</th><td>[% statrows.0.os_version %]</td></tr> -->
- <tr><th>Compiler</th><td>[% statrows.0.compiler %] [% statrows.0.compiler_version %]</td></tr>
-<!-- <tr><th>Compiler Version</th><td>[% statrows.0.compiler_version %]</td></tr> -->
- <tr><th>Architecture</th><td>[% statrows.0.architecture %]</td></tr>
- </table>
- <h3>Branch: [% branch %][% IF statrows.size >= 240 %] (last 240 entries shown)[% END %]</h3>
-[% BLOCK stdet %]
-<tr [% PROCESS cl bgfor=row.stage %]>
- <td>[%- row.when_ago | replace('\s',' ') %] ago </td>
- <td class="status">[% row.stage -%]</td>
- <td class="status"><a href="show_log.pl?nm=
- [%- row.sysname %]&dt=
- [%- row.snapshot | uri %]">
- [%- IF row.stage != 'OK' %]Details[% ELSE %]Config[% END -%]</a></td>
-
-</tr>
-[% END %]
-<table border="0"> <tr>
-[% FOREACH offset IN [0,1,2] %][% low = offset * statrows.size / 3 ; high = -1 + (offset + 1) * statrows.size / 3 %]
-[% TRY %][% PERL %]
- use POSIX qw(floor);
- $stash->set(low => floor($stash->get('low')));
- $stash->set(high => floor($stash->get('high')));
-[% END %][% CATCH %]<!-- [% error.info %] --> [% END %]
- <td><table cellspacing="0">
-<!-- <tr><th colspan=3>low = [% low %], high = [% high %]</th></tr> -->
- [% FOREACH xrow IN statrows.slice(low,high) %][% PROCESS stdet row=xrow %][% END %]
- </table></td>
-[% END %]
-</table>
- </div><!-- main -->
- </div><!-- wrapper -->
- </body>
-</html>
+++ /dev/null
-[%- BLOCK cl %] class=" [% SWITCH bgfor -%]
- [%- CASE 'OK' %]pass[% CASE 'ContribCheck' %]warn[% CASE [ 'Check' 'InstallCheck' ] %]warnx[% CASE %]fail[% END %]"
-[%- END -%]
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
- <title>PostgreSQL BuildFarm Status</title>
- <link rel="stylesheet" rev="stylesheet" href="/inc/pgbf.css" charset="utf-8" />
- <style type="text/css"><!--
- li#status a { color:rgb(17,45,137); background: url(/inc/b/r.png) no-repeat 100% -20px; }
- li#status { background: url(/inc/b/l.png) no-repeat 0% -20px; }
- --></style>
-</head>
-<body>
-<div id="wrapper">
-<div id="banner">
-<a href="/index.html"><img src="/inc/pgbuildfarm-banner.png" alt="PostgreSQL BuildFarm" width="800" height="73" /></a>
-<div id="nav">
-<ul>
- <li id="home"><a href="/index.html" title="PostgreSQL BuildFarm Home">Home</a></li>
- <li id="status"><a href="/cgi-bin/show_status.pl" title="Current results">Status</a></li>
- <li id="members"><a href="/cgi-bin/show_members.pl" title="Platforms tested">Members</a></li>
- <li id="register"><a href="/cgi-bin/register-form.pl" title="Join PostgreSQL BuildFarm">Register</a></li>
- <li id="pgfoundry"><a href="http://pgfoundry.org/projects/pgbuildfarm/">PGFoundry</a></li>
- <li id="postgresql.org"><a href="http://www.postgresql.org">PostgreSQL.org</a></li>
-</ul>
-</div><!-- nav -->
-</div><!-- banner -->
-<div id="main">
- <h1>PostgreSQL BuildFarm Status</h1>
- <p>
- Shown here is the latest status of each farm member
- for each branch it has reported on in the last 30 days.
- </p>
- <p>
- Use the farm member link for history of that member
- on the relevant branch.
- </p>
- <table cellspacing="0">
-[% brch = "" %]
-[% FOREACH row IN statrows %]
-[% IF row.branch != brch ; brch = row.branch %]
-<tr><th class="head" colspan="3">Branch: [% brch %]</th></tr>
-<tr><th>Alias</th><th>System</th><th>Status</th></tr>
-[% END %]
-<tr [% PROCESS cl bgfor=row.stage %]>
- <td><a
- href="show_history.pl?nm=[% row.sysname %]&br=[% row.branch %]"
- title="History"
- >[% row.sysname %]</a></td>
- <td><span class="opsys">[% row.operating_system %]
- [% row.os_version %]</span> <span class="compiler">
- [%- row.compiler %]
- [% row.compiler_version %]</span> <span class="arch">
- [%- row.architecture %]</span></td>
- <td class="status">
- [%- row.when_ago | replace('\s',' ') %] ago
- [% row.stage -%]
- <a href="show_log.pl?nm=
- [%- row.sysname %]&dt=
- [%- row.snapshot | uri %]">
- [%- IF row.stage != 'OK' %]Details[% ELSE %]Config[% END -%]</a></td>
-
-</tr>
-[% END %]
- </table>
-</div><!-- main -->
-</div><!-- wrapper -->
- </body>
-</html>
-
-
-
-
-
-
-
-
+++ /dev/null
-[%- BLOCK cl %] class="[% SWITCH bgfor -%]
- [%- CASE 'OK' %]pass[% CASE 'ContribCheck' %]warn[% CASE [ 'Check' 'InstallCheck' ] %]warnx[% CASE %]fail[% END %]"
-[%- END -%]
-[% WRAPPER 'page.tt'
- title = 'PostgreSQL BuildFarm History'
- bodyclass = 'history'
- pagebutton = 'none'
-%]
-<h1>PostgreSQL BuildFarm Status History</h1>
- <table cellspacing="0">
- <tr><th class="head" colspan="3">System Detail</th></tr>
- <tr class="member"><th>Farm member</th><td>[% member %]</td></tr>
- <tr><th>OS</th><td>[% statrows.0.operating_system %] [% statrows.0.os_version %]</td></tr>
- <tr><th>Compiler</th><td>[% statrows.0.compiler %] [% statrows.0.compiler_version %]</td></tr>
- <tr><th>Architecture</th><td>[% statrows.0.architecture %]</td></tr>
- <tr><th>Owner</th><td>[% statrows.0.owner_email %]</td></tr>
- </table>
-[% IF statrows.0.sys_notes %]
- <br />
- <table>
- <tr>
- <th class="head" rowspan="2">System Notes</th>
- <th>Date</th>
- <th>Notes</th>
- </tr>
- <tr>
- <td>[% statrows.0.sys_notes_date %]</td>
- <td>[% statrows.0.sys_notes %]</td>
- </tr>
- </table>
-[% END %]
- <h3>Branch: [% branch %][% IF statrows.size >= hm %] (last [% hm %] entries shown)[% END %]</h3>
-[% BLOCK stdet %]
- <tr [% PROCESS cl bgfor=row.stage %]>
- <td>[%- row.when_ago | replace('\s',' ') %] ago </td>
- <td class="status">[% row.stage -%]</td>
- <td class="status"><a href="show_log.pl?nm=
- [%- row.sysname %]&dt=
- [%- row.snapshot | uri %]">
- [%- IF row.stage != 'OK' %]Details[% ELSE %]Config[% END -%]</a></td>
-
- </tr>
-[% END %]
-<table border="0"> <tr>
- [% FOREACH offset IN [0,1,2] %][% low = offset * statrows.size / 3 ; high = -1 + (offset + 1) * statrows.size / 3 %]
- [% TRY %][% PERL %]
- use POSIX qw(floor);
- $stash->set(low => floor($stash->get('low')));
- $stash->set(high => floor($stash->get('high')));
- [% END %][% CATCH %]<!-- [% error.info %] --> [% END %]
- <td><table cellspacing="0">
- [% FOREACH xrow IN statrows.slice(low,high) %][% PROCESS stdet row=xrow %][% END %]
- </table></td>
- [% END %]
-</table>
-[% END %]
+++ /dev/null
-[%#
-
- Use this template to generate the index page, with something like:
-
- tpage index.tt > ../htdocs/index.html
-
--%]
-[% WRAPPER 'page.tt'
- title = 'PostgreSQL BuildFarm'
- bodyclass = 'none'
- pagebutton = 'home'
-%]
-<!-- html generated from index.tt -->
-<p>
-The PostgreSQL build farm is a distributed system for automatically testing
-changes in the source code for PostgreSQL as they occur, on a wide variety
-of platforms. This server is the central repository for the results of those
-tests.
-</p>
-<p>
-To see the current status of tests on various branches, check the
-<a href="/cgi-bin/show_status.pl" title="Status Page">Status Page</a>.
-</p>
-<p>
-If you are interested in running a member of the build farm, then please visit
-the <a href="/cgi-bin/register-form.pl" title="Register">Registration Page</a>.
-We are particularly interested in unusual platforms or combinations of
-architecture, operating system and compiler.
-</p>
-<p>To see what is involved in running a buildfarm member, please
-read <a href="http://wiki.postgresql.org/wiki/PostgreSQL_Buildfarm_Howto">http://wiki.postgresql.org/wiki/PostgreSQL_Buildfarm_Howto</a>.
-The client code can be found at the
-<a href="http://pgfoundry.org/projects/pgbuildfarm/">project page</a> at
-<a href="http://pgfoundry.org/">PGFoundry</a>.
-</p>
-<p>The build farm software should run on all platforms that can support PostgreSQL.
-</p>
-[% END %]
+++ /dev/null
-[% PERL %]
- use POSIX qw(ceil);
- my $lrfactor = 6;
- $stash->set(lrfactor => $lrfactor);
- my $rows = $stash->get('log_file_names');
- my $logrows = ceil(scalar(@$rows)/$lrfactor);
- my $logcells = $lrfactor * $logrows;
- $stash->set( logcells => $logcells);
- $stash->set( logrows => $logrows );
-[% END -%]
-[% mytitle = BLOCK %]PostgreSQL BuildFarm | [% IF stage != 'OK' %]Log for system "[% system %]" failure on snapshot taken [% urldt ; ELSE %]Configuration summary for system "[% system %]" snapshot taken [% urldt ; END ; END -%]
-[%
- cvsurl = 'http://anoncvs.postgresql.org/cvsweb.cgi';
- giturl = scmurl || 'http://git.postgresql.org/gitweb?p=postgresql.git;a=commit;h=';
--%]
-[% WRAPPER 'page.tt'
- title = mytitle
- bodyclass = 'none'
- pagebutton = 'none'
-%]
-<h1>PostgreSQL Build Farm Log</h1>
-<h2>Details for system "[% system %]"[% IF stage != 'OK' %] failure at stage [% stage ; ELSE %], status 'OK'[% END %], snapshot taken [% urldt %]</h2>
-<table cellspacing="0">
- <tr>
- <th class="head" rowspan="2">System Information</th>
- <th>Farm member</th>
- <th>Branch</th>
- <th>OS</th>
- <th>Compiler</th>
- <th>Architecture</th>
- <th>Owner</th>
- </tr>
- <tr>
- <td>[% system %]</td>
- <td><a href="/cgi-bin/show_history.pl?nm=[% system %]&br=[% branch %]">[% branch %]</a></td>
- <td>[% info_row.operating_system %] [% info_row.os_version %]</td>
- <td>[% info_row.compiler %] [% info_row.compiler_version %]</td>
- <td>[% info_row.architecture %]</td>
- <td>[% info_row.owner_email %]</td>
- </tr>
- </table>
-[% IF info_row.sys_notes %]
- <br />
- <table>
- <tr>
- <th class="head" rowspan="2">System Notes</th>
- <th>Date</th>
- <th>Notes</th>
- </tr>
- <tr>
- <td>[% info_row.sys_notes_date %]</td>
- <td>[% info_row.sys_notes %]</td>
- </tr>
- </table>
-[% END %]
-[% cell = 0; FOREACH logstage IN log_file_names ; striplog = logstage.replace('\.log$','') ; cell = loop.count %]
- [% IF loop.first %]
- <br /> <table><tr><th class='head' rowspan='[% logrows %]'>Stage Logs</th>
- [% END %]
- [% IF loop.count > 1 and loop.count % lrfactor == 1 %]<tr>[% END %]
- <td><a href='show_stage_log.pl?nm=[% system %]&dt=[% urldt | uri %]&stg=[% striplog %]'>[% striplog %]</a></td>
- [% IF loop.count % lrfactor == 0 %]</tr>[% END %]
-[% END %]
-
-[% IF cell > 0 ; nrcell = cell + 1; ncells = [ nrcell .. logcells ] ; FOREACH rcell IN ncells %]
- [% IF rcell > 1 and rcell % lrfactor == 1 %]<tr>[% END %]
- <td> </td>
- [% IF rcell % lrfactor == 0 %]</tr>[% END %]
- [% END %]
- </table>
-[% END %]
-
-<h3>Configuration summary</h3>
-<pre>
-[% conf | html %]
-</pre>
-<h3>Files changed this run</h3>
-<pre>
-[%- IF changed_this_run.0 -%]
-[%- FOREACH changed IN changed_this_run %]
-<a href="[% IF scm == 'git' ; giturl; changed.1; ELSE ; cvsurl ; changed.0; 'rev='; changed.1; END %]">[% changed.0 ; IF scm == 'cvs'; ' '; changed.1; END %]</a>
-[%- END -%]
-[%- ELSE %]
-not recorded
-[% END -%]
-</pre>
-[% IF stage != 'OK' %]
-<h3>Files changed since last success</h3>
-<pre>
-[%- IF changed_since_success.0 %]
-[%- FOREACH changed IN changed_since_success %]
-<a href="[% IF scm == 'git' ; giturl; changed.1; ELSE ; cvsurl ; changed.0; 'rev='; changed.1; END %]">[% changed.0 ; IF scm == 'cvs'; ' '; changed.1; END %]</a>
-[%- END -%]
-[%- ELSE %]
-not recorded
-[% END -%]
-</pre>
-[% END %]
-<h3>Log</h3>
-<pre>
-[% log | html %]
-</pre>
-[% END %]
+++ /dev/null
-[% WRAPPER 'page.tt'
- title = 'PostgreSQL BuildFarm Members'
- bodyclass = 'members'
- pagebutton = 'members'
-%]
-<h1>PostgreSQL BuildFarm Members</h1>
- <p>Click branch links to see build history. Click the heading links to resort the list. Select members by checkbox and hit the button at the bottom to create a status custom filter.</p>
- <form name="filter" method="GET" action="/cgi-bin/show_status.pl">
- <table cellspacing="0">
- <tr>
- <td> </td>
- <th><a href="/cgi-bin/show_members.pl?sort_by=name">Name</a><br /><a href="/cgi-bin/show_members.pl?sort_by=owner">Owner</a></th>
- <th><a href="/cgi-bin/show_members.pl?sort_by=os">OS / Version</a></th>
- <th><a href="/cgi-bin/show_members.pl?sort_by=compiler">Compiler / Version</a></th>
- <th><a href="/cgi-bin/show_members.pl?sort_by=arch">Arch</a></th>
- <th>Branches reported on<br />(most recent report)</th>
- </tr>
-[% alt = true %]
-[% FOREACH row IN statrows ;
- have_recent = 0;
- FOREACH branch_days IN row.branches.split(',') ;
- branch_fields = branch_days.split(':');
- branch_day = branch_fields.1;
- IF branch_day < 365 ; have_recent = 1; END;
- END;
- IF have_recent ;
-%] <tr [%- IF alt %]class="alt"[% END -%]>
- [% alt = ! alt %]
- <td><input type="checkbox" name="member" value="[% row.name %]" /></td>
- <td>[% row.name %]<br />[% row.owner_email %]
-[% IF row.sys_notes %]
- <br />
- Notes: ([% row.sys_notes_date %]) [% row.sys_notes %]
-[% END %]
- </td>
- <td>[% row.operating_system %]<br />[% row.os_version %]
- [% prev_osver = row.osversion;
- FOREACH personality IN row.personalities;
- IF personality.os_version != prev_osver
- %]
- <br / > w.e.f. [% personality.effective_date %]: [% personality.os_version %]
- [% prev_osver = personality.os_version; END; END %]
- </td>
- <td>[% row.compiler %]<br />[% row.compiler_version %]
- [% prev_compver = row.compiler_version;
- FOREACH personality IN row.personalities;
- IF personality.compiler_version != prev_compver
- %]
- <br / > w.e.f. [% personality.effective_date %]: [% personality.compiler_version %]
- [% prev_compver = personality.compiler_version; END; END %]
- </td>
- <td>[% row.arch %]</td>
- <td class="branch">[% IF ! row.branches ; ' ' ; END -%]
- <ul>
- [%-
- FOREACH branch_days IN row.branches.split(',') ;
- branch_fields = branch_days.split(':');
- branch = branch_fields.0;
- branch_day = branch_fields.1;
- IF branch_day < 365 ;
- %]<li><a
- href="show_history.pl?nm=[% row.name %]&br=[% branch %]"
- title="History"
- >[% branch %]</a> ([% branch_day %] days ago)</li>[% END; END %]</ul></td>
- </tr>
-[% END; END %]
- </table>
- <input type="submit" value="Make Filter" />
- </form>
-[% END %]
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- <head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
- <title>[% title %]</title>
- <link rel="icon" type="image/png" href="/elephant-icon.png" />
- <link rel="stylesheet" rev="stylesheet" href="/inc/pgbf.css" charset="utf-8" />
- <style type="text/css"><!--
- li#[% pagebutton %] a { color:rgb(17,45,137); background: url(/inc/b/r.png) no-repeat 100% -20px; }
- li#[% pagebutton %] { background: url(/inc/b/l.png) no-repeat 0% -20px; }
- --></style>
- </head>
- <body class="[% bodyclass %]">
- <div id="wrapper">
- <div id="banner">
- <a href="/index.html"><img src="/inc/pgbuildfarm-banner.png" alt="PostgreSQL BuildFarm" width="800" height="73" /></a>
- <div id="nav">
- <ul>
- <li id="home"><a href="/index.html" title="PostgreSQL BuildFarm Home">Home</a></li>
- <li id="status"><a href="/cgi-bin/show_status.pl" title="Current results">Status</a></li>
- <li id="members"><a href="/cgi-bin/show_members.pl" title="Platforms tested">Members</a></li>
- <li id="register"><a href="/cgi-bin/register-form.pl" title="Join PostgreSQL BuildFarm">Register</a></li>
- <li id="pgfoundry"><a href="http://pgfoundry.org/projects/pgbuildfarm/">PGFoundry</a></li>
- </ul>
- </div><!-- nav -->
- </div><!-- banner -->
- <div id="main">
- [% content %]
- </div><!-- main -->
- <hr />
- <p style="text-align: center;">
- Hosting for the PostgreSQL Buildfarm is generously
- provided by:
- <a href="http://www.commandprompt.com">CommandPrompt, The PostgreSQL Company</a>
- </p>
- </div><!-- wrapper -->
- </body>
-</html>
+++ /dev/null
-[% WRAPPER 'page.tt'
- title = 'PostgreSQL BuildFarm Application'
- bodyclass = 'application'
- pagebutton = 'register'
-%]
-<h1>Application to join PostgreSQL BuildFarm</h1>
-
-<p>Here is a short description of what is required to join the buildfarm successfully. Please read it carefully
-before submitting this form.</p>
-
-<ul>
-<li> your machine will need to be able to contact <a href="http://www.pgbuildfarm.org">http://www.pgbuildfarm.org</a>
- either directly or via proxy, and it will need access to a PostgreSQL CVS repository,
- either the one at postgresql.org or a mirror (you can set up your own mirror using CSVup on a Linux or FreeBSD machine -
- this is recommended).</li>
-<li> have a working Postgresql build environment for your platform
- (for Windows this means MSys/MinGW with the libz and libintl stuff, and ideally native Python and Tcl).</li>
-<li> Windows only: you will need a native perl installed as well as the one in the MSys DTK. The one from ActiveState works fine.</li>
-<li> download and unpack the latest release of client code from
- <a href="http://pgfoundry.org/frs/?group_id=1000040">http://pgfoundry.org/frs/?group_id=1000040</a></li>
-<li> read instructions at
- <a href="http://wiki.postgresql.org/wiki/PostgreSQL_Buildfarm_Howto">http://wiki.postgresql.org/wiki/PostgreSQL_Buildfarm_Howto</a></li>
-<li> get the software running locally using flags --force --nostatus --nosend</li>
-<li> register your machine on this page</li>
-<li> when you receive credentials, put them in the config file, and schedule regular builds (without those flags)
- for the branches you want to support - which should be at least HEAD and the most recent stable branch.</li>
-</ul>
-<hr />
-
-<p>Please complete all items.</p>
-<p>For Linux, please specify the name and version of the <b>Distribution</b> for the Operating Systems items.
-Do not use the name "Linux". For example, for my test machine the Operating
-Systems is "Fedora Core" and the version is "4".</p>
-<form method="post" action="/cgi-bin/register.pl">
-<table cellspacing="0">
-<tr>
- <th>Operating System</th>
- <td><input type="text" name="os" value="" /></td>
-</tr>
-<tr>
- <th>OS Version</th>
- <td><input type="text" name="osv" value="" /></td>
-</tr>
-<tr>
- <th>Compiler</th>
- <td><input type="text" name="comp" value="" /></td>
-</tr>
-<tr>
- <th>Compiler Version</th>
- <td><input type="text" name="compv" value="" /></td>
-</tr>
-<tr>
- <th>Architecture</th>
- <td><input type="text" name="arch" value="" /></td>
-</tr>
-<tr>
- <th>Your name</th>
- <td><input type="text" name="owner" value="" /></td>
-</tr>
-<tr>
- <th>Your email address</th>
- <td><input type="text" name="email" value="" /></td>
-</tr>
-<tr>
-<th colspan="2">[% captcha %]</th>
-</tr>
-<tr>
- <th class="submit" colspan="2"><input type="submit" /></th>
-</tr>
-</table>
-</form>
-[% END %]
+++ /dev/null
-[% WRAPPER 'page.tt'
- title = 'PostgreSQL BuildFarm Application'
- bodyclass = 'application'
- pagebutton = 'none'
-%]
-<p>You need to complete all the form items.
-<a href="/cgi-bin/register-form.pl">Please click here to try again.</a>
-</p>
-[% END %]
+++ /dev/null
-[% WRAPPER 'page.tt'
- title = 'PostgreSQL BuildFarm Application'
- bodyclass = 'application'
- pagebutton = 'none'
-%]
-<h1>PostgreSQL BuildFarm Application received</h1>\
-<p>Thank you. You should hear from us shortly.</p>
-[% END %]
+++ /dev/null
-[%
- flag_imgs = {
- perl = '/img/camel.png',
- python = '/img/python.png',
- debug = '/img/bug.png',
- pam => '/img/pam.png',
- cassert => '/img/cassert.png',
- openssl => '/img/ssl_icon.gif',
- nls => '/img/translateicon.gif',
- krb5 => '/img/krb.gif',
- tcl => '/img/tcl.png',
- vpath => '/img/vpath.png',
- xml => '/img/xml.png',
- 'thread-safety' => '/img/threads.gif',
- 'integer-datetimes' = '/img/days.png',
- git => '/img/git.png',
- }
--%]
-[%- BLOCK img ; IF flag == 'depend' or flag == 'gnu-ld' ; ; ELSIF flag_imgs.$flag %]<img src="[% flag_imgs.$flag %]" title="[% flag %]" alt="[% flag %]" height="16" width="16" class="inline" align="bottom" /> [% ELSE %][%#
- flag ; ' '
-%][% END ; END -%]
-[%- BLOCK sysnotes ; IF row.sys_notes %]<img src="/img/notes.png" height="16" width="16" title="[% row.sys_notes_ts.replace(' .*','') | html %]: [% row.sys_notes | html %]" />
-[%- ELSE %] [% END ; END -%]
-[%- BLOCK cl %] class="[% SWITCH bgfor.replace('-.*','') -%]
- [%- CASE 'OK' %]pass[% CASE 'ContribCheck' %]warn[% CASE [ 'Check' 'InstallCheck' ] %]warnx[% CASE %]fail[% END %]"
-[%- END -%]
-[% WRAPPER 'page.tt'
- title = 'PostgreSQL BuildFarm Status'
- bodyclass = 'none'
- pagebutton = 'status'
-%]
- <h1>PostgreSQL BuildFarm Status</h1>
- <p>
- Shown here is the latest status of each farm member
- for each branch it has reported on in the last 30 days.
- </p>
- <p>
- Use the farm member link for history of that member
- on the relevant branch.
- </p>
-<table><tr><th class="head" rowspan="2">Legend</th>
-[% FOREACH flagset IN flag_imgs %]
-<td><img src="[% flagset.value %]" title="[% flagset.key %]" alt="[% flagset.key %]" height="16" width="16" class="inline" align="center"/> = [% flagset.key %]</td>
-[% IF loop.count == 7 %]</tr><tr>[% END %]
-[% END %]
-</tr></table>
-<br />
- <table cellspacing="0">
-[% brch = "" %]
-[% FOREACH row IN statrows %]
-[% IF row.branch != brch ; brch = row.branch %]
-<tr><th class="head" colspan="5">Branch: [% brch %]</th></tr>
-<tr><th colspan="2">Alias</th><th>System</th><th>Status</th><th>Flags</th></tr>
-[% END %]
-<tr [% PROCESS cl bgfor=row.stage %]>
- <td><a
- href="show_history.pl?nm=[% row.sysname %]&br=[% row.branch %]"
- title="History"
- >[% row.sysname %]</a></td>
- <td>[% PROCESS sysnotes %]</td>
- <td><span class="opsys">[% row.operating_system %]
- [% row.os_version %]</span> <span class="compiler">
- [%- row.compiler %]
- [% row.compiler_version %]</span> <span class="arch">
- [%- row.architecture %]</span></td>
- <td class="status">
- [%- row.when_ago | replace('\s',' ') %] ago
- [% row.stage -%]
- <a href="show_log.pl?nm=
- [%- row.sysname %]&dt=
- [%- row.snapshot | uri %]">
- [%- IF row.stage != 'OK' %]Details[% ELSE %]Config[% END -%]</a></td>
-
- <td class="flags">[% FOREACH flag IN row.build_flags.split().sort() ; PROCESS img ; END %]</td>
-</tr>
-[% END %]
- </table>
-[% END %]