X-Git-Url: https://git.deb.at/?a=blobdiff_plain;f=lib%2FPackages%2FHTML.pm;h=6a6baf6c9e4055241d577ae97b97801cf5cce21b;hb=4452916120a65632430780fd0eb16f63811517b9;hp=28dbb76e64a0a7c4759ae80432dce98fd83b076b;hpb=f27f1fcc5bffc0696f694e962eb40dbb0c554855;p=deb%2Fpackages.git
diff --git a/lib/Packages/HTML.pm b/lib/Packages/HTML.pm
index 28dbb76..6a6baf6 100644
--- a/lib/Packages/HTML.pm
+++ b/lib/Packages/HTML.pm
@@ -8,7 +8,7 @@ use URI::Escape;
use HTML::Entities;
use Locale::gettext;
-use Packages::CGI ();
+use Packages::CGI qw(make_url make_search_url);
use Packages::Search qw( read_entry_simple );
use Packages::Config qw( :all );
@@ -82,12 +82,14 @@ sub pkg_list {
my $suite = $opts->{suite}[0];
my $str = "";
- foreach my $p ( @$pkgs ) {
+ foreach my $p ( sort @$pkgs ) {
+ # we don't deal with virtual packages here because for the
+ # current uses of this function this isn't needed
my $short_desc = (read_entry_simple( $packages, $p, $opts->{h_archives}, $suite))->[-1];
if ( $short_desc ) {
- $str .= "
$p\n".
+ $str .= "undef})."\">$p\n".
"\t$short_desc\n";
} else {
$str .= "$p\n\t"._g("Not available")."\n";
@@ -125,11 +127,8 @@ sub pmoreinfo {
my $src_dir = $page->get_src('directory');
if ($info{sourcedownload}) {
my $files = $page->get_src( 'files' );
- my $path = (@{$opts->{archive}} >1) ?
- $suite :
- "$suite/$opts->{archive}[0]";
$str .= _g( "Source Package:" );
- $str .= " $source, ".
+ $str .= " 'source'})."\">$source, ".
_g( "Download" ).":\n";
unless (defined($files) and @$files) {
@@ -137,17 +136,10 @@ sub pmoreinfo {
} else {
foreach( @$files ) {
my ($src_file_md5, $src_file_size, $src_file_name) = split /\s/o, $_;
- for ($page->get_newest('archive')) {
- /security/o && do {
- $str .= "{security}/$src_dir/$src_file_name\">["; last };
- /volatile/o && do {
- $str .= "{volatile}/$src_dir/$src_file_name\">["; last };
- /backports/o && do {
- $str .= "{backports}/$src_dir/$src_file_name\">["; last };
- /non-us/io && do {
- $str .= "{nonus_site}/$src_dir/$src_file_name\">["; last };
- $str .= "{us}/$src_dir/$src_file_name\">[";
- }
+ # non-US hack
+ (my $server = lc $page->get_newest('archive')) =~ s/-//go;
+ $str .= sprintf("[",
+ $env->{$server}||$env->{us});
if ($src_file_name =~ /dsc$/) {
$str .= "dsc";
} else {
@@ -216,13 +208,11 @@ sub pmoreinfo {
}
sub dep_item {
- my ( $link, $name, $info, $desc ) = @_;
- my $post_link = '';
- if ($link) {
- $link = "";
+ my ( $suite, $name, $info, $desc ) = @_;
+ my ($link, $post_link) = ('', '');
+ if ($suite) {
+ $link = "$suite})."\">";
$post_link = '';
- } else {
- $link = '';
}
if ($info) {
$info = " $info";
@@ -238,6 +228,20 @@ sub dep_item {
return "$link$name$post_link$info$desc";
} # end dep_item
+sub provides_string {
+ my ($suite, $entry, $also) = @_;
+ my %tmp = map { $_ => 1 } split /\s/, $entry;
+ my @provided_by = keys %tmp; # weed out duplicates
+ my $short_desc = $also ? _g("also a virtual package provided by ")
+ : _g("virtual package provided by ");
+ if (@provided_by < 10) {
+ $short_desc .= join( ', ',map { "$suite})."\">$_" } @provided_by);
+ } else {
+ $short_desc .= sprintf( _g("%s packages"), scalar(@provided_by));
+ }
+ return $short_desc;
+}
+
sub print_deps {
my ( $packages, $opts, $pkg, $relations, $type) = @_;
my %dep_type = ('depends' => 'dep', 'recommends' => 'rec',
@@ -246,7 +250,6 @@ sub print_deps {
my $res = "\n";
my $first = 1;
my $suite = $opts->{suite}[0];
- my $one_archive = @{$opts->{archive}} > 1 ? '': $opts->{archive}[0];
# use Data::Dumper;
# debug( "print_deps called:\n".Dumper( $pkg, $relations, \$type ), 3 ) if DEBUG;
@@ -286,28 +289,28 @@ sub print_deps {
my $entry = $entries{$p_name} ||
read_entry_simple( $packages, $p_name, $opts->{h_archives}, $suite);
my $short_desc = $entry->[-1];
- my $arch = $entry->[2];
- my $archive = $entry->[0];
+ my $arch = $entry->[3];
+ my $archive = $entry->[1];
+ my $p_suite = $entry->[2];
if ( $short_desc ) {
- my $path = $one_archive eq $archive ? "$suite/$archive" :
- $suite;
if ( $is_old_pkgs ) {
- push @res_pkgs, dep_item( "$ROOT/$path/$p_name",
+ push @res_pkgs, dep_item( $p_suite,
$p_name, "$pkg_version$arch_str" );
- } elsif ($arch eq 'virtual') {
- my @provided_by = split /\s/, $short_desc;
- $short_desc = "virtual package provided by ";
- if (@provided_by < 10) {
- $short_desc .= join( ', ',map { "$_" } @provided_by);
- } else {
- $short_desc .= scalar(@provided_by)." packages";
- }
- push @res_pkgs, dep_item( "$ROOT/$path/$p_name",
- $p_name, "$pkg_version$arch_str", $short_desc );
- } else {
+ } elsif (defined $entry->[1]) {
$entries{$p_name} ||= $entry;
$short_desc = encode_entities( $short_desc, "<>&\"" );
- push @res_pkgs, dep_item( "$ROOT/$path/$p_name",
+ $short_desc .= "
".provides_string( $p_suite,
+ $entry->[0],
+ 1 )
+ if defined $entry->[0];
+ push @res_pkgs, dep_item( $p_suite,
+ $p_name, "$pkg_version$arch_str", $short_desc );
+ } elsif (defined $entry->[0]) {
+ $short_desc = provides_string( $p_suite,
+ $entry->[0] );
+ #FIXME: we don't handle virtual packages from
+ # the fallback suite correctly here
+ push @res_pkgs, dep_item( $suite,
$p_name, "$pkg_version$arch_str", $short_desc );
}
} elsif ( $is_old_pkgs ) {
@@ -382,12 +385,7 @@ sub header {
$search_in_header = <