]> git.deb.at Git - deb/packages.git/blobdiff - cgi-bin/show_package.pl
Begin implementing virtual package support.
[deb/packages.git] / cgi-bin / show_package.pl
index 0f3c48f6663b5592095320d2a672f124266ff516..2ec4616d548512a01d733b6352673ffaf6364ffc 100755 (executable)
@@ -154,32 +154,25 @@ unless (@Packages::CGI::fatal_errors) {
                for my $entry (@results) {
                    debug( join(":", @$entry), 1 );
                    my (undef, $archive, undef, $arch, $section, $subsection,
-                       $priority, $version) = @$entry;
+                       $priority, $version, @provided_by) = @$entry;
                    
-                   my $data = $packages_all{"$pkg $arch $version"};
-                   $page->merge_data($pkg, $version, $arch, $data) or debug( "Merging $pkg $arch $version FAILED", 2 );
+                   if ($arch ne 'virtual') {
+                       my %data = split /\000/, $packages_all{"$pkg $arch $version"};
+                       $data{package} = $pkg;
+                       $data{architecture} = $arch;
+                       $data{version} = $version;
+                       $page->merge_package(\%data) or debug( "Merging $pkg $arch $version FAILED", 2 );
+                   } else {
+                       $page->add_provided_by(\@provided_by);
+                   }
                }
 
                $version = $page->{newest};
                my $source = $page->get_newest( 'source' );
-               my $source_version = $page->get_newest( 'source-version' )
-                   || $version;
-               debug( "find source package: source=$source (=$source_version)", 1);
-               my $src_data = $sources_all{"$source $source_version"};
-               unless ($src_data) { #fucking binNMUs
-                   my $versions = $page->get_versions;
-                   my $sources = $page->get_arch_field( 'source' );
-                   my $source_versions = $page->get_arch_field( 'source-version' );
-                   foreach (version_sort keys %$versions) {
-                       $source = $sources->{$versions->{$_}[0]};
-                       $source = $source_versions->{$versions->{$_}[0]}
-                       || $version;
-                       $src_data = $sources_all{"$source $source_version"};
-                       last if $src_data;
-                   }
-                   error( "couldn't find source package" ) unless $src_data;
-               }
-               $page->add_src_data( $source, $source_version, $src_data )
+               $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;
@@ -189,7 +182,6 @@ unless (@Packages::CGI::fatal_errors) {
                my $encodedpkg = uri_escape( $pkg );
                my ($v_str, $v_str_arch, $v_str_arr) = $page->get_version_string();
                my $did = $page->get_newest( 'description' );
-               $archive = $page->get_newest( 'archive' );
                $section = $page->get_newest( 'section' );
                $subsection = $page->get_newest( 'subsection' );
                my $filenames = $page->get_arch_field( 'filename' );
@@ -237,11 +229,11 @@ unless (@Packages::CGI::fatal_errors) {
 
                $package_page .= simple_menu( [ gettext( "Distribution:" ),
                                                gettext( "Overview over this suite" ),
-                                               "/$suite/",
+                                               "$ROOT/$suite/",
                                                $suite ],
                                              [ gettext( "Section:" ),
                                                gettext( "All packages in this section" ),
-                                               "/$suite/$subsection/",
+                                               "$ROOT/$suite/$subsection/",
                                                $subsection ],
                                              );
 
@@ -310,35 +302,22 @@ unless (@Packages::CGI::fatal_errors) {
                $package_page .= "<th>".gettext("Architecture")."</th><th>".gettext("Files")."</th><th>".gettext( "Package Size")."</th><th>".gettext("Installed Size")."</th></tr>\n";
                foreach my $a ( @archs ) {
                    $package_page .= "<tr>\n";
-                   $package_page .=  "<th><a href=\"$DL_URL?arch=$a";
-                   $package_page .=  "&amp;file=".uri_escape($filenames->{$a});
-                   $package_page .=  "&amp;md5sum=$file_md5sums->{$a}";
-                   $package_page .=  "&amp;arch=$a";
-                   for ($archives->{$a}) {
-                       /security/o &&  do {
-                           $package_page .=  "&amp;type=security"; last };
-                       /volatile/o &&  do {
-                           $package_page .=  "&amp;type=volatile"; last };
-                       /backports/o &&  do {
-                           $package_page .=  "&amp;type=backports"; last };
-                       /non-us/io  &&  do {
-                           $package_page .=  "&amp;type=nonus"; last };
-                       $package_page .=  "&amp;type=main";
-                   }
+                   $package_page .=  "<th><a href=\"$ROOT/$suite/$encodedpkg/$a/download";
                    $package_page .=  "\">$a</a></th>\n";
                    $package_page .= "<td>";
                    if ( $suite ne "experimental" ) {
-                       $package_page .= sprintf( "[<a href=\"%s\">".gettext( "list of files" )."</a>]\n", "$FILELIST_URL$encodedpkg&amp;version=$suite&amp;arch=$a", $pkg );
+                       $package_page .= sprintf( "[<a href=\"%s\">".gettext( "list of files" )."</a>]\n",
+                           "$ROOT/$suite/$encodedpkg/$a/filelist", $pkg );
                    } else {
                        $package_page .= gettext( "no current information" );
                    }
-                   $package_page .= "</td>\n<td>";
-                   $package_page .=  floor(($sizes_deb->{$a}/102.4)+0.5)/10;
-                   $package_page .= "</td>\n<td>";
-                   $package_page .=  $sizes_inst->{$a};
+                   $package_page .= "</td>\n<td align=right>"; #FIXME: css
+                   $package_page .=  floor(($sizes_deb->{$a}/102.4)+0.5)/10 . "&nbsp;kB";
+                   $package_page .= "</td>\n<td align=right>"; #FIXME: css
+                   $package_page .=  $sizes_inst->{$a} . "&nbsp;kB";
                    $package_page .= "</td>\n</tr>";
                }
-               $package_page .= "</table><p>".gettext ( "Size is measured in kBytes." )."</p>\n";
+               $package_page .= "</table>\n";
                $package_page .= "</div> <!-- end pdownload -->\n";
                
                #
@@ -367,8 +346,8 @@ unless (@Packages::CGI::fatal_errors) {
                    my (undef, $archive, undef, $section, $subsection,
                        $priority, $version) = @$entry;
                    
-                   my $data = $sources_all{"$pkg $version"};
-                   $page->merge_data($pkg, $version, $data) or debug( "Merging $pkg $version FAILED", 2 );
+                   my $data = $sources_all{"$archive $suite $pkg"};
+                   $page->merge_data($pkg, $suite, $archive, $data) or debug( "Merging $pkg $version FAILED", 2 );
                }
                $version = $page->{version};
 
@@ -484,7 +463,8 @@ unless (@Packages::CGI::fatal_errors) {
                                          gettext("Size (in kB)"),
                                          gettext("md5sum") );
                foreach( @$source_files ) {
-                   my ($src_file_md5, $src_file_size, $src_file_name) = @$_;
+                   my ($src_file_md5, $src_file_size, $src_file_name)
+                       = split /\s+/, $_;
                    my $src_url;
                    for ($archive) {
                        /security/o &&  do {
@@ -520,8 +500,8 @@ unless (@Packages::CGI::fatal_errors) {
     }
 }
 
-#use Data::Dumper;
-#debug( "Final page object:\n".Dumper($page), 3 );
+use Data::Dumper;
+debug( "Final page object:\n".Dumper($page), 3 );
 
 my $title = $opts{source} ?
     "Details of source package <em>$pkg</em> in $suite"  :