Author: wade
Date: 2005-05-12 19:28:35 -0400 (Thu, 12 May 2005)
New Revision: 44481

Added:
   trunk/release/monobuild/tests/
   trunk/release/monobuild/tests/get_latest_revision.pl
   trunk/release/monobuild/tests/get_state.pl
   trunk/release/monobuild/www/builds/
   trunk/release/monobuild/www/builds/testing/
   trunk/release/monobuild/www/builds/testing/fedora-3-i386/
   trunk/release/monobuild/www/builds/testing/fedora-3-i386/gtk-sharp/
   trunk/release/monobuild/www/builds/testing/fedora-3-i386/gtk-sharp/r4543/
   
trunk/release/monobuild/www/builds/testing/fedora-3-i386/gtk-sharp/r4543/files/
   
trunk/release/monobuild/www/builds/testing/fedora-3-i386/gtk-sharp/r4543/files/gtk-sharp.rpm
   
trunk/release/monobuild/www/builds/testing/fedora-3-i386/gtk-sharp/r4543/files/gtk-sharp.tar.gz
   
trunk/release/monobuild/www/builds/testing/fedora-3-i386/gtk-sharp/r4543/info.xml
   
trunk/release/monobuild/www/builds/testing/fedora-3-i386/gtk-sharp/r4543/logs/
   
trunk/release/monobuild/www/builds/testing/fedora-3-i386/gtk-sharp/r4543/logs/build.log
   
trunk/release/monobuild/www/builds/testing/fedora-3-i386/gtk-sharp/r4543/logs/mktarball.log
   
trunk/release/monobuild/www/builds/testing/fedora-3-i386/gtk-sharp/r4543/logs/rpm.log
   trunk/release/monobuild/www/builds/testing/suse-93-i586/
   trunk/release/monobuild/www/builds/testing/suse-93-i586/gecko-sharp-2.0/
   
trunk/release/monobuild/www/builds/testing/suse-93-i586/gecko-sharp-2.0/r4543/
   
trunk/release/monobuild/www/builds/testing/suse-93-i586/gecko-sharp-2.0/r4543/files/
   
trunk/release/monobuild/www/builds/testing/suse-93-i586/gecko-sharp-2.0/r4543/files/gecko.rpm
   
trunk/release/monobuild/www/builds/testing/suse-93-i586/gecko-sharp-2.0/r4543/files/gecko.tar.gz
   
trunk/release/monobuild/www/builds/testing/suse-93-i586/gecko-sharp-2.0/r4543/info.xml
   
trunk/release/monobuild/www/builds/testing/suse-93-i586/gecko-sharp-2.0/r4543/logs/
   
trunk/release/monobuild/www/builds/testing/suse-93-i586/gecko-sharp-2.0/r4543/logs/build.log
   
trunk/release/monobuild/www/builds/testing/suse-93-i586/gecko-sharp-2.0/r4543/logs/mktarball.log
   
trunk/release/monobuild/www/builds/testing/suse-93-i586/gecko-sharp-2.0/r4543/logs/rpm.log
   trunk/release/monobuild/www/cgi-perl/packagestatus.pl
   trunk/release/monobuild/www/favicon.ico
Modified:
   trunk/release/monobuild/HOWTO
   trunk/release/monobuild/Mono/Build.pm
   trunk/release/monobuild/Mono/Build/Config.pm
   trunk/release/monobuild/design.txt
   trunk/release/monobuild/www/build.css
   trunk/release/monobuild/www/cgi-perl/buildstatus.pl
Log:
Established framework of the structure of builds, the xml structure, and 
pulling data out of
both of these.  

This structure isn't set in stone, just a first run through.

Added some test builds to generate all of the information in the
buildstatus page (as well as the package status).



Modified: trunk/release/monobuild/HOWTO
===================================================================
--- trunk/release/monobuild/HOWTO       2005-05-12 23:11:58 UTC (rev 44480)
+++ trunk/release/monobuild/HOWTO       2005-05-12 23:28:35 UTC (rev 44481)
@@ -7,6 +7,9 @@
 Configuring Apache for MonoBuild
 --------------------------------
 
+Make sure you have mod_perl installed and working 
+       - On SuSE type systems, add perl to the APACHE_MODULES list in 
/etc/sysconfig/apache2
+
 Add the following to /etc/apache2/mod_perl-startup.pl:
 
 use lib qw(/home/wberrier/wa/mono/msvn/release/monobuild);

