[Collab-qa-commits] r504 - in svnbuildstat/trunk: lib/SvnBuildStat lib/SvnBuildStat/Common script
goneri-guest at alioth.debian.org
goneri-guest at alioth.debian.org
Sat Nov 10 14:11:07 UTC 2007
Author: goneri-guest
Date: 2007-11-10 14:11:07 +0000 (Sat, 10 Nov 2007)
New Revision: 504
Added:
svnbuildstat/trunk/lib/SvnBuildStat/Common.pm
svnbuildstat/trunk/lib/SvnBuildStat/Common/
svnbuildstat/trunk/lib/SvnBuildStat/Common/Svn.pm
Modified:
svnbuildstat/trunk/lib/SvnBuildStat/Config.pm
svnbuildstat/trunk/script/svnbuildstat_update-db-svn.pl
svnbuildstat/trunk/script/svnbuildstat_update-repository.pl
Log:
creates SvnBuildStat::Common* and move some functions
Added: svnbuildstat/trunk/lib/SvnBuildStat/Common/Svn.pm
===================================================================
--- svnbuildstat/trunk/lib/SvnBuildStat/Common/Svn.pm (rev 0)
+++ svnbuildstat/trunk/lib/SvnBuildStat/Common/Svn.pm 2007-11-10 14:11:07 UTC (rev 504)
@@ -0,0 +1,13 @@
+use SvnBuildStat::Svn;
+
+sub getRev {
+ my $uri = shift;
+
+ foreach (`LC_ALL=C svn info $uri`) {
+ return $1 if /Last Changed Rev:\ (\d+)/;
+ }
+
+ return;
+}
+
+1;
Added: svnbuildstat/trunk/lib/SvnBuildStat/Common.pm
===================================================================
--- svnbuildstat/trunk/lib/SvnBuildStat/Common.pm (rev 0)
+++ svnbuildstat/trunk/lib/SvnBuildStat/Common.pm 2007-11-10 14:11:07 UTC (rev 504)
@@ -0,0 +1,78 @@
+use SvnBuildStat::Common;
+
+sub mkTarballFromPackage {
+ my $package = shift;
+
+ my $majorrelease = $$package->svndebrelease;
+ return unless $majorrelease;
+ $majorrelease =~ s/^\d+://;
+ $majorrelease =~ s/-[+0-9A-Za-z\.~]*$//;
+
+ $$package->name.'_'.$majorrelease.".orig.tar.gz";
+}
+
+# Return true if the file pointed by the URL exists
+sub testUrl {
+ my $url = shift;
+ return unless $url;
+
+ my $req = HTTP::Request->new(HEAD => $url);
+ my $ua = LWP::UserAgent->new;
+ $ua->agent("SvnBuildStat/0.1 ");
+ my $res = $ua->request($req);
+ $res->is_success;
+
+}
+
+sub mkRootdirectoryFromPackage {
+ my $package = shift;
+
+ my $majorrelease = $$package->svndebrelease;
+ return unless $majorrelease;
+ $majorrelease =~ s/^\d+://;
+ $majorrelease =~ s/-[+0-9A-Za-z\.~]*$//;
+
+ $$package->name.'-'.$majorrelease;
+}
+
+sub getDataFromDebianFtp {
+ my $package = shift;
+ return unless $$package->name;
+ return unless $$package->svndebrelease;
+ my $svndebrelease = $$package->svndebrelease;
+ $svndebrelease =~ s/^\d+://; # remove the EPOCH
+
+ my $isindebian = 'f';
+ my $tarballuri;
+ my $isnative = 'f';
+
+ my $ua = LWP::UserAgent->new;
+ $ua->agent("SvnBuildStat/0.1 ");
+
+ if ($$package->svndebrelease !~ /-[\d+\.]+$/) {
+ $isnative = 't';
+ } else {
+ my $debmirror = 'http://ftp.debian.org/debian';
+ my $debdiff .= $$package->name."_".$svndebrelease.".diff.gz";
+ my $tarball = SvnBuildStat::Common::mkTarballFromPackage($package);
+
+ if ($tarball) {
+ foreach my $section (qw/main contrib non-free/) {
+ my $tmp = "$1/".$$package->name if $$package->name =~ /^(lib.|.)/;
+ my $debdiffuri = $debmirror.'/pool/'.$section.'/'.$tmp.'/'.$debdiff;
+ my $tmp_tarballuri = $debmirror.'/pool/'.$section.'/'.$tmp.'/'.$tarball;
+ if (testUrl($debdiffuri)) {
+ $isindebian = 't';
+ }
+ if (testUrl($tmp_tarballuri)) {
+ $tarballuri = $tmp_tarballuri;
+ $tarballuri =~ s/^$debmirror/\@DEBMIRROR@/;
+ }
+ }
+ }
+ }
+ return { tarballuri => $tarballuri, isindebian => $isindebian, isnative => $isnative };
+}
+
+
+1;
Modified: svnbuildstat/trunk/lib/SvnBuildStat/Config.pm
===================================================================
--- svnbuildstat/trunk/lib/SvnBuildStat/Config.pm 2007-11-10 13:28:54 UTC (rev 503)
+++ svnbuildstat/trunk/lib/SvnBuildStat/Config.pm 2007-11-10 14:11:07 UTC (rev 504)
@@ -4,7 +4,8 @@
sub new {
- my $file = "/usr/local/etc/svnbuildstat.conf";
+ my $file = "~/.svnbuildstat.conf";
+ $file = "/usr/local/etc/svnbuildstat.conf" unless -f $file;
$file = "/etc/svnbuildstat.conf" unless -f $file;
die "Can't open config file" unless $file;
@@ -32,6 +33,9 @@
$self->define( "agent_buildadminaddr" => {ARGCOUNT => ARGCOUNT_ONE, DEFAULT => "" });
$self->define( "agent_vardir" => {ARGCOUNT => ARGCOUNT_ONE, DEFAULT => "" });
$self->define( "agent_debmirror" => {ARGCOUNT => ARGCOUNT_ONE, DEFAULT => "" });
+ # Server
+ $self->define( "server_repositorydir" => {ARGCOUNT => ARGCOUNT_ONE, DEFAULT => "" });
+ $self->define( "server_repositoryurl" => {ARGCOUNT => ARGCOUNT_ONE, DEFAULT => "http://localhost/debian" });
$self->file($file) or die "Can't load `$file'";
return $self;
Modified: svnbuildstat/trunk/script/svnbuildstat_update-db-svn.pl
===================================================================
--- svnbuildstat/trunk/script/svnbuildstat_update-db-svn.pl 2007-11-10 13:28:54 UTC (rev 503)
+++ svnbuildstat/trunk/script/svnbuildstat_update-db-svn.pl 2007-11-10 14:11:07 UTC (rev 504)
@@ -23,44 +23,14 @@
my $poolImportPkg;
-sub getRev {
- my $uri = shift;
+
- foreach (`LC_ALL=C svn info $uri`) {
- return $1 if /Last Changed Rev:\ (\d+)/;
- }
-
- return;
-}
-
-sub mkTarballFromPackage {
- my $package = shift;
-
- my $majorrelease = $$package->svndebrelease;
- $majorrelease =~ s/^\d+://;
- $majorrelease =~ s/-[+0-9A-Za-z\.~]*$//;
-
- $$package->name.'_'.$majorrelease.".orig.tar.gz";
-}
-
-sub testUrl {
- my $url = shift;
- return unless $url;
-
- my $req = HTTP::Request->new(HEAD => $url);
- my $ua = LWP::UserAgent->new;
- $ua->agent("SvnBuildStat/0.1 ");
- my $res = $ua->request($req);
- $res->is_success;
-
-}
-
sub createTarballUrlFromTarballlayout {
my ($repository, $package) = @_;
return unless $$repository->tarballlayout;
my $packagename = $$package->name;
- my $tarball = mkTarballFromPackage($package);
+ my $tarball = SvnBuildStat::Common::mkTarballFromPackage($package);
my $tarballuri = $$repository->tarballlayout;
$tarballuri =~ s/\@TARBALL@/$tarball/;
$tarballuri =~ s/\@PACKAGE@/$packagename/;
@@ -88,7 +58,7 @@
} else {
my $debmirror = 'http://ftp.debian.org/debian';
my $debdiff .= $$package->name."_".$svndebrelease.".diff.gz";
- my $tarball = mkTarballFromPackage($package);
+ my $tarball = SvnBuildStat::Common::mkTarballFromPackage($package);
if ($tarball) {
foreach my $section (qw/main contrib non-free/) {
@@ -172,7 +142,7 @@
return unless $last_rev;
print "LAST REV:". $last_rev."\n";
- my $cmd = "LC_ALL=C svn log -r ".$last_rev.":".$$package->rev." ".$$package->vcsuri;
+ my $cmd = "LC_ALL=C svn log -r ".$last_rev.":".$$package->vcsrev." ".$$package->vcsuri;
my $begin;
my $entry;
foreach (`$cmd`) {
@@ -211,7 +181,7 @@
my $packagesrc;
my $svndebrelease;
my $tarballuri;
- my $rev = getRev($uri);
+ my $rev = SvnBuildStat::Svn::getRev($uri);
my $todo;
my $currentpendingbug;
my $currentchangelogentry;
@@ -259,22 +229,13 @@
}
my $package = $schema->resultset('Package')->find_or_create({name => $packagesrc});
- # if the source is not in the pool I can suppose the tarball was missing for the last
- # check and so I need to check periodicly to see if the status has changed
- if (defined($rev) && defined ($package->rev) && $rev > $package->rev) {
- if (!$package->issrcinmypool) {
- my ($year, $mon, $day, $hour, $min, $sec) = ($package->lastcheck =~ /(\d{4})-(\d+)-(\d+)\ (\d+):(\d+):(\d+)/);
- my $lastcheck = timelocal_nocheck($sec, $min, $hour, $day, $mon, $year);
- if ($lastcheck > time - 3600*24) {
- print "No need to refresh ".$package->name."\n";
- return;
- }
- }
+ if (defined($rev) && defined ($package->vcsrev) && $rev eq $package->vcsrev) {
return;
}
print "GO ".$package->name."\n";
- $package->issrcinmypool (0);
+ $package->issrcinmypool (0); # deprecated, replaced by dscuri
+ $package->dscuri(undef);
my @changelog = `svn cat $uri/debian/changelog`;
if (@changelog) {
@@ -332,12 +293,13 @@
# updateChangelog(\$package);
# Search for the tarball
- my $tarball = mkTarballFromPackage(\$package);
+ my $tarball = SvnBuildStat::Common::mkTarballFromPackage(\$package);
my $uscandata = getUscanData(\$package);
my $ondebiandata = getOnDebianData(\$package);
my $tarballurlfromtarballlayout = createTarballUrlFromTarballlayout($repository,\$package);
$package->iswatchfilebroken($uscandata->{iswatchfilebroken});
# Is the tarball on a Debian mirror?
+ # TODO, isnative shouldn't be returned by ondebiandata
if ($ondebiandata->{isnative} eq 't') {
$package->isnative(1);
$package->tarballuri('');
@@ -378,7 +340,7 @@
$package->currentchangelogentry($currentchangelogentry);
$package->currentpendingbug($currentpendingbug);
$package->lastcheck('now');
- $package->rev($rev); # at the end since it marks in the new status of the package ins the DB
+ $package->vcsrev($rev); # at the end since it marks in the new status of the package ins the DB
$package->update();
}
@@ -397,14 +359,14 @@
my $tarballonrepository;
print "Repository: ".$$repository->name."\n";
- my $t = 'svn ls -R '.$$repository->vcsuri;
- my $rev = getRev($$repository->vcsuri);
+ my $t = 'svn ls -R '.$$repository->uri;
+ my $rev = SvnBuildStat::Svn::getRev($$repository->uri);
if(! $rev) {
print "Failed to get the current revision of ".$$repository->name."\n";
return;
}
- if ($$repository->rev eq $rev && $$repository->lastcheck) {
+ if ($$repository->vcsrev eq $rev && $$repository->lastcheck) {
# If he repository is up to date, a still do a refresh every 48h
# this because of the tarball check
#
@@ -420,7 +382,7 @@
foreach (`$t`) {
chomp;
- my $uri = $$repository->vcsuri.'/'.$_;
+ my $uri = $$repository->uri.'/'.$_;
$tarballonrepository->{basename($_)}=$uri if /\.tar\.gz$/;
$uri =~ s/\/$//;
next if /\/(tags|branches|attic)\//; # I want trunk!
@@ -435,7 +397,7 @@
$poolImportPkg->add($repository,$uri,$tarballonrepository) or die "Fucked\n";
}
- $$repository->rev($rev);
+ $$repository->vcsrev($rev);
$$repository->lastcheck('now');
$$repository->update();
Modified: svnbuildstat/trunk/script/svnbuildstat_update-repository.pl
===================================================================
--- svnbuildstat/trunk/script/svnbuildstat_update-repository.pl 2007-11-10 13:28:54 UTC (rev 503)
+++ svnbuildstat/trunk/script/svnbuildstat_update-repository.pl 2007-11-10 14:11:07 UTC (rev 504)
@@ -41,7 +41,7 @@
my ($package, $workdir) = @_;
- my $tarball = mkTarballFromPackage($package);
+ my $tarball = SvnBuildStat::Common::mkTarballFromPackage($package);
return unless $tarball;
debug("looks for the tarball");
@@ -76,36 +76,16 @@
info("failed to untar $tarball");
return;
}
- if (!move($rootdirectory, mkRootdirectoryFromPackage($package))) {
+ if (!move($rootdirectory, SvnBuildStat::Common::mkRootdirectoryFromPackage($package))) {
return;
}
1;#OK
}
-sub mkRootdirectoryFromPackage {
- my $package = shift;
- my $majorrelease = $$package->svndebrelease;
- return unless $majorrelease;
- $majorrelease =~ s/^\d+://;
- $majorrelease =~ s/-[+0-9A-Za-z\.~]*$//;
- $$package->name.'-'.$majorrelease;
-}
-sub mkTarballFromPackage {
- my $package = shift;
-
- return if $$package->isnative;
- my $majorrelease = $$package->svndebrelease;
- return unless $majorrelease;
- $majorrelease =~ s/^\d+://;
- $majorrelease =~ s/-[+0-9A-Za-z\.~]*$//;
-
- $$package->name.'_'.$majorrelease.".orig.tar.gz";
-}
-
sub prepareFromSvn {
my ($package) = @_;
debug("prepareFromSvn: ".$$package->name);
@@ -130,7 +110,7 @@
print "cc\n";
my $rev;
- my $packagerootdir = mkRootdirectoryFromPackage($package);
+ my $packagerootdir = SvnBuildStat::Common::mkRootdirectoryFromPackage($package);
my $cmd = "LC_ALL=C svn export ".$$package->vcsuri." $workdir/".$packagerootdir." --force 2>&1";
foreach (`$cmd`) {
$rev = $1 if /Exported revision (\d+)\./;
More information about the Collab-qa-commits
mailing list