]> git.donarmstrong.com Git - debbugs.git/commitdiff
* Fix copyright/license statements in a bunch of the modules
authorDon Armstrong <don@donarmstrong.com>
Sun, 27 May 2007 22:28:24 +0000 (15:28 -0700)
committerDon Armstrong <don@donarmstrong.com>
Sun, 27 May 2007 22:28:24 +0000 (15:28 -0700)
 * Fix get_versions so that it handles multiple architectures and
   distributions
 * Call makesourceversions directly from get_versions so that the
   source is always right
 * Add the version and binsrc/srcbin indices configuration variables
   to Debbugs::Config

15 files changed:
Debbugs/Bugs.pm
Debbugs/CGI.pm
Debbugs/Common.pm
Debbugs/Config.pm
Debbugs/Email.pm
Debbugs/Estraier.pm
Debbugs/Log.pm
Debbugs/MIME.pm
Debbugs/Mail.pm
Debbugs/Packages.pm
Debbugs/Status.pm
Debbugs/URI.pm
Debbugs/User.pm
Debbugs/Versions.pm
Debbugs/Versions/Dpkg.pm

index e46e70ea505a91e260c9ae0e1abd8f5f5e8c2a1d..9b80e987fa9c82c0efb169f004e8ca69ed5a269e 100644 (file)
@@ -1,3 +1,9 @@
+# This module is part of debbugs, and is released
+# under the terms of the GPL version 2, or any later
+# version at your option.
+# See the file README and COPYING for more information.
+#
+# Copyright 2007 by Don Armstrong <don@donarmstrong.com>.
 
 package Debbugs::Bugs;
 
index 1e87bb7748d0a214125303b9ce8958a9a75f75ad..a9afdd9214ba53a3959e1b5d214522b23528137c 100644 (file)
@@ -1,3 +1,11 @@
+# This module is part of debbugs, and is released
+# under the terms of the GPL version 2, or any later
+# version at your option.
+# See the file README and COPYING for more information.
+#
+# [Other people have contributed to this file; their copyrights should
+# go here too.]
+# Copyright 2007 by Don Armstrong <don@donarmstrong.com>.
 
 package Debbugs::CGI;
 
index 453720fc6c3672d3017ef4d5c7094d9b35a61ba4..457c7adac752d8063de1b370f0204e537637cedb 100644 (file)
@@ -1,3 +1,11 @@
+# This module is part of debbugs, and is released
+# under the terms of the GPL version 2, or any later
+# version at your option.
+# See the file README and COPYING for more information.
+#
+# [Other people have contributed to this file; their copyrights should
+# go here too.]
+# Copyright 2007 by Don Armstrong <don@donarmstrong.com>.
 
 package Debbugs::Common;
 
index 60b1072c6db97e391b13fedc9dcfee892edfcf5b..9134718e9508a9221575fb2d75993dd6727e2b7d 100644 (file)
@@ -1,3 +1,9 @@
+# This module is part of debbugs, and is released
+# under the terms of the GPL version 2, or any later
+# version at your option.
+# See the file README and COPYING for more information.
+#
+# Copyright 2007 by Don Armstrong <don@donarmstrong.com>.
 
 package Debbugs::Config;
 