Modified: trunk/release/monobuild/Mono/Build/Config.pm
===================================================================
--- trunk/release/monobuild/Mono/Build/Config.pm        2005-05-12 23:11:58 UTC 
(rev 44480)
+++ trunk/release/monobuild/Mono/Build/Config.pm        2005-05-12 23:28:35 UTC 
(rev 44481)
@@ -4,8 +4,16 @@
 
 our $releaseRepo = "/home/wberrier/wa/mono/msvn/release";
 
-our $distroDir = "$releaseRepo/packaging/conf";
-our $componentDir = "$releaseRepo/packaging/defs";
+our $platformDir = "$releaseRepo/packaging/conf";
+our $packageDir = "$releaseRepo/packaging/defs";
 
+# Full path to where the builds are output
+our $buildsDir = "$releaseRepo/monobuild/www/builds";
+# Url path from view of webserver
+our $buildsUrl = "builds";
 
+# Testing
+$buildsDir = "$releaseRepo/monobuild/www/builds/testing";
+$buildsUrl = "builds/testing";
+
 1;

Modified: trunk/release/monobuild/Mono/Build.pm
===================================================================
--- trunk/release/monobuild/Mono/Build.pm       2005-05-12 23:11:58 UTC (rev 
44480)
+++ trunk/release/monobuild/Mono/Build.pm       2005-05-12 23:28:35 UTC (rev 
44481)
@@ -2,39 +2,41 @@
 
 package Mono::Build;
 
+use XML::XPath;
+
+# Local packages
 use Mono::Build::Config;
 use Env::Bash;
 
-sub getDistros
+sub getPlatforms
 {
-       my $dir = $Mono::Build::Config::distroDir;
-       my @distros;
+       my $dir = $Mono::Build::Config::platformDir;
+       my @platforms;
 
        opendir(DIR, $dir) or die "Can't open dir: $dir\n";
 
-
        while($dir = readdir(DIR))
        {
                # For some reason... .svn fails the -d perl test...???
                #if(!-d $dir)
                if($dir ne "." && $dir ne ".." && $dir ne ".svn" && $dir ne 
"hosts")
                {
-                       push @distros, $dir;
+                       push @platforms, $dir;
                }
 
        }
 
        closedir(DIR);
 
-       return sort @distros;
+       return sort @platforms;
 
 
 }
 
-sub getComponents
+sub getPackages
 {
-       my $dir = $Mono::Build::Config::componentDir;
-       my @components;
+       my $dir = $Mono::Build::Config::packageDir;
+       my @packages;
 
        opendir(DIR, $dir) or die "Can't open dir: $dir\n";
 
@@ -44,14 +46,14 @@
                # For some reason... .svn fails the -d perl test...???
                if(!-d $dir && $dir ne ".svn")
                {
-                       push @components, $dir;
+                       push @packages, $dir;
                }
 
        }
 
        closedir(DIR);
 
-       return sort @components;
+       return sort @packages;
 }
 
 
@@ -60,34 +62,118 @@
        my $pkg = shift;
        my $var = shift;
        
-       my $dir = $Mono::Build::Config::componentDir;
+       my $dir = $Mono::Build::Config::packageDir;
        
        return get_env_var( $var, Source => "$dir/$pkg", );
 }
 
-sub getState
+sub getLatestRevision
 {
-       my $index = shift;
-       # This info will eventually come out of a file or something...
-       my @states = (
-                       'notused',
-                       'success', 
-                       'failure', 
-                       'building', 
-                    );
+       my $platform = shift;
+       my $package = shift;
 
-       return $states[$index % @states];
+       my $revision;
+       
+       my $dir = "$Mono::Build::Config::buildsDir/$platform/$package";
 
+       eval {
+
+               opendir(DIR, $dir) or die "Can't open dir: $dir\n";
+
+               while($dir = readdir(DIR))
+               {
+                       # For some reason... .svn fails the -d perl test...???
+                       #if(!-d $dir)
+                       if($dir ne "." && $dir ne ".." && $dir ne ".svn")
+                       {
+                               push @revisions, $dir;
+                       }
+
+               }
+
+               closedir(DIR);
+
+               @revisions = sort @revisions;
+               $revision = pop @revisions;
+
+       };
+
+       if($@)
+       {
+               # No builds done with this platform or package
+               $revision = "";
+       }
+
+       return $revision;
+       
 }
 
