#!/usr/bin/perl use strict; use DBI; use Template; use CGI; use vars qw($dbhost $dbname $dbuser $dbpass $dbport); require "$ENV{BFConfDir}/BuildFarmWeb.pl"; my $query = new CGI; my @members = $query->param('member'); map { s/[^a-zA-Z0-9_ -]//g; } @members; my $dsn="dbi:Pg:dbname=$dbname"; $dsn .= ";host=$dbhost" if $dbhost; $dsn .= ";port=$dbport" if $dbport; my $sort_clause = ""; my $sortby = $query->param('sortby') || 'nosort'; if ($sortby eq 'name') { $sort_clause = 'lower(sysname),'; } elsif ($sortby eq 'os') { $sort_clause = 'lower(operating_system), os_version desc,'; } elsif ($sortby eq 'compiler') { $sort_clause = "lower(compiler), compiler_version,"; } my $db = DBI->connect($dsn,$dbuser,$dbpass) or die("$dsn,$dbuser,$dbpass,$!"); my $statement =<prepare($statement); $sth->execute; while (my $row = $sth->fetchrow_hashref) { next if (@members && ! grep {$_ eq $row->{sysname} } @members); $row->{build_flags} =~ s/^\{(.*)\}$/$1/; $row->{build_flags} =~ s/,/ /g; # enable-integer-datetimes is now the default if ($row->{branch} eq 'HEAD' || $row->{branch} gt 'REL8_3_STABLE') { $row->{build_flags} .= " --enable-integer-datetimes " unless ($row->{build_flags} =~ /--(en|dis)able-integer-datetimes/); } # enable-thread-safety is now the default if ($row->{branch} eq 'HEAD' || $row->{branch} gt 'REL8_5_STABLE') { $row->{build_flags} .= " --enable-thread-safety " unless ($row->{build_flags} =~ /--(en|dis)able-thread-safety/); } $row->{build_flags} =~ s/--((enable|with)-)?//g; $row->{build_flags} =~ s/libxml/xml/; $row->{build_flags} =~ s/\S+=\S+//g; push(@$statrows,$row); } $sth->finish; $db->disconnect; my $template = new Template({}); print "Content-Type: text/html\n\n"; $template->process(\*DATA,{statrows=>$statrows}); exit; =comment [%- BLOCK img ; flag ; END -%] [%- BLOCK imgx ; IF flag_imgs.$flag ; '' . flag . ' ' ; ELSE flag . ' ' ; END ; END -%] =cut __DATA__ [% 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', xml => '/img/xml.png', 'thread-safety' => '/img/threads.gif', 'integer-datetimes' = '/img/days.png', } -%] [%- BLOCK img ; IF flag == 'depend' or flag == 'gnu-ld' ; ; ELSIF flag_imgs.$flag %][% flag %] [% ELSE %][%# flag ; ' ' %][% END ; END -%] [%- BLOCK cl %] class="[% SWITCH bgfor.replace('-.*','') -%] [%- CASE 'OK' %]pass[% CASE 'ContribCheck' %]warn[% CASE [ 'Check' 'InstallCheck' ] %]warnx[% CASE %]fail[% END %]" [%- END -%] PostgreSQL BuildFarm Status

PostgreSQL BuildFarm Status

Shown here is the latest status of each farm member for each branch it has reported on in the last 30 days.

Use the farm member link for history of that member on the relevant branch.

[% FOREACH flagset IN flag_imgs %] [% IF loop.count == 6 %][% END %] [% END %]
Legend[% flagset.key %] = [% flagset.key %]

[% brch = "" %] [% FOREACH row IN statrows %] [% IF row.branch != brch ; brch = row.branch %] [% END %] [% END %]
Branch: [% brch %]
AliasSystemStatusFlags
[% row.sysname %] [% row.operating_system %] [% row.os_version %] [%- row.compiler %] [% row.compiler_version %] [%- row.architecture %] [%- row.when_ago | replace('\s',' ') %] ago  [% row.stage -%] [%- IF row.stage != 'OK' %]Details[% ELSE %]Config[% END -%] [% FOREACH flag IN row.build_flags.split().sort() ; PROCESS img ; END %]

The PostgreSQL Buildfarm website is provided by: CommandPrompt, The PostgreSQL Company
The PostgreSQL community makes it work!