From: Frank Lichtenheld \n/go;
- $long_desc =~ s/(((\n|\A) [^\n]*)+)/\n \n/go;
+ $long_desc =~ s/(((\n|\A) [^\n]*)+)/\n';
}
my $i = 0; my $num_sections = keys %{$subsections->{$s}{$a}};
- foreach my $ssec (keys %{$subsections->{$s}{$a}}) {
+ foreach my $ssec ((keys %{$subsections->{$s}{$a}}, 'virtual')) {
next if $ssec eq '-';
mkpath ( "$wwwdir/$key/$ssec" );
open $pages{$key}{$ssec}{fh}, '>', "$wwwdir/$key/$ssec/index.en.html.new"
@@ -186,6 +187,7 @@ foreach my $s (@SUITES) {
}
}
+print "writing package info ...\n";
while (my ($pkg, $data) = each %packages) {
my %pkg;
foreach (split /\000/o, $data) {
@@ -195,17 +197,30 @@ while (my ($pkg, $data) = each %packages) {
$key = "$data[1]/$data[0]";
}
$pkg{$key} ||= new Packages::Page( $pkg );
- $pkg{$key}->merge_package( { package => $pkg,
- archive => $data[0],
- suite => $data[1],
- architecture => $data[2],
- section => $data[3],
- subsection => $data[4],
- priority => $data[5],
- version => $data[6],
- description => $data[7] } );
+ if ($data[2] ne 'virtual') {
+ $pkg{$key}->merge_package( { package => $pkg,
+ archive => $data[0],
+ suite => $data[1],
+ architecture => $data[2],
+ section => $data[3],
+ subsection => $data[4],
+ priority => $data[5],
+ version => $data[6],
+ description => $data[7] } );
+ } else {
+ $pkg{$key}->add_provided_by([split /\s+/, $data[7]]);
+ }
}
while (my ($key, $entry) = each %pkg) {
+ if (my $provided_by = $entry->{provided_by}) {
+ my $str = "
', trailer( "$root../../" );
close $pages{$key}{$ssec}{fh} or
diff --git a/bin/parse-packages b/bin/parse-packages
index 7de51b6..38c83e9 100755
--- a/bin/parse-packages
+++ b/bin/parse-packages
@@ -130,7 +130,7 @@ for my $archive (@ARCHIVES) {
foreach (keys %virtual_packages) {
my @provided_by = keys %{$virtual_packages{$_}};
- $packages_small{$_} .= "$archive $suite virtual - - - - @provided_by\000";
+ $packages_small{$_} .= "$archive $suite virtual v v v v @provided_by\000";
}
untie %packages_all_db;
diff --git a/cgi-bin/search_packages.pl b/cgi-bin/search_packages.pl
index 3572915..e7cb3b6 100755
--- a/cgi-bin/search_packages.pl
+++ b/cgi-bin/search_packages.pl
@@ -113,7 +113,7 @@ my %params = Packages::Search::parse_params( $input, \%params_def, \%opts );
#XXX: Don't use alternative output formats yet
$format = 'html';
if ($format eq 'html') {
- print $input->header;
+ print $input->header( -charset => 'utf-8' );
}
if ($params{errors}{keywords}) {
diff --git a/cgi-bin/show_package.pl b/cgi-bin/show_package.pl
index 2ec4616..f51110d 100755
--- a/cgi-bin/show_package.pl
+++ b/cgi-bin/show_package.pl
@@ -102,7 +102,7 @@ my %params = Packages::Search::parse_params( $input, \%params_def, \%opts );
#XXX: Don't use alternative output formats yet
$format = 'html';
if ($format eq 'html') {
- print $input->header;
+ print $input->header( -charset => 'utf-8' );
}
if ($params{errors}{package}) {
@@ -154,7 +154,7 @@ unless (@Packages::CGI::fatal_errors) {
for my $entry (@results) {
debug( join(":", @$entry), 1 );
my (undef, $archive, undef, $arch, $section, $subsection,
- $priority, $version, @provided_by) = @$entry;
+ $priority, $version, $provided_by) = @$entry;
if ($arch ne 'virtual') {
my %data = split /\000/, $packages_all{"$pkg $arch $version"};
@@ -163,174 +163,223 @@ unless (@Packages::CGI::fatal_errors) {
$data{version} = $version;
$page->merge_package(\%data) or debug( "Merging $pkg $arch $version FAILED", 2 );
} else {
- $page->add_provided_by(\@provided_by);
+ $page->add_provided_by([split /\s+/, $provided_by]);
}
}
-
- $version = $page->{newest};
- my $source = $page->get_newest( 'source' );
- $archive = $page->get_newest( 'archive' );
- debug( "find source package: source=$source", 1);
- my $src_data = $sources_all{"$archive $suite $source"};
- $page->add_src_data( $source, $src_data )
- if $src_data;
-
- my $st1 = new Benchmark;
- my $std = timediff($st1, $st0);
- debug( "Data search and merging took ".timestr($std) );
-
- my $encodedpkg = uri_escape( $pkg );
- my ($v_str, $v_str_arch, $v_str_arr) = $page->get_version_string();
- my $did = $page->get_newest( 'description' );
- $section = $page->get_newest( 'section' );
- $subsection = $page->get_newest( 'subsection' );
- my $filenames = $page->get_arch_field( 'filename' );
- my $file_md5sums = $page->get_arch_field( 'md5sum' );
- my $archives = $page->get_arch_field( 'archive' );
- my $sizes_inst = $page->get_arch_field( 'installed-size' );
- my $sizes_deb = $page->get_arch_field( 'size' );
- my @archs = sort $page->get_architectures;
-
- # process description
- #
- my $desc = $descriptions{$did};
- $short_desc = encode_entities( $1, "<>&\"" )
- if $desc =~ s/^(.*)$//m;
- my $long_desc = encode_entities( $desc, "<>&\"" );
- $long_desc =~ s,((ftp|http|https)://[\S~-]+?/?)((\>\;)?[)]?[']?[:.\,]?(\s|$)),$1$3,go; # syntax highlighting -> '];
- $long_desc =~ s/\A //o;
- $long_desc =~ s/\n /\n/sgo;
- $long_desc =~ s/\n.\n/\n$1\n<\/pre>/sgo;
+ unless ($page->is_virtual()) {
+ $version = $page->{newest};
+ my $source = $page->get_newest( 'source' );
+ $archive = $page->get_newest( 'archive' );
+ debug( "find source package: source=$source", 1);
+ my $src_data = $sources_all{"$archive $suite $source"};
+ $page->add_src_data( $source, $src_data )
+ if $src_data;
+
+ my $st1 = new Benchmark;
+ my $std = timediff($st1, $st0);
+ debug( "Data search and merging took ".timestr($std) );
+
+ my $encodedpkg = uri_escape( $pkg );
+ my ($v_str, $v_str_arch, $v_str_arr) = $page->get_version_string();
+ my $did = $page->get_newest( 'description' );
+ $section = $page->get_newest( 'section' );
+ $subsection = $page->get_newest( 'subsection' );
+ my $filenames = $page->get_arch_field( 'filename' );
+ my $file_md5sums = $page->get_arch_field( 'md5sum' );
+ my $archives = $page->get_arch_field( 'archive' );
+ my $sizes_inst = $page->get_arch_field( 'installed-size' );
+ my $sizes_deb = $page->get_arch_field( 'size' );
+ my @archs = sort $page->get_architectures;
+
+ # process description
+ #
+ my $desc = $descriptions{$did};
+ $short_desc = encode_entities( $1, "<>&\"" )
+ if $desc =~ s/^(.*)$//m;
+ my $long_desc = encode_entities( $desc, "<>&\"" );
+
+ $long_desc =~ s,((ftp|http|https)://[\S~-]+?/?)((\>\;)?[)]?[']?[:.\,]?(\s|$)),$1$3,go; # syntax highlighting -> '];
+ $long_desc =~ s/\A //o;
+ $long_desc =~ s/\n /\n/sgo;
+ $long_desc =~ s/\n.\n/\n
$1\n<\/pre>/sgo;
# $long_desc = conv_desc( $lang, $long_desc );
# $short_desc = conv_desc( $lang, $short_desc );
- my %all_suites;
- foreach (@results, @non_results) {
- my $a = $_->[1];
- my $s = $_->[2];
- if ($a =~ /^(?:us|security|non-US)$/o) {
- $all_suites{$s}++;
- } else {
- $all_suites{"$s/$a"}++;
+ my %all_suites;
+ foreach (@results, @non_results) {
+ my $a = $_->[1];
+ my $s = $_->[2];
+ if ($a =~ /^(?:us|security|non-US)$/o) {
+ $all_suites{$s}++;
+ } else {
+ $all_suites{"$s/$a"}++;
+ }
}
- }
- foreach (suites_sort(keys %all_suites)) {
- if (("$suite/$archive" eq $_)
- || (!$all_suites{"$suite/$archive"} && ($suite eq $_))) {
- $package_page .= "[ $_ ] ";
- } else {
- $package_page .=
- "[ $_ ] ";
- }
- }
- $package_page .= '
';
-
- $package_page .= simple_menu( [ gettext( "Distribution:" ),
- gettext( "Overview over this suite" ),
- "$ROOT/$suite/",
- $suite ],
- [ gettext( "Section:" ),
- gettext( "All packages in this section" ),
- "$ROOT/$suite/$subsection/",
- $subsection ],
- );
-
- my $title .= sprintf( gettext( "Package: %s (%s)" ), $pkg, $v_str );
- $title .= " ".marker( $archive ) if $archive ne 'us';
- $title .= " ".marker( $subsection ) if $subsection eq 'non-US'
- and $archive ne 'non-US'; # non-US/security
- $title .= " ".marker( $section ) if $section ne 'main';
- $package_page .= title( $title );
-
- $package_page .= "".gettext( "Versions:" )." $v_str_arch
\n"
- unless $version eq $v_str;
-
- if ($suite eq "experimental") {
- $package_page .= note( gettext( "Experimental package"),
- gettext( "Warning: This package is from the experimental distribution. That means it is likely unstable or buggy, and it may even cause data loss. If you ignore this warning and install it nevertheless, you do it on your own risk.")."
". - gettext( "Users of experimental packages are encouraged to contact the package maintainers directly in case of problems." ) - ); - } - if ($subsection eq "debian-installer") { - note( gettext( "debian-installer udeb package"), - gettext( "Warning: This package is intended for the use in building debian-installer images only. Do not install it on a normal Debian system." ) - ); - } - $package_page .= pdesc( $short_desc, $long_desc ); - - # - # display dependencies - # - my $dep_list; - $dep_list = print_deps( \%packages, \%opts, $pkg, - $page->get_dep_field('depends'), - 'depends' ); - $dep_list .= print_deps( \%packages, \%opts, $pkg, - $page->get_dep_field('recommends'), - 'recommends' ); - $dep_list .= print_deps( \%packages, \%opts, $pkg, - $page->get_dep_field('suggests'), - 'suggests' ); - - if ( $dep_list ) { - $package_page .= "
". + gettext( "Users of experimental packages are encouraged to contact the package maintainers directly in case of problems." ) + ); + } + if ($subsection eq "debian-installer") { + note( gettext( "debian-installer udeb package"), + gettext( "Warning: This package is intended for the use in building debian-installer images only. Do not install it on a normal Debian system." ) + ); + } + $package_page .= pdesc( $short_desc, $long_desc ); + + # + # display dependencies + # + my $dep_list; + $dep_list = print_deps( \%packages, \%opts, $pkg, + $page->get_dep_field('depends'), + 'depends' ); + $dep_list .= print_deps( \%packages, \%opts, $pkg, + $page->get_dep_field('recommends'), + 'recommends' ); + $dep_list .= print_deps( \%packages, \%opts, $pkg, + $page->get_dep_field('suggests'), + 'suggests' ); + + if ( $dep_list ) { + $package_page .= "
".gettext("Architecture")." | ".gettext("Files")." | ".gettext( "Package Size")." | ".gettext("Installed Size")." |
---|
$a | \n"; - $package_page .= ""; - if ( $suite ne "experimental" ) { - $package_page .= sprintf( "[".gettext( "list of files" )."]\n", - "$ROOT/$suite/$encodedpkg/$a/filelist", $pkg ); - } else { - $package_page .= gettext( "no current information" ); + $package_page .= " | ".gettext("Architecture")." | ".gettext("Files")." | ".gettext( "Package Size")." | ".gettext("Installed Size")." |
---|---|---|---|---|---|
$a | \n"; + $package_page .= ""; + if ( $suite ne "experimental" ) { + $package_page .= sprintf( "[".gettext( "list of files" )."]\n", + "$ROOT/$suite/$encodedpkg/$a/filelist", $pkg ); + } else { + $package_page .= gettext( "no current information" ); + } + $package_page .= " | \n"; #FIXME: css + $package_page .= floor(($sizes_deb->{$a}/102.4)+0.5)/10 . " kB"; + $package_page .= " | \n"; #FIXME: css + $package_page .= $sizes_inst->{$a} . " kB"; + $package_page .= " | \n"; #FIXME: css - $package_page .= floor(($sizes_deb->{$a}/102.4)+0.5)/10 . " kB"; - $package_page .= " | \n"; #FIXME: css - $package_page .= $sizes_inst->{$a} . " kB"; - $package_page .= " | \n"; - } - $package_page .= "
$note
"; - return $str; + print "$note