Working version 0.1
authorTodd Lyons <tlyons@exim.org>
Fri, 18 Oct 2013 22:28:44 +0000 (15:28 -0700)
committerTodd Lyons <tlyons@exim.org>
Fri, 18 Oct 2013 22:29:25 +0000 (15:29 -0700)
20 files changed:
.gitignore
bf-alerts.pl
cgi-bin/eximstatus.pl
cgi-bin/register.pl
cgi-bin/show_failures.pl
cgi-bin/show_members.pl
cgi-bin/show_stage_log.pl
cgi-bin/show_status.pl
htdocs/exim-blue-ld-60x60.png [new file with mode: 0644]
htdocs/img/gnutls_icon.gif [new file with mode: 0644]
htdocs/img/mysql_logo.png [new file with mode: 0644]
htdocs/inc/eximbuildfarm-banner.png [new file with mode: 0644]
htdocs/index.html
schema/.gitignore [new file with mode: 0644]
schema/bfwebdb.sql
schema/bfwebdb_v8.sql [new file with mode: 0644]
schema/missing.sql [new file with mode: 0644]
templates/page.tt
templates/register-form.tt
templates/status.tt

index 27cd24b20d9ffe8d4dc709068b8d19583cdef101..386ea2b35a85d9f6447ae0d45ddbef85af0a9b2b 100644 (file)
@@ -1 +1,2 @@
 BuildFarmWeb.pl
 BuildFarmWeb.pl
+buildlogs/
index 09ac2c23211c156fe29b070947353f9266c8355d..8c932103a9b3dcf6859a3d5c72b7c72ea2135670 100755 (executable)
@@ -198,7 +198,7 @@ my $me = `id -un`; chomp $me;
 my $host = `hostname`; chomp ($host);
 $host = $default_host unless ($host =~ m/[.]/ || !defined($default_host));
 
 my $host = `hostname`; chomp ($host);
 $host = $default_host unless ($host =~ m/[.]/ || !defined($default_host));
 
-my $from_addr = "PG Build Farm <$me\@$host>";
+my $from_addr = "Exim BuildFarm <$me\@$host>";
 $from_addr =~ tr /\r\n//d;
 
 
 $from_addr =~ tr /\r\n//d;
 
 
@@ -232,7 +232,7 @@ foreach my $clearme (@need_cleared)
     # $sth->finish;
 
     $msg->to($mailto);
     # $sth->finish;
 
     $msg->to($mailto);
-    $msg->subject("PGBuildfarm member $animal Branch $branch Alert cleared");
+    $msg->subject("Exim BuildFarm member $animal Branch $branch Alert cleared");
     my $fh = $msg->open;
     print $fh "\n\n$text\n"; 
     $fh->close;
     my $fh = $msg->open;
     print $fh "\n\n$text\n"; 
     $fh->close;
@@ -261,7 +261,7 @@ foreach my $needme (@need_alerts)
 
     $msg->to($mailto);
 
 
     $msg->to($mailto);
 
-    $msg->subject("PGBuildfarm member $animal Branch $branch " .
+    $msg->subject("Exim BuildFarm member $animal Branch $branch " .
                  "Alert notification");
     my $fh = $msg->open;
     print $fh "\n\n$text\n"; 
                  "Alert notification");
     my $fh = $msg->open;
     print $fh "\n\n$text\n"; 
index b57655c75ae8f375dd031bba2a866f7fa091c23a..7e7b900fcb6babf61d4743a93a487ade7561f4ff 100755 (executable)
@@ -24,7 +24,7 @@ use CGI;
 use Digest::SHA1  qw(sha1_hex);
 use MIME::Base64;
 use DBI;
 use Digest::SHA1  qw(sha1_hex);
 use MIME::Base64;
 use DBI;
-use DBD::mysql;
+use DBD::Pg;
 use Data::Dumper;
 use Mail::Send;
 use Time::ParseDate;
 use Data::Dumper;
 use Mail::Send;
 use Time::ParseDate;
@@ -36,7 +36,7 @@ my $buildlogs = "$ENV{BFConfDir}/buildlogs";
 die "no dbname" unless $dbname;
 die "no dbuser" unless $dbuser;
 
 die "no dbname" unless $dbname;
 die "no dbuser" unless $dbuser;
 
-my $dsn="dbi:mysql:dbname=$dbname";
+my $dsn="dbi:Pg:dbname=$dbname";
 $dsn .= ";host=$dbhost" if $dbhost;
 $dsn .= ";port=$dbport" if $dbport;
 
 $dsn .= ";host=$dbhost" if $dbhost;
 $dsn .= ";port=$dbport" if $dbport;
 
@@ -320,7 +320,7 @@ EOSQL
 
 my $sqlres;
 $db->begin_work;
 
 my $sqlres;
 $db->begin_work;
-$db->do("select set_local_error_terse()");
+#$db->do("select set_local_error_terse()");
 
 
 $sth=$db->prepare($logst);
 
 
 $sth=$db->prepare($logst);
@@ -335,13 +335,13 @@ $sth->bind_param(7,$branch);
 $sth->bind_param(8,$changed_this_run);
 $sth->bind_param(9,$changed_since_success);
 $sth->bind_param(10,$log_file_names);
 $sth->bind_param(8,$changed_this_run);
 $sth->bind_param(9,$changed_since_success);
 $sth->bind_param(10,$log_file_names);
-#$sth->bind_param(11,$log_archive,{ pg_type => DBD::mysql::PG_BYTEA });
-$sth->bind_param(11,undef,{ pg_type => DBD::mysql::PG_BYTEA });
+#$sth->bind_param(11,$log_archive,{ pg_type => DBD::Pg::PG_BYTEA });
+$sth->bind_param(11,undef,{ pg_type => DBD::Pg::PG_BYTEA });
 $sth->bind_param(12,$config_flags);
 $sth->bind_param(13,$scm);
 $sth->bind_param(14,$scmurl);
 $sth->bind_param(15,$githeadref);
 $sth->bind_param(12,$config_flags);
 $sth->bind_param(13,$scm);
 $sth->bind_param(14,$scmurl);
 $sth->bind_param(15,$githeadref);
-$sth->bind_param(16,$frozen_sconf,{ pg_type => DBD::mysql::PG_BYTEA });
+$sth->bind_param(16,$frozen_sconf,{ pg_type => DBD::Pg::PG_BYTEA });
 
 $sqlres = $sth->execute;
 
 
 $sqlres = $sth->execute;
 
@@ -528,7 +528,7 @@ my $me = `id -un`; chomp($me);
 my $host = `hostname`; chomp ($host);
 $host = $default_host unless ($host =~ m/[.]/ || !defined($default_host));
 
 my $host = `hostname`; chomp ($host);
 $host = $default_host unless ($host =~ m/[.]/ || !defined($default_host));
 
-my $from_addr = "PG Build Farm <$me\@$host>";
+my $from_addr = "Exim Build Farm <$me\@$host>";
 $from_addr =~ tr /\r\n//d;
 
 my $msg = new Mail::Send;
 $from_addr =~ tr /\r\n//d;
 
 my $msg = new Mail::Send;
@@ -536,13 +536,13 @@ my $msg = new Mail::Send;
 
 $msg->to(@$mailto);
 $msg->bcc(@$bcc_stat) if (@$bcc_stat);
 
 $msg->to(@$mailto);
 $msg->bcc(@$bcc_stat) if (@$bcc_stat);
-$msg->subject("PGBuildfarm member $animal Branch $branch $stat_type $stage");
+$msg->subject("Exim BuildFarm member $animal Branch $branch $stat_type $stage");
 $msg->set('From',$from_addr);
 my $fh = $msg->open;
 print $fh <<EOMAIL; 
 
 
 $msg->set('From',$from_addr);
 my $fh = $msg->open;
 print $fh <<EOMAIL; 
 
 
-The PGBuildfarm member $animal had the following event on branch $branch:
+The Exim BuildFarm member $animal had the following event on branch $branch:
 
 $stat_type: $stage
 
 
 $stat_type: $stage
 
@@ -575,12 +575,12 @@ $stat_type = $prev_stat ne 'OK' ? "changed from $prev_stat failure to $stage" :
 $stat_type = "New member: $stage" if $prev_stat eq 'NEW';
 $stat_type .= " failure" if $stage ne 'OK';
 
 $stat_type = "New member: $stage" if $prev_stat eq 'NEW';
 $stat_type .= " failure" if $stage ne 'OK';
 
-$msg->subject("PGBuildfarm member $animal Branch $branch Status $stat_type");
+$msg->subject("Exim BuildFarm member $animal Branch $branch Status $stat_type");
 $msg->set('From',$from_addr);
 $fh = $msg->open;
 print $fh <<EOMAIL;
 
 $msg->set('From',$from_addr);
 $fh = $msg->open;
 print $fh <<EOMAIL;
 
-The PGBuildfarm member $animal had the following event on branch $branch:
+The Exim BuildFarm member $animal had the following event on branch $branch:
 
 Status $stat_type
 
 
 Status $stat_type
 
index ada9a8c45f389241af07c947fe3bf09898a27636..1e3aba48ad382e7ab87ff138a5736d701f2a4527 100755 (executable)
@@ -154,7 +154,7 @@ $from_addr =~ tr /\r\n//d;
 $msg->set('From',$from_addr);
 
 $msg->to(@$notifyapp);
 $msg->set('From',$from_addr);
 
 $msg->to(@$notifyapp);
-$msg->subject('New Buildfarm Application');
+$msg->subject('New BuildFarm Application');
 my $fh = $msg->open;
 print $fh "\n\nName: $dummyname\n",
     "OS: $os: $osv\n",
 my $fh = $msg->open;
 print $fh "\n\nName: $dummyname\n",
     "OS: $os: $osv\n",
index 48f0e978d0f67db25a406a0cc461f322548bf5dc..bfa38e941548475cb07b95efaba94dbee099f76b 100755 (executable)
@@ -71,7 +71,7 @@ my $all_members = $db->selectcol_arrayref($get_all_members);
 
 my $get_all_stages = qq{
 
 
 my $get_all_stages = qq{
 
-  select distinct stage 
+  select distinct build_status.stage 
   from build_status 
     join nrecent_failures using (sysname,snapshot,branch)
 
   from build_status 
     join nrecent_failures using (sysname,snapshot,branch)
 
@@ -109,18 +109,18 @@ while (my $row = $sth->fetchrow_hashref)
     next if (@branches && ! grep {$_ eq $row->{branch} } @branches);
     $row->{build_flags}  =~ s/^\{(.*)\}$/$1/;
     $row->{build_flags}  =~ s/,/ /g;
     next if (@branches && ! grep {$_ eq $row->{branch} } @branches);
     $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/);
-       }
+##     # 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;
     $row->{build_flags}  =~ s/--((enable|with)-)?//g;
        $row->{build_flags} =~ s/libxml/xml/;
     $row->{build_flags}  =~ s/\S+=\S+//g;
