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

kanashiro-guest pushed a commit to branch master
in repository carton.

commit 87bdfbb5c90fcb1adb0ab6e717dc0993cf06fe99
Author: Tatsuhiko Miyagawa <miyag...@bulknews.net>
Date:   Fri Jun 24 19:46:48 2011 -0700

    Build index from the provides hash.
---
 lib/App/Carton.pm | 29 ++++++++++++++++++++++++-----
 1 file changed, 24 insertions(+), 5 deletions(-)

diff --git a/lib/App/Carton.pm b/lib/App/Carton.pm
index f0d3231..0914adb 100644
--- a/lib/App/Carton.pm
+++ b/lib/App/Carton.pm
@@ -170,6 +170,22 @@ sub cmd_show {
     }
 }
 
+sub build_index {
+    my($self, $modules) = @_;
+
+    my $index;
+
+    for my $name (keys %$modules) {
+        my $module   = $modules->{$name};
+        my $provides = $module->{provides};
+        for my $mod (keys %$provides) {
+            $index->{$mod} = { version => $provides->{$mod}, module => $module 
};
+        }
+    }
+
+    return $index;
+}
+
 sub build_tree {
     my($self, $data) = @_;
 
@@ -177,22 +193,25 @@ sub build_tree {
     my %cached = ();
     my @children = keys %{$data->{roots}};
 
-    $self->_build_tree(\@children, $tree, $data->{modules}, \%cached);
+    my $index = $self->build_index($data->{modules});
+
+    $self->_build_tree(\@children, $tree, $index, \%cached);
 
     return $tree;
 }
 
 sub _build_tree {
-    my($self, $children, $node, $modules, $cached) = @_;
+    my($self, $children, $node, $index, $cached) = @_;
     require Module::CoreList;
     for my $child (@$children) {
         next if $child eq 'perl' or $cached->{$child}++;
-        if (my $mod = $modules->{$child}) {
+        if (my $mod = $index->{$child}) {
+            $mod = $mod->{module};
             push @$node, [ $mod, [] ];
             my %deps = (%{$mod->{requires}{configure}}, 
%{$mod->{requires}{build}});
-            $self->_build_tree([ keys %deps ], $node->[-1][-1], $modules, 
$cached);
+            $self->_build_tree([ keys %deps ], $node->[-1][-1], $index, 
$cached);
         } elsif (!$Module::CoreList::version{$]+0}{$child}) {
-            warn "Can't find $child" if $self->{verbose};
+            warn "Can't find $child\n";
         }
     }
 }

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-perl/packages/carton.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