This is an automated email from the git hooks/post-receive script.

dod pushed a commit to branch master
in repository libconfig-model-dpkg-perl.

commit e79061c7c46c4a2436919563ba886fbe0422ee55
Author: Dominique Dumont <d...@debian.org>
Date:   Tue Feb 17 13:42:57 2015 +0100

    C::M::Dpkg::Dependency: do not use regexp to find Perl module in CoreList...
    
    ... instead create a hash table once to map debian package names with
    Perl module name and use this hash. This is much faster than applying a
    regexp on all core module names
---
 lib/Config/Model/Dpkg/Dependency.pm | 40 +++++++++++++++++++++++++------------
 1 file changed, 27 insertions(+), 13 deletions(-)

diff --git a/lib/Config/Model/Dpkg/Dependency.pm 
b/lib/Config/Model/Dpkg/Dependency.pm
index 56d187e..1d79ad8 100644
--- a/lib/Config/Model/Dpkg/Dependency.pm
+++ b/lib/Config/Model/Dpkg/Dependency.pm
@@ -123,6 +123,18 @@ my %virtual_hash = map {( $_ => 1); } @virtual_list;
 use vars qw/$test_filter/ ;
 $test_filter = ''; # reserved for tests
 
+my %debian_map;
+my $version = \%Module::CoreList::version;
+
+foreach my $v (values %$version) {
+    foreach my $pm ( keys %$v ) {
+        next unless defined $pm;
+        my $k = lc($pm);
+        $k =~ s/::/-/g;
+        $debian_map{"lib$k-perl"} = $pm;
+    }
+}
+
 my $logger = get_logger("Tree::Element::Value::Dependency") ;
 
 # initialise the global config object with the default values
@@ -414,9 +426,8 @@ sub check_depend_chain {
             my ($dep_name, $oper, $dep_v) = @$depend ;
             $logger->debug("scanning dependency $dep_name"
                 .(defined $dep_v ? " $dep_v" : ''));
-            if ($dep_name =~ /lib([\w+\-]+)-perl/) {
-                my $pname = $1 ;
-                $ret &&= $self->check_perl_lib_dep ($apply_fix, $pname, 
$actual_dep, $depend,$input);
+            if ($dep_name =~ /lib[\w+\-]+-perl/) {
+                $ret &&= $self->check_perl_lib_dep ($apply_fix, $actual_dep, 
$depend,$input);
                 last;
             }
         }
@@ -441,12 +452,11 @@ sub extract_cpan_version {
 # called through check_depend_chain
 # does modify $input when applying fix
 sub check_perl_lib_dep {
-    my ($self, $apply_fix, $pname, $actual_dep, $depend, $input) = @_;
-    $logger->debug("called for $pname with $actual_dep with apply_fix 
$apply_fix");
-
+    my ($self, $apply_fix, $actual_dep, $depend, $input) = @_;
     my ( $dep_name, $oper, $dep_v ) = @$depend;
 
-    $pname =~ s/-/::/g;
+    $logger->debug("called for $dep_name with $actual_dep with apply_fix 
$apply_fix");
+
 
     # The dependency should be in the form perl (>= 5.10.1) | 
libtest-simple-perl (>= 0.88)".
     # cf http://pkg-perl.alioth.debian.org/policy.html#debian_control_handling
@@ -455,12 +465,15 @@ sub check_perl_lib_dep {
     # because buildd will use the first available alternative
 
     # check for dual life module, module name follows debian convention...
-    my @dep_name_as_perl = Module::CoreList->find_modules(qr/^$pname$/i) ;
-    return 1 unless @dep_name_as_perl;
+    my $cpan_name = $debian_map{$dep_name};
+    return 1 unless $cpan_name ;
+
+    my $first_perl =  Module::CoreList->first_release($cpan_name) ;
+    return 1 unless $first_perl;
 
-    my $deprecated = Module::CoreList->deprecated_in($dep_name_as_perl[0]) ;
+    my $deprecated = Module::CoreList->deprecated_in($cpan_name) ;
     $logger->debug("dual life $dep_name is deprecated with perl $deprecated") 
if $deprecated;
-    my $removed    = Module::CoreList->removed_from($dep_name_as_perl[0]) ;
+    my $removed    = Module::CoreList->removed_from($cpan_name) ;
     $logger->debug("dual life $dep_name is removed from perl $removed") if 
$removed;
 
     return 1 if (defined $dep_v && $dep_v =~ m/^\$/) ;
@@ -497,7 +510,7 @@ sub check_perl_lib_dep {
        my $cpan_dep_v = $self->extract_cpan_version($check_v);
 
        my $v_decimal = Module::CoreList->first_release(
-               $dep_name_as_perl[0],
+               $cpan_name,
                version->parse( $cpan_dep_v )
        );
 
@@ -507,7 +520,7 @@ sub check_perl_lib_dep {
        $v_normal =~ s/^v//;    # loose the v prefix
        if ( $logger->is_debug ) {
                my $dep_str = $dep_name . ( defined $check_v ? ' ' . $check_v : 
'' );
-               $logger->debug("dual life $dep_str aka $dep_name_as_perl[0] 
found in Perl core $v_normal");
+               $logger->debug("dual life $dep_str found in Perl core 
$v_normal");
        }
 
        my ($has_older_perl) = $self->check_versioned_dep(  ['perl', '>=', 
$v_normal] );
@@ -828,6 +841,7 @@ sub cache_info_from_madison {
        }
 }
 
+
 __PACKAGE__->meta->make_immutable;
 
 1;

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-perl/packages/libconfig-model-dpkg-perl.git

_______________________________________________
Pkg-perl-cvs-commits mailing list
Pkg-perl-cvs-commits@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-perl-cvs-commits

Reply via email to