[Collab-qa-commits] r401 - svnbuildstat/script

goneri-guest at alioth.debian.org goneri-guest at alioth.debian.org
Sun Sep 2 12:11:01 UTC 2007


Author: goneri-guest
Date: 2007-09-02 12:11:01 +0000 (Sun, 02 Sep 2007)
New Revision: 401

Added:
   svnbuildstat/script/svnbuildstat_update-repository.pl
Removed:
   svnbuildstat/script/svnbuildstat_purge-removedpackages.pl
Modified:
   svnbuildstat/script/svnbuildstat_update-db.pl
Log:
- merge svnbuildstat_purge-removedpackages.pl in svnbuildstat_update-db.pl
- add svnbuildstat_update-repository.pl


Deleted: svnbuildstat/script/svnbuildstat_purge-removedpackages.pl
===================================================================
--- svnbuildstat/script/svnbuildstat_purge-removedpackages.pl	2007-09-02 12:00:44 UTC (rev 400)
+++ svnbuildstat/script/svnbuildstat_purge-removedpackages.pl	2007-09-02 12:11:01 UTC (rev 401)
@@ -1,33 +0,0 @@
-#!/usr/bin/perl -w
-use strict;
-
-use lib '/home/sites/svnbuildstat.debian.net/svnbuildstat/lib';
-use SvnBuildStat::Schema;
-use SvnBuildStat::Config;
-
-
-my $pkgname = shift;
-
-
-
-my $config = new SvnBuildStat::Config();
-my $schema = SvnBuildStat::Schema->connect(
-  $config->db_dsn,
-  $config->db_user,
-  $config->db_password,
-  {AutoCommit => 1, debug => 1}
-);
-
-
-
-
-my $interval = "< repository_id.lastcheck - interval '1 day'";
-my $package_rs = $schema->resultset('Package')->search({'me.lastcheck' => \$interval} , {join => => 'repository_id'});
-$package_rs->delete_all;
-
-#my $maintainer_rs = $schema->resultset('PackageMaintainer')->search({'package_id' => undef} , {join => 'maintainer_id'});
-#while (my $maintainer = $maintainer_rs->next) {
-#    print "->".$maintainer->uri."\n";
-#  }
-
-

Modified: svnbuildstat/script/svnbuildstat_update-db.pl
===================================================================
--- svnbuildstat/script/svnbuildstat_update-db.pl	2007-09-02 12:00:44 UTC (rev 400)
+++ svnbuildstat/script/svnbuildstat_update-db.pl	2007-09-02 12:11:01 UTC (rev 401)
@@ -458,3 +458,10 @@
   importRepository(\$repository) or warn "importRepository failed for ".$repository->name."\n";
 }
 $poolImportPkg->join;
+
+# Purge the removed packages
+my $interval = "< repository_id.lastcheck - interval '1 day'";
+my $package_rs = $schema->resultset('Package')->search({'me.lastcheck' => \$interval} , {join => => 'repository_id'});
+$package_rs->delete_all;
+
+

Added: svnbuildstat/script/svnbuildstat_update-repository.pl
===================================================================
--- svnbuildstat/script/svnbuildstat_update-repository.pl	                        (rev 0)
+++ svnbuildstat/script/svnbuildstat_update-repository.pl	2007-09-02 12:11:01 UTC (rev 401)
@@ -0,0 +1,139 @@
+#!/usr/bin/perl -w
+
+use strict;
+print STDERR "WARNING: this script \"purge\" the working directory!!! Be careful\n" foreach (1..10);
+sleep 10;
+# TODO: purge the directory
+chdir "/home/sites/nana.rulezlan.org/debian/" or die;
+#use lib ".";
+
+use LWP::Simple;
+use File::Basename;
+use File::Glob;
+use File::Find;
+
+use lib '/home/sites/svnbuildstat.debian.net/svnbuildstat/lib';
+use SvnBuildStat::Schema;
+use SvnBuildStat::Config;
+
+my $debmirror = "http://ftp.debian.org";
+my $config;
+my $schema;
+
+sub purge {
+find(sub{if(!(-f||/\.{1,2}/|| /\//)){`rm -Rf $_`}},'.');
+}
+
+sub updateIsSrcInMyPoolFromFiles {
+  my $package_rs = $schema->resultset('Package');
+  while (my $package = $package_rs->next) {
+    next unless $package->realsvndebrelease;
+
+    if ( -f $package->name."_".$package->realsvndebrelease.".dsc") {
+      $package->issrcinmypool('true');
+    } else {
+      $package->issrcinmypool('false');
+    }
+    $package->update;
+  } 
+}
+
+sub updateSources {
+  my $package_rs = $schema->resultset('Package')->search({issrcinmypool => 'false'});
+  while (my $package = $package_rs->next) {
+    next unless $package->istarballpresent || $package->isnative;
+    purge();
+    prepare(\$package);
+  }
+}
+
+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 getRev {
+  my $uri = shift;
+
+  foreach (`LC_ALL=C svn info $uri`) {
+    return $1 if /Last Changed Rev:\ (\d+)/;
+  }
+
+  return;
+} 
+
+sub prepare {
+  my $package = shift;
+
+  my $directory = $$package->name."-".$$package->svndebrelease;
+  if (!$$package->isnative) {
+    my $tarball = mkTarballFromPackage($package);
+
+    if (!-f $tarball) {
+      my $tarballuri = $$package->tarballuri;
+      $tarballuri =~ s/\@DEBMIRROR@/$debmirror/;
+
+      if (is_error(getstore($tarballuri,$tarball))) {
+	print "[".$$package->name."]failed to download ".$tarballuri."\n";
+	unlink $tarball;
+	return;
+      }
+    }
+
+    foreach (`tar xfv $tarball`) {
+      $directory = $2 if /^(.\/|)(.*?)\//;
+    }
+    if (($? >> 8)!=0) {
+      print "[".$$package->name."]failed to untar\n";
+      `rm -rf $directory $tarball`;
+      return;
+    } 
+  }
+
+  my $revBefore = getRev($$package->uri);
+  my $cmd = "svn export ".$$package->uri." $directory --force 2>&1";
+  `$cmd`;
+  if (($? >> 8)!=0) {
+      print "[".$$package->name."]failed to export ".$$package->uri."\n";
+      `rm -rf $directory`;
+      return;
+  }
+  my $revAfter = getRev($$package->uri);
+
+  # I record the revision so I will be able to write it in the DB 
+  # with the build log
+  return if $revBefore ne $revAfter;
+  open REV, ">$directory/debian/rev" or return;
+  print REV $revBefore;
+  close REV;
+
+
+  `dpkg-source -b $directory 2>&1`;
+  if (($? >> 8)!=0) {
+      print "[".$$package->name."]failed to create .dsc\n";
+      `rm -rf $directory`;
+      return;
+  }
+
+  $$package->issrcinmypool(1);
+  $$package->update;
+
+  `rm -rf $directory`;
+  1;
+}
+
+$config = new SvnBuildStat::Config();
+$schema = SvnBuildStat::Schema->connect(
+  $config->db_dsn,
+  $config->db_user,
+  $config->db_password,
+  {AutoCommit => 1, debug => 1}
+);
+
+updateIsSrcInMyPoolFromFiles();
+updateSources();


Property changes on: svnbuildstat/script/svnbuildstat_update-repository.pl
___________________________________________________________________
Name: svn:executable
   + *




More information about the Collab-qa-commits mailing list