[Collab-qa-commits] r573 - svnbuildstat/trunk/script

goneri-guest at alioth.debian.org goneri-guest at alioth.debian.org
Wed Dec 12 16:58:52 UTC 2007


Author: goneri-guest
Date: 2007-12-12 16:58:52 +0000 (Wed, 12 Dec 2007)
New Revision: 573

Modified:
   svnbuildstat/trunk/script/svnbuildstat_update-repository.pl
Log:
new revision

Modified: svnbuildstat/trunk/script/svnbuildstat_update-repository.pl
===================================================================
--- svnbuildstat/trunk/script/svnbuildstat_update-repository.pl	2007-12-12 16:57:58 UTC (rev 572)
+++ svnbuildstat/trunk/script/svnbuildstat_update-repository.pl	2007-12-12 16:58:52 UTC (rev 573)
@@ -1,7 +1,6 @@
 #!/usr/bin/perl -w
 
 use strict;
-#chdir "/home/sites/nana.rulezlan.org/debian/" or die;
 
 use LWP::Simple;
 use File::Basename;
@@ -10,6 +9,7 @@
 use File::Touch;
 use File::Copy;
 use File::stat;
+use Config::IniFiles;
 use lib '/home/sites/svnbuildstat.debian.net/svnbuildstat/lib';
 use SvnBuildStat::Schema;
 use SvnBuildStat::Config;
@@ -17,8 +17,13 @@
 use Logger::Syslog;
 use SvnBuildStat::Vcs;
 
-my $debmirror = "http://ftp.debian.org";
-my $config;
+my $cfg = Config::IniFiles->new( -file => "../svnbuildstat.ini" ) or die "Can't load config file";
+
+my $debmirror = $cfg->val('path', 'debmirror');
+my $repositorydir = $cfg->val('path', 'repositorydir');
+chdir $repositorydir or die;
+
+
 my $schema;
 
 sub addSubRevInChangelog {
@@ -51,17 +56,19 @@
   # TODO Will always fails because I should check the
   # package repository directly
   if (!-f "$workdir/$tarball") {
-    debug("the tarball is needed");
     my $tarballuri = $$repositoryentry->tarballuri;
-    return unless $tarballuri;
+    if (!$tarballuri) {
+      debug("can't find the tarball");
+      return;
+    }
     $tarballuri =~ s/\@DEBMIRROR@/$debmirror/;
 
     if (is_error(getstore($tarballuri,"$workdir/$tarball"))) {
+      debug ("Failed to download the tarball");
 #	debug("failed to download ".$tarballuri);
       return;
     }
   }
-
   chdir $workdir or die;
   my $rootdirectory;
   foreach (`tar tf $tarball 2>&1`) {
@@ -92,45 +99,42 @@
   my ($repositoryentry) = @_;
   debug("prepareFromSvn: ".$$repositoryentry->sourcepackage_id->name);
 
+  my $vcscache = $cfg->val('path', 'vcscache');
+  my $localdir = $vcscache.'/'.$$repositoryentry->repository_id->id.$$repositoryentry->subdir;
   my $vcsname = $$repositoryentry->repository_id->vcs_id->name;
-  my $vcs = new SvnBuildStat::Vcs($vcsname, $$repositoryentry->vcsuri);
 
+  my $vcs = new SvnBuildStat::Vcs({
+      vcstype => $$repositoryentry->repository_id->vcs_id->name,
+      localdir => $localdir,
+    });
+
+
   my $repo_shortname = $$repositoryentry->repository_id->shortname;
-  next unless $repo_shortname;
-
   my $directory = $$repositoryentry->sourcepackage_id->name;
   # TODO replace repo_shortname/ by team short name
   #my $workdir = $config->server_repositorydir."/$repo_shortname/".$$package->name."/tmp";
-  my $workdir = $config->server_repositorydir."/tmp";
+  my $workdir = $repositorydir."/tmp";
   
   `rm -Rf $workdir; mkdir -p $workdir`;
   chdir $workdir or die;
 
-
   if (!$$repositoryentry->isnative) {
     return unless fetchAndPrepareDirectoryForMergeWithUpstream($repositoryentry, $workdir);
   }
-  print "cc\n";
 
   my $packagerootdir = SvnBuildStat::Common::mkRootdirectoryFromRepositoryentry($repositoryentry);
-  my $vcsrev = $vcs->exportIn($workdir."/".$packagerootdir);
-  if (!$vcsrev) {
-    info("failed to export from vcs ".$$repositoryentry->vcsuri);
-    return;
-  }
+  my $vcsrev = $vcs->currentRev;
+  $vcs->exportIn($workdir."/".$packagerootdir);
 
   return unless addSubRevInChangelog($packagerootdir, $vcsname.$vcsrev);
-  if ($$repositoryentry->vcsrev && $$repositoryentry->vcsrev ne $vcsrev) {
-    #TODO: We're preparing a package that is not up to date in the DB. We should
-    # call an update DB here.
-  }
 
-  print `dpkg-source -b -W $packagerootdir 2>&1`;
+  `dpkg-source -b -W $packagerootdir 2>&1`;
   if (($? >> 8)!=0) {
     info ("failed to create .dsc");
     return;
   }
-  my $destdir = $config->server_repositorydir.'/'.
+
+  my $destdir = $repositorydir.'/'.
   $$repositoryentry->repository_id->team_id->shortname.'/'.
   $$repositoryentry->sourcepackage_id->name;
   `mkdir -p $destdir` unless -d $destdir;
@@ -169,21 +173,19 @@
 touch  "lock.$$";
 info ("starting");
 
-
-$config = new SvnBuildStat::Config();
 $schema = SvnBuildStat::Schema->connect(
-  $config->db_dsn,
-  $config->db_user,
-  $config->db_password,
+  $cfg->val('db', 'dsn'),
+  $cfg->val('db', 'user'),
+  $cfg->val('db', 'password'),
   {AutoCommit => 1, debug => 1}
 );
 # It's not a joke since I'll do rm -Rf in this directory and don't want to trash
 # the system yet :)
-die "server_repository is unset!\n" unless $config->server_repositorydir;
+die "repositorydir doesn't exist!\n" unless -d $repositorydir;
 
 #purgeOutDated();
 
-my $repositoryentry_rs = $schema->resultset('Repositoryentry')->search({ dscuri => undef });
+my $repositoryentry_rs = $schema->resultset('Repositoryentry')->search({ dscuri => undef, tarballuri => { '!=' => undef} });
 while (my $repositoryentry = $repositoryentry_rs->next) {
   prepare(\$repositoryentry);
 }




More information about the Collab-qa-commits mailing list