]> git.donarmstrong.com Git - debbugs.git/commitdiff
- Add the ability to return source/package mapping
authorDon Armstrong <don@donarmstrong.com>
Wed, 20 Feb 2008 09:18:42 +0000 (01:18 -0800)
committerDon Armstrong <don@donarmstrong.com>
Wed, 20 Feb 2008 09:18:42 +0000 (01:18 -0800)
    (closes: #465332,#458822)

Debbugs/Packages.pm
Debbugs/SOAP.pm
Debbugs/Status.pm
debian/changelog

index 30ca114c2007fdbaca719492c54ccb20a50ebcc8..b129c8e1a1b7d6e51d8c841e80a10bfb87ce313d 100644 (file)
@@ -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
index 9aacda401adce4ba9b221702c5e6622f803bc551..6b80dae45962c925a02c2a103826841efb7e8e59 100644 (file)
@@ -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 {
index 580a62aa9e922502688a2db7e268c3023bf19289..73a1dbc108f9d7af6d844a0120ed06e5d35c2de3 100644 (file)
@@ -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 '');
 
index d6682aef0f9e7a4991948a9e3b18092d14a359f8..bd75190c33002228fe09befa4f0e2b1b53c53a88 100644 (file)
@@ -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 <cjwatson@debian.org>  Fri, 20 Jun 2003 18:57:25 +0100