-
-# Read in distro->component map
-sub getValidDistroComponents
+# Get the state of a package on a platform, not of a particular step
+sub getState
 {
 
 
+       my $platform = shift;
+       my $package = shift;
+       my $revision = shift;
+
+       my $xp;
+       my @states;
+
+       my $nodeset;
+       my $node;
+       my $state;
+
+       my $xmlFile = 
"$Mono::Build::Config::buildsDir/$platform/$package/$revision/info.xml";
+
+       eval {
+               $xp = XML::XPath->new(filename => $xmlFile);
+               $nodeset = $xp->find('/build/steps/step/status');
+
+               foreach my $node ($nodeset->get_nodelist)
+               {
+                       $state = XML::XPath::Node::Text::string_value($node); 
+
+                       #print "State: $state\n";
+                       push @states, $state;
+
+               }
+       };
+
+       if($@)
+       {
+               $state = "";
+
+       }
+
+       # State order of preference: inprogress, failure, success, <null>
+       
+       if(arrayContains("inprogress", @states))
+       {
+               $state = "inprogress";
+       }
+
+       elsif(arrayContains("failure", @states))
+       {
+               $state = "failure";
+       }
+
+       # If I get this far, I assume everything succeeded
+       elsif(arrayContains("success", @states))
+       {
+               $state = "success";
+       }
+
+       else
+       {
+               $state = "";
+       }
+
+       return $state;
+
 }
 
+
 sub arrayContains
 {
        my $needle = shift;

Modified: trunk/release/monobuild/design.txt
===================================================================
--- trunk/release/monobuild/design.txt  2005-05-12 23:11:58 UTC (rev 44480)
+++ trunk/release/monobuild/design.txt  2005-05-12 23:28:35 UTC (rev 44481)
@@ -28,7 +28,17 @@
 
 One the log and download page that Ben sent me, we can have all the logs and 
builds available from there
 
+The xml format: 
+---------------
+I don't want to have to parse tons of xml files for every hit to the main 
status page... 
+        I don't, because you can get the revisions from the directory listing, 
you'll
+       only need to parse the xml once you go to the downloads page
+       One of the main issues is whether to have the xml contain multiple 
builds, or have
+               an xml document for each build.
+               It would probably be easier to remove a build if you could just 
delete the directory... I think I'll do that
+                       So, I'll need to modify my xml
 
+
 -------
 Phase 2
 -------

Added: trunk/release/monobuild/tests/get_latest_revision.pl
===================================================================
--- trunk/release/monobuild/tests/get_latest_revision.pl        2005-05-12 
23:11:58 UTC (rev 44480)
+++ trunk/release/monobuild/tests/get_latest_revision.pl        2005-05-12 
23:28:35 UTC (rev 44481)
@@ -0,0 +1,15 @@
+#!/usr/bin/perl
+
+
+use FindBin;
+use lib "$FindBin::RealBin/..";
+
+use Mono::Build;
+
+my $platform = 'suse-93-i586';
+my $package = 'gecko-sharp-2.0';
+
+my $revision = Mono::Build::getLatestRevision($platform, $package);
+
+print "Revision: $revision\n";
+


Property changes on: trunk/release/monobuild/tests/get_latest_revision.pl
___________________________________________________________________
Name: svn:executable
   + *

Added: trunk/release/monobuild/tests/get_state.pl
===================================================================
--- trunk/release/monobuild/tests/get_state.pl  2005-05-12 23:11:58 UTC (rev 
44480)
+++ trunk/release/monobuild/tests/get_state.pl  2005-05-12 23:28:35 UTC (rev 
44481)
@@ -0,0 +1,16 @@
+#!/usr/bin/perl
+
+
+use FindBin;
+use lib "$FindBin::RealBin/..";
+
+use Mono::Build;
+
+my $platform = 'suse-93-i586';
+my $package = 'gecko-sharp-2.0';
+my $rev = 'r4543';
+
+my $state = Mono::Build::getState($platform, $package, $rev);
+
+print "State: $state\n";
+


Property changes on: trunk/release/monobuild/tests/get_state.pl
___________________________________________________________________
Name: svn:executable
   + *

Modified: trunk/release/monobuild/www/build.css
===================================================================
--- trunk/release/monobuild/www/build.css       2005-05-12 23:11:58 UTC (rev 
44480)
+++ trunk/release/monobuild/www/build.css       2005-05-12 23:28:35 UTC (rev 
44481)
@@ -92,7 +92,7 @@
        background:red;
 }
 
