]> git.donarmstrong.com Git - bugscan.git/blobdiff - scanlib.pm
Use @bugcfg::architectures (and fix that) instead of hardcoding a list
[bugscan.git] / scanlib.pm
index b207b14fd17f8ea65bd7648f870a1d31b6ba207a..37931f7f0358e89ab49ca72b1f4a7e58158367b6 100644 (file)
@@ -6,7 +6,6 @@
 # which was based on an unknown other script.
 #
 # Global variables:
-#   %comments       - map from bugnumber to bug description
 #   %premature      - list of prematurely closed bugreports
 #   %exclude        - list of bugreports to exclude from the report
 #   %maintainer     - map from packagename to maintainer
@@ -14,8 +13,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;
@@ -27,43 +25,7 @@ use warnings;
 require bugcfg;
 package scanlib;
 
-our (%comments,%premature,%exclude,%maintainer,%section,%packagelist,%NMU,%debbugssection,%bugs);
-
-sub readcomments() {
-# Read bug commentary 
-# It is in paragraph format, with the first line of each paragraph being
-# the bug number or package name to which the comment applies.
-# Prefix a bug number with a * to force it to be listed even if it's closed.
-# (This deals with prematurely closed bugs)
-
-       my $index;                                      # Bug-number for current comment
-       my $file;                                       # Name of comments-file
-
-       %comments = ();                                 # Initialize our data
-       %premature = ();
-       %exclude = ();
-       $file=shift;
-       open(C, $file) or die "open $file: $!\n";
-       while (<C>) {
-               chomp;
-               if (m/^\s*$/) {                         # Check for paragraph-breaks
-                       undef $index;
-               } elsif (defined $index) {
-                       $comments{$index} .= $_ . "\n";
-               } else {
-                       if (s/^\*//) {                  # Test & remove initial *
-                               $premature{$_} = 1;
-                       }
-                       if (s/\s+EXCLUDE\s*//) {        # Test & remove EXCLUDE
-                               $exclude{$_} = 1;
-                               next;
-                       }
-                       $index = $_;
-                       $comments{$index} = ''; # New comment, initialize data
-               }
-       }
-       close(C);
-}
+our (%premature,%exclude,%maintainer,%section,%packagelist,%NMU,%debbugssection,%bugs);
 
 
 # Read the list of maintainer 
@@ -216,25 +178,48 @@ 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) {
-                       next if (!$disttags{$dist});
-                       if (Debbugs::Status::check_bug_presence(bug => $f, status => $bug, dist => $dist) eq 'pending') {
-                               $relinfo .= uc(substr($dist, 0, 1));
+               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};
                        }
+                       next if (length($bug->{'done'}));
+               } else {
+                       # 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 => \@bugcfg::architectures
+                               );
+
+                               # 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" : " ");
@@ -316,7 +301,6 @@ sub readNMUstatus() {
                        $NMU{$bug} = 1;
                        $NMU{$bug, "source"} = $source;
                        $NMU{$bug, "version"} = $version;
-#                      $comments{$bug} .= "[FIXED] Fixed package $source is in Incoming\n";
                        $flag = 0;
                } else {
                        ($field, $value) = split(/: /, $_, 2);
@@ -330,7 +314,6 @@ sub readNMUstatus() {
                $NMU{$bug} = 1;
                $NMU{$bug, "source"} = $source;
                $NMU{$bug, "version"} = $version;
-#              $comments{$bug} .= "[FIXED] Fixed package $source in in Incoming\n";
        }
        close P;
 }
@@ -375,7 +358,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;