X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Debbugs%2FCGI%2FPkgreport.pm;h=28c1f75b4d6a63fbc7ff7dcac3ed5ef45daa037b;hb=f4cac5c0b345b08f67844df7eecd18f66c156c9e;hp=085b31ea321ee8d7397f78154b55cbcd3fc4e393;hpb=a4918ab7b3577c0089b1a46fd566c40456774b1c;p=debbugs.git
diff --git a/Debbugs/CGI/Pkgreport.pm b/Debbugs/CGI/Pkgreport.pm
index 085b31e..28c1f75 100644
--- a/Debbugs/CGI/Pkgreport.pm
+++ b/Debbugs/CGI/Pkgreport.pm
@@ -28,11 +28,16 @@ None known.
use warnings;
use strict;
use vars qw($VERSION $DEBUG %EXPORT_TAGS @EXPORT_OK @EXPORT);
-use base qw(Exporter);
+use Exporter qw(import);
use IO::Scalar;
use Params::Validate qw(validate_with :types);
+use Debbugs::Collection::Bug;
+
+use Carp;
+use List::AllUtils qw(apply);
+
use Debbugs::Config qw(:config :globals);
use Debbugs::CGI qw(:url :html :util);
use Debbugs::Common qw(:misc :util :date);
@@ -41,6 +46,7 @@ use Debbugs::Bugs qw(bug_filter);
use Debbugs::Packages qw(:mapping);
use Debbugs::Text qw(:templates);
+use Encode qw(decode_utf8);
use POSIX qw(strftime);
@@ -51,13 +57,9 @@ BEGIN{
@EXPORT = ();
%EXPORT_TAGS = (html => [qw(short_bug_status_html pkg_htmlizebugs),
- qw(pkg_javascript),
- qw(pkg_htmlselectyesno pkg_htmlselectsuite),
- qw(buglinklist pkg_htmlselectarch)
],
- misc => [qw(generate_package_info make_order_list),
- qw(myurl),
- qw(get_bug_order_index determine_ordering),
+ misc => [qw(generate_package_info),
+ qw(determine_ordering),
],
);
@EXPORT_OK = (qw());
@@ -78,12 +80,15 @@ sub generate_package_info{
spec => {binary => {type => BOOLEAN,
default => 1,
},
- package => {type => SCALAR|ARRAYREF,
+ package => {type => SCALAR,#|ARRAYREF,
},
options => {type => HASHREF,
},
bugs => {type => ARRAYREF,
},
+ schema => {type => OBJECT,
+ optional => 1,
+ },
},
);
@@ -94,25 +99,41 @@ sub generate_package_info{
my %pkgsrc = %{getpkgsrc()};
my $srcforpkg = $package;
- if ($param{binary} and exists $pkgsrc{$package}
- and defined $pkgsrc{$package}) {
- $srcforpkg = $pkgsrc{$package};
+ if ($param{binary}) {
+ $srcforpkg =
+ binary_to_source(source_only => 1,
+ scalar_only => 1,
+ binary => $package,
+ hash_slice(%param,qw(schema)),
+ );
}
my $showpkg = html_escape($package);
- my $maintainers = getmaintainers();
- my $maint = $maintainers->{$srcforpkg};
- if (defined $maint) {
+ my @maint = package_maintainer($param{binary}?'binary':'source',
+ $package,
+ hash_slice(%param,qw(schema)),
+ );
+ if (@maint) {
print {$output} '
';
- print {$output} (($maint =~ /,/)? "Maintainer for $showpkg is "
+ print {$output} (@maint > 1? "Maintainer for $showpkg is "
: "Maintainers for $showpkg are ") .
- package_links(maint => $maint);
+ package_links(maintainer => \@maint);
print {$output} ".
\n";
}
else {
- print {$output} "
No maintainer for $showpkg. Please do not report new bugs against this package.
\n";
+ print {$output} "
There is no maintainer for $showpkg. ".
+ "This means that this package no longer exists (or never existed). ".
+ "Please do not report new bugs against this package.
\n";
}
- my @pkgs = getsrcpkgs($srcforpkg);
+ my @pkgs = source_to_binary(source => $srcforpkg,
+ hash_slice(%param,qw(schema)),
+ binary_only => 1,
+ # if there are distributions, only bother to
+ # show packages which are currently in a
+ # distribution.
+ @{$config{distributions}//[]} ?
+ (dist => [@{$config{distributions}}]) : (),
+ );
@pkgs = grep( !/^\Q$package\E$/, @pkgs );
if ( @pkgs ) {
@pkgs = sort @pkgs;
@@ -129,17 +150,20 @@ sub generate_package_info{
my @references;
my $pseudodesc = getpseudodesc();
if ($package and defined($pseudodesc) and exists($pseudodesc->{$package})) {
- push @references, "to the ".
+ push @references, "to the ".
"list of other pseudo-packages";
}
else {
- if ($package and defined $gPackagePages) {
+ if ($package and defined $config{package_pages} and length $config{package_pages}) {
push @references, sprintf "to the %s package page",
- html_escape("http://${gPackagePages}/$package"), html_escape("$package");
+ html_escape("$config{package_pages}/$package"), html_escape("$package");
}
- if (defined $gSubscriptionDomain) {
+ if (defined $config{package_tracking_domain} and
+ length $config{package_tracking_domain}) {
my $ptslink = $param{binary} ? $srcforpkg : $package;
- push @references, q(to the Package Tracking System);
+ # the pts only wants the source, and doesn't care about src: (#566089)
+ $ptslink =~ s/^src://;
+ push @references, q(to the Package Tracking System);
}
# Only output this if the source listing is non-trivial.
if ($param{binary} and $srcforpkg) {
@@ -154,17 +178,12 @@ sub generate_package_info{
$references[$#references] = "or $references[$#references]" if @references > 1;
print {$output} "
You might like to refer ", join(", ", @references), ".
\n";
}
- if (defined $param{maint} || defined $param{maintenc}) {
+ if (@maint) {
print {$output} "
If you find a bug not listed here, please\n";
printf {$output} "report it.
\n",
- html_escape("http://${debbugs::gWebDomain}/Reporting${debbugs::gHTMLSuffix}");
+ html_escape("$config{web_domain}/Reporting$config{html_suffix}");
}
- if (not $maint and not @{$param{bugs}}) {
- print {$output} "
There is no record of the " . html_escape($package) .
- ($param{binary} ? " package" : " source package") .
- ", and no bugs have been filed against it.