r69386 - in /trunk/libdpkg-log-perl: ./ debian/ examples/ lib/DPKG/ lib/DPKG/Log/ lib/DPKG/Log/Analyse/ t/
schoenfeld at users.alioth.debian.org
schoenfeld at users.alioth.debian.org
Wed Feb 23 13:36:20 UTC 2011
Author: schoenfeld
Date: Wed Feb 23 13:36:02 2011
New Revision: 69386
URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=69386
Log:
New upstream release
Added:
trunk/libdpkg-log-perl/LICENSE
- copied unchanged from r69385, branches/upstream/libdpkg-log-perl/current/LICENSE
trunk/libdpkg-log-perl/TODO
- copied unchanged from r69385, branches/upstream/libdpkg-log-perl/current/TODO
trunk/libdpkg-log-perl/dist.ini
- copied unchanged from r69385, branches/upstream/libdpkg-log-perl/current/dist.ini
trunk/libdpkg-log-perl/t/release-pod-coverage.t
- copied unchanged from r69385, branches/upstream/libdpkg-log-perl/current/t/release-pod-coverage.t
trunk/libdpkg-log-perl/t/release-pod-syntax.t
- copied unchanged from r69385, branches/upstream/libdpkg-log-perl/current/t/release-pod-syntax.t
Removed:
trunk/libdpkg-log-perl/MANIFEST.SKIP
Modified:
trunk/libdpkg-log-perl/Changes
trunk/libdpkg-log-perl/MANIFEST
trunk/libdpkg-log-perl/Makefile.PL
trunk/libdpkg-log-perl/debian/changelog
trunk/libdpkg-log-perl/examples/dpkg-report
trunk/libdpkg-log-perl/examples/dpkg-report.tt2
trunk/libdpkg-log-perl/lib/DPKG/Log.pm
trunk/libdpkg-log-perl/lib/DPKG/Log/Analyse.pm
trunk/libdpkg-log-perl/lib/DPKG/Log/Analyse/Package.pm
trunk/libdpkg-log-perl/lib/DPKG/Log/Entry.pm
trunk/libdpkg-log-perl/t/timing.t
Modified: trunk/libdpkg-log-perl/Changes
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libdpkg-log-perl/Changes?rev=69386&op=diff
==============================================================================
--- trunk/libdpkg-log-perl/Changes (original)
+++ trunk/libdpkg-log-perl/Changes Wed Feb 23 13:36:02 2011
@@ -1,4 +1,21 @@
Revision history for Perl extension DPKG::Log.
+
+1.20 Wed Feb 23 09:30:00 2011
+ - Switch to DistZilla
+ - Remove debugging output from DPKG::Log
+ - Various changes to examples/dpkg-report:
+ - Add merging for common hostnames (e.g. if there is
+ data for test1 and test2, show test* with all packages
+ common to BOTH systems starting with test.
+ - Add a no_data flag to the data handed to Template::Toolkit
+ in order to handle cases properly where there is no
+ data for the current period and hostname.
+ - Add a merge flag to the data handed to Template::Toolkit
+ in order to know weither merge mode is active or not
+ in the templates
+ - In t/timing.t use RELEASE_TESTING environment variable, because
+ this is set by dzil test.
+ - Extend POD documentation for DPKG::Log::Analyse::Package
1.10 Fri Feb 18 14:35:00 2011
- Bugfix in DPKG::Log::Entry: available_version did not return
Modified: trunk/libdpkg-log-perl/MANIFEST
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libdpkg-log-perl/MANIFEST?rev=69386&op=diff
==============================================================================
--- trunk/libdpkg-log-perl/MANIFEST (original)
+++ trunk/libdpkg-log-perl/MANIFEST Wed Feb 23 13:36:02 2011
@@ -1,27 +1,29 @@
Changes
+LICENSE
+MANIFEST
+META.yml
+Makefile.PL
+README
+TODO
+dist.ini
+examples/dpkg-report
+examples/dpkg-report.tt2
lib/DPKG/Log.pm
lib/DPKG/Log/Analyse.pm
lib/DPKG/Log/Analyse/Package.pm
lib/DPKG/Log/Entry.pm
-Makefile
-Makefile.PL
-MANIFEST
-MANIFEST.bak
-MANIFEST.SKIP
-META.yml
-README
+t/dpkg-log-analyse-package.t
+t/dpkg-log-analyse.t
t/dpkg-log-entry.t
t/dpkg-log.t
t/from_to.t
t/pod.t
+t/release-pod-coverage.t
+t/release-pod-syntax.t
t/timing.t
-t/dpkg-log-analyse-package.t
-t/dpkg-log-analyse.t
+test_data/big.log
test_data/dpkg.log
test_data/from_to.log
test_data/install.log
-test_data/big.log
test_data/multi/test1.dpkg.log
test_data/multi/test2.dpkg.log
-examples/dpkg-report
-examples/dpkg-report.tt2
Modified: trunk/libdpkg-log-perl/Makefile.PL
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libdpkg-log-perl/Makefile.PL?rev=69386&op=diff
==============================================================================
--- trunk/libdpkg-log-perl/Makefile.PL (original)
+++ trunk/libdpkg-log-perl/Makefile.PL Wed Feb 23 13:36:02 2011
@@ -1,18 +1,61 @@
-use inc::Module::Install;
-
-# Define metadata
-name 'DPKG-Log';
-abstract 'Parse and analyse dpkg log files';
-author 'Patrick Schoenfeld <schoenfeld at debian.org>';
-all_from 'lib/DPKG/Log.pm';
-no_index directory => 'tools';
-no_index directory => 'examples';
-# Specific dependencies
-requires 'DateTime';
-requires 'DateTime::Format::Strptime';
-requires 'DateTime::TimeZone';
-requires 'Params::Validate';
-test_requires 'Test::More';
+use strict;
+use warnings;
-WriteAll;
+BEGIN { require 5.010; }
+
+use ExtUtils::MakeMaker 6.31;
+
+
+
+my %WriteMakefileArgs = (
+ 'ABSTRACT' => 'Parse the dpkg log',
+ 'AUTHOR' => 'Patrick Schoenfeld <schoenfeld at debian.org>',
+ 'BUILD_REQUIRES' => {
+ 'Benchmark' => '0',
+ 'Test::More' => '0'
+ },
+ 'CONFIGURE_REQUIRES' => {
+ 'ExtUtils::MakeMaker' => '6.31'
+ },
+ 'DISTNAME' => 'DPKG-Log',
+ 'EXE_FILES' => [],
+ 'LICENSE' => 'perl',
+ 'NAME' => 'DPKG::Log',
+ 'PREREQ_PM' => {
+ 'Carp' => '0',
+ 'Data::Dumper' => '0',
+ 'DateTime::Format::Strptime' => '0',
+ 'DateTime::TimeZone' => '0',
+ 'Dpkg::Version' => '0',
+ 'Exporter' => '0',
+ 'Params::Validate' => '0',
+ 'overload' => '0'
+ },
+ 'VERSION' => '1.20',
+ 'test' => {
+ 'TESTS' => 't/*.t'
+ }
+);
+
+
+unless ( eval { ExtUtils::MakeMaker->VERSION(6.56) } ) {
+ my $br = delete $WriteMakefileArgs{BUILD_REQUIRES};
+ my $pp = $WriteMakefileArgs{PREREQ_PM};
+ for my $mod ( keys %$br ) {
+ if ( exists $pp->{$mod} ) {
+ $pp->{$mod} = $br->{$mod} if $br->{$mod} > $pp->{$mod};
+ }
+ else {
+ $pp->{$mod} = $br->{$mod};
+ }
+ }
+}
+
+delete $WriteMakefileArgs{CONFIGURE_REQUIRES}
+ unless eval { ExtUtils::MakeMaker->VERSION(6.52) };
+
+WriteMakefile(%WriteMakefileArgs);
+
+
+
Modified: trunk/libdpkg-log-perl/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libdpkg-log-perl/debian/changelog?rev=69386&op=diff
==============================================================================
--- trunk/libdpkg-log-perl/debian/changelog (original)
+++ trunk/libdpkg-log-perl/debian/changelog Wed Feb 23 13:36:02 2011
@@ -1,3 +1,9 @@
+libdpkg-log-perl (1.20-1) UNRELEASED; urgency=low
+
+ * New upstream release
+
+ -- Patrick Schoenfeld <schoenfeld at debian.org> Wed, 23 Feb 2011 14:35:07 +0100
+
libdpkg-log-perl (1.10-1) unstable; urgency=low
* New upstream release
Modified: trunk/libdpkg-log-perl/examples/dpkg-report
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libdpkg-log-perl/examples/dpkg-report?rev=69386&op=diff
==============================================================================
--- trunk/libdpkg-log-perl/examples/dpkg-report (original)
+++ trunk/libdpkg-log-perl/examples/dpkg-report Wed Feb 23 13:36:02 2011
@@ -11,6 +11,7 @@
use Params::Validate;
use Data::Dumper;
use List::MoreUtils qw(uniq all);
+use DateTime;
# Initialize defaults
my $hostname = hostname;
@@ -19,22 +20,48 @@
my @template_dirs = (dirname($0), '.', '/etc/dpkg-report/templates' );
my $merge = 0;
my $overall_packages;
-my $common_packages = { 'hostname' => 'all' };
+my $common_data = { };
my $data_g = {};
my @keys = qw( newly_installed_packages upgraded_packages removed_packages
halfinstalled_packages halfconfigured_packages installed_and_removed_packages );
+# Time range options
+my $today = 0;
+my $last_two_days = 0;
+my $last_week = 0;
+my $last_month = 0;
GetOptions(
"hostname=s" => \$hostname,
"log-file=s" => \@logfiles,
"template-file=s" => \$template_file,
"template-path=s" => \@template_dirs,
- "merge" => \$merge
+ "merge" => \$merge,
+ "today" => \$today,
+ "last-two-days" => \$last_two_days,
+ "last-week" => \$last_week,
+ "last-month" => \$last_month,
);
if (not @logfiles) {
@logfiles = ('/var/log/dpkg.log');
+}
+
+sub calculate_start_and_endtimes {
+ my $from;
+ my $to;
+ if ($today) {
+ $from = DateTime->now->truncate(to => 'day');
+ } elsif ($last_two_days) {
+ $from = DateTime->now->truncate(to => 'day')->subtract(days => 1);
+ } elsif ($last_week) {
+ $from = DateTime->now->truncate(to => 'day')->subtract(weeks => 1);
+ } elsif ($last_month) {
+ $from = DateTime->now->truncate(to => 'day')->subtract (months => 1);
+ }
+ $to = DateTime->now->truncate(to => 'day')->add( days => 1 )->subtract(seconds => 1);
+
+ return ($from, $to);
}
sub gather_data {
@@ -50,9 +77,19 @@
$params{'hostname'} = $1;
}
- # Initialize analyser
- my $analyser = DPKG::Log::Analyse->new(filename => $params{'logfile'});
- $analyser->analyse;
+ my $no_data = 0;
+ my ($from, $to) = calculate_start_and_endtimes;
+ my $dpkg_log = DPKG::Log->new(filename => $params{'logfile'},
+ from => $from,
+ to => $to
+ );
+ my $analyser = DPKG::Log::Analyse->new(log_handle => $dpkg_log);
+ eval {
+ $analyser->analyse;
+ };
+ if ($@) {
+ $no_data = 1;
+ }
# Get data
my $data = {
@@ -62,7 +99,8 @@
removed_packages => $analyser->removed_packages,
halfinstalled_packages => $analyser->halfinstalled_packages,
halfconfigured_packages => $analyser->halfconfigured_packages,
- installed_and_removed_packages => $analyser->installed_and_removed_packages
+ installed_and_removed_packages => $analyser->installed_and_removed_packages,
+ no_data => $no_data
};
foreach my $key (@keys) {
@@ -83,6 +121,7 @@
template_dirs => { default => \@template_dirs },
data => { default => {} },
no_filter => 0,
+ identifier => 1,
}
);
my $template = Template->new(
@@ -94,11 +133,23 @@
);
- my $data = { hostname => $params{'data'}->{hostname} };
+ my $data = {
+ hostname => $params{'data'}->{hostname},
+ no_data => $params{'data'}->{no_data}
+ };
+
# Create simplified datastructure for template toolkit
foreach my $key (@keys) {
while (my ($package, $package_obj) = each %{$params{'data'}->{$key}}) {
- next if $common_packages->{$key}->{$package} and $merge and not $params{'no_filter'};
+ next if $common_data->{'all'}->{$key}->{$package}
+ and $merge
+ and not $params{'identifier'} eq 'all';
+
+ my $common_host = $params{'data'}->{'hostname'};
+ $common_host =~ s/[0-9]+$//;
+ next if $common_data->{$common_host}->{$key}->{$package}
+ and $merge
+ and not $params{'identifier'} eq $common_host;
if (not $data->{$key}) {
$data->{$key} = [];
@@ -113,6 +164,18 @@
);
}
}
+
+ # Set no_data flag if $data has no values (this usually happens,m
+ # if all packages are in one of the common sets)
+ my $no_data = 1;
+ foreach my $key (@keys) {
+ if ($data->{$key} and scalar(@{$data->{$key}})) {
+ $no_data = 0;
+ }
+ }
+
+ $data->{no_data} = $no_data;
+ $data->{merge} = $merge;
$template->process($params{template_file}, $data) or die $template->error;
}
@@ -133,15 +196,43 @@
if (all { $data_g->{$_}->{$key}->{$name}
and $data_g->{$_}->{$key}->{$name} == $pkg } (keys %{$data_g})) {
# Package is common to all logfiles
- $common_packages->{$key}->{$name} = $pkg;
+ $common_data->{'all'}->{$key}->{$name} = $pkg;
}
}
}
-
+ $common_data->{'all'}->{hostname} = 'all';
+
+ # Find common package subsets for "grouped hostnames"
+ my @common_hostnames;
+ foreach my $host (keys %{$data_g}) {
+ if ($host =~ /[0-9]+$/) {
+ $host =~ s/[0-9]+$//;
+ push(@common_hostnames, $host) if not grep(/^$host$/, @common_hostnames);
+ }
+ }
+
+ foreach my $key (@keys) {
+ foreach my $pkg (@{$overall_packages->{$key}}) {
+ my $name = $pkg->name;
+ foreach my $common_host (@common_hostnames) {
+ my @matching_hosts = grep(/^$common_host/, (keys %{$data_g}));
+ if (all { $data_g->{$_}->{$key}->{$name} and $data_g->{$_}->{$key}->{$name} == $pkg }
+ @matching_hosts) {
+ $common_data->{$common_host}->{$key}->{$name} = $pkg;
+ }
+ $common_data->{$common_host}->{hostname} = $common_host . "*";
+ }
+ }
+ }
# Print report for 'all' systems first
- generate_report(data => $common_packages, no_filter => 1);
-}
-
-while (my ($hostname, $data) = each %{$data_g}) {
- generate_report(data => $data);
-}
+ foreach my $common_data_identifier (sort keys %{$common_data}) {
+ generate_report(data => $common_data->{$common_data_identifier},
+ identifier => $common_data_identifier
+ );
+ }
+}
+
+foreach my $hostname(sort keys %{$data_g}) {
+ my $data = $data_g->{$hostname};
+ generate_report(data => $data, identifier => $hostname);
+}
Modified: trunk/libdpkg-log-perl/examples/dpkg-report.tt2
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libdpkg-log-perl/examples/dpkg-report.tt2?rev=69386&op=diff
==============================================================================
--- trunk/libdpkg-log-perl/examples/dpkg-report.tt2 (original)
+++ trunk/libdpkg-log-perl/examples/dpkg-report.tt2 Wed Feb 23 13:36:02 2011
@@ -1,3 +1,4 @@
+[% IF NOT merge OR merge AND NOT no_data %]
[% IF hostname %]
dpkg - Report for [% hostname %]
@@ -5,6 +6,9 @@
[% ELSE %]
dpkg - Report for localhost
---------------------------
+[% END %]
+[% IF no_data %]
+No data available.
[% END %]
[% IF from AND to %]
Reporting period: [% from %] - [% to %]
@@ -40,4 +44,4 @@
[% END %]
[% END %]
-
+[% END %]
Modified: trunk/libdpkg-log-perl/lib/DPKG/Log.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libdpkg-log-perl/lib/DPKG/Log.pm?rev=69386&op=diff
==============================================================================
--- trunk/libdpkg-log-perl/lib/DPKG/Log.pm (original)
+++ trunk/libdpkg-log-perl/lib/DPKG/Log.pm Wed Feb 23 13:36:02 2011
@@ -1,6 +1,10 @@
=head1 NAME
DPKG::Log - Parse the dpkg log
+
+=head1 VERSION
+
+version 1.20
=head1 SYNOPSIS
@@ -20,12 +24,13 @@
=cut
package DPKG::Log;
+BEGIN {
+ $DPKG::Log::VERSION = '1.20';
+}
use strict;
use warnings;
use 5.010;
-
-our $VERSION = "1.10";
use Carp;
use DPKG::Log::Entry;
@@ -369,7 +374,6 @@
if (not $from) {
$from = DPKG::Log::Entry->new($entry_ref->[0])->timestamp;
- print Dumper($from);
}
if (not $to) {
$to = DPKG::Log::Entry->new($entry_ref->[-1])->timestamp;
@@ -407,4 +411,4 @@
=cut
1;
-# vim: expandtab:ts=4:sw=4
+# vim: expandtab:ts=4:sw=4
Modified: trunk/libdpkg-log-perl/lib/DPKG/Log/Analyse.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libdpkg-log-perl/lib/DPKG/Log/Analyse.pm?rev=69386&op=diff
==============================================================================
--- trunk/libdpkg-log-perl/lib/DPKG/Log/Analyse.pm (original)
+++ trunk/libdpkg-log-perl/lib/DPKG/Log/Analyse.pm Wed Feb 23 13:36:02 2011
@@ -1,9 +1,16 @@
package DPKG::Log::Analyse;
+BEGIN {
+ $DPKG::Log::Analyse::VERSION = '1.20';
+}
=head1 NAME
DPKG::Log::Analyse - Analyse a dpkg log
+
+=head1 VERSION
+
+version 1.20
=head1 SYNOPSIS
@@ -25,8 +32,6 @@
use strict;
use warnings;
use 5.010;
-
-our $VERSION = "1.10";
use Carp;
use DPKG::Log;
@@ -247,4 +252,4 @@
=cut
1;
-# vim: expandtab:ts=4:sw=4
+# vim: expandtab:ts=4:sw=4
Modified: trunk/libdpkg-log-perl/lib/DPKG/Log/Analyse/Package.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libdpkg-log-perl/lib/DPKG/Log/Analyse/Package.pm?rev=69386&op=diff
==============================================================================
--- trunk/libdpkg-log-perl/lib/DPKG/Log/Analyse/Package.pm (original)
+++ trunk/libdpkg-log-perl/lib/DPKG/Log/Analyse/Package.pm Wed Feb 23 13:36:02 2011
@@ -1,9 +1,16 @@
package DPKG::Log::Analyse::Package;
+BEGIN {
+ $DPKG::Log::Analyse::Package::VERSION = '1.20';
+}
=head1 NAME
DPKG::Log::Analyse::Package - Describe a package as analysed from a dpkg.log
+
+=head1 VERSION
+
+version 1.20
=head1 SYNOPSIS
@@ -24,8 +31,6 @@
use strict;
use warnings;
use 5.010;
-
-our $VERSION = "1.10";
use Carp;
use DPKG::Log;
@@ -38,6 +43,7 @@
'cmp' => 'compare',
'<=>' => 'compare'
);
+
=item $package = DPKG::Log::Analyse::Package->new('package' => 'foobar')
Returns a new DPKG::Log::Analyse::Package object.
@@ -66,9 +72,10 @@
bless($self, $package);
return $self;
}
-=item $package->name
-
-Returns the name of thispackage.
+
+=item $package_name = $package->name;
+
+Returns the name of this package.
=cut
sub name {
@@ -122,25 +129,13 @@
}
return $status;
}
-=back
-
-=head1 Overloading
-
-This module explicitly overloads some operators.
-Each operand is expected to be a DPKG::Log::Analyse::Package object.
-
-The string comparison operators, "eq" or "ne" will use the string value for the
-comparison.
-
-The numerical operators will use the package name and package version for
-comparison. That means a package1 == package2 if package1->name equals
-package2->name AND package1->version == package2->version.
-
-The module stores versions as Dpkg::Version objects, therefore sorting
-different versions of the same package will work.
-
-This module also overloads stringification returning either the package
-name if no version is set or "package_name/version" if a version is set.
+
+=item equals($package1, $package2);
+
+=item print "equal" if $package1 eq $package2
+
+Compares two packages in their string representation.
+
=cut
sub equals {
my ($first, $second) = @_;
@@ -148,6 +143,13 @@
}
+=item compare($package1, $package2)
+
+=item print "greater" if $package1 > $package2
+
+Compare two packages. See B<OVERLOADING> for details on how
+the comparison works.
+=cut
sub compare {
my ($first, $second) = @_;
return -1 if ($first->name ne $second->name);
@@ -163,6 +165,15 @@
}
+=item $package_str = $package->as_string
+
+=item printf("Package name: %s", $package);
+
+Return this package as a string. This will return the package name
+and the version (if set) in the form package_name/version.
+If version is not set, it will return the package name only.
+
+=cut
sub as_string {
my $self = shift;
@@ -173,6 +184,28 @@
return $string;
}
+=back
+
+=head1 Overloading
+
+This module explicitly overloads some operators.
+Each operand is expected to be a DPKG::Log::Analyse::Package object.
+
+The string comparison operators, "eq" or "ne" will use the string value for the
+comparison.
+
+The numerical operators will use the package name and package version for
+comparison. That means a package1 == package2 if package1->name equals
+package2->name AND package1->version == package2->version.
+
+The module stores versions as Dpkg::Version objects, therefore sorting
+different versions of the same package will work.
+
+This module also overloads stringification returning either the package
+name if no version is set or "package_name/version" if a version is set.
+
+=cut
+
=head1 SEE ALSO
L<DPKG::Log>, L<DPKG::Version>
@@ -191,4 +224,4 @@
=cut
1;
-# vim: expandtab:ts=4:sw=4
+# vim: expandtab:ts=4:sw=4
Modified: trunk/libdpkg-log-perl/lib/DPKG/Log/Entry.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libdpkg-log-perl/lib/DPKG/Log/Entry.pm?rev=69386&op=diff
==============================================================================
--- trunk/libdpkg-log-perl/lib/DPKG/Log/Entry.pm (original)
+++ trunk/libdpkg-log-perl/lib/DPKG/Log/Entry.pm Wed Feb 23 13:36:02 2011
@@ -1,6 +1,10 @@
=head1 NAME
DPKG::Log::Entry - Describe a log entry in a dpkg.log
+
+=head1 VERSION
+
+version 1.20
=head1 SYNOPSIS
@@ -42,6 +46,9 @@
=cut
package DPKG::Log::Entry;
+BEGIN {
+ $DPKG::Log::Entry::VERSION = '1.20';
+}
use strict;
use warnings;
@@ -51,7 +58,6 @@
our @ISA = qw(Exporter);
our @EXPORT = qw( $valid_types $valid_actions );
-our $VERSION = '1.10';
our $valid_types = {
status => 1,
action => 1,
@@ -327,4 +333,4 @@
=cut
1;
-# vim: expandtab:ts=4:sw=4
+# vim: expandtab:ts=4:sw=4
Modified: trunk/libdpkg-log-perl/t/timing.t
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libdpkg-log-perl/t/timing.t?rev=69386&op=diff
==============================================================================
--- trunk/libdpkg-log-perl/t/timing.t (original)
+++ trunk/libdpkg-log-perl/t/timing.t Wed Feb 23 13:36:02 2011
@@ -8,7 +8,7 @@
use Test::More;
BEGIN {
- unless ($ENV{'AUTHOR_TESTING'}) {
+ unless ($ENV{'RELEASE_TESTING'}) {
Test::More::plan(skip_all => 'these tests are for testing by the author');
} else {
Test::More::plan(tests => 2);
More information about the Pkg-perl-cvs-commits
mailing list