# %section - map from packagename to section in the FTP-site
# %packagelist - map from packagename to bugreports
+use warnings;
+use strict;
+
use lib qw(/org/bugs.debian.org/perl);
use LWP::UserAgent;
use Debbugs::MIME qw(decode_rfc1522 encode_rfc1522);
use Debbugs::Packages;
use Debbugs::Versions;
use Debbugs::Status;
+use IO::Uncompress::AnyUncompress;
use Fcntl qw(O_RDONLY);
-use strict;
-use warnings;
-require bugcfg;
+
+use File::Basename;
+use lib dirname(__FILE__);
+use bugcfg;
+
package scanlib;
our (%maintainer,%section,%packagelist,%debbugssection,%bugs);
close(M);
}
+sub glob_compressed_fh {
+ my ($fn) = @_;
+ $fn = (grep { -f $_ } glob $fn)[0];
+ my $fh = IO::Uncompress::AnyUncompress->new($fn) or
+ die "Unable to open $fn for reading: $!";
+ return $fh;
+}
-sub readsources() {
- my $root; # Root of archive we are scanning
- my $archive; # Name of archive we are scanning
- my $sect; # Name of current section
- $root=shift;
- $archive=shift;
- for $sect (@bugcfg::sections) {
- open(P, "zcat $root/$sect/source/Sources.gz|")
- or die open "open: $sect sourcelist: $!\n";
- while (<P>) {
+sub readsources {
+ my ($root,$archive) = @_;
+
+ for my $sect (@bugcfg::sections) {
+ my $p = glob_compressed_fh("$root/$sect/source/Sources.*");
+ while (<$p>) {
chomp;
next unless m/^Package:\s/;
s/^Package:\s*//; # Strip the fieldname
$section{$_} = "$archive/$sect";
}
- close (P);
+ close ($p);
}
}
my ($root,$archive) = @_;
for my $arch ( @bugcfg::architectures ) {
for my $sect ( @bugcfg::sections) {
- open(P, "zcat $root/$sect/binary-$arch/Packages.gz|")
- or die "open: $root/$sect/binary-$arch/Packages.gz: $!\n";
- while (<P>) {
+ my $p = glob_compressed_fh("$root/$sect/binary-$arch/Packages.*");
+ while (<$p>) {
chomp;
next unless m/^Package:\s/; # We're only interested in the packagenames
s/^Package:\s*//; # Strip the fieldname
$section{$_} = "$archive/$sect";
print "$root/$sect/binary-$arch/Packages.gz\n" if ($_ eq 'xtla');
}
- close(P);
+ close($p);
}
}
# handle the source packages
for my $sect (@bugcfg::sections) {
- my $fh;
- open($fh,'-|','zcat',"$root/$sect/source/Sources.gz") or
- die "Unable to open zcat $root/$sect/source/Sources.gz for reading: $!";
+ my $fh = glob_compressed_fh("$root/$sect/source/Sources.*");
while (<$fh>) {
chomp;
next unless m/^Package:\s/; # We're only interested in the packagenames
}
}
-sub readdebbugssources() {
- my $file;
- my $archive;
+sub readdebbugssources {
+ my ($file,$archive) = @_;
- $file=shift;
- $archive=shift;
open(P, $file)
or die "open: $file: $!\n";
while (<P>) {
}
next if $skip==1;
- my %disttags = ();
- $disttags{'oldstable'} = grep(/^lenny$/, @tags);
- $disttags{'stable'} = grep(/^squeeze$/, @tags);
- $disttags{'testing'} = grep(/^wheezy$/, @tags);
- $disttags{'unstable'} = grep(/^sid$/, @tags);
+ my %disttags = ();
+ for my $release (qw(oldstable stable testing unstable)) {
+ $disttags{$release} = grep(/^$bugcfg::debian_releases->{$release}$/, @tags);
+ }
$disttags{'experimental'} = grep(/^experimental$/, @tags);
# default according to vorlon 2007-06-17
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) {
+ for my $dist (qw(oldstable stable testing unstable experimental)) {
$bi->{$dist} = $disttags{$dist};
}
next if (length($bug->{'done'}));
my $affects_any = 0;
# only bother to check the versioning status for the distributions indicated by the tags
- for my $dist qw(oldstable stable testing unstable experimental) {
+ for my $dist (qw(oldstable stable testing unstable experimental)) {
local $SIG{__WARN__} = sub {};
$bi->{$dist} = 0;
next if !$affects_any;
}
- for my $keyword qw(pending patch help moreinfo unreproducible security upstream etch-ignore lenny-ignore squeeze-ignore wheezy-ignore) {
+ for my $keyword (qw(pending patch help moreinfo unreproducible security upstream),
+ map {$bugcfg::debian_releases->{$_}.'-ignore'} keys %{$bugcfg::debian_releases}) {
$bi->{$keyword} = grep(/^$keyword$/, @tags);
}
return $in;
}
-sub wwwnumber() {
+sub wwwnumber {
my $number = shift; # Number of bug to html-ize
"<A HREF=\"http://bugs.debian.org/cgi-bin/bugreport.cgi?archive=no&bug=" .
urlsanit($number) . '">' . htmlsanit($number) . '</A>';
}
-sub wwwname() {
+sub wwwname {
my $name = shift; # Name of package
"<A HREF=\"http://bugs.debian.org/cgi-bin/pkgreport.cgi?archive=no&pkg=" .
sub check_worry {
my ($bi) = @_;
- return ($bi->{'testing'} && !$bi->{'wheezy-ignore'});
+ return ($bi->{'testing'} && !$bi->{$bugcfg::debian_releases->{testing}.'-ignore'});
}
sub check_worry_stable {
my ($bi) = @_;
- return ($bi->{'stable'} && !$bi->{'squeeze-ignore'});
+ return ($bi->{'stable'} && !$bi->{$bugcfg::debian_releases->{stable}.'-ignore'});
}
sub check_worry_unstable {
$taginfo .= $bi->{'unreproducible'} ? "R" : " ";
$taginfo .= $bi->{'security'} ? "S" : " ";
$taginfo .= $bi->{'upstream'} ? "U" : " ";
- $taginfo .= ($bi->{'wheezy-ignore'} || $bi->{'squeeze-ignore'}) ? "I" : " ";
+ $taginfo .= ($bi->{$bugcfg::debian_releases->{stable}.'-ignore'} || $bi->{$bugcfg::debian_releases->{testing}.'-ignore'}) ? "I" : " ";
return $taginfo;
}
my $bi = shift;
my $relinfo = "";
- for my $dist qw(oldstable stable testing unstable experimental) {
+ for my $dist (qw(oldstable stable testing unstable experimental)) {
$relinfo .= uc(substr($dist, 0, 1)) if $bi->{$dist};
}