r2641 - people/goneri/SvnBuildStat-WWW/script
Gonéri Le Bouder
goneri-guest at alioth.debian.org
Wed May 9 21:21:49 UTC 2007
Author: goneri-guest
Date: 2007-05-09 21:20:28 +0000 (Wed, 09 May 2007)
New Revision: 2641
Modified:
people/goneri/SvnBuildStat-WWW/script/svnbuildstat_update-bugs.pl
Log:
faster script to update the bug status
Modified: people/goneri/SvnBuildStat-WWW/script/svnbuildstat_update-bugs.pl
===================================================================
--- people/goneri/SvnBuildStat-WWW/script/svnbuildstat_update-bugs.pl 2007-05-09 15:57:25 UTC (rev 2640)
+++ people/goneri/SvnBuildStat-WWW/script/svnbuildstat_update-bugs.pl 2007-05-09 21:20:28 UTC (rev 2641)
@@ -2,13 +2,17 @@
use strict;
-use Net::LDAP;
+use LWP::Simple;
use Data::Dumper;
+use File::Temp qw/ tempfile /;
-use lib '/usr/local/www/sites/nana.rulezlan.org/svnbuildstat/lib';
+use lib '/usr/local/www/sites/svnbuildstat.debian.net/svnbuildstat/lib';
+
+#"http://qa.debian.org/data/bts2ldap/fullindex";
use SvnBuildStat::Schema;
use SvnBuildStat::Config;
+
my $config = new SvnBuildStat::Config();
my $schema = SvnBuildStat::Schema->connect(
$config->db_dsn,
@@ -17,57 +21,43 @@
{AutoCommit => 1, debug => 1}
);
-
-my $ldap = Net::LDAP->new( 'ldap://bts2ldap.debian.net:10101' ) or die "$@";
+my %currentPackage;
my $package_rs = $schema->resultset('Package');
-my $todo = $package_rs->count;
-my $done = 1;
while( my $package = $package_rs->next) {
- my $mesg = $ldap->bind ;
- print "package: ".$package->name."\n";
- $mesg = $ldap->search( # perform a search
- base => "dc=current,dc=bugs,dc=debian,dc=org",
- filter => "(&(debbugsSourcePackage=".$package->name.")(debbugsState=open))"
- );
+ $currentPackage{$package->name} = 1;
+}
- $mesg->code && die $mesg->error;
+my (undef,$tmpfile) = tempfile();
+getstore("http://qa.debian.org/data/bts1ldap/fullindex",$tmpfile);
+my %registredPackage;
- my $struct = $mesg->as_struct;
+open BTS2LDAP, "<$tmpfile" or die;
+my %h;
+LINE: while (my $line = readline BTS2LDAP) {
+ if ($line =~ /^$/) {
+ if ($h{debbugsSourcePackage} && exists ($currentPackage{$h{debbugsSourcePackage}})) {
+ next LINE if $h{debbugsTag} && $h{debbugsTag} =~ /(pending|wontfix|unreproducible|moreinfo)/;
+ next LINE if $h{debbugsState} !~ /open/;
- my $data;
- foreach (keys %$struct) {
- next unless grep {"open"} @{$struct->{$_}->{debbugsstate}};
- next if grep {"pending"} @{$struct->{$_}->{debbugstag}};
- next if grep {"wontfix"} @{$struct->{$_}->{debbugstag}};
- next if grep {"unreproducible"} @{$struct->{$_}->{debbugstag}};
+ my $package = $schema->resultset('Package')->search({name => $h{debbugsSourcePackage}})->first;
+ my $severity = $schema->resultset('Severity')->find_or_create({name=>$h{debbugsSeverity}});
+ my $bug = $schema->resultset('Bug')->find_or_create({bug_id => $h{debbugsID}});
- $data->{$struct->{$_}->{debbugsid}->[0]} = {
+ $bug->severity_id ($severity->id);
+ $bug->package_id ($package->id);
+ $bug->update;
- name => $struct->{$_}->{debbugstitle}->[0],
- severity => $struct->{$_}->{debbugsseverity}->[0],
-
+ $registredPackage{$h{debbugsID}} = 1;
}
+ %h = ();
}
- $schema->resultset('Bug')->search({package_id => $package->id})->delete;
+ next unless $line =~ /^(debbugsID|debbugsSourcePackage|debbugsState|debbugsTitle|debbugsTag|debbugsSeverity):/;
+ $h{$1} = $2 if ($line =~ /(\w+): (\w+)/);
+}
+close BTS2LDAP;
- foreach my $bugnum (keys %$data) {
-
- my $severity = $schema->resultset('Severity')->find_or_create({name=>$data->{$bugnum}->{severity}});
- my $bug = $schema->resultset('Bug')->create({
-
- bug_id => $bugnum,
- severity_id => $severity->id,
- package_id => $package->id,
-
- });
-
- $data->{$bugnum}->{name} =~ s/</</g;
- $data->{$bugnum}->{name} =~ s/>/>/g;
-
- $bug->name ($data->{$bugnum}->{name});
- $bug->update;
- }
- print "$todo/".$done++."\n";
+my $bug_rs = $schema->resultset('Bug');
+while( my $bug = $bug_rs->next) {
+ $bug->delete unless $registredPackage{$bug->id};
}
-$ldap->unbind; # take down session
More information about the Pkg-games-commits
mailing list