-td.building {
+td.inprogress{
        background:yellow
 }
 
@@ -100,6 +100,10 @@
        background:white;
 }
 
+td.new {
+       background:lightgray;
+}
+
 table.legend th {
        font-weight:normal;
        text-align:right;

Added: 
trunk/release/monobuild/www/builds/testing/fedora-3-i386/gtk-sharp/r4543/files/gtk-sharp.rpm
===================================================================

Added: 
trunk/release/monobuild/www/builds/testing/fedora-3-i386/gtk-sharp/r4543/files/gtk-sharp.tar.gz
===================================================================

Added: 
trunk/release/monobuild/www/builds/testing/fedora-3-i386/gtk-sharp/r4543/info.xml
===================================================================
--- 
trunk/release/monobuild/www/builds/testing/fedora-3-i386/gtk-sharp/r4543/info.xml
   2005-05-12 23:11:58 UTC (rev 44480)
+++ 
trunk/release/monobuild/www/builds/testing/fedora-3-i386/gtk-sharp/r4543/info.xml
   2005-05-12 23:28:35 UTC (rev 44481)
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- Data describing a set of builds for a component on a platform -->
+
+
+<build>
+       <platform>fedora-3-i386</platform>
+       <package>gtk-sharp</package>
+       <revision>123</revision>
+
+       <buildhost>monobuild1</buildhost>
+       <start>Fri Apr 29 14:20:47</start>
+       <finish>Fri Apr 29 15:20:47</finish>
+
+       <steps>
+               <step>
+                       <name>Make Tarballs</name>
+                       <status>success</status>
+                       <log>mktarball.log</log>
+                       <download>gtk-sharp.tar.gz</download>
+               </step>
+               <step>
+                       <name>Build</name>
+                       <status>success</status>
+                       <log>build.log</log>
+               </step>
+               <step>
+                       <name>Make RPMS</name>
+                       <status>failure</status>
+                       <log>rpm.log</log>
+                       <download>gtk-sharp.rpm</download>
+               </step>
+
+       </steps>
+
+
+</build>
+
+
+
+

Added: 
trunk/release/monobuild/www/builds/testing/fedora-3-i386/gtk-sharp/r4543/logs/build.log
===================================================================
--- 
trunk/release/monobuild/www/builds/testing/fedora-3-i386/gtk-sharp/r4543/logs/build.log
     2005-05-12 23:11:58 UTC (rev 44480)
+++ 
trunk/release/monobuild/www/builds/testing/fedora-3-i386/gtk-sharp/r4543/logs/build.log
     2005-05-12 23:28:35 UTC (rev 44481)
@@ -0,0 +1,2 @@
+Testing...
+Testing...

Added: 
trunk/release/monobuild/www/builds/testing/fedora-3-i386/gtk-sharp/r4543/logs/mktarball.log
===================================================================
--- 
trunk/release/monobuild/www/builds/testing/fedora-3-i386/gtk-sharp/r4543/logs/mktarball.log
 2005-05-12 23:11:58 UTC (rev 44480)
+++ 
trunk/release/monobuild/www/builds/testing/fedora-3-i386/gtk-sharp/r4543/logs/mktarball.log
 2005-05-12 23:28:35 UTC (rev 44481)
@@ -0,0 +1 @@
+Testing...

Added: 
trunk/release/monobuild/www/builds/testing/fedora-3-i386/gtk-sharp/r4543/logs/rpm.log
===================================================================
--- 
trunk/release/monobuild/www/builds/testing/fedora-3-i386/gtk-sharp/r4543/logs/rpm.log
       2005-05-12 23:11:58 UTC (rev 44480)
+++ 
trunk/release/monobuild/www/builds/testing/fedora-3-i386/gtk-sharp/r4543/logs/rpm.log
       2005-05-12 23:28:35 UTC (rev 44481)
@@ -0,0 +1 @@
+Testing...

Added: 
trunk/release/monobuild/www/builds/testing/suse-93-i586/gecko-sharp-2.0/r4543/files/gecko.rpm
===================================================================

Added: 
trunk/release/monobuild/www/builds/testing/suse-93-i586/gecko-sharp-2.0/r4543/files/gecko.tar.gz
===================================================================

Added: 
trunk/release/monobuild/www/builds/testing/suse-93-i586/gecko-sharp-2.0/r4543/info.xml
===================================================================
--- 
trunk/release/monobuild/www/builds/testing/suse-93-i586/gecko-sharp-2.0/r4543/info.xml
      2005-05-12 23:11:58 UTC (rev 44480)
+++ 
trunk/release/monobuild/www/builds/testing/suse-93-i586/gecko-sharp-2.0/r4543/info.xml
      2005-05-12 23:28:35 UTC (rev 44481)
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- Data describing a set of builds for a component on a platform -->
+
+
+<build>
+       <platform>suse-93-i586</platform>
+       <package>gecko-sharp-2.0</package>
+       <revision>123</revision>
+
+       <buildhost>monobuild1</buildhost>
+       <start>Fri Apr 29 14:20:47</start>
+       <finish>Fri Apr 29 15:20:47</finish>
+
+       <steps>
+               <step>
+                       <name>Make Tarballs</name>
+                       <status>success</status>
+                       <log>mktarball.log</log>
+                       <download>gecko.tar.gz</download>
+               </step>
+               <step>
+                       <name>Build</name>
+                       <status>success</status>
+                       <log>build.log</log>
+               </step>
+               <step>
+                       <name>Make RPMS</name>
+                       <status>success</status>
+                       <log>rpm.log</log>
+                       <download>gecko.rpm</download>
+               </step>
+
+       </steps>
+
+
+</build>
+
+
+
+

Added: 
trunk/release/monobuild/www/builds/testing/suse-93-i586/gecko-sharp-2.0/r4543/logs/build.log
===================================================================
--- 
trunk/release/monobuild/www/builds/testing/suse-93-i586/gecko-sharp-2.0/r4543/logs/build.log
        2005-05-12 23:11:58 UTC (rev 44480)
+++ 
trunk/release/monobuild/www/builds/testing/suse-93-i586/gecko-sharp-2.0/r4543/logs/build.log
        2005-05-12 23:28:35 UTC (rev 44481)
@@ -0,0 +1,2 @@
+Testing...
+Testing...

Added: 
trunk/release/monobuild/www/builds/testing/suse-93-i586/gecko-sharp-2.0/r4543/logs/mktarball.log
===================================================================
--- 
trunk/release/monobuild/www/builds/testing/suse-93-i586/gecko-sharp-2.0/r4543/logs/mktarball.log
    2005-05-12 23:11:58 UTC (rev 44480)
+++ 
trunk/release/monobuild/www/builds/testing/suse-93-i586/gecko-sharp-2.0/r4543/logs/mktarball.log
    2005-05-12 23:28:35 UTC (rev 44481)
@@ -0,0 +1 @@
+Testing...

Added: 
trunk/release/monobuild/www/builds/testing/suse-93-i586/gecko-sharp-2.0/r4543/logs/rpm.log
===================================================================
--- 
trunk/release/monobuild/www/builds/testing/suse-93-i586/gecko-sharp-2.0/r4543/logs/rpm.log
  2005-05-12 23:11:58 UTC (rev 44480)
+++ 
trunk/release/monobuild/www/builds/testing/suse-93-i586/gecko-sharp-2.0/r4543/logs/rpm.log
  2005-05-12 23:28:35 UTC (rev 44481)
@@ -0,0 +1 @@
+Testing...

Modified: trunk/release/monobuild/www/cgi-perl/buildstatus.pl
===================================================================
--- trunk/release/monobuild/www/cgi-perl/buildstatus.pl 2005-05-12 23:11:58 UTC 
(rev 44480)
+++ trunk/release/monobuild/www/cgi-perl/buildstatus.pl 2005-05-12 23:28:35 UTC 
(rev 44481)
@@ -9,8 +9,8 @@
 use Mono::Build;
 
 # Read these in from a file later...
-my @linux_distros = Mono::Build::getDistros();
-my @linux_components = Mono::Build::getComponents();
+my @linux_platforms = Mono::Build::getPlatforms();
+my @linux_packages = Mono::Build::getPackages();
 
 my @other_platforms = (
                'sparc',
@@ -18,7 +18,7 @@
                'mac'
                );
 
-my @other_components = ('mono-1.1');
+my @other_packages = ('mono-1.1');
 
 my $rev;
 
@@ -37,45 +37,47 @@
 END
 
 print<<END;
-<h3>Linux Distros</h3>
+<h3>Linux Platforms</h3>
 
 <p>
 <table class="buildstatus">
        <thead><td></td>
 END
 
-foreach my $distro (sort @linux_distros)
+foreach my $platform (sort @linux_platforms)
 {
-       print "<td>$distro</td>\n";
+       print "<td>$platform</td>\n";
 }
 
 print "</thead><tbody>";
 
-foreach my $component (sort @linux_components)
+foreach my $package (sort @linux_packages)
 {
-       print "<tr><td>$component</td>\n";
+       print "<tr><td>$package</td>\n";
        my @buildhosts;
-       @buildhosts = Mono::Build::getPackageInfo($component, "BUILD_HOSTS");
+       @buildhosts = Mono::Build::getPackageInfo($package, "BUILD_HOSTS");
 
-       foreach my $distro (sort @linux_distros)
+       foreach my $platform (sort @linux_platforms)
        {
                print "<td ";
-               my $rand = randomResult();
-               my $state = Mono::Build::getState($rand);
+               my $rev = Mono::Build::getLatestRevision($platform, $package);
+               my $state = Mono::Build::getState($platform, $package, $rev);
 
-
-               unless (Mono::Build::arrayContains($distro, @buildhosts)) {
+               unless (Mono::Build::arrayContains($platform, @buildhosts)) {
                        $state = "notused"
                }
 
+               # if it hasn't been been yet...
+               if($rev eq "" && $state eq "")
+               {
+                       $state = "new";
+               }
+
                print "class=$state>";
 
-               $rev = "r454";
-
                if($state ne 'notused')
                {
-                       #print "<a 
href=logs/$component-$distro-$rev$rand.log>$rev$rand</a>";
-                       print "<a 
href=/package_status_example.html>$rev$rand</a>";
+                       print "<a 
href=packagestatus.pl?platform=$platform&package=$package&revision=$rev>$rev</a>";
                }
                
                print "</td>\n";
@@ -101,18 +103,18 @@
        <thead><td></td>
 END
 
-foreach my $distro (sort @other_platforms)
+foreach my $other_platform (sort @other_platforms)
 {
-       print "<td>$distro</td>\n";
+       print "<td>$other_platform</td>\n";
 }
 
 print "</thead><tbody>";
 
-foreach my $component (sort @other_components)
+foreach my $other_package (sort @other_packages)
 {
-       print "<tr><td>$component</td>\n";
+       print "<tr><td>$other_package</td>\n";
 
-       foreach my $distro (sort @other_platforms)
+       foreach my $other_platform (sort @other_platforms)
        {
                print "<td ";
                my $rand;       
@@ -122,15 +124,15 @@
                # Make sure you don't get unused
                do 
                {
-                       $rand = randomResult(); 
-                       $state = Mono::Build::getState($rand);
+                       $rand = randomRev();    
+                       $state = randomState($rand);
                } while($state eq 'notused');
 
                print "class=$state>";
 
                $rev = "r454";
 
-               #print "<a 
href=logs/$component-$distro-$rev$rand.log>$rev$rand</a>";
+               #print "<a 
href=logs/$package-$platform-$rev$rand.log>$rev$rand</a>";
                print "<a href=/package_status_example.html>$rev$rand</a>";
 
                print "</td>\n";
@@ -155,9 +157,10 @@
 <table class=legend>
 
 <tbody>
-<tr><th>In Progress</th><td class=building></td></tr>
+<tr><th>In Progress</th><td class=inprogress></td></tr>
 <tr><th>Success</td><td class=success></td></tr>
 <tr><th>Failed</td><td class=failure></td></tr>
+<tr><th>Never Built</td><td class=new></td></tr>
 
 </tbody>
 </table>
@@ -174,9 +177,20 @@
 
 END
 
-sub randomResult
+sub randomRev
 {
-       return int(rand(3)) + 1;
+       return int(rand(3) + 1);
 }
 
-
+sub randomState
+{
+       my $index = shift;
+       my @states = (
+                       'notused',
+                       'success', 
+                       'failure', 
+                       'inprogress', 
+                    );
+ 
+       return $states[$index % @states];
+}

Added: trunk/release/monobuild/www/cgi-perl/packagestatus.pl
===================================================================
--- trunk/release/monobuild/www/cgi-perl/packagestatus.pl       2005-05-12 
23:11:58 UTC (rev 44480)
+++ trunk/release/monobuild/www/cgi-perl/packagestatus.pl       2005-05-12 
23:28:35 UTC (rev 44481)
@@ -0,0 +1,138 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+# Decided on XPath because it's simpler to install, even though it's probably 
slower than XML::LibXML
+use XML::XPath;
+use CGI qw(:standard);
+
+# Local modules
+use FindBin;
+use lib "$FindBin::RealBin/../..";
+use Mono::Build;
+
+my $html;
+
+my $xp;
+my $buildhost;
+my $start;
+my $finish;
+
+my $platform = param('platform');
+my $package = param('package');
+my $revision = param('revision');
+
+# Just for testing...
+#$platform = "suse-93-i586";
+#$package = "gecko-sharp-2.0";
+#$revision = "r4543";
+
+# Figure out where the xml file is at
+my $xmlFile = 
"$Mono::Build::Config::buildsDir/$platform/$package/$revision/info.xml";
+
+# Try to open and get data out of the xml document
+eval {
+       $xp = XML::XPath->new(filename => $xmlFile);
+       $buildhost = $xp->findvalue('/build/buildhost');
+       $start = $xp->findvalue('/build/start');
+       $finish = $xp->findvalue('/build/finish');
+};
+
+if($@)
+{
+       $html = "<h1>Mono Build Status</h1>";
+       $html .= "<p>No information found: $package -- $platform -- 
$revision</p>";
+
+}
+else
+{
+
+       $html = qq(
+
+               <h1>$package -- $platform -- $revision</h1>
+
+               <h3>Build status</h3>
+
+               <p>
+               <table>
+               <tbody>
+               <tr>
+               <th>Build started:</th>
+
+               <td>$start</td>
+
+               <th>Build completed:</th>
+               <td>$finish</td>
+
+               </tr>
+
+               <tr>
+               <th>Build host</th>
+               <td>$buildhost</td>
+
+               </tr>
+               </tbody></table>
+
+               <h3>Build Steps</h3>
+               <p>
+               <table>
+               <tbody>);
+       
+       # Start through the build steps...      
+
+       my $steps = $xp->find('/build/steps/step');
+
+       foreach my $step ($steps->get_nodelist())
+       {
+
+               # Get each data out of the step...
+               my $name = $step->find('name'); 
+               my $status = $step->find('status'); 
+               my $log = 
"/$Mono::Build::Config::buildsUrl/$platform/$package/$revision/logs/" . 
$step->find('log'); 
+               my $download_file = $step->find('download'); 
+               my $download = 
"/$Mono::Build::Config::buildsUrl/$platform/$package/$revision/files/$download_file";
 
+       
+               $html .= qq(
+                               <tr>
+                               <th>$name</th>
+                               <td><a href="$log">$status</a></td>
+
+                          );
+
+               if($download)
+               {
+                       $html .= qq(
+                                       <td><a 
href="$download">$download_file</a></td>
+                                       </tr>
+                                  );
+
+               }
+       }
+       
+       $html .= "</tbody></table></p>";
+
+
+}
+
+# Print out the html    
+
+print<<END;
+Content-type: text/html
+
+<html><head>
+
+<title>Mono Build Status</title><link rel="stylesheet" href="/build.css" 
type="text/css"></head>
+
+<body>
+
+$html
+
+</body>
+</html>
+
+END
+
+
+
+


Property changes on: trunk/release/monobuild/www/cgi-perl/packagestatus.pl
___________________________________________________________________
Name: svn:executable
   + *

Added: trunk/release/monobuild/www/favicon.ico
===================================================================
(Binary files differ)


Property changes on: trunk/release/monobuild/www/favicon.ico
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to