index d45acd6145dbf2e745e033697a9eb3a6edf199d3..6c7ea908a695b4555fe2e3bd23a3698c4ce8c33b 100755 (executable)
@@ -41,13 +41,13 @@ my $statement = q{
   select name, operating_system, os_version, compiler, compiler_version, owner_email, 
     sys_notes_ts::date AS sys_notes_date, sys_notes,
     architecture as arch, ARRAY(
   select name, operating_system, os_version, compiler, compiler_version, owner_email, 
     sys_notes_ts::date AS sys_notes_date, sys_notes,
     architecture as arch, ARRAY(
-                               select branch || ':' || 
+                               select branch || E':' || 
                                       extract(days from now() - l.snapshot)
                                from latest_snapshot l 
                                where l.sysname = s.name
                                order by branch <> 'HEAD', branch desc 
                                ) as branches, 
                                       extract(days from now() - l.snapshot)
                                from latest_snapshot l 
                                where l.sysname = s.name
                                order by branch <> 'HEAD', branch desc 
                                ) as branches, 
-                         ARRAY(select compiler_version || '\t' ||  os_version || '\t' || effective_date
+                         ARRAY(select compiler_version || E'\t' ||  os_version || E'\t' || effective_date
                                from personality p
                                where p.name = s.name 
                                order by effective_date
                                from personality p
                                where p.name = s.name 
                                order by effective_date
index 8110995a6f169a61f988eb4cff1ff9994706571c..fc40fa6f5f6841b9664cb7a5e97b661ff21757ae 100755 (executable)
@@ -79,8 +79,8 @@ if ($system && $logdate && $stage)
     print "Content-Type: text/plain\n\nSnapshot: $logdate\n\n", $logtext,
 
     "-------------------------------------------------\n\n",
     print "Content-Type: text/plain\n\nSnapshot: $logdate\n\n", $logtext,
 
     "-------------------------------------------------\n\n",
-    "Hosting for the PostgreSQL Buildfarm is generously ",
-    "provided by: CommandPrompt, The PostgreSQL Company";
+    "Hosting for the Exim BuildFarm is generously ",
+    "provided by: Todd Lyons";
 
 }
 
 
 }
 
index 187925f4ee2ebb25b617ded2cb4ffa540613c2d5..ac947c887b3e0de1adb2d32c6c247d547d2fce10 100755 (executable)
@@ -22,7 +22,7 @@ my $query = new CGI;
 my @members = $query->param('member');
 map { s/[^a-zA-Z0-9_ -]//g; } @members;
 
 my @members = $query->param('member');
 map { s/[^a-zA-Z0-9_ -]//g; } @members;
 
-my $dsn="dbi:mysql:dbname=$dbname";
+my $dsn="dbi:Pg:dbname=$dbname";
 $dsn .= ";host=$dbhost" if $dbhost;
 $dsn .= ";port=$dbport" if $dbport;
 
 $dsn .= ";host=$dbhost" if $dbhost;
 $dsn .= ";port=$dbport" if $dbport;
 
@@ -50,7 +50,7 @@ my $statement =<<EOS;
 
   select timezone('GMT'::text, now())::timestamp(0) without time zone - b.snapshot AS when_ago, b.*
   from dashboard_mat b
 
   select timezone('GMT'::text, now())::timestamp(0) without time zone - b.snapshot AS when_ago, b.*
   from dashboard_mat b
-  order by branch = 'HEAD' desc,
+  order by branch = 'master' desc,
         branch desc, $sort_clause 
         snapshot desc
 
         branch desc, $sort_clause 
         snapshot desc
 
diff --git a/htdocs/exim-blue-ld-60x60.png b/htdocs/exim-blue-ld-60x60.png
new file mode 100644 (file)
index 0000000..854bc60
Binary files /dev/null and b/htdocs/exim-blue-ld-60x60.png differ
diff --git a/htdocs/img/gnutls_icon.gif b/htdocs/img/gnutls_icon.gif
new file mode 100644 (file)
index 0000000..3f5c046
Binary files /dev/null and b/htdocs/img/gnutls_icon.gif differ
diff --git a/htdocs/img/mysql_logo.png b/htdocs/img/mysql_logo.png
new file mode 100644 (file)
index 0000000..3aca965
Binary files /dev/null and b/htdocs/img/mysql_logo.png differ
diff --git a/htdocs/inc/eximbuildfarm-banner.png b/htdocs/inc/eximbuildfarm-banner.png
new file mode 100644 (file)
index 0000000..a022bf8
Binary files /dev/null and b/htdocs/inc/eximbuildfarm-banner.png differ
index 66018492ee5f3f019486e3943b3ee11b86efb00a..8fc0a46b8068c541782e84b41723f4b553b492be 100644 (file)
@@ -4,7 +4,7 @@
   <head>
     <meta http-equiv="content-type" content="text/html; charset=utf-8" />
     <title>Exim BuildFarm</title>
   <head>
     <meta http-equiv="content-type" content="text/html; charset=utf-8" />
     <title>Exim BuildFarm</title>
-    <link rel="icon" type="image/png" href="/elephant-icon.png" />
+    <link rel="icon" type="image/png" href="/exim-blue-ld-60x60.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; } 
     <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; } 
@@ -14,7 +14,7 @@
   <body class="none">
     <div id="wrapper">
       <div id="banner">
   <body class="none">
     <div id="wrapper">
       <div id="banner">
-        <a href="/index.html"><img src="/inc/pgbuildfarm-banner.png" alt="Exim BuildFarm" width="800" height="73" /></a>
+        <a href="/index.html"><img src="/inc/eximbuildfarm-banner.png" alt="Exim BuildFarm" width="800" height="73" /></a>
         <div class="nav">
           <ul>
            <li id="home"><a href="/index.html" title="Exim BuildFarm Home">Home</a></li>
         <div class="nav">
           <ul>
            <li id="home"><a href="/index.html" title="Exim BuildFarm Home">Home</a></li>
@@ -23,7 +23,9 @@
            <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 Exim BuildFarm">Register</a></li>
            <li id="github"><a href="https://github.com/PGBuildFarm/client-code">GitHub</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 Exim BuildFarm">Register</a></li>
            <li id="github"><a href="https://github.com/PGBuildFarm/client-code">GitHub</a></li>
+           <!--
            <li id="lists"><a href="http://pgfoundry.org/mail/?group_id=1000040">Email lists and status archives</a></li>
            <li id="lists"><a href="http://pgfoundry.org/mail/?group_id=1000040">Email lists and status archives</a></li>
+           -->
           </ul>
         </div><!-- nav -->
       </div><!-- banner -->
           </ul>
         </div><!-- nav -->
       </div><!-- banner -->
diff --git a/schema/.gitignore b/schema/.gitignore
new file mode 100644 (file)
index 0000000..77f729a
--- /dev/null
@@ -0,0 +1 @@
+local.sql
index 4fee785bbf326e844e287f492909342990e47ba5..49b746d526db6696357574f6010beaa377aeffc4 100644 (file)
@@ -10,36 +10,36 @@ SET client_min_messages = warning;
 SET escape_string_warning = off;
 
 --
 SET escape_string_warning = off;
 
 --
--- Name: plperl; Type: PROCEDURAL LANGUAGE; Schema: -; Owner: pgbuildfarm
+-- Name: plperl; Type: PROCEDURAL LANGUAGE; Schema: -; Owner: eximbuild
 --
 
 CREATE OR REPLACE PROCEDURAL LANGUAGE plperl;
 
 
 --
 
 CREATE OR REPLACE PROCEDURAL LANGUAGE plperl;
 
 
-ALTER PROCEDURAL LANGUAGE plperl OWNER TO pgbuildfarm;
+ALTER PROCEDURAL LANGUAGE plperl OWNER TO eximbuild;
 
 --
 
 --
--- Name: plperlu; Type: PROCEDURAL LANGUAGE; Schema: -; Owner: pgbuildfarm
+-- Name: plperlu; Type: PROCEDURAL LANGUAGE; Schema: -; Owner: eximbuild
 --
 
 CREATE OR REPLACE PROCEDURAL LANGUAGE plperlu;
 
 
 --
 
 CREATE OR REPLACE PROCEDURAL LANGUAGE plperlu;
 
 
-ALTER PROCEDURAL LANGUAGE plperlu OWNER TO pgbuildfarm;
+ALTER PROCEDURAL LANGUAGE plperlu OWNER TO eximbuild;
 
 --
 
 --
--- Name: plpgsql; Type: PROCEDURAL LANGUAGE; Schema: -; Owner: pgbuildfarm
+-- Name: plpgsql; Type: PROCEDURAL LANGUAGE; Schema: -; Owner: eximbuild
 --
 
 CREATE OR REPLACE PROCEDURAL LANGUAGE plpgsql;
 
 
 --
 
 CREATE OR REPLACE PROCEDURAL LANGUAGE plpgsql;
 
 
-ALTER PROCEDURAL LANGUAGE plpgsql OWNER TO pgbuildfarm;
+ALTER PROCEDURAL LANGUAGE plpgsql OWNER TO eximbuild;
 
 SET search_path = public, pg_catalog;
 
 --
 
 SET search_path = public, pg_catalog;
 
 --
--- Name: pending; Type: TYPE; Schema: public; Owner: pgbuildfarm
+-- Name: pending; Type: TYPE; Schema: public; Owner: eximbuild
 --
 
 CREATE TYPE pending AS (
 --
 
 CREATE TYPE pending AS (
@@ -53,10 +53,10 @@ CREATE TYPE pending AS (
 );
 
 
 );
 
 
-ALTER TYPE public.pending OWNER TO pgbuildfarm;
+ALTER TYPE public.pending OWNER TO eximbuild;
 
 --
 
 --
--- Name: pending2; Type: TYPE; Schema: public; Owner: pgbuildfarm
+-- Name: pending2; Type: TYPE; Schema: public; Owner: eximbuild
 --
 
 CREATE TYPE pending2 AS (
 --
 
 CREATE TYPE pending2 AS (
@@ -72,10 +72,10 @@ CREATE TYPE pending2 AS (
 );
 
 
 );
 
 
-ALTER TYPE public.pending2 OWNER TO pgbuildfarm;
+ALTER TYPE public.pending2 OWNER TO eximbuild;
 
 --
 
 --
--- Name: approve(text, text); Type: FUNCTION; Schema: public; Owner: pgbuildfarm
+-- Name: approve(text, text); Type: FUNCTION; Schema: public; Owner: eximbuild
 --
 
 CREATE FUNCTION approve(text, text) RETURNS void
 --
 
 CREATE FUNCTION approve(text, text) RETURNS void
@@ -83,10 +83,10 @@ CREATE FUNCTION approve(text, text) RETURNS void
     AS $_$update buildsystems set name = $2, status ='approved' where name = $1 and status = 'pending'$_$;
 
 
     AS $_$update buildsystems set name = $2, status ='approved' where name = $1 and status = 'pending'$_$;
 
 
-ALTER FUNCTION public.approve(text, text) OWNER TO pgbuildfarm;
+ALTER FUNCTION public.approve(text, text) OWNER TO eximbuild;
 
 --
 
 --
--- Name: approve2(text, text); Type: FUNCTION; Schema: public; Owner: pgbuildfarm
+-- Name: approve2(text, text); Type: FUNCTION; Schema: public; Owner: eximbuild
 --
 
 CREATE FUNCTION approve2(text, text) RETURNS text
 --
 
 CREATE FUNCTION approve2(text, text) RETURNS text
@@ -94,10 +94,10 @@ CREATE FUNCTION approve2(text, text) RETURNS text
     AS $_$ update buildsystems set name = $2, status = 'approved' where name = $1 and status = 'pending'; select owner_email || ':' || name || ':' || secret from buildsystems where name = $2;$_$;
 
 
     AS $_$ update buildsystems set name = $2, status = 'approved' where name = $1 and status = 'pending'; select owner_email || ':' || name || ':' || secret from buildsystems where name = $2;$_$;
 
 
-ALTER FUNCTION public.approve2(text, text) OWNER TO pgbuildfarm;
+ALTER FUNCTION public.approve2(text, text) OWNER TO eximbuild;
 
 --
 
 --
--- Name: pending(); Type: FUNCTION; Schema: public; Owner: pgbuildfarm
+-- Name: pending(); Type: FUNCTION; Schema: public; Owner: eximbuild
 --
 
 CREATE FUNCTION pending() RETURNS SETOF pending2
 --
 
 CREATE FUNCTION pending() RETURNS SETOF pending2
@@ -105,10 +105,10 @@ CREATE FUNCTION pending() RETURNS SETOF pending2
     AS $$select name,operating_system,os_version,compiler,compiler_version,architecture,owner_email, sys_owner, status_ts from buildsystems where status = 'pending' order by status_ts $$;
 
 
     AS $$select name,operating_system,os_version,compiler,compiler_version,architecture,owner_email, sys_owner, status_ts from buildsystems where status = 'pending' order by status_ts $$;
 
 
-ALTER FUNCTION public.pending() OWNER TO pgbuildfarm;
+ALTER FUNCTION public.pending() OWNER TO eximbuild;
 
 --
 
 --
--- Name: plperl_call_handler(); Type: FUNCTION; Schema: public; Owner: pgbuildfarm
+-- Name: plperl_call_handler(); Type: FUNCTION; Schema: public; Owner: eximbuild
 --
 
 CREATE FUNCTION plperl_call_handler() RETURNS language_handler
 --
 
 CREATE FUNCTION plperl_call_handler() RETURNS language_handler
@@ -116,10 +116,10 @@ CREATE FUNCTION plperl_call_handler() RETURNS language_handler
     AS '$libdir/plperl', 'plperl_call_handler';
 
 
     AS '$libdir/plperl', 'plperl_call_handler';
 
 
-ALTER FUNCTION public.plperl_call_handler() OWNER TO pgbuildfarm;
+ALTER FUNCTION public.plperl_call_handler() OWNER TO eximbuild;
 
 --
 
 --
--- Name: plpgsql_call_handler(); Type: FUNCTION; Schema: public; Owner: pgbuildfarm
+-- Name: plpgsql_call_handler(); Type: FUNCTION; Schema: public; Owner: eximbuild
 --
 
 CREATE FUNCTION plpgsql_call_handler() RETURNS language_handler
 --
 
 CREATE FUNCTION plpgsql_call_handler() RETURNS language_handler
@@ -127,10 +127,10 @@ CREATE FUNCTION plpgsql_call_handler() RETURNS language_handler
     AS '$libdir/plpgsql', 'plpgsql_call_handler';
 
 
     AS '$libdir/plpgsql', 'plpgsql_call_handler';
 
 
-ALTER FUNCTION public.plpgsql_call_handler() OWNER TO pgbuildfarm;
+ALTER FUNCTION public.plpgsql_call_handler() OWNER TO eximbuild;
 
 --
 
 --
--- Name: pregex(text, text, text); Type: FUNCTION; Schema: public; Owner: pgbuildfarm
+-- Name: pregex(text, text, text); Type: FUNCTION; Schema: public; Owner: eximbuild
 --
 
 CREATE FUNCTION pregex(text, text, text) RETURNS text
 --
 
 CREATE FUNCTION pregex(text, text, text) RETURNS text
@@ -138,10 +138,10 @@ CREATE FUNCTION pregex(text, text, text) RETURNS text
     AS $_$ my $source = shift; my $pattern = shift; my $repl = shift; my $regex = qr($pattern)i; $source =~ s/$regex/$repl/g; return $source; $_$;
 
 
     AS $_$ my $source = shift; my $pattern = shift; my $repl = shift; my $regex = qr($pattern)i; $source =~ s/$regex/$repl/g; return $source; $_$;
 
 
-ALTER FUNCTION public.pregex(text, text, text) OWNER TO pgbuildfarm;
+ALTER FUNCTION public.pregex(text, text, text) OWNER TO eximbuild;
 
 --
 
 --
--- Name: prevstat(text, text, timestamp without time zone); Type: FUNCTION; Schema: public; Owner: pgbuildfarm
+-- Name: prevstat(text, text, timestamp without time zone); Type: FUNCTION; Schema: public; Owner: eximbuild
 --
 
 CREATE FUNCTION prevstat(text, text, timestamp without time zone) RETURNS text
 --
 
 CREATE FUNCTION prevstat(text, text, timestamp without time zone) RETURNS text
@@ -155,10 +155,10 @@ CREATE FUNCTION prevstat(text, text, timestamp without time zone) RETURNS text
 $_$;
 
 
 $_$;
 
 
-ALTER FUNCTION public.prevstat(text, text, timestamp without time zone) OWNER TO pgbuildfarm;
+ALTER FUNCTION public.prevstat(text, text, timestamp without time zone) OWNER TO eximbuild;
 
 --
 
 --
--- Name: script_version(text); Type: FUNCTION; Schema: public; Owner: pgbuildfarm
+-- Name: script_version(text); Type: FUNCTION; Schema: public; Owner: eximbuild
 --
 
 CREATE FUNCTION script_version(text) RETURNS text
 --
 
 CREATE FUNCTION script_version(text) RETURNS text
@@ -175,10 +175,10 @@ CREATE FUNCTION script_version(text) RETURNS text
 $_$;
 
 
 $_$;
 
 
-ALTER FUNCTION public.script_version(text) OWNER TO pgbuildfarm;
+ALTER FUNCTION public.script_version(text) OWNER TO eximbuild;
 
 --
 
 --
--- Name: set_latest(); Type: FUNCTION; Schema: public; Owner: pgbuildfarm
+-- Name: set_latest(); Type: FUNCTION; Schema: public; Owner: eximbuild
 --
 
 CREATE FUNCTION set_latest() RETURNS trigger
 --
 
 CREATE FUNCTION set_latest() RETURNS trigger
@@ -200,10 +200,10 @@ CREATE FUNCTION set_latest() RETURNS trigger
 $$;
 
 
 $$;
 
 
-ALTER FUNCTION public.set_latest() OWNER TO pgbuildfarm;
+ALTER FUNCTION public.set_latest() OWNER TO eximbuild;
 
 --
 
 --
--- Name: set_local_error_terse(); Type: FUNCTION; Schema: public; Owner: pgbuildfarm
+-- Name: set_local_error_terse(); Type: FUNCTION; Schema: public; Owner: eximbuild
 --
 
 CREATE FUNCTION set_local_error_terse() RETURNS void
 --
 
 CREATE FUNCTION set_local_error_terse() RETURNS void
@@ -211,10 +211,10 @@ CREATE FUNCTION set_local_error_terse() RETURNS void
     AS $$ set local log_error_verbosity = terse $$;
 
 
     AS $$ set local log_error_verbosity = terse $$;
 
 
-ALTER FUNCTION public.set_local_error_terse() OWNER TO pgbuildfarm;
+ALTER FUNCTION public.set_local_error_terse() OWNER TO eximbuild;
 
 --
 
 --
--- Name: target(text); Type: FUNCTION; Schema: public; Owner: pgbuildfarm
+-- Name: target(text); Type: FUNCTION; Schema: public; Owner: eximbuild
 --
 
 CREATE FUNCTION target(t text) RETURNS text
 --
 
 CREATE FUNCTION target(t text) RETURNS text
@@ -222,10 +222,10 @@ CREATE FUNCTION target(t text) RETURNS text
     AS $_$ my $log = shift; $log =~ s/.*(Target:[^\n]*).*/$1/s; return $log; $_$;
 
 
     AS $_$ my $log = shift; $log =~ s/.*(Target:[^\n]*).*/$1/s; return $log; $_$;
 
 
-ALTER FUNCTION public.target(t text) OWNER TO pgbuildfarm;
+ALTER FUNCTION public.target(t text) OWNER TO eximbuild;
 
 --
 
 --
--- Name: transitions(text, text, text, text, text, text); Type: FUNCTION; Schema: public; Owner: pgbuildfarm
+-- Name: transitions(text, text, text, text, text, text); Type: FUNCTION; Schema: public; Owner: eximbuild
 --
 
 CREATE FUNCTION transitions(text, text, text, text, text, text) RETURNS integer
 --
 
 CREATE FUNCTION transitions(text, text, text, text, text, text) RETURNS integer
@@ -257,10 +257,10 @@ return $counttrans;
 $_$;
 
 
 $_$;
 
 
-ALTER FUNCTION public.transitions(text, text, text, text, text, text) OWNER TO pgbuildfarm;
+ALTER FUNCTION public.transitions(text, text, text, text, text, text) OWNER TO eximbuild;
 
 --
 
 --
--- Name: web_script_version(text); Type: FUNCTION; Schema: public; Owner: pgbuildfarm
+-- Name: web_script_version(text); Type: FUNCTION; Schema: public; Owner: eximbuild
 --
 
 CREATE FUNCTION web_script_version(text) RETURNS text
 --
 
 CREATE FUNCTION web_script_version(text) RETURNS text
@@ -277,14 +277,14 @@ CREATE FUNCTION web_script_version(text) RETURNS text
 $_$;
 
 
 $_$;
 
 
-ALTER FUNCTION public.web_script_version(text) OWNER TO pgbuildfarm;
+ALTER FUNCTION public.web_script_version(text) OWNER TO eximbuild;
 
 SET default_tablespace = '';
 
 SET default_with_oids = true;
 
 --
 
 SET default_tablespace = '';
 
 SET default_with_oids = true;
 
 --
--- Name: alerts; Type: TABLE; Schema: public; Owner: pgbuildfarm; Tablespace: 
+-- Name: alerts; Type: TABLE; Schema: public; Owner: eximbuild; Tablespace: 
 --
 
 CREATE TABLE alerts (
 --
 
 CREATE TABLE alerts (
@@ -295,10 +295,10 @@ CREATE TABLE alerts (
 );
 
 
 );
 
 
-ALTER TABLE public.alerts OWNER TO pgbuildfarm;
+ALTER TABLE public.alerts OWNER TO eximbuild;
 
 --
 
 --
--- Name: build_status; Type: TABLE; Schema: public; Owner: pgbuildfarm; Tablespace: 
+-- Name: build_status; Type: TABLE; Schema: public; Owner: eximbuild; Tablespace: 
 --
 
 CREATE TABLE build_status (
 --
 
 CREATE TABLE build_status (
@@ -322,20 +322,20 @@ CREATE TABLE build_status (
 );
 
 
 );
 
 
-ALTER TABLE public.build_status OWNER TO pgbuildfarm;
+ALTER TABLE public.build_status OWNER TO eximbuild;
 
 --
 
 --
--- Name: build_status_export; Type: VIEW; Schema: public; Owner: pgbuildfarm
+-- Name: build_status_export; Type: VIEW; Schema: public; Owner: eximbuild
 --
 
 CREATE VIEW build_status_export AS
     SELECT build_status.sysname AS name, build_status.snapshot, build_status.stage, build_status.branch, build_status.build_flags FROM build_status;
 
 
 --
 
 CREATE VIEW build_status_export AS
     SELECT build_status.sysname AS name, build_status.snapshot, build_status.stage, build_status.branch, build_status.build_flags FROM build_status;
 
 
-ALTER TABLE public.build_status_export OWNER TO pgbuildfarm;
+ALTER TABLE public.build_status_export OWNER TO eximbuild;
 
 --
 
 --
--- Name: build_status_log; Type: TABLE; Schema: public; Owner: pgbuildfarm; Tablespace: 
+-- Name: build_status_log; Type: TABLE; Schema: public; Owner: eximbuild; Tablespace: 
 --
 
 CREATE TABLE build_status_log (
 --
 
 CREATE TABLE build_status_log (
@@ -348,10 +348,10 @@ CREATE TABLE build_status_log (
 );
 
 
 );
 
 
-ALTER TABLE public.build_status_log OWNER TO pgbuildfarm;
+ALTER TABLE public.build_status_log OWNER TO eximbuild;
 
 --
 
 --
--- Name: buildsystems; Type: TABLE; Schema: public; Owner: pgbuildfarm; Tablespace: 
+-- Name: buildsystems; Type: TABLE; Schema: public; Owner: eximbuild; Tablespace: 
 --
 
 CREATE TABLE buildsystems (
 --
 
 CREATE TABLE buildsystems (
@@ -372,20 +372,20 @@ CREATE TABLE buildsystems (
 );
 
 
 );
 
 
-ALTER TABLE public.buildsystems OWNER TO pgbuildfarm;
+ALTER TABLE public.buildsystems OWNER TO eximbuild;
 
 --
 
 --
--- Name: buildsystems_export; Type: VIEW; Schema: public; Owner: pgbuildfarm
+-- Name: buildsystems_export; Type: VIEW; Schema: public; Owner: eximbuild
 --
 
 CREATE VIEW buildsystems_export AS
     SELECT buildsystems.name, buildsystems.operating_system, buildsystems.os_version, buildsystems.compiler, buildsystems.compiler_version, buildsystems.architecture FROM buildsystems WHERE (buildsystems.status = 'approved'::text);
 
 
 --
 
 CREATE VIEW buildsystems_export AS
     SELECT buildsystems.name, buildsystems.operating_system, buildsystems.os_version, buildsystems.compiler, buildsystems.compiler_version, buildsystems.architecture FROM buildsystems WHERE (buildsystems.status = 'approved'::text);
 
 
-ALTER TABLE public.buildsystems_export OWNER TO pgbuildfarm;
+ALTER TABLE public.buildsystems_export OWNER TO eximbuild;
 
 --
 
 --
--- Name: dashboard_mat; Type: TABLE; Schema: public; Owner: pgbuildfarm; Tablespace: 
+-- Name: dashboard_mat; Type: TABLE; Schema: public; Owner: eximbuild; Tablespace: 
 --
 
 CREATE TABLE dashboard_mat (
 --
 
 CREATE TABLE dashboard_mat (
@@ -405,10 +405,10 @@ CREATE TABLE dashboard_mat (
 );
 
 
 );
 
 
-ALTER TABLE public.dashboard_mat OWNER TO pgbuildfarm;
+ALTER TABLE public.dashboard_mat OWNER TO eximbuild;
 
 --
 
 --
--- Name: latest_snapshot; Type: TABLE; Schema: public; Owner: pgbuildfarm; Tablespace: 
+-- Name: latest_snapshot; Type: TABLE; Schema: public; Owner: eximbuild; Tablespace: 
 --
 
 CREATE TABLE latest_snapshot (
 --
 
 CREATE TABLE latest_snapshot (
@@ -418,10 +418,10 @@ CREATE TABLE latest_snapshot (
 );
 
 
 );
 
 
-ALTER TABLE public.latest_snapshot OWNER TO pgbuildfarm;
+ALTER TABLE public.latest_snapshot OWNER TO eximbuild;
 
 --
 
 --
--- Name: personality; Type: TABLE; Schema: public; Owner: pgbuildfarm; Tablespace: 
+-- Name: personality; Type: TABLE; Schema: public; Owner: eximbuild; Tablespace: 
 --
 
 CREATE TABLE personality (
 --
 
 CREATE TABLE personality (
@@ -432,30 +432,30 @@ CREATE TABLE personality (
 );
 
 
 );
 
 
-ALTER TABLE public.personality OWNER TO pgbuildfarm;
+ALTER TABLE public.personality OWNER TO eximbuild;
 
 --
 
 --
--- Name: dashboard_mat_data; Type: VIEW; Schema: public; Owner: pgbuildfarm
+-- Name: dashboard_mat_data; Type: VIEW; Schema: public; Owner: eximbuild
 --
 
 CREATE VIEW dashboard_mat_data AS
     SELECT b.sysname, b.snapshot, b.status, b.stage, b.branch, CASE WHEN ((b.conf_sum ~ 'use_vpath'::text) AND (b.conf_sum !~ '''use_vpath'' => undef'::text)) THEN (b.build_flags || 'vpath'::text) ELSE b.build_flags END AS build_flags, s.operating_system, COALESCE(b.os_version, s.os_version) AS os_version, s.compiler, COALESCE(b.compiler_version, s.compiler_version) AS compiler_version, s.architecture, s.sys_notes_ts, s.sys_notes FROM buildsystems s, (SELECT DISTINCT ON (bs.sysname, bs.branch, bs.report_time) bs.sysname, bs.snapshot, bs.status, bs.stage, bs.branch, bs.build_flags, bs.conf_sum, bs.report_time, p.compiler_version, p.os_version FROM ((build_status bs NATURAL JOIN latest_snapshot m) LEFT JOIN personality p ON (((p.name = bs.sysname) AND (p.effective_date <= bs.report_time)))) WHERE (m.snapshot > (now() - '30 days'::interval)) ORDER BY bs.sysname, bs.branch, bs.report_time, (p.effective_date IS NULL), p.effective_date DESC) b WHERE ((s.name = b.sysname) AND (s.status = 'approved'::text));
 
 
 --
 
 CREATE VIEW dashboard_mat_data AS
     SELECT b.sysname, b.snapshot, b.status, b.stage, b.branch, CASE WHEN ((b.conf_sum ~ 'use_vpath'::text) AND (b.conf_sum !~ '''use_vpath'' => undef'::text)) THEN (b.build_flags || 'vpath'::text) ELSE b.build_flags END AS build_flags, s.operating_system, COALESCE(b.os_version, s.os_version) AS os_version, s.compiler, COALESCE(b.compiler_version, s.compiler_version) AS compiler_version, s.architecture, s.sys_notes_ts, s.sys_notes FROM buildsystems s, (SELECT DISTINCT ON (bs.sysname, bs.branch, bs.report_time) bs.sysname, bs.snapshot, bs.status, bs.stage, bs.branch, bs.build_flags, bs.conf_sum, bs.report_time, p.compiler_version, p.os_version FROM ((build_status bs NATURAL JOIN latest_snapshot m) LEFT JOIN personality p ON (((p.name = bs.sysname) AND (p.effective_date <= bs.report_time)))) WHERE (m.snapshot > (now() - '30 days'::interval)) ORDER BY bs.sysname, bs.branch, bs.report_time, (p.effective_date IS NULL), p.effective_date DESC) b WHERE ((s.name = b.sysname) AND (s.status = 'approved'::text));
 
 
-ALTER TABLE public.dashboard_mat_data OWNER TO pgbuildfarm;
+ALTER TABLE public.dashboard_mat_data OWNER TO eximbuild;
 
 --
 
 --
--- Name: failures; Type: VIEW; Schema: public; Owner: pgbuildfarm
+-- Name: failures; Type: VIEW; Schema: public; Owner: eximbuild
 --
 
 CREATE VIEW failures AS
     SELECT build_status.sysname, build_status.snapshot, build_status.stage, build_status.conf_sum, build_status.branch, build_status.changed_this_run, build_status.changed_since_success, build_status.log_archive_filenames, build_status.build_flags, build_status.report_time FROM build_status WHERE (((build_status.stage <> 'OK'::text) AND (build_status.stage !~~ 'CVS%'::text)) AND (build_status.report_time IS NOT NULL));
 
 
 --
 
 CREATE VIEW failures AS
     SELECT build_status.sysname, build_status.snapshot, build_status.stage, build_status.conf_sum, build_status.branch, build_status.changed_this_run, build_status.changed_since_success, build_status.log_archive_filenames, build_status.build_flags, build_status.report_time FROM build_status WHERE (((build_status.stage <> 'OK'::text) AND (build_status.stage !~~ 'CVS%'::text)) AND (build_status.report_time IS NOT NULL));
 
 
-ALTER TABLE public.failures OWNER TO pgbuildfarm;
+ALTER TABLE public.failures OWNER TO eximbuild;
 
 --
 
 --
--- Name: list_subscriptions; Type: TABLE; Schema: public; Owner: pgbuildfarm; Tablespace: 
+-- Name: list_subscriptions; Type: TABLE; Schema: public; Owner: eximbuild; Tablespace: 
 --
 
 CREATE TABLE list_subscriptions (
 --
 
 CREATE TABLE list_subscriptions (
@@ -463,10 +463,10 @@ CREATE TABLE list_subscriptions (
 );
 
 
 );
 
 
-ALTER TABLE public.list_subscriptions OWNER TO pgbuildfarm;
+ALTER TABLE public.list_subscriptions OWNER TO eximbuild;
 
 --
 
 --
--- Name: penguin_save; Type: TABLE; Schema: public; Owner: pgbuildfarm; Tablespace: 
+-- Name: penguin_save; Type: TABLE; Schema: public; Owner: eximbuild; Tablespace: 
 --
 
 CREATE TABLE penguin_save (
 --
 
 CREATE TABLE penguin_save (
@@ -476,40 +476,40 @@ CREATE TABLE penguin_save (
 );
 
 
 );
 
 
-ALTER TABLE public.penguin_save OWNER TO pgbuildfarm;
+ALTER TABLE public.penguin_save OWNER TO eximbuild;
 
 --
 
 --
--- Name: recent_failures; Type: VIEW; Schema: public; Owner: pgbuildfarm
+-- Name: recent_failures; Type: VIEW; Schema: public; Owner: eximbuild
 --
 
 CREATE VIEW recent_failures AS
     SELECT build_status.sysname, build_status.snapshot, build_status.stage, build_status.conf_sum, build_status.branch, build_status.changed_this_run, build_status.changed_since_success, build_status.log_archive_filenames, build_status.build_flags, build_status.report_time, build_status.log FROM build_status WHERE ((((build_status.stage <> 'OK'::text) AND (build_status.stage !~~ 'CVS%'::text)) AND (build_status.report_time IS NOT NULL)) AND ((build_status.snapshot + '3 mons'::interval) > ('now'::text)::timestamp(6) with time zone));
 
 
 --
 
 CREATE VIEW recent_failures AS
     SELECT build_status.sysname, build_status.snapshot, build_status.stage, build_status.conf_sum, build_status.branch, build_status.changed_this_run, build_status.changed_since_success, build_status.log_archive_filenames, build_status.build_flags, build_status.report_time, build_status.log FROM build_status WHERE ((((build_status.stage <> 'OK'::text) AND (build_status.stage !~~ 'CVS%'::text)) AND (build_status.report_time IS NOT NULL)) AND ((build_status.snapshot + '3 mons'::interval) > ('now'::text)::timestamp(6) with time zone));
 
 
-ALTER TABLE public.recent_failures OWNER TO pgbuildfarm;
+ALTER TABLE public.recent_failures OWNER TO eximbuild;
 
 --
 
 --
--- Name: script_versions; Type: VIEW; Schema: public; Owner: pgbuildfarm
+-- Name: script_versions; Type: VIEW; Schema: public; Owner: eximbuild
 --
 
 CREATE VIEW script_versions AS
     SELECT b.sysname, b.snapshot, b.branch, (script_version(b.conf_sum))::numeric AS script_version, (web_script_version(b.conf_sum))::numeric AS web_script_version FROM (build_status b JOIN dashboard_mat d ON (((b.sysname = d.sysname) AND (b.snapshot = d.snapshot))));
 
 
 --
 
 CREATE VIEW script_versions AS
     SELECT b.sysname, b.snapshot, b.branch, (script_version(b.conf_sum))::numeric AS script_version, (web_script_version(b.conf_sum))::numeric AS web_script_version FROM (build_status b JOIN dashboard_mat d ON (((b.sysname = d.sysname) AND (b.snapshot = d.snapshot))));
 
 
-ALTER TABLE public.script_versions OWNER TO pgbuildfarm;
+ALTER TABLE public.script_versions OWNER TO eximbuild;
 
 --
 
 --
--- Name: script_versions2; Type: VIEW; Schema: public; Owner: pgbuildfarm
+-- Name: script_versions2; Type: VIEW; Schema: public; Owner: eximbuild
 --
 
 CREATE VIEW script_versions2 AS
     SELECT b.sysname, b.snapshot, b.branch, script_version(b.conf_sum) AS script_version, web_script_version(b.conf_sum) AS web_script_version FROM (build_status b JOIN dashboard_mat d ON (((b.sysname = d.sysname) AND (b.snapshot = d.snapshot))));
 
 
 --
 
 CREATE VIEW script_versions2 AS
     SELECT b.sysname, b.snapshot, b.branch, script_version(b.conf_sum) AS script_version, web_script_version(b.conf_sum) AS web_script_version FROM (build_status b JOIN dashboard_mat d ON (((b.sysname = d.sysname) AND (b.snapshot = d.snapshot))));
 
 
-ALTER TABLE public.script_versions2 OWNER TO pgbuildfarm;
+ALTER TABLE public.script_versions2 OWNER TO eximbuild;
 
 --
 
 --
--- Name: alerts_pkey; Type: CONSTRAINT; Schema: public; Owner: pgbuildfarm; Tablespace: 
+-- Name: alerts_pkey; Type: CONSTRAINT; Schema: public; Owner: eximbuild; Tablespace: 
 --
 
 ALTER TABLE ONLY alerts
 --
 
 ALTER TABLE ONLY alerts
@@ -517,7 +517,7 @@ ALTER TABLE ONLY alerts
 
 
 --
 
 
 --
--- Name: build_status_log_pkey; Type: CONSTRAINT; Schema: public; Owner: pgbuildfarm; Tablespace: 
+-- Name: build_status_log_pkey; Type: CONSTRAINT; Schema: public; Owner: eximbuild; Tablespace: 
 --
 
 ALTER TABLE ONLY build_status_log
 --
 
 ALTER TABLE ONLY build_status_log
@@ -525,7 +525,7 @@ ALTER TABLE ONLY build_status_log
 
 
 --
 
 
 --
--- Name: build_status_pkey; Type: CONSTRAINT; Schema: public; Owner: pgbuildfarm; Tablespace: 
+-- Name: build_status_pkey; Type: CONSTRAINT; Schema: public; Owner: eximbuild; Tablespace: 
 --
 
 ALTER TABLE ONLY build_status
 --
 
 ALTER TABLE ONLY build_status
@@ -533,7 +533,7 @@ ALTER TABLE ONLY build_status
 
 
 --
 
 
 --
--- Name: buildsystems_pkey; Type: CONSTRAINT; Schema: public; Owner: pgbuildfarm; Tablespace: 
+-- Name: buildsystems_pkey; Type: CONSTRAINT; Schema: public; Owner: eximbuild; Tablespace: 
 --
 
 ALTER TABLE ONLY buildsystems
 --
 
 ALTER TABLE ONLY buildsystems
@@ -541,7 +541,7 @@ ALTER TABLE ONLY buildsystems
 
 
 --
 
 
 --
--- Name: dashboard_mat_pk; Type: CONSTRAINT; Schema: public; Owner: pgbuildfarm; Tablespace: 
+-- Name: dashboard_mat_pk; Type: CONSTRAINT; Schema: public; Owner: eximbuild; Tablespace: 
 --
 
 ALTER TABLE ONLY dashboard_mat
 --
 
 ALTER TABLE ONLY dashboard_mat
@@ -551,7 +551,7 @@ ALTER TABLE dashboard_mat CLUSTER ON dashboard_mat_pk;
 
 
 --
 
 
 --
--- Name: latest_snapshot_pkey; Type: CONSTRAINT; Schema: public; Owner: pgbuildfarm; Tablespace: 
+-- Name: latest_snapshot_pkey; Type: CONSTRAINT; Schema: public; Owner: eximbuild; Tablespace: 
 --
 
 ALTER TABLE ONLY latest_snapshot
 --
 
 ALTER TABLE ONLY latest_snapshot
@@ -559,7 +559,7 @@ ALTER TABLE ONLY latest_snapshot
 
 
 --
 
 
 --
--- Name: personality_pkey; Type: CONSTRAINT; Schema: public; Owner: pgbuildfarm; Tablespace: 
+-- Name: personality_pkey; Type: CONSTRAINT; Schema: public; Owner: eximbuild; Tablespace: 
 --
 
 ALTER TABLE ONLY personality
 --
 
 ALTER TABLE ONLY personality
@@ -567,49 +567,49 @@ ALTER TABLE ONLY personality
 
 
 --
 
 
 --
--- Name: bs_branch_snapshot_idx; Type: INDEX; Schema: public; Owner: pgbuildfarm; Tablespace: 
+-- Name: bs_branch_snapshot_idx; Type: INDEX; Schema: public; Owner: eximbuild; Tablespace: 
 --
 
 CREATE INDEX bs_branch_snapshot_idx ON build_status USING btree (branch, snapshot);
 
 
 --
 --
 
 CREATE INDEX bs_branch_snapshot_idx ON build_status USING btree (branch, snapshot);
 
 
 --
--- Name: bs_status_idx; Type: INDEX; Schema: public; Owner: pgbuildfarm; Tablespace: 
+-- Name: bs_status_idx; Type: INDEX; Schema: public; Owner: eximbuild; Tablespace: 
 --
 
 CREATE INDEX bs_status_idx ON buildsystems USING btree (status);
 
 
 --
 --
 
 CREATE INDEX bs_status_idx ON buildsystems USING btree (status);
 
 
 --
--- Name: bs_sysname_branch_idx; Type: INDEX; Schema: public; Owner: pgbuildfarm; Tablespace: 
+-- Name: bs_sysname_branch_idx; Type: INDEX; Schema: public; Owner: eximbuild; Tablespace: 
 --
 
 CREATE INDEX bs_sysname_branch_idx ON build_status USING btree (sysname, branch);
 
 
 --
 --
 
 CREATE INDEX bs_sysname_branch_idx ON build_status USING btree (sysname, branch);
 
 
 --
--- Name: bs_sysname_branch_report_idx; Type: INDEX; Schema: public; Owner: pgbuildfarm; Tablespace: 
+-- Name: bs_sysname_branch_report_idx; Type: INDEX; Schema: public; Owner: eximbuild; Tablespace: 
 --
 
 CREATE INDEX bs_sysname_branch_report_idx ON build_status USING btree (sysname, branch, report_time);
 
 
 --
 --
 
 CREATE INDEX bs_sysname_branch_report_idx ON build_status USING btree (sysname, branch, report_time);
 
 
 --
--- Name: build_status_log_snapshot_idx; Type: INDEX; Schema: public; Owner: pgbuildfarm; Tablespace: 
+-- Name: build_status_log_snapshot_idx; Type: INDEX; Schema: public; Owner: eximbuild; Tablespace: 
 --
 
 CREATE INDEX build_status_log_snapshot_idx ON build_status_log USING btree (snapshot);
 
 
 --
 --
 
 CREATE INDEX build_status_log_snapshot_idx ON build_status_log USING btree (snapshot);
 
 
 --
--- Name: set_latest_snapshot; Type: TRIGGER; Schema: public; Owner: pgbuildfarm
+-- Name: set_latest_snapshot; Type: TRIGGER; Schema: public; Owner: eximbuild
 --
 
 CREATE TRIGGER set_latest_snapshot AFTER INSERT ON build_status FOR EACH ROW EXECUTE PROCEDURE set_latest();
 
 
 --
 --
 
 CREATE TRIGGER set_latest_snapshot AFTER INSERT ON build_status FOR EACH ROW EXECUTE PROCEDURE set_latest();
 
 
 --
--- Name: bs_fk; Type: FK CONSTRAINT; Schema: public; Owner: pgbuildfarm
+-- Name: bs_fk; Type: FK CONSTRAINT; Schema: public; Owner: eximbuild
 --
 
 ALTER TABLE ONLY build_status
 --
 
 ALTER TABLE ONLY build_status
@@ -617,7 +617,7 @@ ALTER TABLE ONLY build_status
 
 
 --
 
 
 --
--- Name: build_status_log_sysname_fkey; Type: FK CONSTRAINT; Schema: public; Owner: pgbuildfarm
+-- Name: build_status_log_sysname_fkey; Type: FK CONSTRAINT; Schema: public; Owner: eximbuild
 --
 
 ALTER TABLE ONLY build_status_log
 --
 
 ALTER TABLE ONLY build_status_log
@@ -625,7 +625,7 @@ ALTER TABLE ONLY build_status_log
 
 
 --
 
 
 --
--- Name: personality_build_systems_name_fk; Type: FK CONSTRAINT; Schema: public; Owner: pgbuildfarm
+-- Name: personality_build_systems_name_fk; Type: FK CONSTRAINT; Schema: public; Owner: eximbuild
 --
 
 ALTER TABLE ONLY personality
 --
 
 ALTER TABLE ONLY personality
@@ -639,82 +639,82 @@ ALTER TABLE ONLY personality
 REVOKE ALL ON SCHEMA public FROM PUBLIC;
 REVOKE ALL ON SCHEMA public FROM postgres;
 GRANT ALL ON SCHEMA public TO postgres;
 REVOKE ALL ON SCHEMA public FROM PUBLIC;
 REVOKE ALL ON SCHEMA public FROM postgres;
 GRANT ALL ON SCHEMA public TO postgres;
-GRANT ALL ON SCHEMA public TO pgbuildfarm;
+GRANT ALL ON SCHEMA public TO eximbuild;
 GRANT ALL ON SCHEMA public TO PUBLIC;
 
 
 --
 GRANT ALL ON SCHEMA public TO PUBLIC;
 
 
 --
--- Name: build_status; Type: ACL; Schema: public; Owner: pgbuildfarm
+-- Name: build_status; Type: ACL; Schema: public; Owner: eximbuild
 --
 
 REVOKE ALL ON TABLE build_status FROM PUBLIC;
 --
 
 REVOKE ALL ON TABLE build_status FROM PUBLIC;
-REVOKE ALL ON TABLE build_status FROM pgbuildfarm;
-GRANT ALL ON TABLE build_status TO pgbuildfarm;
-GRANT SELECT,INSERT ON TABLE build_status TO pgbfweb;
+REVOKE ALL ON TABLE build_status FROM eximbuild;
+GRANT ALL ON TABLE build_status TO eximbuild;
+GRANT SELECT,INSERT ON TABLE build_status TO apache;
 GRANT SELECT ON TABLE build_status TO rssfeed;
 
 
 --
 GRANT SELECT ON TABLE build_status TO rssfeed;
 
 
 --
--- Name: build_status_log; Type: ACL; Schema: public; Owner: pgbuildfarm
+-- Name: build_status_log; Type: ACL; Schema: public; Owner: eximbuild
 --
 
 REVOKE ALL ON TABLE build_status_log FROM PUBLIC;
 --
 
 REVOKE ALL ON TABLE build_status_log FROM PUBLIC;
-REVOKE ALL ON TABLE build_status_log FROM pgbuildfarm;
-GRANT ALL ON TABLE build_status_log TO pgbuildfarm;
-GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE build_status_log TO pgbfweb;
+REVOKE ALL ON TABLE build_status_log FROM eximbuild;
+GRANT ALL ON TABLE build_status_log TO eximbuild;
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE build_status_log TO apache;
 GRANT SELECT ON TABLE build_status_log TO rssfeed;
 
 
 --
 GRANT SELECT ON TABLE build_status_log TO rssfeed;
 
 
 --
--- Name: buildsystems; Type: ACL; Schema: public; Owner: pgbuildfarm
+-- Name: buildsystems; Type: ACL; Schema: public; Owner: eximbuild
 --
 
 REVOKE ALL ON TABLE buildsystems FROM PUBLIC;
 --
 
 REVOKE ALL ON TABLE buildsystems FROM PUBLIC;
-REVOKE ALL ON TABLE buildsystems FROM pgbuildfarm;
-GRANT ALL ON TABLE buildsystems TO pgbuildfarm;
-GRANT SELECT,INSERT,UPDATE ON TABLE buildsystems TO pgbfweb;
+REVOKE ALL ON TABLE buildsystems FROM eximbuild;
+GRANT ALL ON TABLE buildsystems TO eximbuild;
+GRANT SELECT,INSERT,UPDATE ON TABLE buildsystems TO apache;
 GRANT SELECT ON TABLE buildsystems TO rssfeed;
 
 
 --
 GRANT SELECT ON TABLE buildsystems TO rssfeed;
 
 
 --
--- Name: dashboard_mat; Type: ACL; Schema: public; Owner: pgbuildfarm
+-- Name: dashboard_mat; Type: ACL; Schema: public; Owner: eximbuild
 --
 
 REVOKE ALL ON TABLE dashboard_mat FROM PUBLIC;
 --
 
 REVOKE ALL ON TABLE dashboard_mat FROM PUBLIC;
-REVOKE ALL ON TABLE dashboard_mat FROM pgbuildfarm;
-GRANT ALL ON TABLE dashboard_mat TO pgbuildfarm;
-GRANT SELECT,INSERT,DELETE ON TABLE dashboard_mat TO pgbfweb;
+REVOKE ALL ON TABLE dashboard_mat FROM eximbuild;
+GRANT ALL ON TABLE dashboard_mat TO eximbuild;
+GRANT SELECT,INSERT,DELETE ON TABLE dashboard_mat TO apache;
 
 
 --
 
 
 --
--- Name: latest_snapshot; Type: ACL; Schema: public; Owner: pgbuildfarm
+-- Name: latest_snapshot; Type: ACL; Schema: public; Owner: eximbuild
 --
 
 REVOKE ALL ON TABLE latest_snapshot FROM PUBLIC;
 --
 
 REVOKE ALL ON TABLE latest_snapshot FROM PUBLIC;
-REVOKE ALL ON TABLE latest_snapshot FROM pgbuildfarm;
-GRANT ALL ON TABLE latest_snapshot TO pgbuildfarm;
-GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE latest_snapshot TO pgbfweb;
+REVOKE ALL ON TABLE latest_snapshot FROM eximbuild;
+GRANT ALL ON TABLE latest_snapshot TO eximbuild;
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE latest_snapshot TO apache;
 
 
 --
 
 
 --
--- Name: personality; Type: ACL; Schema: public; Owner: pgbuildfarm
+-- Name: personality; Type: ACL; Schema: public; Owner: eximbuild
 --
 
 REVOKE ALL ON TABLE personality FROM PUBLIC;
 --
 
 REVOKE ALL ON TABLE personality FROM PUBLIC;
-REVOKE ALL ON TABLE personality FROM pgbuildfarm;
-GRANT ALL ON TABLE personality TO pgbuildfarm;
-GRANT SELECT,INSERT ON TABLE personality TO pgbfweb;
+REVOKE ALL ON TABLE personality FROM eximbuild;
+GRANT ALL ON TABLE personality TO eximbuild;
+GRANT SELECT,INSERT ON TABLE personality TO apache;
 GRANT SELECT ON TABLE personality TO rssfeed;
 
 
 --
 GRANT SELECT ON TABLE personality TO rssfeed;
 
 
 --
--- Name: dashboard_mat_data; Type: ACL; Schema: public; Owner: pgbuildfarm
+-- Name: dashboard_mat_data; Type: ACL; Schema: public; Owner: eximbuild
 --
 
 REVOKE ALL ON TABLE dashboard_mat_data FROM PUBLIC;
 --
 
 REVOKE ALL ON TABLE dashboard_mat_data FROM PUBLIC;
-REVOKE ALL ON TABLE dashboard_mat_data FROM pgbuildfarm;
-GRANT ALL ON TABLE dashboard_mat_data TO pgbuildfarm;
-GRANT SELECT ON TABLE dashboard_mat_data TO pgbfweb;
+REVOKE ALL ON TABLE dashboard_mat_data FROM eximbuild;
+GRANT ALL ON TABLE dashboard_mat_data TO eximbuild;
+GRANT SELECT ON TABLE dashboard_mat_data TO apache;
 
 
 --
 
 
 --
diff --git a/schema/bfwebdb_v8.sql b/schema/bfwebdb_v8.sql
new file mode 100644 (file)
index 0000000..3af2716
--- /dev/null
@@ -0,0 +1,723 @@
+--
+-- PostgreSQL database dump
+--
+
+SET statement_timeout = 0;
+SET client_encoding = 'SQL_ASCII';
+SET standard_conforming_strings = off;
+SET check_function_bodies = false;
+SET client_min_messages = warning;
+SET escape_string_warning = off;
+
+--
+-- Name: plperl; Type: PROCEDURAL LANGUAGE; Schema: -; Owner: eximbuild
+--
+
+CREATE PROCEDURAL LANGUAGE plperl;
+
+
+ALTER PROCEDURAL LANGUAGE plperl OWNER TO eximbuild;
+
+--
+-- Name: plperlu; Type: PROCEDURAL LANGUAGE; Schema: -; Owner: eximbuild
+--
+
+CREATE PROCEDURAL LANGUAGE plperlu;
+
+
+ALTER PROCEDURAL LANGUAGE plperlu OWNER TO eximbuild;
+
+--
+-- Name: plpgsql; Type: PROCEDURAL LANGUAGE; Schema: -; Owner: eximbuild
+--
+
+CREATE PROCEDURAL LANGUAGE plpgsql;
+
+
+ALTER PROCEDURAL LANGUAGE plpgsql OWNER TO eximbuild;
+
+SET search_path = public, pg_catalog;
+
+--
+-- Name: pending; Type: TYPE; Schema: public; Owner: eximbuild
+--
+
+CREATE TYPE pending AS (
+       name text,
+       operating_system text,
+       os_version text,
+       compiler text,
+       compiler_version text,
+       architecture text,
+       owner_email text
+);
+
+
+ALTER TYPE public.pending OWNER TO eximbuild;
+
+--
+-- Name: pending2; Type: TYPE; Schema: public; Owner: eximbuild
+--
+
+CREATE TYPE pending2 AS (
+       name text,
+       operating_system text,
+       os_version text,
+       compiler text,
+       compiler_version text,
+       architecture text,
+       owner_email text,
+       owner text,
+       status_ts timestamp without time zone
+);
+
+
+ALTER TYPE public.pending2 OWNER TO eximbuild;
+
+--
+-- Name: approve(text, text); Type: FUNCTION; Schema: public; Owner: eximbuild
+--
+
+CREATE FUNCTION approve(text, text) RETURNS void
+    LANGUAGE sql
+    AS $_$update buildsystems set name = $2, status ='approved' where name = $1 and status = 'pending'$_$;
+
+
+ALTER FUNCTION public.approve(text, text) OWNER TO eximbuild;
+
+--
+-- Name: approve2(text, text); Type: FUNCTION; Schema: public; Owner: eximbuild
+--
+
+CREATE FUNCTION approve2(text, text) RETURNS text
+    LANGUAGE sql
+    AS $_$ update buildsystems set name = $2, status = 'approved' where name = $1 and status = 'pending'; select owner_email || ':' || name || ':' || secret from buildsystems where name = $2;$_$;
+
+
+ALTER FUNCTION public.approve2(text, text) OWNER TO eximbuild;
+
+--
+-- Name: pending(); Type: FUNCTION; Schema: public; Owner: eximbuild
+--
+
+CREATE FUNCTION pending() RETURNS SETOF pending2
+    LANGUAGE sql
+    AS $$select name,operating_system,os_version,compiler,compiler_version,architecture,owner_email, sys_owner, status_ts from buildsystems where status = 'pending' order by status_ts $$;
+
+
+ALTER FUNCTION public.pending() OWNER TO eximbuild;
+
+--
+-- Name: plperl_call_handler(); Type: FUNCTION; Schema: public; Owner: eximbuild
+--
+
+CREATE FUNCTION plperl_call_handler() RETURNS language_handler
+    LANGUAGE c
+    AS '$libdir/plperl', 'plperl_call_handler';
+
+
+ALTER FUNCTION public.plperl_call_handler() OWNER TO eximbuild;
+
+--
+-- Name: plpgsql_call_handler(); Type: FUNCTION; Schema: public; Owner: eximbuild
+--
+
+CREATE FUNCTION plpgsql_call_handler() RETURNS language_handler
+    LANGUAGE c
+    AS '$libdir/plpgsql', 'plpgsql_call_handler';
+
+
+ALTER FUNCTION public.plpgsql_call_handler() OWNER TO eximbuild;
+
+--
+-- Name: pregex(text, text, text); Type: FUNCTION; Schema: public; Owner: eximbuild
+--
+
+CREATE FUNCTION pregex(text, text, text) RETURNS text
+    LANGUAGE plperl
+    AS $_$ my $source = shift; my $pattern = shift; my $repl = shift; my $regex = qr($pattern)i; $source =~ s/$regex/$repl/g; return $source; $_$;
+
+
+ALTER FUNCTION public.pregex(text, text, text) OWNER TO eximbuild;
+
+--
+-- Name: prevstat(text, text, timestamp without time zone); Type: FUNCTION; Schema: public; Owner: eximbuild
+--
+
+CREATE FUNCTION prevstat(text, text, timestamp without time zone) RETURNS text
+    LANGUAGE sql
+    AS $_$
+   select coalesce((select distinct on (snapshot) stage
+                  from build_status
+                  where sysname = $1 and branch = $2 and snapshot < $3
+                  order by snapshot desc
+                  limit 1), 'NEW') as prev_status
+$_$;
+
+
+ALTER FUNCTION public.prevstat(text, text, timestamp without time zone) OWNER TO eximbuild;
+
+--
+-- Name: script_version(text); Type: FUNCTION; Schema: public; Owner: eximbuild
+--
+
+CREATE FUNCTION script_version(text) RETURNS text
+    LANGUAGE plperl
+    AS $_$
+
+   my $log = shift;
+   if ($log =~ /'script_version' => '(REL_)?(\d+)\.(\d+)'/)
+   {
+       return sprintf("%.03d%.03d",$2,$3);
+   }
+   return '-1';
+
+$_$;
+
+
+ALTER FUNCTION public.script_version(text) OWNER TO eximbuild;
+
+--
+-- Name: set_latest(); Type: FUNCTION; Schema: public; Owner: eximbuild
+--
+
+CREATE FUNCTION set_latest() RETURNS trigger
+    LANGUAGE plpgsql
+    AS $$
+
+       begin
+               update latest_snapshot 
+                       set snapshot = 
+       (case when snapshot > NEW.snapshot then snapshot else NEW.snapshot end)
+                       where sysname = NEW.sysname and
+                               branch = NEW.branch;
+               if not found then
+                       insert into latest_snapshot
+                               values(NEW.sysname, NEW.branch, NEW.snapshot);
+               end if;
+               return NEW;
+       end;
+$$;
+
+
+ALTER FUNCTION public.set_latest() OWNER TO eximbuild;
+
+--
+-- Name: set_local_error_terse(); Type: FUNCTION; Schema: public; Owner: eximbuild
+--
+
+CREATE FUNCTION set_local_error_terse() RETURNS void
+    LANGUAGE sql SECURITY DEFINER
+    AS $$ set local log_error_verbosity = terse $$;
+
+
+-- ALTER FUNCTION public.set_local_error_terse() OWNER TO eximbuild;
+
+--
+-- Name: target(text); Type: FUNCTION; Schema: public; Owner: eximbuild
+--
+
+CREATE FUNCTION target(t text) RETURNS text
+    LANGUAGE plperl
+    AS $_$ my $log = shift; $log =~ s/.*(Target:[^\n]*).*/$1/s; return $log; $_$;
+
+
+ALTER FUNCTION public.target(t text) OWNER TO eximbuild;
+
+--
+-- Name: transitions(text, text, text, text, text, text); Type: FUNCTION; Schema: public; Owner: eximbuild
+--
+
+CREATE FUNCTION transitions(text, text, text, text, text, text) RETURNS integer
+    LANGUAGE plperl
+    AS $_$
+
+my ($os,$osv,$comp,$compv,$arch,$owner) = @_;
+# count transitions to and from upper case
+my $trans = 1;
+my $counttrans = 0;
+foreach (split "" ,"$os$osv$comp$compv$arch$owner")
+{
+       if (/[A-Z]/)
+       {
+               next if $trans;
+               $trans = 1;
+               $counttrans++;
+       }
+       else
+       {
+               next unless $trans;
+               $trans = 0;
+               $counttrans++;
+       }
+}
+
+return $counttrans;
+
+$_$;
+
+
+ALTER FUNCTION public.transitions(text, text, text, text, text, text) OWNER TO eximbuild;
+
+--
+-- Name: web_script_version(text); Type: FUNCTION; Schema: public; Owner: eximbuild
+--
+
+CREATE FUNCTION web_script_version(text) RETURNS text
+    LANGUAGE plperl
+    AS $_$
+
+   my $log = shift;
+   if ($log =~ /'web_script_version' => '(REL_)?(\d+)\.(\d+)'/)
+   {
+       return sprintf("%0.3d%0.3d",$2,$3);
+   }
+   return '-1';
+
+$_$;
+
+
+ALTER FUNCTION public.web_script_version(text) OWNER TO eximbuild;
+
+SET default_tablespace = '';
+
+SET default_with_oids = true;
+
+--
+-- Name: alerts; Type: TABLE; Schema: public; Owner: eximbuild; Tablespace: 
+--
+
+CREATE TABLE alerts (
+    sysname text NOT NULL,
+    branch text NOT NULL,
+    first_alert timestamp without time zone,
+    last_notification timestamp without time zone
+);
+
+
+ALTER TABLE public.alerts OWNER TO eximbuild;
+
+--
+-- Name: build_status; Type: TABLE; Schema: public; Owner: eximbuild; Tablespace: 
+--
+
+CREATE TABLE build_status (
+    sysname text NOT NULL,
+    snapshot timestamp without time zone NOT NULL,
+    status integer,
+    stage text,
+    log text,
+    conf_sum text,
+    branch text,
+    changed_this_run text,
+    changed_since_success text,
+    log_archive bytea,
+    log_archive_filenames text[],
+    build_flags text[],
+    report_time timestamp with time zone DEFAULT ('now'::text)::timestamp(6) with time zone,
+    scm text,
+    scmurl text,
+    frozen_conf bytea,
+    git_head_ref text
+);
+
+
+ALTER TABLE public.build_status OWNER TO eximbuild;
+
+--
+-- Name: build_status_export; Type: VIEW; Schema: public; Owner: eximbuild
+--
+
+CREATE VIEW build_status_export AS
+    SELECT build_status.sysname AS name, build_status.snapshot, build_status.stage, build_status.branch, build_status.build_flags FROM build_status;
+
+
+ALTER TABLE public.build_status_export OWNER TO eximbuild;
+
+--
+-- Name: build_status_log; Type: TABLE; Schema: public; Owner: eximbuild; Tablespace: 
+--
+
+CREATE TABLE build_status_log (
+    sysname text NOT NULL,
+    snapshot timestamp without time zone NOT NULL,
+    branch text NOT NULL,
+    log_stage text NOT NULL,
+    log_text text,
+    stage_duration interval
+);
+
+
+ALTER TABLE public.build_status_log OWNER TO eximbuild;
+
+--
+-- Name: buildsystems; Type: TABLE; Schema: public; Owner: eximbuild; Tablespace: 
+--
+
+CREATE TABLE buildsystems (
+    name text NOT NULL,
+    secret text NOT NULL,
+    operating_system text NOT NULL,
+    os_version text NOT NULL,
+    compiler text NOT NULL,
+    compiler_version text NOT NULL,
+    architecture text NOT NULL,
+    status text NOT NULL,
+    sys_owner text NOT NULL,
+    owner_email text NOT NULL,
+    status_ts timestamp without time zone DEFAULT (('now'::text)::timestamp(6) with time zone)::timestamp without time zone,
+    no_alerts boolean DEFAULT false,
+    sys_notes text,
+    sys_notes_ts timestamp with time zone
+);
+
+
+ALTER TABLE public.buildsystems OWNER TO eximbuild;
+
+--
+-- Name: buildsystems_export; Type: VIEW; Schema: public; Owner: eximbuild
+--
+
+CREATE VIEW buildsystems_export AS
+    SELECT buildsystems.name, buildsystems.operating_system, buildsystems.os_version, buildsystems.compiler, buildsystems.compiler_version, buildsystems.architecture FROM buildsystems WHERE (buildsystems.status = 'approved'::text);
+
+
+ALTER TABLE public.buildsystems_export OWNER TO eximbuild;
+
+--
+-- Name: dashboard_mat; Type: TABLE; Schema: public; Owner: eximbuild; Tablespace: 
+--
+
+CREATE TABLE dashboard_mat (
+    sysname text NOT NULL,
+    snapshot timestamp without time zone NOT NULL,
+    status integer,
+    stage text,
+    branch text NOT NULL,
+    build_flags text[],
+    operating_system text,
+    os_version text,
+    compiler text,
+    compiler_version text,
+    architecture text,
+    sys_notes_ts timestamp with time zone,
+    sys_notes text
+);
+
+
+ALTER TABLE public.dashboard_mat OWNER TO eximbuild;
+
+--
+-- Name: latest_snapshot; Type: TABLE; Schema: public; Owner: eximbuild; Tablespace: 
+--
+
+CREATE TABLE latest_snapshot (
+    sysname text NOT NULL,
+    branch text NOT NULL,
+    snapshot timestamp without time zone NOT NULL
+);
+
+
+ALTER TABLE public.latest_snapshot OWNER TO eximbuild;
+
+--
+-- Name: personality; Type: TABLE; Schema: public; Owner: eximbuild; Tablespace: 
+--
+
+CREATE TABLE personality (
+    name text NOT NULL,
+    os_version text NOT NULL,
+    compiler_version text NOT NULL,
+    effective_date timestamp with time zone DEFAULT ('now'::text)::timestamp(6) with time zone NOT NULL
+);
+
+
+ALTER TABLE public.personality OWNER TO eximbuild;
+
+--
+-- Name: dashboard_mat_data; Type: VIEW; Schema: public; Owner: eximbuild
+--
+
+CREATE VIEW dashboard_mat_data AS
+    SELECT b.sysname, b.snapshot, b.status, b.stage, b.branch, CASE WHEN ((b.conf_sum ~ 'use_vpath'::text) AND (b.conf_sum !~ '''use_vpath'' => undef'::text)) THEN (b.build_flags || 'vpath'::text) ELSE b.build_flags END AS build_flags, s.operating_system, COALESCE(b.os_version, s.os_version) AS os_version, s.compiler, COALESCE(b.compiler_version, s.compiler_version) AS compiler_version, s.architecture, s.sys_notes_ts, s.sys_notes FROM buildsystems s, (SELECT DISTINCT ON (bs.sysname, bs.branch, bs.report_time) bs.sysname, bs.snapshot, bs.status, bs.stage, bs.branch, bs.build_flags, bs.conf_sum, bs.report_time, p.compiler_version, p.os_version FROM ((build_status bs NATURAL JOIN latest_snapshot m) LEFT JOIN personality p ON (((p.name = bs.sysname) AND (p.effective_date <= bs.report_time)))) WHERE (m.snapshot > (now() - '30 days'::interval)) ORDER BY bs.sysname, bs.branch, bs.report_time, (p.effective_date IS NULL), p.effective_date DESC) b WHERE ((s.name = b.sysname) AND (s.status = 'approved'::text));
+
+
+ALTER TABLE public.dashboard_mat_data OWNER TO eximbuild;
+
+--
+-- Name: failures; Type: VIEW; Schema: public; Owner: eximbuild
+--
+
+CREATE VIEW failures AS
+    SELECT build_status.sysname, build_status.snapshot, build_status.stage, build_status.conf_sum, build_status.branch, build_status.changed_this_run, build_status.changed_since_success, build_status.log_archive_filenames, build_status.build_flags, build_status.report_time FROM build_status WHERE (((build_status.stage <> 'OK'::text) AND (build_status.stage !~~ 'CVS%'::text)) AND (build_status.report_time IS NOT NULL));
+
+
+ALTER TABLE public.failures OWNER TO eximbuild;
+
+--
+-- Name: list_subscriptions; Type: TABLE; Schema: public; Owner: eximbuild; Tablespace: 
+--
+
+CREATE TABLE list_subscriptions (
+    addr text
+);
+
+
+ALTER TABLE public.list_subscriptions OWNER TO eximbuild;
+
+--
+-- Name: penguin_save; Type: TABLE; Schema: public; Owner: eximbuild; Tablespace: 
+--
+
+CREATE TABLE penguin_save (
+    branch text,
+    snapshot timestamp without time zone,
+    stage text
+);
+
+
+ALTER TABLE public.penguin_save OWNER TO eximbuild;
+
+--
+-- Name: recent_failures; Type: VIEW; Schema: public; Owner: eximbuild
+--
+
+CREATE VIEW recent_failures AS
+    SELECT build_status.sysname, build_status.snapshot, build_status.stage, build_status.conf_sum, build_status.branch, build_status.changed_this_run, build_status.changed_since_success, build_status.log_archive_filenames, build_status.build_flags, build_status.report_time, build_status.log FROM build_status WHERE ((((build_status.stage <> 'OK'::text) AND (build_status.stage !~~ 'CVS%'::text)) AND (build_status.report_time IS NOT NULL)) AND ((build_status.snapshot + '3 mons'::interval) > ('now'::text)::timestamp(6) with time zone));
+
+
+ALTER TABLE public.recent_failures OWNER TO eximbuild;
+
+--
+-- Name: script_versions; Type: VIEW; Schema: public; Owner: eximbuild
+--
+
+CREATE VIEW script_versions AS
+    SELECT b.sysname, b.snapshot, b.branch, (script_version(b.conf_sum))::numeric AS script_version, (web_script_version(b.conf_sum))::numeric AS web_script_version FROM (build_status b JOIN dashboard_mat d ON (((b.sysname = d.sysname) AND (b.snapshot = d.snapshot))));
+
+
+ALTER TABLE public.script_versions OWNER TO eximbuild;
+
+--
+-- Name: script_versions2; Type: VIEW; Schema: public; Owner: eximbuild
+--
+
+CREATE VIEW script_versions2 AS
+    SELECT b.sysname, b.snapshot, b.branch, script_version(b.conf_sum) AS script_version, web_script_version(b.conf_sum) AS web_script_version FROM (build_status b JOIN dashboard_mat d ON (((b.sysname = d.sysname) AND (b.snapshot = d.snapshot))));
+
+
+ALTER TABLE public.script_versions2 OWNER TO eximbuild;
+
+--
+-- Name: alerts_pkey; Type: CONSTRAINT; Schema: public; Owner: eximbuild; Tablespace: 
+--
+
+ALTER TABLE ONLY alerts
+    ADD CONSTRAINT alerts_pkey PRIMARY KEY (sysname, branch);
+
+
+--
+-- Name: build_status_log_pkey; Type: CONSTRAINT; Schema: public; Owner: eximbuild; Tablespace: 
+--
+
+ALTER TABLE ONLY build_status_log
+    ADD CONSTRAINT build_status_log_pkey PRIMARY KEY (sysname, snapshot, log_stage);
+
+
+--
+-- Name: build_status_pkey; Type: CONSTRAINT; Schema: public; Owner: eximbuild; Tablespace: 
+--
+
+ALTER TABLE ONLY build_status
+    ADD CONSTRAINT build_status_pkey PRIMARY KEY (sysname, snapshot);
+
+
+--
+-- Name: buildsystems_pkey; Type: CONSTRAINT; Schema: public; Owner: eximbuild; Tablespace: 
+--
+
+ALTER TABLE ONLY buildsystems
+    ADD CONSTRAINT buildsystems_pkey PRIMARY KEY (name);
+
+
+--
+-- Name: dashboard_mat_pk; Type: CONSTRAINT; Schema: public; Owner: eximbuild; Tablespace: 
+--
+
+ALTER TABLE ONLY dashboard_mat
+    ADD CONSTRAINT dashboard_mat_pk PRIMARY KEY (branch, sysname, snapshot);
+
+ALTER TABLE dashboard_mat CLUSTER ON dashboard_mat_pk;
+
+
+--
+-- Name: latest_snapshot_pkey; Type: CONSTRAINT; Schema: public; Owner: eximbuild; Tablespace: 
+--
+
+ALTER TABLE ONLY latest_snapshot
+    ADD CONSTRAINT latest_snapshot_pkey PRIMARY KEY (sysname, branch);
+
+
+--
+-- Name: personality_pkey; Type: CONSTRAINT; Schema: public; Owner: eximbuild; Tablespace: 
+--
+
+ALTER TABLE ONLY personality
+    ADD CONSTRAINT personality_pkey PRIMARY KEY (name, effective_date);
+
+
+--
+-- Name: bs_branch_snapshot_idx; Type: INDEX; Schema: public; Owner: eximbuild; Tablespace: 
+--
+
+CREATE INDEX bs_branch_snapshot_idx ON build_status USING btree (branch, snapshot);
+
+
+--
+-- Name: bs_status_idx; Type: INDEX; Schema: public; Owner: eximbuild; Tablespace: 
+--
+
+CREATE INDEX bs_status_idx ON buildsystems USING btree (status);
+
+
+--
+-- Name: bs_sysname_branch_idx; Type: INDEX; Schema: public; Owner: eximbuild; Tablespace: 
+--
+
+CREATE INDEX bs_sysname_branch_idx ON build_status USING btree (sysname, branch);
+
+
+--
+-- Name: bs_sysname_branch_report_idx; Type: INDEX; Schema: public; Owner: eximbuild; Tablespace: 
+--
+
+CREATE INDEX bs_sysname_branch_report_idx ON build_status USING btree (sysname, branch, report_time);
+
+
+--
+-- Name: build_status_log_snapshot_idx; Type: INDEX; Schema: public; Owner: eximbuild; Tablespace: 
+--
+
+CREATE INDEX build_status_log_snapshot_idx ON build_status_log USING btree (snapshot);
+
+
+--
+-- Name: set_latest_snapshot; Type: TRIGGER; Schema: public; Owner: eximbuild
+--
+
+CREATE TRIGGER set_latest_snapshot AFTER INSERT ON build_status FOR EACH ROW EXECUTE PROCEDURE set_latest();
+
+
+--
+-- Name: bs_fk; Type: FK CONSTRAINT; Schema: public; Owner: eximbuild
+--
+
+ALTER TABLE ONLY build_status
+    ADD CONSTRAINT bs_fk FOREIGN KEY (sysname) REFERENCES buildsystems(name) ON UPDATE CASCADE ON DELETE CASCADE;
+
+
+--
+-- Name: build_status_log_sysname_fkey; Type: FK CONSTRAINT; Schema: public; Owner: eximbuild
+--
+
+ALTER TABLE ONLY build_status_log
+    ADD CONSTRAINT build_status_log_sysname_fkey FOREIGN KEY (sysname, snapshot) REFERENCES build_status(sysname, snapshot) ON UPDATE CASCADE ON DELETE CASCADE;
+
+
+--
+-- Name: personality_build_systems_name_fk; Type: FK CONSTRAINT; Schema: public; Owner: eximbuild
+--
+
+ALTER TABLE ONLY personality
+    ADD CONSTRAINT personality_build_systems_name_fk FOREIGN KEY (name) REFERENCES buildsystems(name) ON UPDATE CASCADE ON DELETE CASCADE;
+
+
+--
+-- Name: public; Type: ACL; Schema: -; Owner: postgres
+--
+
+REVOKE ALL ON SCHEMA public FROM PUBLIC;
+REVOKE ALL ON SCHEMA public FROM postgres;
+GRANT ALL ON SCHEMA public TO postgres;
+GRANT ALL ON SCHEMA public TO eximbuild;
+GRANT ALL ON SCHEMA public TO PUBLIC;
+
+
+--
+-- Name: build_status; Type: ACL; Schema: public; Owner: eximbuild
+--
+
+REVOKE ALL ON TABLE build_status FROM PUBLIC;
+REVOKE ALL ON TABLE build_status FROM eximbuild;
+GRANT ALL ON TABLE build_status TO eximbuild;
+GRANT SELECT,INSERT ON TABLE build_status TO apache;
+GRANT SELECT ON TABLE build_status TO rssfeed;
+
+
+--
+-- Name: build_status_log; Type: ACL; Schema: public; Owner: eximbuild
+--
+
+REVOKE ALL ON TABLE build_status_log FROM PUBLIC;
+REVOKE ALL ON TABLE build_status_log FROM eximbuild;
+GRANT ALL ON TABLE build_status_log TO eximbuild;
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE build_status_log TO apache;
+GRANT SELECT ON TABLE build_status_log TO rssfeed;
+
+
+--
+-- Name: buildsystems; Type: ACL; Schema: public; Owner: eximbuild
+--
+
+REVOKE ALL ON TABLE buildsystems FROM PUBLIC;
+REVOKE ALL ON TABLE buildsystems FROM eximbuild;
+GRANT ALL ON TABLE buildsystems TO eximbuild;
+GRANT SELECT,INSERT,UPDATE ON TABLE buildsystems TO apache;
+GRANT SELECT ON TABLE buildsystems TO rssfeed;
+
+
+--
+-- Name: dashboard_mat; Type: ACL; Schema: public; Owner: eximbuild
+--
+
+REVOKE ALL ON TABLE dashboard_mat FROM PUBLIC;
+REVOKE ALL ON TABLE dashboard_mat FROM eximbuild;
+GRANT ALL ON TABLE dashboard_mat TO eximbuild;
+GRANT SELECT,INSERT,DELETE ON TABLE dashboard_mat TO apache;
+
+
+--
+-- Name: latest_snapshot; Type: ACL; Schema: public; Owner: eximbuild
+--
+
+REVOKE ALL ON TABLE latest_snapshot FROM PUBLIC;
+REVOKE ALL ON TABLE latest_snapshot FROM eximbuild;
+GRANT ALL ON TABLE latest_snapshot TO eximbuild;
+GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE latest_snapshot TO apache;
+
+
+--
+-- Name: personality; Type: ACL; Schema: public; Owner: eximbuild
+--
+
+REVOKE ALL ON TABLE personality FROM PUBLIC;
+REVOKE ALL ON TABLE personality FROM eximbuild;
+GRANT ALL ON TABLE personality TO eximbuild;
+GRANT SELECT,INSERT ON TABLE personality TO apache;
+GRANT SELECT ON TABLE personality TO rssfeed;
+
+
+--
+-- Name: dashboard_mat_data; Type: ACL; Schema: public; Owner: eximbuild
+--
+
+REVOKE ALL ON TABLE dashboard_mat_data FROM PUBLIC;
+REVOKE ALL ON TABLE dashboard_mat_data FROM eximbuild;
+GRANT ALL ON TABLE dashboard_mat_data TO eximbuild;
+GRANT SELECT ON TABLE dashboard_mat_data TO apache;
+
+
+--
+-- PostgreSQL database dump complete
+--
+
diff --git a/schema/missing.sql b/schema/missing.sql
new file mode 100644 (file)
index 0000000..23adcc4
--- /dev/null
@@ -0,0 +1,17 @@
+--
+-- Name: build_status_recent_500; Type: VIEW; Schema: public; Owner: eximbuild
+--
+
+CREATE VIEW build_status_recent_500 AS
+    SELECT bs.sysname, bs.status, bs.snapshot, bs.stage, bs.conf_sum, bs.branch, bs.changed_this_run, bs.changed_since_success, bs.log_archive_filenames, bs.build_flags, bs.report_time, bs.log FROM build_status AS bs WHERE ((build_status.snapshot + '3 mons'::interval) > ('now'::text)::timestamp(6) with time zone);
+
+ALTER TABLE public.build_status_recent_500 OWNER TO eximbuild;
+
+--
+-- Name: nrecent_failures; Type: VIEW; Schema: public; Owner: eximbuild
+--
+
+CREATE VIEW nrecent_failures AS
+    SELECT build_status.sysname, build_status.snapshot, build_status.stage, build_status.conf_sum, build_status.branch, build_status.changed_this_run, build_status.changed_since_success, build_status.log_archive_filenames, build_status.build_flags, build_status.report_time, build_status.log FROM build_status WHERE ((((build_status.stage <> 'OK'::text) AND (build_status.stage !~~ 'CVS%'::text)) AND (build_status.report_time IS NOT NULL)) AND ((build_status.snapshot + '3 mons'::interval) > ('now'::text)::timestamp(6) with time zone));
+
+ALTER TABLE public.nrecent_failures OWNER TO eximbuild;
index ee7d302966b89e05e8cb0a08b9379e9b4dd74c17..50fe4cb86994a5817c5788fba1c95f8e67bc9d4d 100644 (file)
@@ -11,7 +11,7 @@ See accompanying License file for license details
   <head>
     <meta http-equiv="content-type" content="text/html; charset=utf-8" />
     <title>[% title %]</title>
   <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="icon" type="image/png" href="/exim-blue-ld-60x60.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; } 
     <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; } 
@@ -21,7 +21,7 @@ See accompanying License file for license details
   <body class="[% bodyclass %]">
     <div id="wrapper">
       <div id="banner">
   <body class="[% bodyclass %]">
     <div id="wrapper">
       <div id="banner">
-        <a href="/index.html"><img src="/inc/pgbuildfarm-banner.png" alt="Exim BuildFarm" width="800" height="73" /></a>
+        <a href="/index.html"><img src="/inc/eximbuildfarm-banner.png" alt="Exim BuildFarm" width="800" height="73" /></a>
         <div class="nav">
           <ul>
            <li id="home"><a href="/index.html" title="Exim BuildFarm Home">Home</a></li>
         <div class="nav">
           <ul>
            <li id="home"><a href="/index.html" title="Exim BuildFarm Home">Home</a></li>
@@ -30,10 +30,17 @@ See accompanying License file for license details
            <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 Exim BuildFarm">Register</a></li>
            <li id="github"><a href="https://github.com/PGBuildFarm/client-code">GitHub</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 Exim BuildFarm">Register</a></li>
            <li id="github"><a href="https://github.com/PGBuildFarm/client-code">GitHub</a></li>
+            <!--
            <li id="lists"><a href="http://pgfoundry.org/mail/?group_id=1000040">Email lists and status archives</a></li>
            <li id="lists"><a href="http://pgfoundry.org/mail/?group_id=1000040">Email lists and status archives</a></li>
+            -->
           </ul>
         </div><!-- nav -->
       </div><!-- banner -->
           </ul>
         </div><!-- nav -->
       </div><!-- banner -->
+      <div class="main">
+        <p>
+          <strong>WARNING:</strong> Server and client are still considered beta level; still designing/adapting, so expect rapid fluctuation.
+        </p>
+      </div>
       <div class="main">
         [% content %]
       </div><!-- main -->
       <div class="main">
         [% content %]
       </div><!-- main -->
index 42526f113bae7baf1441b33db44ec1f0d3cc7d3a..15c75963b08c8f7096124969d849d9b0cf712767 100644 (file)
@@ -16,21 +16,20 @@ See accompanying License file for license details
 before submitting this form.</p>
 
 <ul>
 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 Exim Git repository, 
-     either the one at postgresql.org or a mirror.</li>
+<li> your machine will need to be able to contact <a href="http://eximbuild.mrball.net">http://eximbuild.mrball.net</a>
+     either directly or via proxy, and it will need access to an Exim Git repository, 
+     either the one at exim.org or a mirror.</li>
 <li> have <a href="http://git-scm.org">git</a> installed.</li>
 <li> have <a href="http://git-scm.org">git</a> installed.</li>
-<li> have a working Postgresql build environment for your platform.</li>
-<li> Windows only: you will need a native perl installed (and not just the one from the MSys DTK). The one from ActiveState works fine.</li>
+<li> have a working Exim build environment for your platform.</li>
 <li> download and unpack the latest release of client code from 
 <li> download and unpack the latest release of client code from 
-     <a href="http://www.pgbuildfarm.org/downloads/">http://www.pgbuildfarm.org/downloads/</a></li>
+     <a href="http://eximbuild.mrball.net/downloads/">http://eximbuild.mrball.net/downloads/</a></li>
 <li> read instructions at 
 <li> read instructions at 
-     <a href="http://wiki.postgresql.org/wiki/Exim_Buildfarm_Howto">http://wiki.postgresql.org/wiki/PostgreSQL_Buildfarm_Howto</a></li>
-<li> get the software running locally using flags --force --nostatus --nosend</li>
+     <a href="http://wiki.exim.org/wiki/Exim_Buildfarm_Howto">http://wiki.exim.org/wiki/Exim_Buildfarm_Howto</a></li>
+<li> get the software running locally using --test (implies flags --force --nostatus --nosend --verbose)</li>
+<li> add --verbose=2 to printout out the entire configure/build/doc/test output</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) 
 <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>
-<li> Note that it is possible (and quite common) to run more than one buildfarm member on a single machine.</li>
+     for the branches you want to support, which at this time is limited to HEAD</li>
 </ul>
 <hr />
 
 </ul>
 <hr />
 
index b34008282933a9e3fd3a89bc942fb3a9b933c133..d9a64c1d312f6b77f527b39755f4d63196ef8263 100644 (file)
@@ -8,19 +8,21 @@ See accompanying License file for license details
 [%
  flag_imgs = {
      perl = '/img/camel.png',
 [%
  flag_imgs = {
      perl = '/img/camel.png',
-     python = '/img/python.png',
-     debug = '/img/bug.png',
-     pam => '/img/pam.png',
-     cassert => '/img/cassert.png',
+     #python = '/img/python.png',
+     #debug = '/img/bug.png',
+     #pam => '/img/pam.png',
+     #cassert => '/img/cassert.png',
      openssl => '/img/ssl_icon.gif',
      openssl => '/img/ssl_icon.gif',
-     nls => '/img/translateicon.gif',
-     krb5 => '/img/krb.gif',
-     gssapi => '/img/gssapi.gif',
-     tcl => '/img/tcl.png',
-     vpath => '/img/vpath.png',
-     xml => '/img/xml.png',
-     'thread-safety' => '/img/threads.gif',
-     'integer-datetimes' = '/img/days.png',
+     gnutls => '/img/gnutls_icon.gif',
+     #nls => '/img/translateicon.gif',
+     #krb5 => '/img/krb.gif',
+     #gssapi => '/img/gssapi.gif',
+     #tcl => '/img/tcl.png',
+     #vpath => '/img/vpath.png',
+     #xml => '/img/xml.png',
+     #'thread-safety' => '/img/threads.gif',
+     #'integer-datetimes' = '/img/days.png',
+     mysql = '/img/mysql_logo.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 %][%#
      }
 -%]
 [%- 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 %][%#