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];
signature.asc
Description: Digital signature