summaryrefslogtreecommitdiff
path: root/support/scripts/scancpan
diff options
context:
space:
mode:
authorFrancois Perrad <fperrad@gmail.com>2016-03-13 18:37:29 +0100
committerPeter Korsgaard <peter@korsgaard.com>2016-03-15 23:16:33 +0100
commit746a91ab3158c67e7f0ee28064ebf4cd4d873d95 (patch)
tree7681a34c8d3c7be8d9d60f174a57a256e2f3b8bf /support/scripts/scancpan
parentd6cff4abdc87c2f4ad96c2dd2caf49a60494fdbf (diff)
scancpan: use recommend & test flags only at first level
Currently, these flags are recursively propagated. This behavior is not expected by users, because it can cause dependencies explosively. Signed-off-by: Francois Perrad <francois.perrad@gadz.org> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Diffstat (limited to 'support/scripts/scancpan')
-rwxr-xr-xsupport/scripts/scancpan12
1 files changed, 6 insertions, 6 deletions
diff --git a/support/scripts/scancpan b/support/scripts/scancpan
index 72cca1a3e..6c70cfba8 100755
--- a/support/scripts/scancpan
+++ b/support/scripts/scancpan
@@ -552,10 +552,10 @@ sub find_license_files {
}
sub fetch {
- my ($name, $need_target, $need_host) = @_;
+ my ($name, $need_target, $need_host, $top) = @_;
$need_target{$name} = $need_target if $need_target;
$need_host{$name} = $need_host if $need_host;
- unless ($dist{$name}) {
+ unless ($dist{$name} && !$top) {
say qq{fetch ${name}} unless $quiet;
my $result = $mcpan->release( distribution => $name );
$dist{$name} = $result;
@@ -570,19 +570,19 @@ sub fetch {
next if $modname eq q{perl};
next if $modname =~ m|^Alien|;
next if $modname =~ m|^Win32|;
- next if !$test && $modname =~ m|^Test|;
+ next if !($test && $top) && $modname =~ m|^Test|;
next if Module::CoreList::is_core( $modname, undef, $] );
# we could use the host Module::CoreList data, because host perl and
# target perl have the same major version
next if ${$dep}{phase} eq q{develop};
- next if !$test && ${$dep}{phase} eq q{test};
+ next if !($test && $top) && ${$dep}{phase} eq q{test};
my $distname = $mcpan->module( $modname )->{distribution};
if (${$dep}{phase} eq q{runtime}) {
if (${$dep}{relationship} eq q{requires}) {
$runtime{$distname} = 1;
}
else {
- $optional{$distname} = 1 if $recommend;
+ $optional{$distname} = 1 if $recommend && $top;
}
}
else { # configure, build
@@ -608,7 +608,7 @@ sub fetch {
foreach my $distname (@ARGV) {
# Command-line's distributions
- fetch( $distname, !!$target, !!$host );
+ fetch( $distname, !!$target, !!$host, 1 );
}
say scalar keys %dist, q{ packages fetched.} unless $quiet;