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