[carton] 290/472: Ignore installations that doesn't match cpanfile in check (and update later)
Lucas Kanashiro
kanashiro-guest at moszumanska.debian.org
Fri Jul 24 00:38:56 UTC 2015
This is an automated email from the git hooks/post-receive script.
kanashiro-guest pushed a commit to branch master
in repository carton.
commit 3909aefe0b221ed7b2f230bb7721dbf6a1d5bd9a
Author: Tatsuhiko Miyagawa <miyagawa at bulknews.net>
Date: Wed Jun 5 17:45:17 2013 +0900
Ignore installations that doesn't match cpanfile in check (and update later)
There's a lot of duplicate logics that we need to clear out
---
lib/Carton/CLI.pm | 3 ++-
lib/Carton/Lock.pm | 29 +++++++++++++++++++++--------
2 files changed, 23 insertions(+), 9 deletions(-)
diff --git a/lib/Carton/CLI.pm b/lib/Carton/CLI.pm
index f3a5641..393c4ce 100644
--- a/lib/Carton/CLI.pm
+++ b/lib/Carton/CLI.pm
@@ -214,7 +214,8 @@ sub cmd_install {
$builder->install($path);
unless ($deployment) {
- Carton::Lock->build_from_local($path)->write($self->lock_file);
+ my $prereqs = Module::CPANfile->load($cpanfile)->prereqs;
+ Carton::Lock->build_from_local($path, $prereqs)->write($self->lock_file);
}
$self->print("Complete! Modules were installed into $path\n", SUCCESS);
diff --git a/lib/Carton/Lock.pm b/lib/Carton/Lock.pm
index c100e6f..ced0f6c 100644
--- a/lib/Carton/Lock.pm
+++ b/lib/Carton/Lock.pm
@@ -7,6 +7,7 @@ use Carton::Package;
use Carton::Index;
use Carton::Util;
use CPAN::Meta;
+use CPAN::Meta::Requirements;
use File::Find ();
use Module::CoreList;
use Moo;
@@ -93,22 +94,26 @@ sub write_index {
}
sub build_from_local {
- my($class, $path) = @_;
+ my($class, $path, $prereqs) = @_;
- my %installs = $class->find_installs($path);
+ my $installs = $class->find_installs($path, $prereqs);
return $class->new(
- modules => \%installs,
+ modules => $installs,
version => CARTON_LOCK_VERSION,
);
}
sub find_installs {
- my($class, $path) = @_;
+ my($class, $path, $prereqs) = @_;
my $libdir = "$path/lib/perl5/$Config{archname}/.meta";
return unless -e $libdir;
+ my $reqs = CPAN::Meta::Requirements->new;
+ $reqs->add_requirements($prereqs->requirements_for($_, 'requires'))
+ for qw( configure build runtime test );
+
my @installs;
my $wanted = sub {
if ($_ eq 'install.json') {
@@ -117,10 +122,18 @@ sub find_installs {
};
File::Find::find($wanted, $libdir);
- return map {
- my $module = Carton::Util::load_json($_->[0]);
- my $mymeta = -f $_->[1] ? CPAN::Meta->load_file($_->[1])->as_struct({ version => "2" }) : {};
- ($module->{name} => { %$module, mymeta => $mymeta }) } @installs;
+ my %installs;
+ for my $file (@installs) {
+ my $module = Carton::Util::load_json($file->[0]);
+ my $mymeta = -f $file->[1] ? CPAN::Meta->load_file($file->[1])->as_struct({ version => "2" }) : {};
+ if ($reqs->accepts_module($module->{name}, $module->{provides}{$module->{name}}{version})) {
+ $installs{ $module->{name} } = { %$module, mymeta => $mymeta };
+ } else {
+ # Ignore installs because cpanfile doesn't accept it
+ }
+ }
+
+ return \%installs;
}
1;
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/carton.git
More information about the Pkg-perl-cvs-commits
mailing list