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 <[email protected]> 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 [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-perl-cvs-commits