@@ -51,6 +57,7 @@ BEGIN {
                                 qw($gIncomingDir $gWebDir $gDocDir $gMaintainerFile),
                                 qw($gMaintainerFileOverride $gPseudoDescFile $gPackageSource),
                                 qw($gVersionPackagesDir $gVersionIndex $gBinarySourceMap $gSourceBinaryMap),
+                                qw($gVersionTimeIndex),
                                 qw($gSendmail $gLibPath $gSpamScan @gExcludeFromControl),
                                 qw(%gSeverityDisplay @gTags @gSeverityList @gStrongSeverities),
                                 qw(%gSearchEstraier),
@@ -430,8 +437,55 @@ set_default(\%config,'maintainer_file_override',$config{config_dir}.'/Maintainer
 set_default(\%config,'pseudo_desc_file',$config{config_dir}.'/pseudo-packages.description');
 set_default(\%config,'package_source',$config{config_dir}.'/indices/sources');
 
+
+=item version_packages_dir
+
+Location where the version package information is kept; defaults to
+spool_dir/../versions/pkg
+
+=cut
+
 set_default(\%config,'version_packages_dir',$config{spool_dir}.'/../versions/pkg');
 
+=item version_time_index
+
+Location of the version/time index file. Defaults to
+spool_dir/../versions/idx/versions_time.idx
+
+=cut
+
+
+set_default(\%config,'version_time_index',$config{spool_dir}.'../versions/idx/versions_time.idx');
+
+=item version_index
+
+Location of the version index file. Defaults to
+spool_dir/../versions/idx/versions.idx
+
+=cut
+
+set_default(\%config,'version_index',$config{spool_dir}.'../versions/idx/versions.idx');
+
+=item binary_source_map
+
+Location of the binary -> source map. Defaults to
+spool_dir/../versions/idx/binsrc.idx
+
+=cut
+
+set_default(\%config,'binary_source_map',$config{spool_dir}.'../versions/idx/binsrc.idx');
+
+=item source_binary_map
+
+Location of the source -> binary map. Defaults to
+spool_dir/../versions/idx/srcbin.idx
+
+=cut
+
+set_default(\%config,'source_binary_map',$config{spool_dir}.'../versions/idx/srcbin.idx');
+
+
+
 set_default(\%config,'post_processall',[]);
 
 =item sendmail
index 9978744d0332f3454ad03112878287874e94d1b0..980b5fb6e7930870c570b494e9460db6913bc417 100644 (file)
@@ -1,4 +1,4 @@
-package Debbugs::Email;  
+package Debbugs::Email;
 
 use strict;
 
index f2f6cb8ebf098b9292104bba943e80b7546fb449..75d40326ac66b513a54835e336fdc821d7ea5af1 100644 (file)
@@ -1,3 +1,9 @@
+# This module is part of debbugs, and is released
+# under the terms of the GPL version 2, or any later
+# version at your option.
+# See the file README and COPYING for more information.
+#
+# Copyright 2007 by Don Armstrong <don@donarmstrong.com>.
 
 package Debbugs::Estraier;
 
index c9a9e3002693531df28599014ef263f72f3626f6..5632f43ced7de3a40a3233e05a7cbf6e49a2a035 100644 (file)
@@ -1,3 +1,13 @@
+# This module is part of debbugs, and is released
+# under the terms of the GPL version 2, or any later
+# version at your option.
+# See the file README and COPYING for more information.
+#
+# [Other people have contributed to this file; their copyrights should
+# go here too.]
+# Copyright 2004 by Collin Waston <cjwatson@debian.org>
+
+
 package Debbugs::Log;
 
 use strict;
index 69760002369ce1e1a312f62ac52d2043f3ce71e5..f5d6acd14600fbbf5af5ad0713cc98c61e337415 100644 (file)
@@ -1,3 +1,13 @@
+# This module is part of debbugs, and is released
+# under the terms of the GPL version 2, or any later
+# version at your option.
+# See the file README and COPYING for more information.
+#
+# [Other people have contributed to this file; their copyrights should
+# go here too.]
+# Copyright 2006 by Don Armstrong <don@donarmstrong.com>.
+
+
 package Debbugs::MIME;
 
 use strict;
index d915c678e4e5caf53083fcd9b12afb9243ad7cd8..54e52f5dc6d852a7dc161932f449fcdc6adb9431 100644 (file)
@@ -1,4 +1,9 @@
-# $Id: Mail.pm,v 1.1 2005/08/17 21:46:16 don Exp $
+# This module is part of debbugs, and is released
+# under the terms of the GPL version 2, or any later
+# version at your option.
+# See the file README and COPYING for more information.
+#
+# Copyright 2004-7 by Don Armstrong <don@donarmstrong.com>.
 
 package Debbugs::Mail;
 
index a5c2cacba2e5696dbff1798b1e6fb43f1375f4e0..750bff252ebdf2dc521b905bed971e176881ba99 100644 (file)
@@ -1,3 +1,12 @@
+# This module is part of debbugs, and is released
+# under the terms of the GPL version 2, or any later
+# version at your option.
+# See the file README and COPYING for more information.
+#
+# [Other people have contributed to this file; their copyrights should
+# go here too.]
+# Copyright 2007 by Don Armstrong <don@donarmstrong.com>.
+
 package Debbugs::Packages;
 
 use warnings;
@@ -12,7 +21,7 @@ BEGIN {
     $VERSION = 1.00;
 
      @EXPORT = ();
-     %EXPORT_TAGS = (versions => [qw(getversions)],
+     %EXPORT_TAGS = (versions => [qw(getversions get_versions)],
                     mapping  => [qw(getpkgsrc getpkgcomponent getsrcpkgs),
                                  qw(binarytosource sourcetobinary makesourceversions)
                                 ],
@@ -25,6 +34,8 @@ BEGIN {
 use Fcntl qw(O_RDONLY);
 use MLDBM qw(DB_File Storable);
 use Storable qw(dclone);
+use Params::Validate qw(validate_with :types);
+use Debbugs::Common qw(make_list);
 
 $MLDBM::DumpMeth = 'portable';
 $MLDBM::RemoveTaint = 1;
@@ -204,39 +215,113 @@ architecture
 
 =cut
 
-our %_versions;
 sub getversions {
     my ($pkg, $dist, $arch) = @_;
-    return () unless defined $gVersionIndex;
-    $dist = 'unstable' unless defined $dist;
+    return get_versions(package=>$pkg,
+                       dist => $dist,
+                       defined $arch ? (arch => $arch):(),
+                      );
+}
 
-    unless (tied %_versions) {
-        tie %_versions, 'MLDBM', $gVersionIndex, O_RDONLY
-            or die "can't open versions index: $!";
-    }
-    my $version = $_versions{$pkg};
-    return () unless defined $version;
-    my %version = %{$version};
-
-    if (defined $arch and exists $version{$dist}{$arch}) {
-        my $ver = $version{$dist}{$arch};
-        return $ver if defined $ver;
-        return ();
-    } else {
-        my %uniq;
-        for my $ar (keys %{$version{$dist}}) {
-            $uniq{$version{$dist}{$ar}} = 1 unless $ar eq 'source';
-        }
-        if (%uniq) {
-            return keys %uniq;
-        } elsif (exists $version{$dist}{source}) {
-            # Maybe this is actually a source package with no corresponding
-            # binaries?
-            return $version{$dist}{source};
-        } else {
-            return ();
-        }
-    }
+
+
+=head2 get_versions
+
+     get_version(package=>'foopkg',
+                 dist => 'unstable',
+                 arch => 'i386',
+                );
+
+Returns a list of the versions of package in the distributions and
+architectures listed. This routine only returns unique values.
+
+=over
+
+=item package -- package to return list of versions
+
+=item dist -- distribution (unstable, stable, testing); can be an
+arrayref
+
+=item arch -- architecture (i386, source, ...); can be an arrayref
+
+=item time -- returns a version=>time hash at which the newest package
+matching this version was uploaded
+
+=item source -- returns source/version instead of just versions
+
+=back
+
+=cut
+
+our %_versions;
+our %_versions_time;
+
+sub get_versions{
+     my %param = validate_with(params => \@_,
+                               spec   => {package => {type => SCALAR,
+                                                     },
+                                          dist    => {type => SCALAR|ARRAYREF,
+                                                      default => 'unstable',
+                                                     },
+                                          arch    => {type => SCALAR|ARRAYREF,
+                                                      optional => 1,
+                                                     },
+                                          time    => {type    => BOOLEAN,
+                                                      default => 0,
+                                                     },
+                                          source  => {type    => BOOLEAN,
+                                                      default => 0,
+                                                     },
+                                         },
+                              );
+     my $versions;
+     if ($param{time}) {
+         return () if not defined $gVersionTimeIndex;
+         unless (tied %_versions_time) {
+              tie %_versions_time, 'MLDBM', $gVersionTimeIndex, O_RDONLY
+                   or die "can't open versions index $gVersionTimeIndex: $!";
+         }
+         $versions = \%_versions_time;
+     }
+     else {
+         return () if not defined $gVersionIndex;
+         unless (tied %_versions) {
+              tie %_versions, 'MLDBM', $gVersionIndex, O_RDONLY
+                   or die "can't open versions index $gVersionIndex: $!";
+         }
+         $versions = \%_versions;
+     }
+     my %versions;
+     for my $package (make_list($param{package})) {
+         my $version = $versions->{$package};
+         next unless defined $version;
+         for my $dist (make_list($param{dist})) {
+              for my $arch (exists $param{arch}?
+                            make_list($param{arch}):
+                            (keys %{$version->{$dist}})) {
+                   next unless defined $version->{$dist}{$arch};
+                   for my $ver (ref $version->{$dist}{$arch} ?
+                                keys %{$version->{$dist}{$arch}} :
+                                $version->{$dist}{$arch}
+                               ) {
+                        my $f_ver = $ver;
+                        if ($param{source}) {
+                             $f_ver = makesourceversions($package,$arch,$ver)
+                        }
+                        if ($param{time}) {
+                             $versions{$f_ver} = max($versions{$f_ver}||0,$version->{$dist}{$arch}{$ver});
+                        }
+                        else {
+                             $versions{$f_ver} = 1;
+                        }
+                   }
+              }
+         }
+     }
+     if ($param{time}) {
+         return %versions
+     }
+     return keys %versions;
 }
 
 
index 0cc0af9a59a4ad743af6b8951f4a66074a1689d4..c9c9d3e06935ec56e5c689f3b2265e1e2582ee83 100644 (file)
@@ -1,3 +1,11 @@
+# This module is part of debbugs, and is released
+# under the terms of the GPL version 2, or any later
+# version at your option.
+# See the file README and COPYING for more information.
+#
+# [Other people have contributed to this file; their copyrights should
+# go here too.]
+# Copyright 2007 by Don Armstrong <don@donarmstrong.com>.
 
 package Debbugs::Status;
 
@@ -31,7 +39,7 @@ use Params::Validate qw(validate_with :types);
 use Debbugs::Common qw(:util :lock :quit :misc);
 use Debbugs::Config qw(:config);
 use Debbugs::MIME qw(decode_rfc1522 encode_rfc1522);
-use Debbugs::Packages qw(makesourceversions getversions binarytosource);
+use Debbugs::Packages qw(makesourceversions getversions get_versions binarytosource);
 use Debbugs::Versions;
 use Debbugs::Versions::Dpkg;
 use POSIX qw(ceil);
@@ -597,18 +605,11 @@ sub bug_archiveable{
               $dists{$tag} = 1;
          }
          my %source_versions;
-         for my $dist (keys %dists){
-              my @versions;
-              @versions = getversions($status->{package},
-                                      $dist,
-                                      undef);
-              # TODO: This should probably be handled further out for efficiency and
-              # for more ease of distinguishing between pkg= and src= queries.
-              my @sourceversions = makesourceversions($status->{package},
-                                                      $dist,
-                                                      @versions);
-              @source_versions{@sourceversions} = (1) x @sourceversions;
-         }
+         my @sourceversions = get_versions(package => $status->{package},
+                                           dist => [keys %dists],
+                                           source => 1,
+                                          );
+         @source_versions{@sourceversions} = (1) x @sourceversions;
          if ('found' eq max_buggy(bug => $param{bug},
                                   sourceversions => [keys %source_versions],
                                   found          => $status->{found_versions},
@@ -618,10 +619,11 @@ sub bug_archiveable{
                                  )) {
               return $cannot_archive;
          }
+         # Since the bug has at least been fixed in the architectures
+         # that matters, we check to see how long it has been fixed.
+         
      }
      # 6. at least 28 days have passed since the last action has occured or the bug was closed
-     # XXX We still need some more work here before we actually can archive;
-     # we really need to track when a bug was closed in a version.
      my $age = ceil($config{remove_age} - -M getbugcomponent($param{bug},'log'));
      if ($age > 0 ) {
          return $param{days_until}?$age:0;
index 307f11f73d5f715decd71de56c27429d0d1c0d26..d7cf4f2d7a7dec755801d375a790a7843f63321a 100644 (file)
@@ -1,3 +1,14 @@
+# This module is part of debbugs, and is released
+# under the terms of the GPL version 2, or any later
+# version at your option.
+# See the file README and COPYING for more information.
+#
+# Copyright 2007 by Don Armstrong <don@donarmstrong.com>.
+# query_form is
+# Copyright 1995-2003 Gisle Aas.
+# Copyright 1995 Martijn Koster.
+
+
 package Debbugs::URI;
 
 =head1 NAME
index 8f97659d910defef2a717edc89204a737218c6d9..b82ce704a6bb8162f7399ee5dc8dad28365a683e 100644 (file)
@@ -1,3 +1,13 @@
+# This module is part of debbugs, and is released
+# under the terms of the GPL version 2, or any later
+# version at your option.
+# See the file README and COPYING for more information.
+#
+# [Other people have contributed to this file; their copyrights should
+# go here too.]
+# Copyright 2004 by Anthony Towns
+
+
 
 package Debbugs::User;
 
index 822139f4c9e3f1377ad3b36731b53e86501dd654..26f01380e3d001b14a1d822e6547df6aa290a48d 100644 (file)
@@ -1,3 +1,11 @@
+# This module is part of debbugs, and is released
+# under the terms of the GPL version 2, or any later
+# version at your option.
+# See the file README and COPYING for more information.
+#
+# [Other people have contributed to this file; their copyrights should
+# go here too.]
+
 package Debbugs::Versions;
 
 use strict;
index e061b345504d38592eab87b1dbe9c90e0c14eac9..9745cbb4b28ab1886b982d041050173d3b8715bf 100644 (file)
@@ -1,3 +1,13 @@
+# This module is part of debbugs, and is released
+# under the terms of the GPL version 2, or any later
+# version at your option.
+# See the file README and COPYING for more information.
+#
+# Copyright Colin Watson <cjwatson@debian.org>
+# Copyright Ian Jackson <iwj@debian.org>
+# Copyright 2007 by Don Armstrong <don@donarmstrong.com>.
+
+
 package Debbugs::Versions::Dpkg;
 
 use strict;