From 9a188b1bb70402df75f1c1cb4d394b58807c1296 Mon Sep 17 00:00:00 2001 From: zebardy Date: Sat, 29 Aug 2015 01:22:30 +0100 Subject: [PATCH 1/8] Initial patch and tests to add support for sources in cpanfile files --- .../local-mirror/authors/00whois.xml | 8 ++++++++ .../A/AR/ARISTOTLE/Hash-MultiValue-0.16.tar.gz | Bin 0 -> 19841 bytes .../modules/02packages.details.txt.gz | Bin 0 -> 103 bytes 3 files changed, 8 insertions(+) create mode 100644 testdist/cpanfile_app_mirror/local-mirror/authors/00whois.xml create mode 100644 testdist/cpanfile_app_mirror/local-mirror/authors/id/A/AR/ARISTOTLE/Hash-MultiValue-0.16.tar.gz create mode 100644 testdist/cpanfile_app_mirror/local-mirror/modules/02packages.details.txt.gz diff --git a/testdist/cpanfile_app_mirror/local-mirror/authors/00whois.xml b/testdist/cpanfile_app_mirror/local-mirror/authors/00whois.xml new file mode 100644 index 000000000..026c4cba5 --- /dev/null +++ b/testdist/cpanfile_app_mirror/local-mirror/authors/00whois.xml @@ -0,0 +1,8 @@ + + + + ARISTOTLE + author + 1 + + diff --git a/testdist/cpanfile_app_mirror/local-mirror/authors/id/A/AR/ARISTOTLE/Hash-MultiValue-0.16.tar.gz b/testdist/cpanfile_app_mirror/local-mirror/authors/id/A/AR/ARISTOTLE/Hash-MultiValue-0.16.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..fb520f45ead2b10a1e7014d5c44f006bbe4caa37 GIT binary patch literal 19841 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 literal 0 HcmV?d00001 diff --git a/testdist/cpanfile_app_mirror/local-mirror/modules/02packages.details.txt.gz b/testdist/cpanfile_app_mirror/local-mirror/modules/02packages.details.txt.gz new file mode 100644 index 0000000000000000000000000000000000000000..947ba7700b9ef75ec5153cc0bb2435820d7249cc GIT binary patch literal 103 zcmb2|=3oGW|HY@zcy0}9U}Rq0bmYmKBVVp0?VWOE(vdTBlJ-vO64KM_Kk|r2Tl@Z{ zIg`$8I5Ou_h##}9v$3Ch?QsQ#Pdt1d`9Bt3W!Jpqy5b`1%8S~bI+wiHKVo9I)!K75 H9cVrPu#zuH literal 0 HcmV?d00001 From 0c6d591898af1eb2259943f6f24ff56d20b45b9d Mon Sep 17 00:00:00 2001 From: zebardy Date: Sat, 29 Aug 2015 09:53:59 +0100 Subject: [PATCH 2/8] adding missed files --- cpanfile | 2 ++ lib/App/cpanminus/script.pm | 18 +++++++++++++++--- xt/mirror.t | 15 +++++++++++++++ 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/cpanfile b/cpanfile index 574150bca..76f8e9223 100644 --- a/cpanfile +++ b/cpanfile @@ -14,12 +14,14 @@ on develop => sub { requires 'CPAN::Meta::YAML'; requires 'Digest::SHA'; requires 'Exporter', '5.63'; + requires 'File::Copy::Recursive'; requires 'File::Temp'; requires 'File::pushd'; requires 'Getopt::Long'; requires 'HTTP::Tiny'; requires 'JSON'; requires 'JSON::PP'; + requires 'LWP::Protocol::https'; requires 'LWP::Simple'; requires 'LWP::UserAgent', '5.802'; requires 'Module::Install'; diff --git a/lib/App/cpanminus/script.pm b/lib/App/cpanminus/script.pm index 5eb09919a..cfcf53ac8 100644 --- a/lib/App/cpanminus/script.pm +++ b/lib/App/cpanminus/script.pm @@ -67,6 +67,7 @@ sub new { interactive => undef, log => undef, mirrors => [], + mirrors_default => [ 'http://www.cpan.org' ], mirror_only => undef, mirror_index => undef, cpanmetadb => "http://cpanmetadb.plackperl.org/v1.0/", @@ -1879,6 +1880,9 @@ sub cpan_dist { my $fn = substr($id, 0, 1) . "/" . substr($id, 0, 2) . "/" . $id . "/" . $d->filename; my @mirrors = @{$self->{mirrors}}; + unless (@mirrors) { + @mirrors = @{$self->{mirrors_default}}; + } my @urls = map "$_/authors/id/$fn", @mirrors; $url = \@urls, @@ -2199,7 +2203,7 @@ sub build_stuff { push @{$dist->{want_phases}}, 'develop' if $self->{with_develop} && $depth == 0; - my @deps = $self->find_prereqs($dist); + my @deps = $self->find_prereqs($dist, $depth); my $module_name = $self->find_module_name($configure_state) || $dist->{meta}{name}; $module_name =~ s/-/::/g; @@ -2330,6 +2334,10 @@ sub configure_this { require Module::CPANfile; $dist->{cpanfile} = eval { Module::CPANfile->load($self->{cpanfile_path}) }; $self->diag_fail($@, 1) if $@; + if ($dist->{cpanfile} && $dist->{cpanfile}->mirrors) { + unshift(@{$self->{mirrors}}, @{$dist->{cpanfile}->mirrors}); + } + return { configured => 1, configured_ok => !!$dist->{cpanfile}, @@ -2583,7 +2591,7 @@ sub effective_feature { } sub find_prereqs { - my($self, $dist) = @_; + my($self, $dist, $depth) = @_; my @deps = $self->extract_meta_prereqs($dist); @@ -2591,7 +2599,7 @@ sub find_prereqs { push @deps, $self->bundle_deps($dist); } - if ($self->{cpanfile_requirements} && !$dist->{cpanfile}) { + if ($self->{cpanfile_requirements} && $depth) { for my $dep (@deps) { $dep->merge_with($self->{cpanfile_requirements}); } @@ -2884,6 +2892,10 @@ sub file_mirror { sub has_working_lwp { my($self, $mirrors) = @_; + + unless (@{$mirrors}) { + $mirrors = $self->{mirrors_default}; + } my $https = grep /^https:/, @$mirrors; eval { require LWP::UserAgent; # no fatpack diff --git a/xt/mirror.t b/xt/mirror.t index 022878e8d..3b330d42a 100644 --- a/xt/mirror.t +++ b/xt/mirror.t @@ -1,6 +1,21 @@ use strict; use Test::More; use xt::Run; +use File::Temp; +use File::Copy::Recursive qw(dircopy); + +my $dir = File::Temp::tempdir; + +dircopy("testdist/cpanfile_app_mirror/local-mirror",$dir); + +open my $cpanfile, ">", "./testdist/cpanfile_app_mirror/cpanfile"; +print $cpanfile < Date: Sat, 29 Aug 2015 10:15:07 +0100 Subject: [PATCH 3/8] tidy up and move tests to the cpanfile test script --- .../local-mirror/authors/00whois.xml | 0 .../A/AR/ARISTOTLE/Hash-MultiValue-0.16.tar.gz | Bin .../modules/02packages.details.txt.gz | Bin xt/cpanfile.t | 17 +++++++++++++++++ xt/mirror.t | 15 --------------- 5 files changed, 17 insertions(+), 15 deletions(-) rename testdist/{cpanfile_app_mirror => }/local-mirror/authors/00whois.xml (100%) rename testdist/{cpanfile_app_mirror => }/local-mirror/authors/id/A/AR/ARISTOTLE/Hash-MultiValue-0.16.tar.gz (100%) rename testdist/{cpanfile_app_mirror => }/local-mirror/modules/02packages.details.txt.gz (100%) diff --git a/testdist/cpanfile_app_mirror/local-mirror/authors/00whois.xml b/testdist/local-mirror/authors/00whois.xml similarity index 100% rename from testdist/cpanfile_app_mirror/local-mirror/authors/00whois.xml rename to testdist/local-mirror/authors/00whois.xml diff --git a/testdist/cpanfile_app_mirror/local-mirror/authors/id/A/AR/ARISTOTLE/Hash-MultiValue-0.16.tar.gz b/testdist/local-mirror/authors/id/A/AR/ARISTOTLE/Hash-MultiValue-0.16.tar.gz similarity index 100% rename from testdist/cpanfile_app_mirror/local-mirror/authors/id/A/AR/ARISTOTLE/Hash-MultiValue-0.16.tar.gz rename to testdist/local-mirror/authors/id/A/AR/ARISTOTLE/Hash-MultiValue-0.16.tar.gz diff --git a/testdist/cpanfile_app_mirror/local-mirror/modules/02packages.details.txt.gz b/testdist/local-mirror/modules/02packages.details.txt.gz similarity index 100% rename from testdist/cpanfile_app_mirror/local-mirror/modules/02packages.details.txt.gz rename to testdist/local-mirror/modules/02packages.details.txt.gz diff --git a/xt/cpanfile.t b/xt/cpanfile.t index d8a35d9c5..a6c43a08f 100644 --- a/xt/cpanfile.t +++ b/xt/cpanfile.t @@ -3,6 +3,23 @@ use Test::More; use JSON; use Config; use xt::Run; +use File::Temp; +use File::Copy::Recursive qw(dircopy); + +{ + my $dir = File::Temp::tempdir; + + dircopy("testdist/local-mirror","$dir/local-mirror"); + + open my $cpanfile, ">", "$dir/cpanfile"; + print $cpanfile <", "./testdist/cpanfile_app_mirror/cpanfile"; -print $cpanfile < Date: Thu, 7 Jan 2016 18:13:22 +0000 Subject: [PATCH 4/8] adding in --with-configure and --without-configure options --- lib/App/cpanminus/script.pm | 4 ++++ script/cpanm.PL | 5 +++++ testdist/cpanfile_app/cpanfile | 4 ++++ xt/cpanfile.t | 13 ++++++++++++- 4 files changed, 25 insertions(+), 1 deletion(-) diff --git a/lib/App/cpanminus/script.pm b/lib/App/cpanminus/script.pm index cfcf53ac8..a954c9c49 100644 --- a/lib/App/cpanminus/script.pm +++ b/lib/App/cpanminus/script.pm @@ -92,6 +92,7 @@ sub new { installed_dists => 0, install_types => ['requires'], with_develop => 0, + with_configure => 0, showdeps => 0, scandeps => 0, scandeps_tree => [], @@ -217,6 +218,8 @@ sub parse_options { 'test-timeout=i' => \$self->{test_timeout}, 'with-develop' => \$self->{with_develop}, 'without-develop' => sub { $self->{with_develop} = 0 }, + 'with-configure' => \$self->{with_configure}, + 'without-configure' => sub { $self->{with_configure} = 0 }, 'with-feature=s' => sub { $self->{features}{$_[1]} = 1 }, 'without-feature=s' => sub { $self->{features}{$_[1]} = 0 }, 'with-all-features' => sub { $self->{features}{__all} = 1 }, @@ -2202,6 +2205,7 @@ sub build_stuff { ? [qw( build runtime )] : [qw( build test runtime )]; push @{$dist->{want_phases}}, 'develop' if $self->{with_develop} && $depth == 0; + push @{$dist->{want_phases}}, 'configure' if $self->{with_configure} && $depth == 0; my @deps = $self->find_prereqs($dist, $depth); my $module_name = $self->find_module_name($configure_state) || $dist->{meta}{name}; diff --git a/script/cpanm.PL b/script/cpanm.PL index 16d2ad932..b6c0a1e85 100755 --- a/script/cpanm.PL +++ b/script/cpanm.PL @@ -341,6 +341,11 @@ Defaults to false for both. B: Installs develop phase dependencies in META files or C when used with C<--installdeps>. Defaults to false. +=item --with-configure + +B: Installs configure phase dependencies in META files or +C when used with C<--installdeps>. Defaults to false. + =item --with-feature, --without-feature, --with-all-features B: Specifies the feature to enable, if a module supports diff --git a/testdist/cpanfile_app/cpanfile b/testdist/cpanfile_app/cpanfile index 1662cd6fa..90f8e605a 100644 --- a/testdist/cpanfile_app/cpanfile +++ b/testdist/cpanfile_app/cpanfile @@ -1,6 +1,10 @@ requires 'Hash::MultiValue', '== 0.10'; requires 'Try::Tiny', '>= 0.07, < 0.12'; +on configure => sub { + requires 'Module::Build::Tiny'; +}; + on test => sub { requires 'Test::Warn'; }; diff --git a/xt/cpanfile.t b/xt/cpanfile.t index a6c43a08f..b3b731387 100644 --- a/xt/cpanfile.t +++ b/xt/cpanfile.t @@ -26,9 +26,20 @@ EOF like last_build_log, qr/installed Hash-MultiValue-0\.10/; like last_build_log, qr/installed Try-Tiny-0\.11/; - like last_build_log, qr/installed Test-Warn/, '--notest means skip tests on *deps*, not necessarily root' + like last_build_log, qr/installed Test-Warn/, '--notest means skip tests on *deps*, not necessarily root'; + unlike last_build_log, qr/installed Module-Build-Tiny/; } +{ + run_L "--installdeps", "--with-configure", "./testdist/cpanfile_app"; + + like last_build_log, qr/installed Hash-MultiValue-0\.10/; + like last_build_log, qr/installed Try-Tiny-0\.11/; + like last_build_log, qr/installed Test-Warn/, '--notest means skip tests on *deps*, not necessarily root'; + like last_build_log, qr/installed Module-Build-Tiny/; +} + + { run "--installdeps", "./testdist/cpanfile_bad_app"; like last_build_log, qr/Bareword "foobar" not allowed/; From b75b24ad4a4ba10cf7261ea96d758d3daf6dddf6 Mon Sep 17 00:00:00 2001 From: zebardy Date: Mon, 11 Jan 2016 10:21:46 +0000 Subject: [PATCH 5/8] the man files can be named slightly differntly, so the test needs to be flexible --- lib/App/cpanminus/script.pm | 39 +++++++++++++++++++++---------------- xt/cpanfile.t | 6 +++--- xt/manpages.t | 9 +++++++-- 3 files changed, 32 insertions(+), 22 deletions(-) diff --git a/lib/App/cpanminus/script.pm b/lib/App/cpanminus/script.pm index a954c9c49..315d33978 100644 --- a/lib/App/cpanminus/script.pm +++ b/lib/App/cpanminus/script.pm @@ -92,7 +92,7 @@ sub new { installed_dists => 0, install_types => ['requires'], with_develop => 0, - with_configure => 0, + with_configure => undef, showdeps => 0, scandeps => 0, scandeps_tree => [], @@ -2169,25 +2169,30 @@ sub build_stuff { $dist->{meta} = $dist->{cpanmeta} ? $dist->{cpanmeta}->as_struct : {}; my @config_deps; - if ($dist->{cpanmeta}) { - push @config_deps, App::cpanminus::Dependency->from_prereqs( - $dist->{cpanmeta}->effective_prereqs, ['configure'], $self->{install_types}, - ); - } - if (-e 'Build.PL' && !$self->should_use_mm($dist->{dist}) && !@config_deps) { - push @config_deps, App::cpanminus::Dependency->from_versions( - { 'Module::Build' => '0.38' }, 'configure', - ); - } + my $target = $dist->{meta}{name} ? "$dist->{meta}{name}-$dist->{meta}{version}" : $dist->{dir}; - $self->upgrade_toolchain(\@config_deps); + if ( !defined $self->{with_configure} or $depth > 0 ) { + if ($dist->{cpanmeta}) { + push @config_deps, App::cpanminus::Dependency->from_prereqs( + $dist->{cpanmeta}->effective_prereqs, ['configure'], $self->{install_types}, + ); + } + + if (-e 'Build.PL' && !$self->should_use_mm($dist->{dist}) && !@config_deps) { + push @config_deps, App::cpanminus::Dependency->from_versions( + { 'Module::Build' => '0.38' }, 'configure', + ); + } + + $self->upgrade_toolchain(\@config_deps); + + { + local $self->{notest} = 1; + $self->install_deps_bailout($target, $dist->{dir}, $depth, @config_deps) + or return; + } - my $target = $dist->{meta}{name} ? "$dist->{meta}{name}-$dist->{meta}{version}" : $dist->{dir}; - { - local $self->{notest} = 1; - $self->install_deps_bailout($target, $dist->{dir}, $depth, @config_deps) - or return; } $self->diag_progress("Configuring $target"); diff --git a/xt/cpanfile.t b/xt/cpanfile.t index b3b731387..9f46acef1 100644 --- a/xt/cpanfile.t +++ b/xt/cpanfile.t @@ -33,9 +33,9 @@ EOF { run_L "--installdeps", "--with-configure", "./testdist/cpanfile_app"; - like last_build_log, qr/installed Hash-MultiValue-0\.10/; - like last_build_log, qr/installed Try-Tiny-0\.11/; - like last_build_log, qr/installed Test-Warn/, '--notest means skip tests on *deps*, not necessarily root'; + like last_build_log, qr/Checking if you have Hash::MultiValue .* Yes \(0\.10\)/; + like last_build_log, qr/Checking if you have Try::Tiny .* Yes \(0\.11\)/; + like last_build_log, qr/Checking if you have Test::Warn/, '--notest means skip tests on *deps*, not necessarily root'; like last_build_log, qr/installed Module-Build-Tiny/; } diff --git a/xt/manpages.t b/xt/manpages.t index 4f2d22825..58829a17b 100644 --- a/xt/manpages.t +++ b/xt/manpages.t @@ -8,11 +8,16 @@ run("-L", $local_lib, "Sub::Uplevel"); # M::B ok !-e "$local_lib/man", "man page is not generated with -L"; +ok !glob("$local_lib/man/man3/Hash::MultiValue.*"); +ok !glob("$local_lib/man/man3/Sub::Uplevel.*"); + run("-L", $local_lib, "--man-pages", "Hash::MultiValue"); run("-L", $local_lib, "--man-pages", "Sub::Uplevel"); -ok -e "$local_lib/man/man3/Hash::MultiValue.3"; -ok -e "$local_lib/man/man3/Sub::Uplevel.3"; +ok glob("$local_lib/man/man3/Hash::MultiValue.*"); +ok glob("$local_lib/man/man3/Sub::Uplevel.*"); +#ok -e "$local_lib/man/man3/Hash::MultiValue.3"; +#ok -e "$local_lib/man/man3/Sub::Uplevel.3"; done_testing; From 1db476c139d4f72ac2e7152abba801ef4179e9ce Mon Sep 17 00:00:00 2001 From: Aaron Moses Date: Mon, 11 Jan 2016 16:13:04 +0000 Subject: [PATCH 6/8] specify default behavior in POD documantation --- script/cpanm.PL | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/script/cpanm.PL b/script/cpanm.PL index b6c0a1e85..59d414617 100755 --- a/script/cpanm.PL +++ b/script/cpanm.PL @@ -346,6 +346,10 @@ C when used with C<--installdeps>. Defaults to false. B: Installs configure phase dependencies in META files or C when used with C<--installdeps>. Defaults to false. +Default behaviour is with configure dependencies for dependencies from +MYMETA.yaml/META.yaml and without configure dependencies for dependencies +from cpanfile. + =item --with-feature, --without-feature, --with-all-features B: Specifies the feature to enable, if a module supports From a301e9240658adb999936868b7459a92509938b1 Mon Sep 17 00:00:00 2001 From: Aaron Moses Date: Mon, 11 Jan 2016 16:17:48 +0000 Subject: [PATCH 7/8] add tests for with/without configure when reading deps from META.yaml --- xt/recommends.t | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/xt/recommends.t b/xt/recommends.t index c642c6d02..f3efb6d7c 100644 --- a/xt/recommends.t +++ b/xt/recommends.t @@ -31,4 +31,10 @@ like last_build_log, qr/Checking if you have Test::Pod/; run_L '--with-develop', '--without-develop', './testdist/TestDist-Recommend'; unlike last_build_log, qr/Checking if you have Hash::MultiValue/; +run_L '--with-configure', './testdist/TestDist-Recommend'; +like last_build_log, qr/Checking if you have Module::Build::Tiny/; + +run_L '--with-configure', '--without-configure', './testdist/TestDist-Recommend'; +unlike last_build_log, qr/Checking if you have Module::Build::Tiny/; + done_testing; From 7a74e01b2cb158e05139b5d5df91d9baff4757c6 Mon Sep 17 00:00:00 2001 From: Aaron Moses Date: Mon, 11 Jan 2016 16:44:03 +0000 Subject: [PATCH 8/8] remove commented out statements --- xt/manpages.t | 2 -- 1 file changed, 2 deletions(-) diff --git a/xt/manpages.t b/xt/manpages.t index 58829a17b..308894628 100644 --- a/xt/manpages.t +++ b/xt/manpages.t @@ -16,8 +16,6 @@ run("-L", $local_lib, "--man-pages", "Sub::Uplevel"); ok glob("$local_lib/man/man3/Hash::MultiValue.*"); ok glob("$local_lib/man/man3/Sub::Uplevel.*"); -#ok -e "$local_lib/man/man3/Hash::MultiValue.3"; -#ok -e "$local_lib/man/man3/Sub::Uplevel.3"; done_testing;