Avoid CPAN config init when just checking values
David Golden [Wed, 5 Jan 2011 11:43:00 +0000 (06:43 -0500)]
This commit keeps Makefile.PL from triggering a
full CPAN configuration initialization just to see
if certain bad configurations exist.  It's sufficient
to load any exist config and check that.

Makefile.PL

index 359446a..11f376c 100644 (file)
@@ -202,25 +202,27 @@ delete $ENV{PERL5_CPAN_IS_RUNNING} if $no_cpan_env;
     # 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 <<"DEATH";
+    if (!$@ ) {
+        CPAN::HandleConfig->require_myconfig_or_config;
+        if ( $CPAN::Config ) {
+            for my $eumm_setting ( qw/makepl_arg make_install_arg/ ) {
+                if ($CPAN::Config->{$eumm_setting} =~ /(?:PREFIX|INSTALL_BASE)/) {
+                    die <<"DEATH";
 WHOA THERE! It looks like you've got $CPAN::Config->{$eumm_setting} set. This is
 known to cause problems with local::lib. Please either remove this setting or
 clear out your .cpan directory.
 DEATH
+                }
             }
-        }
 
-        for my $mb_setting (qw/mbuild_arg mbuild_install_arg mbuildpl_arg/) {
-            if ($CPAN::Config->{$mb_setting} =~ /(?:--prefix|--install_base)/) {
-                die <<"DEATH";
+            for my $mb_setting (qw/mbuild_arg mbuild_install_arg mbuildpl_arg/) {
+                if ($CPAN::Config->{$mb_setting} =~ /(?:--prefix|--install_base)/) {
+                    die <<"DEATH";
 WHOA THERE! It looks like you've got $CPAN::Config->{$mb_setting} set. This is
 known to cause problems with local::lib. Please either remove this setting or
 clear out your .cpan directory.
 DEATH
+                }
             }
         }
     }