X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=Makefile.PL;h=d232325163c569d1d361eb0f2ba7b377c52b5221;hb=6d74e2d7e8dd429c0bdf511cbd3249a911135a34;hp=2714a0d7f1124b9305d3b310931b1712cccbcc13;hpb=c4dbb66caaa1ba28bf029d041676b2efb0e401fa;p=p5sagit%2Flocal-lib.git diff --git a/Makefile.PL b/Makefile.PL index 2714a0d..d232325 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -3,6 +3,7 @@ use warnings; use File::Spec; use Cwd; use vars qw($bootstrapping $bootstrapping_args); +use Config; my $cwd; BEGIN { @@ -37,7 +38,7 @@ DEATH local::lib->import(@args); - my @libs = map { "-I$_" } split ':', $ENV{PERL5LIB}; + my @libs = map { "-I$_" } split $Config{path_sep}, $ENV{PERL5LIB}; $bootstrapping_args = "@libs"; push(@ARGV,$ENV{PERL_MM_OPT}); push(@ARGV, @libs); @@ -52,7 +53,7 @@ DEATH system($^X, '-MCPAN', '-e', 'my $done; require ExtUtils::MakeMaker; my $orig = ExtUtils::MakeMaker->can("prompt"); - *ExtUtils::MakeMaker::prompt = sub { + *ExtUtils::MakeMaker::prompt = sub ($;$) { if (!$done && $_[0] =~ /manual configuration/) { $done++; return "no"; @@ -98,7 +99,8 @@ requires 'ExtUtils::MakeMaker' => '6.31'; # version INSTALL_BASE was added requires 'ExtUtils::CBuilder'; # this and ParseXS are needed for MB C_support requires 'ExtUtils::ParseXS'; requires 'Module::Build' => '0.28'; # lib -> lib/perl5 change -requires 'CPAN' => '1.80'; # sudo support +my $required_CPAN = '1.80'; +requires 'CPAN' => $required_CPAN; # sudo support + CPAN::HandleConfig # No, really. See # https://rt.cpan.org/Public/Bug/Display.html?id=23735 @@ -107,22 +109,41 @@ requires 'CPAN' => '1.80'; # sudo support # without this beautiful hack my $no_cpanplus_env = !exists $ENV{PERL5_CPANPLUS_IS_RUNNING}; +my $no_cpan_env = !exists $ENV{PERL5_CPAN_IS_RUNNING}; require CPAN; delete $ENV{PERL5_CPANPLUS_IS_RUNNING} if $no_cpanplus_env; +delete $ENV{PERL5_CPAN_IS_RUNNING} if $no_cpan_env; # and make sure that the user doesn't have any existing CPAN config that'll # cause us problems for the next few steps. -require CPAN::HandleConfig; -CPAN::HandleConfig->load; -for my $eumm_setting ( qw/makepl_arg make_install_arg/ ) { - if ($CPAN::Config->{$eumm_setting} =~ /(?:PREFIX|INSTALL_BASE)/) { - die "Possibly invalid config detected in $eumm_setting: " . $CPAN::Config->{$eumm_setting}; +{ + local $@; + eval { require CPAN::HandleConfig; }; + # Need newish CPAN.pm for this, ergo skip it if that version of CPAN isn't + # installed yet. + # It will already be installed by the time we reach here if bootstrapping, + # otherwise, if we're running from CPAN then it will be installed soon + # enough, and we'll come back here.. + if (!$@) { + CPAN::HandleConfig->load; + for my $eumm_setting ( qw/makepl_arg make_install_arg/ ) { + if ($CPAN::Config->{$eumm_setting} =~ /(?:PREFIX|INSTALL_BASE)/) { + die "Possibly invalid config detected in $eumm_setting: " . $CPAN::Config->{$eumm_setting}; + } + } + + for my $mb_setting (qw/mbuild_arg mbuild_install_arg mbuildpl_arg/) { + if ($CPAN::Config->{$mb_setting} =~ /(?:--prefix|--install_base)/) { + die "Possibly invalid config detected in $mb_setting: " . $CPAN::Config->{$mb_setting}; + } + } } -} - -for my $mb_setting (qw/mbuild_arg mbuild_install_arg mbuildpl_arg/) { - if ($CPAN::Config->{$mb_setting} =~ /(?:--prefix|--install_base)/) { - die "Possibly invalid config detected in $mb_setting: " . $CPAN::Config->{$mb_setting}; + else { + my $error = $@; + require CPAN; + # Explode if it looks like requiring CPAN::HandleConfig should + # have worked, but didn't. + die($error) if $CPAN::VERSION >= $required_CPAN; } }