[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