- $relinfo = "";
- $relinfo .= ($s_tags =~ /\bwoody\b/ ? "O" : "");
- $relinfo .= ($s_tags =~ /\bsarge(|\s.*)%/ ? "S" : "");
- $relinfo .= ($s_tags =~ /\betch(|\s.*)$/ ? "T" : "");
- # etch-ignore matches \betch\b :(
- $relinfo .= ($s_tags =~ /\bsid\b/ ? "U" : "");
- $relinfo .= ($s_tags =~ /\bexperimental\b/ ? "E" : "");
+ # 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 {};
+
+ 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 '';