Control: tags -1 patch
Control: user bugs.debian@packages.debian.org
Control: usertag -1 bugscan
On Sat, Nov 12, 2016 at 05:13:15PM +, Mattia Rizzolo wrote:
> On Sat, Nov 12, 2016 at 06:06:35PM +0200, Adrian Bunk wrote:
> > This is likely caused by
> > https://lists.debian.org/debian-devel-announce/2016/11/msg5.html
>
> Not only this, unknown-package@ receive email of packages with known
> maintainer.
>
> You can have a look at archive-unknown-package on quantz to see them,
> for example I just receive notification that 835685 is closed, but that
> bug really is on a package with a maintainer.
> (removing myself from the alias until this is fixed).
Attached is a patch for bugscan which I believe should fix the issue.
It has been semi-tested (I extracted the methods to a separate file,
stubbed out the config and ran readpackages), but it's not exactly easy
to test properly...
Regards,
James
>From 8984ec2d25b0d0c73423350cc29139cd71237926 Mon Sep 17 00:00:00 2001
From: James Clarke
Date: Sat, 12 Nov 2016 22:29:25 +
Subject: [PATCH] Handle .xz, .bz2 and uncompressed Sources and Packages files
---
scanlib.pm | 39 +++
1 file changed, 31 insertions(+), 8 deletions(-)
diff --git a/scanlib.pm b/scanlib.pm
index 7cd2e63..ee995ec 100644
--- a/scanlib.pm
+++ b/scanlib.pm
@@ -30,7 +30,27 @@ package scanlib;
our (%maintainer,%section,%packagelist,%debbugssection,%bugs);
-# Read the list of maintainer
+sub findcompressedfile {
+ my ($file) = @_;
+ my @types = (
+ { cat => "xzcat", ext => ".xz" },
+ { cat => "bzcat", ext => ".bz2" },
+ { cat => "zcat", ext => ".gz" },
+ { cat => "cat", ext => "" },
+ );
+ for my $type (@types) {
+ my $cat = $type->{cat};
+ my $ext = $type->{ext};
+ my $fileext = $file . $ext;
+ if (-f $fileext and system("which $cat >/dev/null 2>&1") == 0) {
+ return ($fileext, $cat);
+ }
+ }
+ die "Unable to find compressed file for $file";
+}
+
+
+# Read the list of maintainer
sub readmaintainers() {
my $pkg;# Name of package
my $mnt;# Maintainer name &
email
@@ -55,8 +75,9 @@ sub readsources {
my ($root,$archive) = @_;
for my $sect (@bugcfg::sections) {
- open(P, "zcat $root/$sect/source/Sources.gz|")
- or die open "open: $sect sourcelist: $!\n";
+ my ($file, $cat) =
findcompressedfile("$root/$sect/source/Sources");
+ open(P, "$cat $file|")
+ or die "open: $sect sourcelist ($cat $file): $!\n";
while () {
chomp;
next unless m/^Package:\s/;
@@ -71,23 +92,25 @@ sub readpackages {
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";
+ my ($file, $cat) =
findcompressedfile("$root/$sect/binary-$arch/Packages");
+ open(P, "$cat $file|")
+ or die "open: $cat $file: $!\n";
while () {
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');
+ print "$file\n" if ($_ eq 'xtla');
}
close(P);
}
}
# handle the source packages
for my $sect (@bugcfg::sections) {
+ my ($file, $cat) = findcompressedfile("$root/$sect/source/Sources");
my $fh;
- open($fh,'-|','zcat',"$root/$sect/source/Sources.gz") or
- die "Unable to open zcat $root/$sect/source/Sources.gz for reading:
$!";
+ open($fh,'-|',"$cat","$file") or
+ die "Unable to open $cat $file for reading: $!";
while (<$fh>) {
chomp;
next unless m/^Package:\s/; # We're only interested in the
packagenames
--
2.10.2