]> git.donarmstrong.com Git - bugscan.git/blobdiff - scanlib.pm
Fix some warnings, and don't let (non-tagged) pseudopackages worry us for
[bugscan.git] / scanlib.pm
index ca042af15f59e2db7f7ad2b16ba83f7533f8dac2..dc4aac662351f0b5826a4ed2075d24c45906e418 100644 (file)
@@ -14,8 +14,7 @@
 #   %packagelist    - map from packagename to bugreports
 #   %NMU            - map with NMU information
 
-#use lib qw(/org/bugs.debian.org/perl/);
-use lib qw(/home/sesse/debbugs);
+use lib qw(/org/bugs.debian.org/perl);
 use LWP::UserAgent;
 use Debbugs::MIME qw(decode_rfc1522 encode_rfc1522);
 use Debbugs::Packages;
@@ -216,27 +215,47 @@ sub scanspooldir() {
                $disttags{'testing'}      = grep(/^etch$/, @tags);
                $disttags{'unstable'}     = grep(/^sid$/, @tags);
                $disttags{'experimental'} = grep(/^experimental$/, @tags);
-
-               # default according to dondelelcaro 2006-11-11
-               if (!$disttags{'oldstable'} && !$disttags{'stable'} && !$disttags{'testing'} && !$disttags{'unstable'} && !$disttags{'experimental'}) {
-                       $disttags{'testing'} = 1;
-                       $disttags{'unstable'} = 1;
-                       $disttags{'experimental'} = 1;
-               }
-
-               # only bother to check the versioning status for the distributions indicated by the tags 
+               
                my $relinfo = "";
-               for my $dist qw(oldstable stable testing unstable experimental) {
-                       local $SIG{__WARN__} = sub {};
+               if (defined($section{$bug->{'package'}}) && $section{$bug->{'package'}} eq 'pseudo') {
+                       # versioning information makes no sense for pseudo packages,
+                       # just use the tags
+                       for my $dist qw(oldstable stable testing unstable experimental) {
+                               $relinfo .= uc(substr($dist, 0, 1)) if $disttags{$dist};
+                       }
+               } else {
+                       # default according to dondelelcaro 2006-11-11
+                       if (!$disttags{'oldstable'} && !$disttags{'stable'} && !$disttags{'testing'} && !$disttags{'unstable'} && !$disttags{'experimental'}) {
+                               $disttags{'testing'} = 1;
+                               $disttags{'unstable'} = 1;
+                               $disttags{'experimental'} = 1;
+                       }
 
-                       next if (!$disttags{$dist});
-                       if (Debbugs::Status::check_bug_presence(bug => $f, status => $bug, dist => $dist) eq 'pending') {
-                               $relinfo .= uc(substr($dist, 0, 1));
+                       # only bother to check the versioning status for the distributions indicated by the tags 
+                       for my $dist qw(oldstable stable testing unstable experimental) {
+                               local $SIG{__WARN__} = sub {};
+
+                               next if (!$disttags{$dist});
+
+                               my $presence = Debbugs::Status::bug_presence(
+                                       bug => $f, 
+                                       status => $bug, 
+                                       dist => $dist, 
+                                       arch => [ qw(alpha amd64 arm hppa i386 ia64 mips mipsel powerpc s390 sparc) ]
+                               );
+
+                               # ignore bugs that are absent/fixed in this distribution, include everything
+                               # else (that is, "found" which says that the bug is present, and undef, which
+                               # indicates that no versioning information is present and it's not closed
+                               # unversioned)
+                               if (!defined($presence) || ($presence ne 'absent' && $presence ne 'fixed')) {
+                                       $relinfo .= uc(substr($dist, 0, 1));
+                               }
                        }
+                       
+                       next if $relinfo eq '' and not $premature{$f};
+                       $premature{$f}++ if $relinfo eq '';
                }
-               
-               next if $relinfo eq '' and not $premature{$f};
-               $premature{$f}++ if $relinfo eq '';
 
                $taginfo = "[";
                $taginfo .= ($bug->{'keywords'} =~ /\bpending\b/        ? "P" : " ");
@@ -377,7 +396,7 @@ sub check_worry {
 
        if ($status =~ m/^\[[^]]*I/ or
            $status =~ m/ \[[^]]*X/ or
-            ($status =~ m/ \[[^]]*[OSUE]/ and $status !~ m/ \[[^]]*T/)) {
+            $status !~ m/ \[[^]]*T/) {
                return 0;
        }
        return 1;