From: apeiron Date: Fri, 22 May 2009 01:21:33 +0000 (+0000) Subject: Clean up CPAN.pm's environment variable the same way we do for CPANPLUS. Add an X-Git-Tag: 1.006009~77 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=p5sagit%2Flocal-lib.git;a=commitdiff_plain;h=9a021b2b54372f72e6c17f3add625c94b2bb5a98 Clean up CPAN.pm's environment variable the same way we do for CPANPLUS. Add an example program showing local::lib employed programmatically (confound). Add the beginnings of a troubleshooting section (pattern). git-svn-id: http://dev.catalyst.perl.org/repos/bast/local-lib/1.000/trunk@6365 bd8105ee-0ff8-0310-8827-fb3f25b6796d --- diff --git a/Changes b/Changes index fbe6031..2efe8eb 100644 --- a/Changes +++ b/Changes @@ -1,5 +1,12 @@ Revision history for local::lib +1.004001 2009-05-21 + - Clean up CPAN.pm's environment variable the same way we do for + CPANPLUS. Add an example program showing local::lib employed + programmatically (confound). + + - Add the beginnings of a troubleshooting section (pattern). + 1.004000 2009-05-14 - Don't allow dangerous settings for CPAN.pm that affect where CPAN installs stuff, as this conflicts with what we're trying to do. diff --git a/Makefile.PL b/Makefile.PL index 2714a0d..7575db0 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -107,8 +107,10 @@ 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. diff --git a/eg/scripted_install.pl b/eg/scripted_install.pl new file mode 100644 index 0000000..b62c865 --- /dev/null +++ b/eg/scripted_install.pl @@ -0,0 +1,19 @@ +#!/usr/bin/perl +# contributed by hdp@cpan.org + +use strict; +use warnings; +use CPAN; +use Cwd; +use File::Spec; +my $target = Cwd::abs_path($ENV{TARGET}) + or die "set \$ENV{TARGET} to your desired local::lib dir\n"; + +my $mod = CPAN::Shell->expand(Module => "local::lib"); +$mod->get; +my $dir = CPAN::Shell->expand(Distribution => $mod->cpan_file)->dir; +chdir($dir); +my $make = $CPAN::Config->{make}; +system($^X, 'Makefile.PL',"--bootstrap=$target") && exit 1; +system($make, 'test') && exit 1; +system($make, 'install') && exit 1; diff --git a/lib/local/lib.pm b/lib/local/lib.pm index 6ed8a3f..6c629c1 100644 --- a/lib/local/lib.pm +++ b/lib/local/lib.pm @@ -11,7 +11,7 @@ use File::Path (); use Carp (); use Config; -our $VERSION = '1.004000'; # 1.4.0 +our $VERSION = '1.004001'; # 1.4.1 sub import { my ($class, @args) = @_; @@ -586,6 +586,22 @@ Should probably auto-fixup CPAN config if not already done. Patches very much welcome for any of the above. +=head1 TROUBLESHOOTING + +If you've configured local::lib to install CPAN modules somewhere in to your +home directory, and at some point later you try to install a module with C, but it fails with an error like: C and buried within the install log is an +error saying C<'INSTALL_BASE' is not a known MakeMaker parameter name>, then +you've somehow lost your updated ExtUtils::MakeMaker module. + +To remedy this situation, rerun the bootstrapping procedure documented above. + +Then, run C + +Finally, re-run C and it should install without problems. + =head1 ENVIRONMENT =over 4 @@ -614,8 +630,13 @@ Doc patches for a custom local::lib directory contributed by Torsten Raudssus . Hans Dieter Pearcey sent in some additional tests for ensuring -things will install properly, and furthermore submitted a fix for the bug -causing problems with writing Makefiles during bootstrapping. Many thanks! +things will install properly, submitted a fix for the bug causing problems with +writing Makefiles during bootstrapping, contributed an example program, and +submitted yet another fix to ensure that local::lib can install and bootstrap +properly. Many, many thanks! + +pattern of Freenode IRC contributed the beginnings of the Troubleshooting +section. Many thanks! =head1 LICENSE