[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#626597: lintian.debian.org is having trouble showing the maintainers



On Fri, 2011-05-13 at 09:21 -0700, Russ Allbery wrote:
> Margarita Manterola <marga@debian.org> writes:
> > If I try to find the lintian page for one of my packages, for example,
> > uisp, I get to:
> 
> > http://lintian.debian.org/full/unsorted.html#uisp
> 
> > Which shows it belonging to "unknown", with many other packages that
> > actually belong to real maintainers.  This is happening to several other
> > people as well (I guess all the people listed in that page with packages
> > from unknown)

As far as lintian.d.o is concerned, there is no "uisp" source package;
hence, it has no maintainer.

adsb@bellini:/srv/lintian.debian.org$ grep uisp laboratory/info/source-packages 
adsb@bellini:/srv/lintian.debian.org$ grep uisp logs/html_reports.log
source package uisp not listed!
source package uisp not listed!
source package uisp not listed!
source package uisp not listed!
source package uisp not listed!
source package uisp not listed!

> > I don't understand what's going on, but there's something weird there.  I
> > hope you can fix it.
>
> I haven't yet looked at this at all, but just off the top of my head, I
> bet the web reporting stuff relied on the order of fields in the Packages
> or Sources files.  I saw an announcement go by saying that the ordering
> may have changed, and I vaguely remember looking at that code a while back
> and thinking it was making bad assumptions.

Yeah, unpack/list-srcpkg was very tied to the field ordering;
list-binpkg is much saner.  I've pushed the attached patch, which seems
to work:

adsb@bellini:~/lintian$ cp /srv/lintian.debian.org/laboratory/info/source-packages .
adsb@bellini:~/lintian$ wc -l source-packages 
1038 source-packages
adsb@bellini:~/lintian$ LINTIAN_DIST=unstable LINTIAN_ARCHIVEDIR=/org/ftp.debian.org/ftp/ LINTIAN_AREA=main LINTIAN_ROOT=. unpack/list-srcpkg source-packages 
adsb@bellini:~/lintian$ wc -l source-packages 
15920 source-packages
adsb@bellini:~/lintian$ zegrep "^Package:" /org/ftp.debian.org/ftp/dists/unstable/main/source/Sources.gz  | sort | uniq | wc -l
15919

Regards,

Adam
commit aefd5f0e4842a46b399b5b25c72bd97c33d7543e
Author: Adam D. Barratt <adam@adam-barratt.org.uk>
Date:   Fri May 13 20:24:40 2011 +0100

    Stop making assumptions about the order of fields in Sources.gz
    
    * unpack/list-srcpkg:
      + [ADB] Don't rely on the order of fields in the Sources file.  The files
        produced by the Debian archive no longer follow the order which the code
        previously assumed, and we shouldn't assume that the order won't change
        again in the future.  (Closes: #626597)

diff --git a/debian/changelog b/debian/changelog
index 69744fd..1e9e50d 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,13 @@
+lintian (2.5.1) unstable; urgency=low
+
+  * unpack/list-srcpkg:
+    + [ADB] Don't rely on the order of fields in the Sources file.  The files
+      produced by the Debian archive no longer follow the order which the code
+      previously assumed, and we shouldn't assume that the order won't change
+      again in the future.  (Closes: #626597)
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk>  Fri, 13 May 2011 20:20:51 +0100
+
 lintian (2.5.0) unstable; urgency=low
 
   * Summary of tag changes:
diff --git a/unpack/list-srcpkg b/unpack/list-srcpkg
index 738963d..e437e9b 100755
--- a/unpack/list-srcpkg
+++ b/unpack/list-srcpkg
@@ -107,11 +107,18 @@ foreach my $sources (@sources) {
   my $line;
 
   while (!eof(IN)) {
-    do { $line = <IN> } until ($line =~ m/^Directory: (.*)$/m);
-    my $pkg_dir = $1;
-    do { $line = <IN> } until ($line =~ m/^ [0-9a-f]{32} [0-9]+ (.+\.dsc)$/m);
-    my $dsc_file = "$pkg_dir/$1";
-    do { $line = <IN> } until ($line =~ m/^\s*$/m);
+    my $pkg_dir;
+    my $dsc_file;
+
+    do {
+      $line = <IN>;
+      if ($line =~ m/^Directory: (.*)$/) {
+        $pkg_dir = $1;
+      } elsif ($line =~ m/^ [0-9a-f]{32} [0-9]+ (.+\.dsc)$/) {
+        $dsc_file = $1;
+      }
+    } until (not defined($line) or $line =~ /^\s*$/);
+    $dsc_file = "$pkg_dir/$dsc_file";
 
     my @stat;
     # get timestamp...

Reply to: