r2721 - people/goneri/SvnBuildStat-WWW/script

Gonéri Le Bouder goneri-guest at alioth.debian.org
Fri May 25 16:16:50 UTC 2007


Author: goneri-guest
Date: 2007-05-25 16:16:50 +0000 (Fri, 25 May 2007)
New Revision: 2721

Added:
   people/goneri/SvnBuildStat-WWW/script/svnbuildstat_update-db-uscan.pl
Log:
use uscan to find the remote tarball and to detect outdated packages

Added: people/goneri/SvnBuildStat-WWW/script/svnbuildstat_update-db-uscan.pl
===================================================================
--- people/goneri/SvnBuildStat-WWW/script/svnbuildstat_update-db-uscan.pl	                        (rev 0)
+++ people/goneri/SvnBuildStat-WWW/script/svnbuildstat_update-db-uscan.pl	2007-05-25 16:16:50 UTC (rev 2721)
@@ -0,0 +1,93 @@
+#!/usr/bin/perl -w
+
+
+use strict;
+
+use Data::Dumper;
+use File::Temp qw/ tempfile /;
+use Thread::Pool::Simple;
+use lib '/home/sites/svnbuildstat.debian.net/svnbuildstat/lib';
+use SvnBuildStat::Schema;
+use SvnBuildStat::Config;
+
+my $maxThreadPerPool = 10;
+
+my $poolUpdateWatch;
+
+my $config;
+my $schema;
+
+# TODO: This func should be shared in a library
+sub mkTarballFromPackage {
+  my $package = shift;
+
+  my $majorrelease = $$package->svndebrelease;
+  $majorrelease =~ s/-[0-9A-Za-z\.~]*$//;
+  return unless $majorrelease;
+
+  $$package->name.'_'.$majorrelease.".orig.tar.gz";
+}
+
+sub updateWatch {
+  my $package = shift;
+  my $cmd;
+
+  $cmd = "svn cat ".$$package->uri."/debian/watch";
+  my $watch = `$cmd`;
+
+  return unless $watch;
+
+  my ($fh, $watchfile) = tempfile(SUFFIX => '.uscan');
+  print $fh $watch;
+  close ($fh);
+
+  my $majorrelease = $$package->svndebrelease;
+  $majorrelease =~ s/-[0-9A-Za-z\.~]*$//;
+  $cmd = "uscan --package ".$$package->name." --dehs --upstream-version ".$majorrelease." --watchfile ".$watchfile;
+  print $cmd."\n";
+  my @uscan = `$cmd`;
+  return unless @uscan > 2; # empty output
+
+  my $tarballuri;
+  my $isuptodate = 'f';
+  my $upstreamrelease;
+  foreach (@uscan) {
+#    print;
+    $tarballuri = $1 if (/^<upstream-url>(.+)<\/upstream-url>$/);
+    $isuptodate = 't' if (/^<status>up to date<\/status>$/);
+#    $upstreamrelease = $1 if (/^<upstream-version>(.+)<\/upstream-version>$/); 
+  }
+#  print "tarballuri:".$tarballuri."\n";
+#  print "isuptodate:".$isuptodate."\n";
+#  print "upstreamrelease:".$upstreamrelease."\n";
+
+  $$package->isuptodate($isuptodate);
+  if ($isuptodate eq 't') {
+    if (defined ($tarballuri) && $tarballuri && !$$package->istarballpresent) {
+      $$package->tarballuri($tarballuri);
+    }
+  } else {
+    $$package->upstreamrelease($$upstreamrelease) if $upstreamrelease;
+  }
+  $$package->update;
+}
+
+$config = new SvnBuildStat::Config();
+$schema = SvnBuildStat::Schema->connect(
+  $config->db_dsn,
+  $config->db_user,
+  $config->db_password,
+  {AutoCommit => 1, debug => 1}
+);
+
+
+$poolUpdateWatch = Thread::Pool::Simple->new(
+  max => $maxThreadPerPool,
+  do => [\&updateWatch],
+);
+
+my $package_rs = $schema->resultset('Package');
+while (my $package = $package_rs->next) {
+  $poolUpdateWatch->add(\$package);
+}
+$poolUpdateWatch->join();


Property changes on: people/goneri/SvnBuildStat-WWW/script/svnbuildstat_update-db-uscan.pl
___________________________________________________________________
Name: svn:executable
   + *




More information about the Pkg-games-commits mailing list