chiark / gitweb /
wip suppression fetching for Debian
authorIan Jackson <ian@davenant.greenend.org.uk>
Thu, 25 Oct 2007 17:01:17 +0000 (18:01 +0100)
committerIan Jackson <ian@davenant.greenend.org.uk>
Thu, 25 Oct 2007 17:01:17 +0000 (18:01 +0100)
hosts/magrathea/get-suppressions.pl [new file with mode: 0755]
hosts/magrathea/update-suppressions [new file with mode: 0644]

diff --git a/hosts/magrathea/get-suppressions.pl b/hosts/magrathea/get-suppressions.pl
new file mode 100755 (executable)
index 0000000..357f5b4
--- /dev/null
@@ -0,0 +1,52 @@
+#!/usr/bin/perl
+
+use warnings;
+use strict;
+use Data::Dumper;
+use SOAP::Lite;
+
+@ARGV==1 or die;
+my ($dist) = @ARGV;
+
+my $debbugs_soap= 'Debbugs/SOAP';
+my $debbugs_uri= 'http://bugs.debian.org/cgi-bin/soap.cgi';
+
+my $usertag_owner= 'autopkgtest@packages.debian.org';
+my $usertag_name= "autopkgtest";
+
+my $soap= SOAP::Lite->uri($debbugs_soap)->proxy($debbugs_uri);
+
+open D, "> /dev/null" or die $!;
+
+my $bugs_ut= $soap->get_usertag($usertag_owner, $usertag_name)->result();
+printf D "bugs_ut: %s\n", Dumper($bugs_ut);
+
+my $bugs_rq= [map { [bug => $_, dist => $dist] } @{$bugs_ut->{$usertag_name}}];
+printf D "bugs_rq: %s\n", Dumper($bugs_rq);
+
+my $stats= $soap->get_status($bugs_rq)->result();
+printf D "bugs_rq: %s\nstats: %s\n", Dumper($bugs_rq), Dumper($stats);
+
+my $stat;
+
+sub badbug ($) {
+    my ($msg) = @_;
+    die "BAD BUG - $msg:\n".Dumper($stat)."\n - $msg !";
+}
+
+foreach $stat (values %$stats) {
+    printf D "==========\n%s\n", Dumper($stat);
+    next if $stat->{'pending'} eq 'done';
+    my $fv= $stat->{'found_versions'};
+    @$fv or badbug("pending but not found");
+    $fv= $fv->[$#$fv];
+    my $src= $fv =~ m,/, ? $` : $stat->{'package'};
+    $src !~ m/[^-+.0-9a-z]/ and $src =~ m/^[0-9a-z]/ or badbug('bad package');
+    my $id= $stat->{'id'};
+    $id !~ m/\D/ and $id =~ m/^[1-9]/ or badbug("bad id");
+    printf "%s %d\n", $src, $id
+       or die $!;
+}
+
+STDOUT->error and die $!;
+close STDOUT or die $!;
diff --git a/hosts/magrathea/update-suppressions b/hosts/magrathea/update-suppressions
new file mode 100644 (file)
index 0000000..ed519fb
--- /dev/null
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+set -e
+
+cd ${0%/*}
+
+echo 'fetching'
+curl -s -S -k -o webpage "$url"
+
+echo 'grepping'
+perl -ne '
+    print "$1\n" or die $! if
+     m,"https://bugs.launchpad.net/ubuntu/\+source/([-+.0-9a-z]+)/\+bug/\d+",
+' <webpage >suppressions.new
+
+nl -ba suppressions.new
+
+if ! test -s suppressions.new;
+then
+       echo >&2 'NO SUPPRESSIONS - PROBABLY WENT WRONG
+
+webpage:'
+       cat webpage
+fi
+
+echo 'uploading'
+
+mv suppressions.new suppressions
+RSYNC_RSH=ssh rsync suppressions cadmium.buildd:adt-play/.
+
+echo 'done.'