X-Git-Url: https://git.deb.at/?a=blobdiff_plain;f=cgi-bin%2Fsearch_packages.pl;h=a7184dc7d5050a4c6a61365536672fdd6f343d27;hb=e297f56fb5ba59c24f4b3d325b8a43fc05c71f5d;hp=c74ffc27689007cb035b47133d18287a4f5ffc15;hpb=3d5a2408c84b3197cfb003ef2c3204d9c280b481;p=deb%2Fpackages.git
diff --git a/cgi-bin/search_packages.pl b/cgi-bin/search_packages.pl
index c74ffc2..a7184dc 100755
--- a/cgi-bin/search_packages.pl
+++ b/cgi-bin/search_packages.pl
@@ -255,7 +255,7 @@ print_errors();
print_hints();
print_debug();
if (@results) {
- my (%pkgs, %subsect, %sect, %desc, %binaries, %provided_by);
+ my (%pkgs, %subsect, %sect, %archives, %desc, %binaries, %provided_by);
unless ($opts{searchon} eq 'sourcenames') {
foreach (@results) {
@@ -264,10 +264,18 @@ if (@results) {
my ($pkg) = $pkg_t =~ m/^(.+)/; # untaint
if ($arch ne 'virtual') {
+ my $real_archive;
+ if ($archive =~ /^(security|non-US)$/) {
+ $real_archive = $archive;
+ $archive = 'us';
+ }
+
$pkgs{$pkg}{$suite}{$archive}{$version}{$arch} = 1;
$subsect{$pkg}{$suite}{$archive}{$version} = $subsection;
$sect{$pkg}{$suite}{$archive}{$version} = $section
unless $section eq 'main';
+ $archives{$pkg}{$suite}{$archive}{$version} = $real_archive
+ if $real_archive;
$desc{$pkg}{$suite}{$archive}{$version} = $desc;
} else {
@@ -288,8 +296,11 @@ my @pkgs = sort(keys %pkgs, keys %provided_by);
print "
\n";
foreach my $suite (@SUITES) {
foreach my $archive (@ARCHIVES) {
+ next if $archive eq 'security';
+ next if $archive eq 'non-US';
my $path = $suite.(($archive ne 'us')?"/$archive":'');
if (exists $pkgs{$pkg}{$suite}{$archive}) {
+ my %archs_printed;
my @versions = version_sort keys %{$pkgs{$pkg}{$suite}{$archive}};
my $origin_str = "";
if ($sect{$pkg}{$suite}{$archive}{$versions[0]}) {
@@ -300,8 +311,16 @@ my @pkgs = sort(keys %pkgs, keys %provided_by);
$desc{$pkg}{$suite}{$archive}{$versions[0]}, $origin_str;
foreach my $v (@versions) {
- printf "
%s: %s\n",
- $v, join (" ", (sort keys %{$pkgs{$pkg}{$suite}{$archive}{$v}}) );
+ my $archive_str = "";
+ if ($archives{$pkg}{$suite}{$archive}{$v}) {
+ $archive_str .= " [$archives{$pkg}{$suite}{$archive}{$v}]";
+ }
+
+ my @archs_to_print = grep { !$archs_printed{$_} } sort keys %{$pkgs{$pkg}{$suite}{$archive}{$v}};
+ printf "
%s$archive_str: %s\n",
+ $v, join (" ", @archs_to_print )
+ if @archs_to_print;
+ $archs_printed{$_}++ foreach @archs_to_print;
}
if (my $provided_by = $provided_by{$pkg}{$suite}{$archive}) {
print '
also provided by: ',
@@ -324,10 +343,22 @@ my @pkgs = sort(keys %pkgs, keys %provided_by);
my ($pkg, $archive, $suite, $section, $subsection, $priority,
$version) = @$_;
+ my $real_archive = '';
+ if ($archive =~ /^(security|non-US)$/) {
+ $real_archive = $archive;
+ $archive = 'us';
+ }
+ if (($real_archive eq $archive) &&
+ $pkgs{$pkg}{$suite}{$archive} &&
+ (version_cmp( $pkgs{$pkg}{$suite}{$archive}, $version ) >= 0)) {
+ next;
+ }
$pkgs{$pkg}{$suite}{$archive} = $version;
$subsect{$pkg}{$suite}{$archive}{source} = $subsection;
$sect{$pkg}{$suite}{$archive}{source} = $section
unless $section eq 'main';
+ $archives{$pkg}{$suite}{$archive}{source} = $real_archive
+ if $real_archive;
$binaries{$pkg}{$suite}{$archive} = find_binaries( $pkg, $archive, $suite, \%src2bin );
}
@@ -349,6 +380,9 @@ my @pkgs = sort(keys %pkgs, keys %provided_by);
if ($sect{$pkg}{$suite}{$archive}{source}) {
$origin_str .= " [$sect{$pkg}{$suite}{$archive}{source}]";
}
+ if ($archives{$pkg}{$suite}{$archive}{source}) {
+ $origin_str .= " [$archives{$pkg}{$suite}{$archive}{source}]";
+ }
printf( "- %s (%s): %s %s",
$suite.(($archive ne 'us')?"/$archive":''), $pkg, $suite.(($archive ne 'us')?"/$archive":''), $subsect{$pkg}{$suite}{$archive}{source},
$pkgs{$pkg}{$suite}{$archive}, $origin_str );