--- /dev/null
+#!/usr/bin/perl
+
+use strict;
+
+use CGI;
+use Digest::SHA1 qw(sha1_hex);
+use MIME::Base64;
+use DBI;
+use DBD::Pg;
+use Data::Dumper;
+
+use vars qw($dbhost $dbname $dbuser $dbpass $dbport);
+
+my $query = new CGI;
+
+my $sig = $query->path_info;
+$sig =~ s!^/!!;
+
+my $animal = $query->param('animal');
+my $sysnotes = $query->param('sysnotes');
+
+my $content = "animal=$animal\&sysnotes=$sysnotes";
+
+require "$ENV{BFConfDir}/BuildFarmWeb.pl";
+
+die "no dbname" unless $dbname;
+die "no dbuser" unless $dbuser;
+
+my $dsn="dbi:Pg:dbname=$dbname";
+$dsn .= ";host=$dbhost" if $dbhost;
+$dsn .= ";port=$dbport" if $dbport;
+
+unless ($animal && defined($sysnotes) && $sig)
+{
+ print
+ "Status: 490 bad parameters\nContent-Type: text/plain\n\n",
+ "bad parameters for request\n";
+ exit;
+
+}
+
+
+my $db = DBI->connect($dsn,$dbuser,$dbpass);
+
+die $DBI::errstr unless $db;
+
+my $gethost=
+ "select secret from buildsystems where name = ? and status = 'approved'";
+my $sth = $db->prepare($gethost);
+$sth->execute($animal);
+my ($secret)=$sth->fetchrow_array();
+$sth->finish;
+
+
+unless ($secret)
+{
+ print
+ "Status: 495 Unknown System\nContent-Type: text/plain\n\n",
+ "System $animal is unknown\n";
+ $db->disconnect;
+ exit;
+
+}
+
+
+
+
+my $calc_sig = sha1_hex($content,$secret);
+
+if ($calc_sig ne $sig)
+{
+
+ print "Status: 450 sig mismatch\nContent-Type: text/plain\n\n";
+ print "$sig mismatches $calc_sig on content:\n$content";
+ $db->disconnect;
+ exit;
+}
+
+# undo escape-proofing of base64 data and decode it
+map {tr/$@/+=/; $_ = decode_base64($_); }
+ ($sysnotes);
+
+my $set_notes = q{
+
+ update buildsystems
+ set sys_notes = nullif($2,''),
+ sys_notes_ts = case
+ when coalesce($2,'') <> '' then now()
+ else null
+ end
+ where name = $1
+ and status = 'approved'
+
+};
+
+$sth = $db->prepare($set_notes);
+my $rv = $sth->execute($animal,$sysnotes);
+unless($rv)
+{
+ print "Status: 460 old data fetch\nContent-Type: text/plain\n\n";
+ print "error: ",$db->errstr,"\n";
+ $db->disconnect;
+ exit;
+}
+
+$sth->finish;
+
+
+
+$db->disconnect;
+
+print "Content-Type: text/plain\n\n";
+print "request was on:\n$content\n";
+
+
+
use Template;
use Captcha::reCAPTCHA;
-use vars qw($dbhost $dbname $dbuser $dbpass $dbport $notifyapp $captcha_pubkey $captcha_privkey);
+use vars qw($dbhost $dbname $dbuser $dbpass $dbport $notifyapp $captcha_pubkey $captcha_privkey $template_dir);
require "$ENV{BFConfDir}/BuildFarmWeb.pl";
-#require "BuildFarmWeb.pl";
my $dsn="dbi:Pg:dbname=$dbname";
$dsn .= ";host=$dbhost" if $dbhost;
$dsn .= ";port=$dbport" if $dbport;
-my $header = <<EOS;
-<!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 Application</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#register a { color:rgb(17,45,137); background: url(/inc/b/r.png) no-repeat 100% -20px; }
- li#register { background: url(/inc/b/l.png) no-repeat 0% -20px; }
- --></style>
-</head>
-<body class="application">
-<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">
-EOS
-
-my $footer = <<EOS;
-</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>
-EOS
-
+my $template_opts = { INCLUDE_PATH => $template_dir};
+my $template = new Template($template_opts);
my $query = new CGI;
my $params = $query->Vars;
unless ($os && $osv && $comp && $compv && $arch && $email && $owner && $captcha_ok->{is_valid})
{
- print "Content-Type: text/html\n\n",
- $header,
- "<p>You need to complete all the form items. <a href=\"/cgi-bin/register-form.pl\">Please try again.</a></p>\n",
- $footer;
- exit;
+ print "Content-Type: text/html\n\n";
+ $template->process('register-incomplete.tt');
+ exit;
}
# some idiot has a script that tries to talk to me
my $rv=$sth->execute($dummyname,$secret,$os,$osv,$comp,$compv,
$arch,$owner,$email);
my $err=$db->errstr;
-print "Content-type: text/html\n\n";
-print $header
- , "<h1>PostgreSQL BuildFarm Application received</h1>\n"
- , "<p>Thank you. You should hear from us shortly.</p>"
- , $footer;
+# everything looks OK, so tell them so
+print "Content-type: text/html\n\n";
+$template->process('register-ok.tt');
$sth->finish;
$db->disconnect;
# there is possibly some redundancy in this query, but it makes
# a lot of the processing simpler.
-my $statement = <<EOS;
+my $statement = q{
select name, operating_system, os_version, compiler, compiler_version, owner_email,
architecture as arch, ARRAY(
from build_status_latest l
where l.sysname = s.name
order by branch <> 'HEAD', branch desc
- ) as branches
+ ) as branches,
+ ARRAY(select compiler_version || '\t' || os_version || '\t' || effective_date
+ from personality p
+ where p.name = s.name
+ order by effective_date
+ ) as personalities
from buildsystems s
where status = 'approved'
- order by $sort_by
+};
-EOS
-;
+$statement .= "order by $sort_by";
my $statrows=[];
my $sth=$db->prepare($statement);
while (my $row = $sth->fetchrow_hashref)
{
$row->{branches} =~ s/^\{(.*)\}$/$1/;
+ my $personalities = $row->{personalities};
+ $personalities =~ s/^\{(.*)\}$/$1/;
+ my @personalities = split($personalities,',');
+ $row->{personalities} = [];
+ foreach my $personality (@personalities)
+ {
+ $personality =~ s/^"(.*)"$/$1/;
+ $personality =~ s/\\(.)/$1/g;
+ my ($compiler_version, $os_version, $effective_date) = split(/\t/,$personality);
+ push(@{$row->{personalities}}, {compiler_version => $compiler_version,
+ os_version => $os_version,
+ effective_date => $effective_date });
+ }
$row->{owner_email} =~ s/\@/ [ a t ] /;
push(@$statrows,$row);
}
<!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</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"><!--
+ <head>
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+ <title>PostgreSQL BuildFarm</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#home a { color:rgb(17,45,137); background: url(/inc/b/r.png) no-repeat 100% -20px; }
li#home { 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>
-</ul>
-</div><!-- nav -->
-</div><!-- banner -->
-<div id="main">
+ --></style>
+ </head>
+ <body class="none">
+ <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">
+
+<!-- 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
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 visit the
+<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> and
-especially read the
-<a href="http://pgfoundry.org/docman/view.php/1000040/4/PGBuildFarm-HOWTO.txt">HowTo documentation</a>.
+<a href="http://pgfoundry.org/">PGFoundry</a>.
</p>
<p>The build farm software should run on all platforms that can support PostgreSQL.
</p>
-</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>
+
+ </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
-<!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 Bui
-ldFarm" 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">St
-atus</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/">PGFo
-undry</a></li>
- <li id="postgresql.org"><a href="http://www.postgresql.org">PostgreSQL.org</
-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
-[%
- 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',
- }
--%]
-[%- BLOCK img ;
- IF flag == 'depend' or flag == 'gnu-ld' ; ;
- ELSIF flag_imgs.$flag ;
- FILTER collapse %]<img src="[% flag_imgs.$flag %]"
- title="[% flag %]" alt="[% flag %]"
- height="16" width="16" class="inline" align="bottom" />
- [% END ;
- END;
- END
--%]
-[%- BLOCK cl %] class="[% SWITCH bgfor -%]
- [%- CASE 'OK' %]pass[% CASE 'ContribCheck' %]warn[% CASE [ 'Check' 'InstallCheck' ] %]warnx[% CASE %]fail[% END %]"
-[%- END -%]
-
-<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><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 == 5 %]</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="4">Branch: [% brch %]</th></tr>
-<tr><th>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><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>
-</div>
-
[%- 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="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#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">
+[% WRAPPER 'page.tt'
+ title = 'PostgreSQL BuildFarm History'
+ bodyclass = 'history'
+ pagebutton = 'none'
+%]
<h1>PostgreSQL BuildFarm Status History</h1>
-<table cellspacing="0">
+ <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>
<tr><th>Owner</th><td>[% statrows.0.owner_email %]</td></tr>
- </table>
- <h3>Branch: [% branch %][% IF statrows.size >= hm %] (last [% hm %] entries shown)[% END %]</h3>
+ </table>
+ <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=
+ <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>
+ </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 %]
+ [% 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 %]
+ [% END %]
</table>
- </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>
+[% 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 %]
$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=';
-%]
-<!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 | [% IF stage != 'OK' %]Log for system "[% system %]" failure on snapshot taken [% urldt ; ELSE %]Configuration summary for system "[% system %]" snapshot taken [% urldt ; END %]</title>
- <link rel="icon" type="image/png" href="/elephant-icon.png" />
- <link rel="stylesheet" rev="stylesheet" href="/inc/pgbf.css" charset="utf-8" />
-</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="Status Page">Status</a></li>
- <li id="members"><a href="/cgi-bin/show_members.pl" title="Status Page">Members</a></li>
- <li id="register"><a href="/cgi-bin/register-form.pl" title="Register">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 Build Farm Log</h1>
+[% 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>
<pre>
[% log | html %]
</pre>
-</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>
+[% 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 Members</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#members a { color:rgb(17,45,137); background: url(/inc/b/r.png) no-repeat 100% -20px; }
- li#members { background: url(/inc/b/l.png) no-repeat 0% -20px; }
- --></style>
- </style>
-</head>
-<body class="members">
-<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">
+[% 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>
<input type="submit" value="Make Filter" />
</form>
- </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>
-
-
-
-
-
-
-
-
+[% 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>
-<!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 Application</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#register a { color:rgb(17,45,137); background: url(/inc/b/r.png) no-repeat 100% -20px; }
- li#register { background: url(/inc/b/l.png) no-repeat 0% -20px; }
- --></style>
-</head>
-<body class="application">
-<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">
+[% 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
<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>
-
-<p>There is also some extra information in this
-<a href="http://www.onlamp.com/pub/a/onlamp/2005/02/24/pg_buildfarm.html">article about buildfarm</a> on the O'Reilly network.</p>
-
<hr />
<p>Please complete all items.</p>
</tr>
</table>
</form>
-</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>
-
-
+[% 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 %]
[%- BLOCK cl %] class="[% SWITCH bgfor.replace('-.*','') -%]
[%- 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="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#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">
+[% 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
</tr>
[% END %]
</table>
-</div><!-- main -->
-<hr />
-<p style="text-align: center;">
-The PostgreSQL Buildfarm website is provided by:
-<a href="http://www.commandprompt.com">CommandPrompt,
-The PostgreSQL Company</a> <br />
-The PostgreSQL community makes it work!
-</p>
-</div><!-- wrapper -->
- </body>
-</html>
-
-
-
-
-
-
-
-
+[% END %]