X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=Makefile.PL;h=acb2ffb34bc2bd59905b013d8b75b3ad6f2a0ae5;hb=d2185901086d0c8c4f171f3b70f1715517b6f2e2;hp=6604eb2fac086e1f4a3c8cf5531fdea9cc43ff2b;hpb=53699c992388febac03ba5b9b967e935bebafd17;p=p5sagit%2Flocal-lib.git diff --git a/Makefile.PL b/Makefile.PL index 6604eb2..acb2ffb 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -2,7 +2,7 @@ use strict; use warnings; use File::Spec; use Cwd; -use vars qw($bootstrapping $bootstrapping_args); +use vars qw($bootstrapping $bootstrapping_args $no_manpages); use Config; my $cwd; @@ -27,6 +27,10 @@ DEATH if (my ($x) = grep { /^--bootstrap(?:=.*)?$/ } @ARGV) { @ARGV = grep { !/^--bootstrap(?:=.*)?$/ } @ARGV; $bootstrapping = 1; + if(my ($x) = grep { /^--no-manpages/ } @ARGV) { + $no_manpages = 1; + @ARGV = grep { !/^--no-manpages/ } @ARGV; + } my ($path) = $x =~ /^--bootstrap(?:=(.*))?$/; my @args = $path ? $path : (); @@ -46,14 +50,17 @@ DEATH system($^X, '-MExtUtils::MakeMaker 6.31', '-e1'); my $eumm = $? >> 8; - system($^X, '-MCPAN 1.80', '-e1'); + system($^X, '-MExtUtils::Install 1.43', '-e1'); + my $eui = $? >> 8; + + system($^X, '-MCPAN 1.82', '-e1'); my $cpan = $? >> 8; my $cpan_command = ''; 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"; @@ -76,6 +83,9 @@ DEATH if ($eumm) { # non-zero exit $cpan_command .= 'force("install","ExtUtils::MakeMaker"); '; } + if ($eui) { + $cpan_command .= 'install("ExtUtils::Install"); '; + } if ($cpan) { $cpan_command .= 'force("install","CPAN"); '; } @@ -85,6 +95,23 @@ DEATH if ($cpan) { system($^X, '-MCPAN', '-e', 'CPAN::Config->load; CPAN::Config->commit;'); } + if($no_manpages) { + # if we call this code directly, the changes get written to + # $BOOTSTRAP/lib/perl5/CPAN/Config.pm, not where the user expects them to + # be in their ~/.cpan/CPAN/MyConfig.pm. + system($^X, '-MCPAN', + '-e', + q[CPAN::HandleConfig->load;], + '-e', + q[$CPAN::Config->{makepl_arg} = ] . + q['INSTALLMAN1DIR=none INSTALLMAN3DIR=none';], + '-e', + q[$CPAN::Config->{buildpl_arg} = ] . + q['--install_path libdoc="" --install_path bindoc=""';], + '-e', + q[CPAN::Config->commit;], + ); + } chdir($cwd); } @@ -96,10 +123,12 @@ name 'local-lib'; all_from 'lib/local/lib.pm'; requires 'ExtUtils::MakeMaker' => '6.31'; # version INSTALL_BASE was added +requires 'ExtUtils::Install' => '1.43'; # ditto 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.82'; +requires 'CPAN' => $required_CPAN; # sudo support + CPAN::HandleConfig # No, really. See # https://rt.cpan.org/Public/Bug/Display.html?id=23735 @@ -115,17 +144,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; } }