From 95b4163168ff88583edafcda834501f61fe22222 Mon Sep 17 00:00:00 2001 From: Don Armstrong Date: Wed, 20 Feb 2008 01:18:42 -0800 Subject: [PATCH] - Add the ability to return source/package mapping (closes: #465332,#458822) --- Debbugs/Packages.pm | 26 +++++++++++++++++++++----- Debbugs/SOAP.pm | 2 +- Debbugs/Status.pm | 14 ++++++++++++++ debian/changelog | 3 ++- 4 files changed, 38 insertions(+), 7 deletions(-) diff --git a/Debbugs/Packages.pm b/Debbugs/Packages.pm index 30ca114c..b129c8e1 100644 --- a/Debbugs/Packages.pm +++ b/Debbugs/Packages.pm @@ -122,10 +122,15 @@ sub getsrcpkgs { =item binarytosource Returns a reference to the source package name and version pair -corresponding to a given binary package name, version, and architecture. If -undef is passed as the architecture, returns a list of references to all -possible pairs of source package names and versions for all architectures, -with any duplicates removed. +corresponding to a given binary package name, version, and architecture. + +If undef is passed as the architecture, returns a list of references +to all possible pairs of source package names and versions for all +architectures, with any duplicates removed. + +If the binary version is not passed either, returns a list of possible +source package names for all architectures at all versions, with any +duplicates removed. =cut @@ -146,7 +151,18 @@ sub binarytosource { my $binary = $_binarytosource{$binname}; return () unless defined $binary; my %binary = %{$binary}; - if (exists $binary{$binver}) { + if (not defined $binver) { + my %uniq; + for my $ver (keys %binary) { + for my $ar (keys %{$binary{$binver}}) { + my $src = $binary{$binver}{$ar}; + next unless defined $src; + $uniq{$src->[0]} = 1; + } + } + return keys %uniq; + } + elsif (exists $binary{$binver}) { if (defined $binarch) { my $src = $binary{$binver}{$binarch}; return () unless defined $src; # not on this arch diff --git a/Debbugs/SOAP.pm b/Debbugs/SOAP.pm index 9aacda40..6b80dae4 100644 --- a/Debbugs/SOAP.pm +++ b/Debbugs/SOAP.pm @@ -128,7 +128,7 @@ sub get_status { if (ref($bug)) { my %param = __collapse_params(@{$bug}); $bug_status = get_bug_status(map {(exists $param{$_})?($_,$param{$_}):()} - qw(bug dist arch bugusertags sourceversions version) + qw(bug dist arch bugusertags sourceversions version indicatesource) ); } else { diff --git a/Debbugs/Status.pm b/Debbugs/Status.pm index 580a62aa..73a1dbc1 100644 --- a/Debbugs/Status.pm +++ b/Debbugs/Status.pm @@ -773,6 +773,11 @@ currently not correctly implemented. dist, arch, and version. [The entries in this array must be in the "source/version" format.] Eventually this can be used to for caching. +=item indicatesource -- if true, indicate which source packages this +bug could belong to. Defaults to false. [Note that eventually we will +properly allow bugs that only affect a source package, and this will +become always on.] + =back Note: Currently the version information is cached; this needs to be @@ -809,6 +814,9 @@ sub get_bug_status { sourceversions => {type => ARRAYREF, optional => 1, }, + indicatesource => {type => BOOLEAN, + default => 0, + }, }, ); my %status; @@ -839,6 +847,12 @@ sub get_bug_status { my %tags = map { $_ => 1 } split ' ', $status{tags}; $status{"package"} =~ s/\s*$//; + if ($param{indicatesource} and $status{package} ne '') { + $status{source} = join(', ',binarytosource($status{package})); + } + else { + $status{source} = 'unknown'; + } $status{"package"} = 'unknown' if ($status{"package"} eq ''); $status{"severity"} = 'normal' if ($status{"severity"} eq ''); diff --git a/debian/changelog b/debian/changelog index d6682aef..bd75190c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -210,7 +210,8 @@ debbugs (2.4.2) UNRELEASED; urgency=low - Output last-modified in bugreport.cgi (closes: #459709) - Fix various html syntax errors in pkgreport.cgi (closes: #462322) - Make search case insensitive (closes: #448861) - - Add the ability to return source/package mapping (closes: #465332) + - Add the ability to return source/package mapping + (closes: #465332,#458822) -- Colin Watson Fri, 20 Jun 2003 18:57:25 +0100 -- 2.39.5