Package: cvs-autoreleasedeb
Version: 0.12-1
Attached patch number 8 (last for now):
We add more metadata to package.state, so we can easily generate
reports:
- The timestamp when the build began (we can sort a report by this field)
- The SVN URL.
- The SVN version that was built.
Thanks again for a really useful tool, I hope these patches will
help improve it further.
--
Oron Peled Voice: +972-4-8228492
[email protected] http://users.actcom.co.il/~oron
Free software: each person contributes a brick, but ultimately each
person receives a house in return.
-- Brendan Scott
Index: svn-autoreleasedeb
===================================================================
--- svn-autoreleasedeb (revision 398)
+++ svn-autoreleasedeb (revision 399)
@@ -3,6 +3,7 @@
use AptPkg::Config '$_config';
use AptPkg::System '$_system';
use AptPkg::Version;
+use URI;
$_config->init;
$_system = $_config->system;
@@ -176,6 +177,9 @@
mkdir $::SVNDIR;
mkdir $::PACKDIR;
my %failed_packages;
+my %package_urls;
+my %package_svnversion;
+my %package_timestamp;
my %prev_build_state;
my %package_names;
foreach my $s (keys %{$newpacks_struct}) {
@@ -217,8 +221,8 @@
system $cmd;
}
chdir($::SVNDIR.$s);
- $cmd = "$::SVN checkout ".$conf_struct->{$s}{$p}{svnserver}.q(/).${prefix}.
- q(/).$p.q(/).$conf_struct->{$s}{$p}{tag}."/ ".${prefix}.$p;
+ my $url = $package_urls{$s}{$p};
+ $cmd = "$::SVN checkout '$url' '$prefix$p'";
print $cmd."\n";
unless (system($cmd) == 0) {
print "SVN Checkout failed. going to try again in the next run!\n";
@@ -231,6 +235,9 @@
my $buildopts = $conf_struct->{$s}{$p}{buildopts};
chdir($::SVNDIR.$s."/".${prefix}."/".$p);
+ my $svnversion = `svnversion`;
+ chomp $svnversion;
+ $package_svnversion{$s}{$p} = $svnversion;
$cmd = "svn-buildpackage --svn-override=buildArea=".$::PACKDIR.$s."/".$p." $buildopts ";
unless (system($cmd) == 0) {
@@ -238,6 +245,7 @@
$failed_packages{$s}{$p} = 'FAILED(buildpackage)';
next;
}
+ $package_timestamp{$s}{$p} = time;
if ($conf_struct->{$s}{$p}{option}{local}) {
@@ -362,9 +370,11 @@
}
while (<STATE>) {
chomp;
- my ($s,$p,$v,$buildstate) = split(/;/, $_);
+ my ($s,$p,$v,$buildstate,$url,$ts,$sv) = split(/;/, $_);
$state_struct->{$s}{$p} = $v;
$prev_build_state{$s}{$p} = (defined $buildstate) ? $buildstate : 'UNKONWN';
+ $package_timestamp{$s}{$p} = $ts;
+ $package_svnversion{$s}{$p} = $sv;
}
close STATE;
}
@@ -385,9 +395,14 @@
foreach my $s (keys %{$state_struct}) {
next if ref($state_struct->{$s}) ne "HASH";
foreach my $p (keys %{$state_struct->{$s}}) {
+ my $url = $package_urls{$s}{$p};
+ my $v = $state_struct->{$s}{$p};
my $buildstate = $failed_packages{$s}{$p};
+ my $ts = $package_timestamp{$s}{$p};
+ $ts = 0 unless defined $ts;
$buildstate = (defined $buildstate) ? $buildstate : 'OK';
- print STATE join(';',($s,$p,$state_struct->{$s}{$p},$buildstate));
+ my $sv = $package_svnversion{$s}{$p};
+ print STATE join(';',($s,$p,$v,$buildstate,$url,$ts,$sv));
print STATE "\n";
}
}
@@ -455,6 +470,13 @@
foreach my $s (keys %{$conf_struct}) {
next if ref $conf_struct->{$s} ne "HASH";
foreach my $p (keys %{$conf_struct->{$s}}) {
+ my $tag = $conf_struct->{$s}{$p}{tag};
+ my $svnserver = $conf_struct->{$s}{$p}{svnserver};
+ my $prefix = $conf_struct->{$s}{$p}{prefix};
+ $prefix = '' unless defined $prefix;
+ my $uri = URI->new("$svnserver/$prefix/$p/$tag/")->canonical;
+ my $url = $uri->as_string;
+ $package_urls{$s}{$p} = $url;
if ($vs->compare($newstate_struct->{$s}{$p}, $state_struct->{$s}{$p}) > 0) {
# Use the date of the commit here.
$newpacks_struct->{$s}{$p} = scalar(localtime);