I have got annoyed with uselessness of whohas for myself due to #670675
enough to try fixing it.  The breakage occurred in previous NMU which
annihilated a previously working patch.

If no objections -- I will upload in 2 days to 5 days delayed queue.

See attached fixed patches and the debdiff.  Here is the changelog:

whohas (0.29-0.2) unstable; urgency=low

  * Non-maintainer upload.
  * Fixed and improved 06-ubuntu-versions to get information on all
    reported releases for Ubuntu (Closes: #670675)
  * Adjusted 10-debian-versions to rely on fixed in 06-ubuntu-versions
    functionality to fetch information on all available releases at once,
    instead of looping through predefined list of releases. This way
    it should obtain information about oldstable and backports when
    available (Closes: #616297,#655497)
  * The other patches in the series were updated

 -- Yaroslav Halchenko <deb...@onerussian.com>  Thu, 27 Sep 2012 10:14:28 -0400


Since imho #670675 is severe enough I hope to convince release team to let this
through into wheezy.

CCing upstream for adoption of the patches

-- 
Yaroslav O. Halchenko
Postdoctoral Fellow,   Department of Psychological and Brain Sciences
Dartmouth College, 419 Moore Hall, Hinman Box 6207, Hanover, NH 03755
Phone: +1 (603) 646-9834                       Fax: +1 (603) 646-1419
WWW:   http://www.linkedin.com/in/yarik        
From: Yaroslav Halchenko <deb...@onerussian.com>
Subject: Fetch all versions from the same page for Debian

Similarly to Ubuntu's logic supplied in the previous patch -- fetch all version
available from the same page without querying each suite separately. This way
we also get possibly present urls to backports (#655497). Also altogether
should be more efficient avoiding multiple fetches/parsings.

Origin: Debian
Bug-Debian: http://bugs.debian.org/655497
Last-Update: 2012-09-27

## Description: Add unstable and experimental Debian repositories.
## Origin/Author: Jonathan Wiltshire <deb...@jwiltshire.org.uk>
## Bug: https://bugs.debian.org/511364
--- a/program/whohas
+++ b/program/whohas
@@ -938,7 +938,7 @@ sub debian_size_convert {
 }
 
 sub debian {
-       my @dists = ( 'stable', 'testing' );
+       my @dists = ( 'all' );
        &debuntu('http://packages.debian.org','Debian',\@dists,$_[0]);
        return();
 }
From: Yaroslav Halchenko <deb...@onerussian.com>
Subject: Reincarnated and refactored the patch to fetch multiple suites from 
listing page for ubuntu (and Debian)

original patch had header:
    ## 06-ubuntu-versions-510203.dpatch by Jonathan Wiltshire 
<deb...@jwiltshire.org.uk>
    ##
    ## All lines beginning with `## DP:' are a description of the patch.
    ## DP: Patch to show all versions of a package from Ubuntu, not just
    ## DP: the earliest, see bug 510203.
    ## DP: Additionally, show the repo that the package is from (eg. universe)
    ## DP: Original patch from Steve Cotton <steve0...@s.cotton.clara.co.uk>
    ## DP: Status: forwarded upstream to Philipp Wesche <phi1...@yahoo.com>

I have not relied on it actually but redone it, this time relying more on the
markup instead of lines counts. Also fixed stripping of additional HREFs after
the version (e.g. to backports repo)

Origin: Debian
Bug-Debian: http://bugs.debian.org/670675
Last-Update: 2012-09-27

--- a/program/whohas
+++ b/program/whohas
@@ -51,7 +51,7 @@ my @columns = (11,38,18,4,10,25);
 my $cols = 6;
 
 my $fedora_release              =  16                  ;
-my $ubuntu_current_release      = "oneiric"            ;
+my $ubuntu_current_release      = "all"                ;
 my $opensuse_major              = "12"                 ;
 my $opensuse_minor              = "1"                  ;
 my $mandrivaVersion             = "2011.0"             ;
@@ -964,17 +964,31 @@ sub debuntu {
                for (my $i = 50; $i < @lines; $i++) {
                        if ($lines[$i] =~ /<h3>Package /) {
                                my $name = (split /h3>Package |<\/h3>/, 
$lines[$i])[1];
-                               push @names, $name;
-                               my @parts = split /href\=\"|\"\>|<\/a\>/, 
$lines[$i+3];
-                               $parts[4] =~ s/ \(|\)://g;
-                               push @groups, $parts[4];
-                               push @repos, $dists[$x];
-                               push @urls,  $baseurl.$parts[2];
-                               push @dates, "";
-                               @parts = split />|: /, $lines[$i+6];
-                               $parts[1] =~ s/ \[\<strong.*//;
-                               push @versions, $parts[1];
-                               $i += 11;
+                               # There are now one or more 8-line blocks that 
are approximately
+                               # $lines[$i]   <li class="intrepid"><a 
class="resultlink" href="/intrepid/dpkg">intrepid</a> (base):
+                               # $lines[$i+3] <br>1.14.20ubuntu6: amd64 i386
+                               # And this list starts with <ul> and ends with 
</ul>
+                               $i += 1;
+                               while (($lines[$i] !~ '</ul>') && ($i < 
@lines)) {
+                                       if ($lines[$i] =~ /class="resultlink"/) 
{
+                                               push @names, $name;
+                                               my @parts = split 
/href\=\"|\"\>|<\/a\>/, $lines[$i];
+                                               $parts[4] =~ s/ \(|\)://g;
+                                               push @groups, $parts[4];
+                                               push @repos, $dists[$x];
+                                               push @urls,  $baseurl.$parts[2];
+                                               push @dates, "";
+                                               my $vline = $lines[$i+3];
+                                               # prune possibly existing link 
to backports
+                                               $vline =~ s/ *\[.*strong.*\]//g;
+                                               # Split lines e.g. 
"0.8.4-3+squeeze1: all"
+                                               @parts = split />|: /, $vline;
+                                               push @versions, $parts[1];
+                                               $i += 4; # do not be too greedy
+                                       } else {
+                                               $i += 1;
+                                       }
+                               }
                        }
                }
        }
diff -Nru whohas-0.29/debian/changelog whohas-0.29/debian/changelog
--- whohas-0.29/debian/changelog        2012-01-15 14:13:43.000000000 -0500
+++ whohas-0.29/debian/changelog        2012-09-27 10:19:48.000000000 -0400
@@ -1,3 +1,17 @@
+whohas (0.29-0.2) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * Fixed and improved 06-ubuntu-versions to get information on all
+    reported releases for Ubuntu (Closes: #670675)
+  * Adjusted 10-debian-versions to rely on fixed in 06-ubuntu-versions
+    functionality to fetch information on all available releases at once,
+    instead of looping through predefined list of releases. This way
+    it should obtain information about oldstable and backports when
+    available (Closes: #616297,#655497)
+  * The other patches in the series were updated
+
+ -- Yaroslav Halchenko <deb...@onerussian.com>  Thu, 27 Sep 2012 10:14:28 -0400
+
 whohas (0.29-0.1) unstable; urgency=low
 
   * Non-maintainer upload.
diff -Nru whohas-0.29/debian/patches/06-ubuntu-versions 
whohas-0.29/debian/patches/06-ubuntu-versions
--- whohas-0.29/debian/patches/06-ubuntu-versions       2012-01-15 
12:34:13.000000000 -0500
+++ whohas-0.29/debian/patches/06-ubuntu-versions       2012-09-27 
10:09:51.000000000 -0400
@@ -1,8 +1,27 @@
-Index: whohas-0.29/program/whohas
-===================================================================
---- whohas-0.29.orig/program/whohas    2012-01-15 14:33:25.223864820 -0300
-+++ whohas-0.29/program/whohas 2012-01-15 14:34:10.853958060 -0300
-@@ -51,7 +51,7 @@
+From: Yaroslav Halchenko <deb...@onerussian.com>
+Subject: Reincarnated and refactored the patch to fetch multiple suites from 
listing page for ubuntu (and Debian)
+
+original patch had header:
+    ## 06-ubuntu-versions-510203.dpatch by Jonathan Wiltshire 
<deb...@jwiltshire.org.uk>
+    ##
+    ## All lines beginning with `## DP:' are a description of the patch.
+    ## DP: Patch to show all versions of a package from Ubuntu, not just
+    ## DP: the earliest, see bug 510203.
+    ## DP: Additionally, show the repo that the package is from (eg. universe)
+    ## DP: Original patch from Steve Cotton <steve0...@s.cotton.clara.co.uk>
+    ## DP: Status: forwarded upstream to Philipp Wesche <phi1...@yahoo.com>
+
+I have not relied on it actually but redone it, this time relying more on the
+markup instead of lines counts. Also fixed stripping of additional HREFs after
+the version (e.g. to backports repo)
+
+Origin: Debian
+Bug-Debian: http://bugs.debian.org/670675
+Last-Update: 2012-09-27
+
+--- a/program/whohas
++++ b/program/whohas
+@@ -51,7 +51,7 @@ my @columns = (11,38,18,4,10,25);
  my $cols = 6;
  
  my $fedora_release             =  16                  ;
@@ -11,3 +30,46 @@
  my $opensuse_major             = "12"                 ;
  my $opensuse_minor             = "1"                  ;
  my $mandrivaVersion            = "2011.0"             ;
+@@ -964,17 +964,31 @@ sub debuntu {
+               for (my $i = 50; $i < @lines; $i++) {
+                       if ($lines[$i] =~ /<h3>Package /) {
+                               my $name = (split /h3>Package |<\/h3>/, 
$lines[$i])[1];
+-                              push @names, $name;
+-                              my @parts = split /href\=\"|\"\>|<\/a\>/, 
$lines[$i+3];
+-                              $parts[4] =~ s/ \(|\)://g;
+-                              push @groups, $parts[4];
+-                              push @repos, $dists[$x];
+-                              push @urls,  $baseurl.$parts[2];
+-                              push @dates, "";
+-                              @parts = split />|: /, $lines[$i+6];
+-                              $parts[1] =~ s/ \[\<strong.*//;
+-                              push @versions, $parts[1];
+-                              $i += 11;
++                              # There are now one or more 8-line blocks that 
are approximately
++                              # $lines[$i]   <li class="intrepid"><a 
class="resultlink" href="/intrepid/dpkg">intrepid</a> (base):
++                              # $lines[$i+3] <br>1.14.20ubuntu6: amd64 i386
++                              # And this list starts with <ul> and ends with 
</ul>
++                              $i += 1;
++                              while (($lines[$i] !~ '</ul>') && ($i < 
@lines)) {
++                                      if ($lines[$i] =~ /class="resultlink"/) 
{
++                                              push @names, $name;
++                                              my @parts = split 
/href\=\"|\"\>|<\/a\>/, $lines[$i];
++                                              $parts[4] =~ s/ \(|\)://g;
++                                              push @groups, $parts[4];
++                                              push @repos, $dists[$x];
++                                              push @urls,  $baseurl.$parts[2];
++                                              push @dates, "";
++                                              my $vline = $lines[$i+3];
++                                              # prune possibly existing link 
to backports
++                                              $vline =~ s/ *\[.*strong.*\]//g;
++                                              # Split lines e.g. 
"0.8.4-3+squeeze1: all"
++                                              @parts = split />|: /, $vline;
++                                              push @versions, $parts[1];
++                                              $i += 4; # do not be too greedy
++                                      } else {
++                                              $i += 1;
++                                      }
++                              }
+                       }
+               }
+       }
diff -Nru whohas-0.29/debian/patches/10-debian-versions 
whohas-0.29/debian/patches/10-debian-versions
--- whohas-0.29/debian/patches/10-debian-versions       2012-01-15 
13:21:29.000000000 -0500
+++ whohas-0.29/debian/patches/10-debian-versions       2012-09-27 
10:12:02.000000000 -0400
@@ -1,16 +1,26 @@
+From: Yaroslav Halchenko <deb...@onerussian.com>
+Subject: Fetch all versions from the same page for Debian
+
+Similarly to Ubuntu's logic supplied in the previous patch -- fetch all version
+available from the same page without querying each suite separately. This way
+we also get possibly present urls to backports (#655497). Also altogether
+should be more efficient avoiding multiple fetches/parsings.
+
+Origin: Debian
+Bug-Debian: http://bugs.debian.org/655497
+Last-Update: 2012-09-27
+
 ## Description: Add unstable and experimental Debian repositories.
 ## Origin/Author: Jonathan Wiltshire <deb...@jwiltshire.org.uk>
 ## Bug: https://bugs.debian.org/511364
-Index: whohas-0.29/program/whohas
-===================================================================
---- whohas-0.29.orig/program/whohas    2012-01-15 14:37:16.402235505 -0300
-+++ whohas-0.29/program/whohas 2012-01-15 14:39:00.409903804 -0300
-@@ -938,7 +938,7 @@
+--- a/program/whohas
++++ b/program/whohas
+@@ -938,7 +938,7 @@ sub debian_size_convert {
  }
  
  sub debian {
 -      my @dists = ( 'stable', 'testing' );
-+      my @dists = ( 'stable', 'testing', 'unstable', 'experimental' );
++      my @dists = ( 'all' );
        &debuntu('http://packages.debian.org','Debian',\@dists,$_[0]);
        return();
  }
diff -Nru whohas-0.29/debian/patches/30-strictness 
whohas-0.29/debian/patches/30-strictness
--- whohas-0.29/debian/patches/30-strictness    2012-01-15 13:34:01.000000000 
-0500
+++ whohas-0.29/debian/patches/30-strictness    2012-09-27 10:13:01.000000000 
-0400
@@ -1,11 +1,9 @@
 ## Description: Add a --strict option to output only exactly matching package 
names
 ## Origin/Author: Jonathan Wiltshire <deb...@jwiltshire.org.uk>
 ## Bug: http://bugs.debian.org/510020
-Index: whohas-0.29/program/whohas
-===================================================================
---- whohas-0.29.orig/program/whohas    2012-01-15 15:32:23.200237156 -0300
-+++ whohas-0.29/program/whohas 2012-01-15 15:33:40.804989692 -0300
-@@ -72,21 +72,23 @@
+--- a/program/whohas
++++ b/program/whohas
+@@ -72,21 +72,23 @@ my @distroSelections;
  my $nothreads;
  my $shallow;
  my $option_help;
@@ -31,7 +29,7 @@
  } elsif (@ARGV < 1) {
        die "Error:\tPlease specify a search term.\n";
  }
-@@ -1158,6 +1160,9 @@
+@@ -1172,6 +1174,9 @@ sub fetchdoc {
  }
  
  sub pretty_print {
@@ -41,7 +39,7 @@
        my $n = $_[0];
        my @colwidths = @_[1..$n];
        my @colvals = @_[($n+1)..(@_-1)];
-@@ -1176,6 +1181,15 @@
+@@ -1190,6 +1195,15 @@ sub pretty_print {
        print $colvals[@colvals-1]."\n"; #last column is unrestricted in length
  }
  
@@ -57,10 +55,8 @@
  sub prep_suse_repo {
        if ($_[0] =~ /http\:\/\/download\.opensuse\.org/) {
                if ($_[0] =~ /repositories/) {
-Index: whohas-0.29/usr/share/man/de/man1/whohas.1
-===================================================================
---- whohas-0.29.orig/usr/share/man/de/man1/whohas.1    2012-01-15 
15:28:58.000000000 -0300
-+++ whohas-0.29/usr/share/man/de/man1/whohas.1 2012-01-15 15:32:23.840210384 
-0300
+--- a/usr/share/man/de/man1/whohas.1
++++ b/usr/share/man/de/man1/whohas.1
 @@ -1,35 +1,38 @@
 -.TH "whohas" "1" "0.23" "Philipp Wesche" ""
 +.TH "whohas" "1" "0.29" "Philipp Wesche" ""
@@ -113,10 +109,8 @@
 -.LP 
 +.LP
  Diese Dokumentation wurde von Philipp Wesche <phi1...@yahoo.com> geschrieben, 
basierend auf einer Vorlage von Jonathan Wiltshire <deb...@jwiltshire.org.uk> 
f�r das Debian Projekt.
-Index: whohas-0.29/usr/share/man/man1/whohas.1
-===================================================================
---- whohas-0.29.orig/usr/share/man/man1/whohas.1       2012-01-15 
15:32:13.772631574 -0300
-+++ whohas-0.29/usr/share/man/man1/whohas.1    2012-01-15 15:32:23.844210215 
-0300
+--- a/usr/share/man/man1/whohas.1
++++ b/usr/share/man/man1/whohas.1
 @@ -1,32 +1,35 @@
 -.TH "whohas" "1" "0.24" "Jonathan Wiltshire" ""
 +.TH "whohas" "1" "0.29" "Jonathan Wiltshire" ""
diff -Nru whohas-0.29/debian/patches/35-gentoo-result-url-516071 
whohas-0.29/debian/patches/35-gentoo-result-url-516071
--- whohas-0.29/debian/patches/35-gentoo-result-url-516071      2011-12-28 
15:00:39.000000000 -0500
+++ whohas-0.29/debian/patches/35-gentoo-result-url-516071      2012-09-27 
10:13:04.000000000 -0400
@@ -6,9 +6,9 @@
 ## DP: information can be found
 
 @DPATCH@
---- whohas-0.23.orig/program/whohas
-+++ whohas-0.23/program/whohas
-@@ -800,6 +800,7 @@
+--- a/program/whohas
++++ b/program/whohas
+@@ -712,6 +712,7 @@ sub cygwin {
  
  sub gentoo {
        my $gentoobase = "http://gentoo-portage.com";;
@@ -16,7 +16,7 @@
        my $distroname = "Gentoo";
        my @names;
        my @versions;
-@@ -821,6 +822,7 @@
+@@ -733,6 +734,7 @@ sub gentoo {
                                                my @dosparts = split /\//, 
$parts[1];
                                                $dosparts[1] =~ / +$/;
                                                my $tempurl = 
$gentoobase."/".$dosparts[0]."/".$dosparts[1];
@@ -24,7 +24,7 @@
                                                my @newlines = split /\n/, 
&fetchdoc($tempurl);
                                                for (my $li = 0; $li < 
@newlines; $li++) {
                                                        if ($newlines[$li] =~ 
/\<li class\=\"[a-z]+ebuildrow\"/) {
-@@ -833,7 +835,7 @@
+@@ -745,7 +747,7 @@ sub gentoo {
                                                                }
                                                                push @names, 
$dosparts[1];
                                                                push @groups, 
$dosparts[0];
diff -Nru whohas-0.29/debian/patches/40-improve-fetchdoc 
whohas-0.29/debian/patches/40-improve-fetchdoc
--- whohas-0.29/debian/patches/40-improve-fetchdoc      2012-01-10 
18:06:35.000000000 -0500
+++ whohas-0.29/debian/patches/40-improve-fetchdoc      2012-09-27 
10:13:07.000000000 -0400
@@ -6,11 +6,9 @@
 ## DP: This also allows us to process XML files without breaking the first line
 
 @DPATCH@
-Index: whohas-0.29/program/whohas
-===================================================================
---- whohas-0.29.orig/program/whohas    2012-01-10 18:48:04.919318487 -0300
-+++ whohas-0.29/program/whohas 2012-01-10 20:06:23.817747453 -0300
-@@ -1133,33 +1133,16 @@
+--- a/program/whohas
++++ b/program/whohas
+@@ -1146,33 +1146,16 @@ sub fetchdoc {
  
        my $ua = LWP::UserAgent->new;
        $ua->env_proxy;
diff -Nru whohas-0.29/debian/patches/60-dont-mask-vars-560891 
whohas-0.29/debian/patches/60-dont-mask-vars-560891
--- whohas-0.29/debian/patches/60-dont-mask-vars-560891 2011-12-28 
15:00:39.000000000 -0500
+++ whohas-0.29/debian/patches/60-dont-mask-vars-560891 2012-09-27 
10:13:14.000000000 -0400
@@ -7,9 +7,9 @@
  program/whohas |    1 -
  1 file changed, 1 deletion(-)
 
---- whohas-0.23.orig/program/whohas
-+++ whohas-0.23/program/whohas
-@@ -1085,7 +1085,6 @@
+--- a/program/whohas
++++ b/program/whohas
+@@ -1041,7 +1041,6 @@ sub aur {
        my @dates;
        my @urls;
        my @sizes;
diff -Nru whohas-0.29/debian/patches/95-archlinux-url-561536 
whohas-0.29/debian/patches/95-archlinux-url-561536
--- whohas-0.29/debian/patches/95-archlinux-url-561536  2011-12-28 
15:00:39.000000000 -0500
+++ whohas-0.29/debian/patches/95-archlinux-url-561536  2012-09-27 
10:13:17.000000000 -0400
@@ -4,9 +4,9 @@
 Reviewed-by: Jonathan Wiltshire <j...@debian.org>
 Last-Update: 2010-12-05
 
---- whohas-0.24.orig/program/whohas    2010-04-05 00:42:48.000000000 +0200
-+++ whohas-0.24/program/whohas         2010-12-03 12:26:01.780263569 +0100
-@@ -1115,7 +1124,8 @@
+--- a/program/whohas
++++ b/program/whohas
+@@ -1071,7 +1071,8 @@ sub aur {
  
  sub arch {
        my $archbase   = "http://www.archlinux.org";;
@@ -16,7 +16,7 @@
  
        my @repos;
        my @names;
-@@ -1124,7 +1134,7 @@
+@@ -1080,7 +1081,7 @@ sub arch {
        my @urls;
        my @sizes;
        for (my $i = 0; $i < @lines; $i++) {
@@ -25,7 +25,7 @@
                        for (my $a = 2; $a < 11;$a++) {
                                my $temp = $lines[$a+$i];
                                $temp =~ s/.*\<td\>|\<\/td\>//g;
-@@ -1132,15 +1142,16 @@
+@@ -1088,15 +1089,16 @@ sub arch {
                                        push @repos,$temp;
                                } elsif ($a == 4) {
                                        push @urls, 
$archbase.&arch_site_get_url ($lines[$i+$a]);
@@ -45,7 +45,7 @@
                        push @sizes, "";
                        $i += 7;
                }
-@@ -1153,7 +1164,7 @@
+@@ -1109,7 +1111,7 @@ sub arch {
  
  sub arch_site_get_url {
        my $temp = $_[0];
diff -Nru whohas-0.29/debian/patches/96-fedora-search-619873 
whohas-0.29/debian/patches/96-fedora-search-619873
--- whohas-0.29/debian/patches/96-fedora-search-619873  2011-12-28 
15:00:39.000000000 -0500
+++ whohas-0.29/debian/patches/96-fedora-search-619873  2012-09-27 
10:13:19.000000000 -0400
@@ -1,11 +1,9 @@
 ## Description: Support fedora's package listing
 ## Origin/Author: m...@debian.org
 ## Bug: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=619873
-Index: whohas-0.24/program/whohas
-===================================================================
---- whohas-0.24.orig/program/whohas    2011-11-29 16:22:29.000000000 -0300
-+++ whohas-0.24/program/whohas 2011-11-29 16:25:47.192778437 -0300
-@@ -290,27 +290,26 @@
+--- a/program/whohas
++++ b/program/whohas
+@@ -187,27 +187,26 @@ sub fedora {
                        for (my $a = 0; $a < @fed_urls; $a++) {
                                my @lines = split /\n/, 
&fetchdoc($baseurl.$fed_urls[0]);
                                for (my $li = 0; $li < @lines; $li++) {
diff -Nru whohas-0.29/debian/patches/openbsd-cache-results 
whohas-0.29/debian/patches/openbsd-cache-results
--- whohas-0.29/debian/patches/openbsd-cache-results    2011-12-28 
15:00:39.000000000 -0500
+++ whohas-0.29/debian/patches/openbsd-cache-results    2012-09-27 
10:13:11.000000000 -0400
@@ -4,9 +4,9 @@
 Reported: http://bugs.debian.org/557724
 Author: Jonathan Wiltshire <deb...@jwiltshire.org.uk>
 
---- whohas-0.23.orig/program/whohas
-+++ whohas-0.23/program/whohas
-@@ -789,7 +789,7 @@
+--- a/program/whohas
++++ b/program/whohas
+@@ -666,7 +666,7 @@ sub openbsd_older {
                close OUT;
        }
        my $matcher = $_[0];

Attachment: signature.asc
Description: Digital signature

Reply via email to