]> git.deb.at Git - deb/packages.git/blobdiff - lib/Packages/DoShow.pm
lib/Packages/DoShow.pm: Don't shorten the dsc name
[deb/packages.git] / lib / Packages / DoShow.pm
index 62324a7c0ff682f91e51eec10f06aac948ab07e4..3af5e3e7c83056a118a40dcd6ac587677903752b 100644 (file)
@@ -78,10 +78,11 @@ sub do_show {
                $all_suites{$s}++;
            }
            $contents{suites} = [ suites_sort(keys %all_suites) ];
-           
+
            unless (@results) {
                fatal_error( _g( "Package not available in this suite." ) );
            } else {
+               $contents{page} = $page;
                unless ($opts->{source}) {
 
                    for my $entry (@results) {
@@ -100,7 +101,7 @@ sub do_show {
                            $page->add_provided_by([split /\s+/, $provided_by]);
                        }
                    }
-                   
+
                    unless ($page->is_virtual()) {
                        $version = $page->{newest};
                        $contents{version} = $version;
@@ -110,6 +111,8 @@ sub do_show {
 
                        debug( "find source package: source=$source", 1) if DEBUG;
                        my $src_data = $sources_all{"$archive $suite $source"};
+                       #FIXME: should be $main_archive or similar, not hardcoded "us"
+                       $src_data = $sources_all{"us $suite $source"} unless $src_data;
                        $page->add_src_data( $source, $src_data )
                            if $src_data;
 
@@ -118,8 +121,24 @@ sub do_show {
                        debug( "Data search and merging took ".timestr($std) ) if DEBUG;
 
                        my $did = $page->get_newest( 'description' );
-                       my @tags = split(/, /, $page->get_newest( 'tag' ));
+                       my @complete_tags = split(/, /, $page->get_newest( 'tag' ));
+                       my @tags;
+                       foreach (@complete_tags) {
+                           my ($facet, $tag) = split( /::/, $_, 2);
+                           # handle tags like devel::{lang:c,lang:c++}
+                           if ($tag =~ s/^\{(.+)\}$/$1/) {
+                               foreach (split( /,/, $tag )) {
+                                   next if $tag =~ /^special:/;
+                                   push @tags, [ $facet, $_ ];
+                               }
+                           } else {
+                               next if $tag =~ /^special:/;
+                               push @tags, [ $facet, $tag ];
+                           }
+                       }
+
                        $contents{tags} = \@tags;
+                       $contents{debtags_voc} = \%debtags;
 
                        $section = $page->get_newest( 'section' );
                        $contents{section} = $section;
@@ -138,7 +157,7 @@ sub do_show {
                        $short_desc = encode_entities( $1, "<>&\"" )
                            if $desc =~ s/^(.*)$//m;
                        my $long_desc = encode_entities( $desc, "<>&\"" );
-                       
+
                        $long_desc =~ s,((ftp|http|https)://[\S~-]+?/?)((\&gt\;)?[)]?[']?[:.\,]?(\s|$)),<a href=\"$1\">$1</a>$3,go; # syntax highlighting -> '];
                        $long_desc =~ s/\A //o;
                        $long_desc =~ s/\n /\n/sgo;
@@ -152,7 +171,7 @@ sub do_show {
                        my $multiple_versions = grep { $_ ne $version } values %$versions;
                        $v_str .= _g(" and others") if $multiple_versions;
                        $contents{versions} = { short => $v_str,
-                                               multiple => $multiple_versions };
+                                               multiple => $multiple_versions };
 
                        my $provided_by = $page->{provided_by};
                        $contents{providers} = [];
@@ -161,13 +180,16 @@ sub do_show {
                        #
                        # display dependencies
                        #
-                       build_deps( \%packages, $opts, $pkg,
+                       build_deps( \%packages, $opts, $pkg,
+                                   $page->get_dep_field('pre-depends'),
+                                   'depends', \%contents );
+                       build_deps( \%packages, $opts, $pkg,
                                    $page->get_dep_field('depends'),
                                    'depends', \%contents );
-                       build_deps( \%packages, $opts, $pkg,
+                       build_deps( \%packages, $opts, $pkg,
                                    $page->get_dep_field('recommends'),
                                    'recommends', \%contents );
-                       build_deps( \%packages, $opts, $pkg,
+                       build_deps( \%packages, $opts, $pkg,
                                    $page->get_dep_field('suggests'),
                                    'suggests', \%contents );
 
@@ -181,6 +203,7 @@ sub do_show {
                                      instsize => $sizes_inst->{$a}, );
 
                            $d{version} = $versions->{$a} if $multiple_versions;
+                           $d{archive} = $archives->{$a};
                            if ( ($suite ne "experimental")
                                 && ($subsection ne 'debian-installer')) {
                                $d{contents_avail} = 1;
@@ -188,7 +211,7 @@ sub do_show {
                            push @downloads, \%d;
                        }
                        $contents{downloads} = \@downloads;
-                       
+
                        #
                        # more information
                        #
@@ -203,10 +226,6 @@ sub do_show {
                        $contents{desc}{short} = _g( "virtual package" );
                        $contents{subsection} = 'virtual';
 
-                       my $policy_url = 'http://www.debian.org/doc/debian-policy/';
-                       note( sprintf( _g( 'This is a <em>virtual package</em>. See the <a href="%s">Debian policy</a> for a <a href="%sch-binary.html#s-virtual_pkg">definition of virtual packages</a>.' ),
-                                      $policy_url, $policy_url ));
-
                        my $provided_by = $page->{provided_by};
                        $contents{providers} = [];
                        pkg_list( \%packages, $opts, $provided_by, 'en', $contents{providers} );
@@ -219,7 +238,7 @@ sub do_show {
                        debug( join(":", @$entry), 1 ) if DEBUG;
                        my (undef, $archive, undef, $section, $subsection,
                            $priority, $version) = @$entry;
-                       
+
                        my $data = $sources_all{"$archive $suite $pkg"};
                        $page->merge_data($pkg, $suite, $archive, $data)
                            or debug( "Merging $pkg $version FAILED", 2 ) if DEBUG;
@@ -237,13 +256,13 @@ sub do_show {
                    $contents{section} = $section;
                    $subsection = $page->get_newest( 'subsection' );
                    $contents{subsection} = $subsection;
-                   
+
                    my $binaries = find_binaries( $pkg, $archive, $suite, \%src2bin );
                    if ($binaries && @$binaries) {
                        $contents{binaries} = [];
                        pkg_list( \%packages, $opts, $binaries, 'en', $contents{binaries} );
                    }
-                   
+
                    #
                    # display dependencies
                    #
@@ -259,7 +278,7 @@ sub do_show {
                    #
                    my $source_files = $page->get_src( 'files' );
                    my $source_dir = $page->get_src( 'directory' );
-                   
+
                    $contents{srcfiles} = [];
                    foreach( @$source_files ) {
                        my ($src_file_md5, $src_file_size, $src_file_name)
@@ -268,7 +287,7 @@ sub do_show {
                        $server = $FTP_SITES{$server}
                            || $FTP_SITES{us};
                        my $path = "/$source_dir/$src_file_name";
-                       
+
                        push @{$contents{srcfiles}}, { server => $server, path => $path, filename => $src_file_name,
                                                       size => sprintf("%.1f", (floor(($src_file_size/102.4)+0.5)/10)),
                                                       md5sum => $src_file_md5 };
@@ -283,7 +302,7 @@ sub do_show {
                              bugreports => 1,
                              changesandcopy => 1, maintainers => 1,
                              search => 1, is_source => 1 );
-                   
+
                } # else (unless $opts->{source})
            } # else (unless @results)
        } # else (unless (@results || @non_results ))
@@ -318,17 +337,12 @@ sub moreinfo {
        if (defined($files) and @$files) {
            foreach( @$files ) {
                my ($src_file_md5, $src_file_size, $src_file_name) = split /\s/o, $_;
-               my ($name, $server, $path);
+               my ($server, $path);
                # non-US hack
                ($server = lc $page->get_newest('archive')) =~ s/-//go;
                $server = $env->{$server}||$env->{us};
-               $path = "$src_dir/$src_file_name";
-               if ($src_file_name =~ /dsc$/) {
-                   $name = 'dsc'
-               } else {
-                   $name = $src_file_name;
-               }
-               push @downloads, { name => $name, server => $server, path => $path };
+               $path = "/$src_dir/$src_file_name";
+               push @downloads, { name => $src_file_name, server => $server, path => $path };
            }
        }
        $contents->{src}{downloads} = \@downloads;