From: t0m Date: Tue, 16 Jun 2009 14:29:41 +0000 (+0000) Subject: Fix Makefile.PL if you have really really old CPAN.pm and you're not trying to -... X-Git-Tag: 1.006009~69 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=6d74e2d7e8dd429c0bdf511cbd3249a911135a34;p=p5sagit%2Flocal-lib.git Fix Makefile.PL if you have really really old CPAN.pm and you're not trying to --bootstrap git-svn-id: http://dev.catalyst.perl.org/repos/bast/local-lib/1.000/trunk@6692 bd8105ee-0ff8-0310-8827-fb3f25b6796d --- diff --git a/Changes b/Changes index 98ee953..c2096c9 100644 --- a/Changes +++ b/Changes @@ -1,5 +1,8 @@ Revision history for local::lib + - Stop Makefile.PL exploding if your CPAN is too old to have + CPAN::HandleConfig. Needed when installing local::lib via CPAN + using an old CPAN version (t0m) - Fix warning from Makefile.PL about ExtUtils::MakeMaker::prompt (t0m) - Set PERL5LIB back to calculated @INC with --self-contained, to stop invoking other perl scripts from losing the local::lib if they diff --git a/Makefile.PL b/Makefile.PL index 3dea5bf..d232325 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -99,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 @@ -115,17 +116,34 @@ 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; } }