support/script/scancpan: add -test option

Perl modules can have three different types of dependencies:

 - configure/build time dependency which becomes host dependency
 - runtime dependency which becomes target dependency
 - test time dependency which is useless in a cross-compiling context like BR

Before this patch, test time dependencies are handled like runtime
dependencies.

After this patch, test time dependencies are ignored by default. The
newly added -test option allows to add them anyway if needed.

[Thomas: reword commit log using Francois proposal.]

Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
This commit is contained in:
Francois Perrad 2014-10-01 20:36:59 +02:00 committed by Thomas Petazzoni
parent 40aa523af2
commit 1fd8d9e4dd

View File

@ -483,7 +483,7 @@ use Module::CoreList;
use HTTP::Tiny;
use MetaCPAN::API::Tiny;
my ($help, $man, $quiet, $force, $recommend, $host);
my ($help, $man, $quiet, $force, $recommend, $test, $host);
my $target = 1;
GetOptions( 'help|?' => \$help,
'man' => \$man,
@ -491,7 +491,8 @@ GetOptions( 'help|?' => \$help,
'force|f' => \$force,
'host!' => \$host,
'target!' => \$target,
'recommend' => \$recommend
'recommend' => \$recommend,
'test' => \$test
) or pod2usage(-exitval => 1);
pod2usage(-exitval => 0) if $help;
pod2usage(-exitval => 0, -verbose => 2) if $man;
@ -554,11 +555,12 @@ 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 Module::CoreList::first_release( $modname );
# 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 ${$dep}{phase} eq q{test};
next if !$test && ${$dep}{phase} eq q{test};
next if !$recommend && ${$dep}{relationship} ne q{requires};
my $distname = $mcpan->module( $modname )->{distribution};
if (${$dep}{phase} eq q{runtime}) {
@ -716,6 +718,7 @@ supports/scripts/scancpan [options] [distname ...]
-target/-notarget
-host/-nohost
-recommend
-test
=head1 OPTIONS
@ -749,6 +752,10 @@ Switches package generation for the host variant (the default is C<-nohost>).
Adds I<recommended> dependencies.
=item B<-test>
Adds dependencies for test.
=back
=head1 DESCRIPTION