Author: dagolden
Date: Tue Sep 8 19:58:08 2009
New Revision: 13297
Modified:
Module-Build/trunk/Build.PL
Module-Build/trunk/lib/Module/Build/Base.pm
Module-Build/trunk/t/actions/installdeps.t
Log:
use IPC::Cmd to find the right cpan client for installdeps
Modified: Module-Build/trunk/Build.PL
==============================================================================
--- Module-Build/trunk/Build.PL (original)
+++ Module-Build/trunk/Build.PL Tue Sep 8 19:58:08 2009
@@ -38,6 +38,7 @@
'ExtUtils::Manifest' => 0,
'ExtUtils::Mkbootstrap' => 0,
'IO::File' => 0,
+ 'IPC::Cmd' => 0,
'Cwd' => 0,
'Text::Abbrev' => 0,
'Text::ParseWords' => 0,
Modified: Module-Build/trunk/lib/Module/Build/Base.pm
==============================================================================
--- Module-Build/trunk/lib/Module/Build/Base.pm (original)
+++ Module-Build/trunk/lib/Module/Build/Base.pm Tue Sep 8 19:58:08 2009
@@ -3168,11 +3168,12 @@
# relative command should be relative to our active Perl
# so we need to locate that command
if ( ! File::Spec->file_name_is_absolute( $command ) ) {
+ require IPC::Cmd;
my @bindirs = File::Basename::dirname($self->perl);
push @bindirs, map {$self->config->{"install${_}bin"}} '','site','vendor';
for my $d ( @bindirs ) {
- my $abs_cmd = File::Spec->catfile( $d, $command );
- if ( -x $abs_cmd ) {
+ my $abs_cmd = IPC::Cmd::can_run(File::Spec->catfile( $d, $command ));
+ if ( defined $abs_cmd ) {
$command = $abs_cmd;
last;
}
Modified: Module-Build/trunk/t/actions/installdeps.t
==============================================================================
--- Module-Build/trunk/t/actions/installdeps.t (original)
+++ Module-Build/trunk/t/actions/installdeps.t Tue Sep 8 19:58:08 2009
@@ -2,6 +2,7 @@
use lib $ENV{PERL_CORE} ? '../lib/Module/Build/t/lib' : 't/lib';
use MBTest;
use DistGen;
+use IPC::Cmd ();
plan tests => 7;
@@ -33,7 +34,8 @@
$dist->run_build('installdeps')
});
ok( length($out), "ran mocked Build installdeps");
-like( $out, qr/$^X/, "relative cpan_client resolved relative to \$^X" );
+my $expected = quotemeta(IPC::Cmd::can_run($^X));
+like( $out, qr/$expected/i, "relative cpan_client resolved relative to \$^X" );
like( $out, qr/File::Spec/, "saw File::Spec prereq" );
like( $out, qr/Getopt::Long/, "saw Getopt::Long prereq" );