# %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;
}
}
next if $skip==1;
+
+ my %disttags = ();
+ $disttags{'oldstable'} = grep(/^woody$/, @tags);
+ $disttags{'stable'} = grep(/^sarge$/, @tags);
+ $disttags{'testing'} = grep(/^etch$/, @tags);
+ $disttags{'unstable'} = grep(/^sid$/, @tags);
+ $disttags{'experimental'} = grep(/^experimental$/, @tags);
- my $oldstable_tag = grep(/^woody$/, @tags);
- my $stable_tag = grep(/^sarge$/, @tags);
- my $testing_tag = grep(/^etch$/, @tags);
- my $unstable_tag = grep(/^sid$/, @tags);
- my $experimental_tag = grep(/^experimental$/, @tags);
-
- # default according to dondelelcaro 2006-11-11
- if (!$oldstable_tag && !$stable_tag && !$testing_tag && !$unstable_tag && !$experimental_tag) {
- $testing_tag = 1;
- $unstable_tag = 1;
- $experimental_tag = 1;
- }
-
- # only bother to check the versioning status for the distributions indicated by the tags
- my $status_oldstable = Debbugs::Status::check_bug_presence(bug => $f, status => $bug, dist => 'oldstable') if ($oldstable_tag);
- my $status_stable = Debbugs::Status::check_bug_presence(bug => $f, status => $bug, dist => 'stable') if ($stable_tag);
- my $status_testing = Debbugs::Status::check_bug_presence(bug => $f, status => $bug, dist => 'testing') if ($testing_tag);
- my $status_unstable = Debbugs::Status::check_bug_presence(bug => $f, status => $bug, dist => 'unstable') if ($unstable_tag);
- my $status_experimental = Debbugs::Status::check_bug_presence(bug => $f, status => $bug, dist => 'experimental') if ($experimental_tag);
-
my $relinfo = "";
- $relinfo .= (($oldstable_tag && $status_oldstable eq 'pending') ? "O" : "");
- $relinfo .= (($stable_tag && $status_stable eq 'pending') ? "S" : "");
- $relinfo .= (($testing_tag && $status_testing eq 'pending') ? "T" : "");
- $relinfo .= (($unstable_tag && $status_unstable eq 'pending') ? "U" : "");
- $relinfo .= (($experimental_tag && $status_experimental eq 'pending') ? "E" : "");
-
- next if $relinfo eq '' and not $premature{$f};
- $premature{$f}++ if $relinfo eq '';
+ 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;
+ }
+
+ # 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 '';
+ }
$taginfo = "[";
$taginfo .= ($bug->{'keywords'} =~ /\bpending\b/ ? "P" : " ");
if ($status =~ m/^\[[^]]*I/ or
$status =~ m/ \[[^]]*X/ or
- ($status =~ m/ \[[^]]*[OSUE]/ and $status !~ m/ \[[^]]*T/)) {
+ $status !~ m/ \[[^]]*T/) {
return 0;
}
return 1;