]> git.donarmstrong.com Git - debbugs.git/commitdiff
merge dla source changes
authorDebian BTS <debbugs@rietz>
Sun, 9 Dec 2007 00:53:14 +0000 (00:53 +0000)
committerDebian BTS <debbugs@rietz>
Sun, 9 Dec 2007 00:53:14 +0000 (00:53 +0000)
Debbugs/Config.pm
Debbugs/Packages.pm
cgi/pkgreport.cgi

index fe07b6403e09ed88575a4d03eff61b23ecf7ecac..41d388c9aed31f4ab5579ae5f8b0724be5a4b2c5 100644 (file)
@@ -64,6 +64,7 @@ BEGIN {
                                 qw(%gDistributionAliases),
                                 qw(@gPostProcessall @gRemovalDefaultDistributionTags @gRemovalDistributionTags @gRemovalArchitectures),
                                 qw(@gRemovalStrongSeverityDefaultDistributionTags),
+                                qw(@gDefaultArchitectures),
                                ],
                     text     => [qw($gBadEmailPrefix $gHTMLTail $gHTMLExpireNote),
                                 ],
@@ -382,6 +383,20 @@ my %_distributions_default;
 @_distributions_default{values %{$config{distribution_aliases}}} = values %{$config{distribution_aliases}};
 set_default(\%config,'distributions',[keys %_distributions_default]);
 
+
+=item default_architectures
+
+List of default architectures to use when architecture(s) are not
+specified
+
+Default: i386 amd64 arm ppc sparc alpha
+
+=cut
+
+set_default(\%config,'default_architectures',
+           [qw(i386 amd64 arm powerpc sparc alpha)]
+          );
+
 =item removal_distribution_tags
 
 Tags which specifiy distributions to check
index 7103fc10daf9fefd1afaa7e2918f57267ae7300d..39e5ed82ae246d5b2a274de3d3703571ed6c5b7b 100644 (file)
@@ -259,6 +259,9 @@ not passed. [Used for finding the versions of binary packages only.]
 Defaults to 0, which does not discard the source architecture. (This
 may change in the future, so if you care, please code accordingly.)
 
+=item return_archs -- returns a version=>[archs] hash indicating which
+architectures are at which versions.
+
 =back
 
 =cut
@@ -285,6 +288,9 @@ sub get_versions{
                                           no_source_arch => {type => BOOLEAN,
                                                              default => 0,
                                                             },
+                                          return_archs => {type => BOOLEAN,
+                                                           default => 0,
+                                                          },
                                          },
                               );
      my $versions;
@@ -328,14 +334,17 @@ sub get_versions{
                              $versions{$f_ver} = max($versions{$f_ver}||0,$version->{$dist}{$arch}{$ver});
                         }
                         else {
-                             $versions{$f_ver} = 1;
+                             push @{$versions{$f_ver}},$arch;
                         }
                    }
               }
          }
      }
      if ($param{time}) {
-         return %versions
+         return %versions;
+     }
+     elsif ($param{return_archs}) {
+         return %versions;
      }
      return keys %versions;
 }
index 78b4dc20fa8c0d1a31edaf91ac25f7639b856ce5..c07bf78a1b8eb7256544de604345d75ea668e2b7 100755 (executable)
@@ -304,15 +304,27 @@ while (my ($key,$value) = splice @search_key_order, 0, 2) {
      for my $entry (make_list($param{$key})) {
          my $extra = '';
          if (exists $param{dist} and ($key eq 'package' or $key eq 'src')) {
-              my @versions = get_versions(package => $entry,
+              my %versions = get_versions(package => $entry,
                                           (exists $param{dist}?(dist => $param{dist}):()),
-                                          (exists $param{arch}?(arch => $param{arch}):()),
+                                          (exists $param{arch}?(arch => $param{arch}):(arch => $config{default_architectures})),
                                           ($key eq 'src'?(arch => q(source)):()),
                                           no_source_arch => 1,
+                                          return_archs => 1,
                                          );
-              my $verdesc = join(', ',@versions);
-              $verdesc = 'version'.(@versions>1?'s ':' ').$verdesc;
-              $extra= " ($verdesc)" if @versions;
+              my $verdesc;
+              if (keys %versions > 1) {
+                   $verdesc = 'versions '. join(', ',
+                                   map { $_ .' ['.join(', ',
+                                                   sort @{$versions{$_}}
+                                                  ).']';
+                                  } keys %versions);
+              }
+              else {
+                   $verdesc = 'version '.join(', ',
+                                              keys %versions
+                                             );
+              }
+              $extra= " ($verdesc)" if keys %versions;
          }
          push @entries, $entry.$extra;
      }
@@ -775,7 +787,7 @@ sub pkg_htmlizebugs {
                                      (exists $param{dist}?(dist => $param{dist}):()),
                                      bugusertags => \%bugusertags,
                                      (exists $param{version}?(version => $param{version}):()),
-                                     (exists $param{arch}?(arch => $param{arch}):()),
+                                     (exists $param{arch}?(arch => $param{arch}):(arch => $config{default_architectures})),
                                     )};
         next unless %status;
         next if bug_filter(bug => $bug,