Description: Fix FTBFS when homedirectory of building user is not
 writeable.
Origin: vendor
Bug-Debian: http://bugs.debian.org/609192
Forwarded: no
Author: Salvatore Bonaccorso <carnil@debian.org>
Last-Update: 2011-01-07

--- a/Makefile.PL
+++ b/Makefile.PL
@@ -92,7 +92,8 @@
     my $cpan = $? >> 8;
     my $cpan_command = '';
 
-    system($^X, '-MCPAN', '-e',
+    my $did_cpan_config = 0;
+    my $cpan_config_command =
       'my $done; require ExtUtils::MakeMaker;
        my $orig = ExtUtils::MakeMaker->can("prompt");
        *ExtUtils::MakeMaker::prompt = sub ($;$) {
@@ -121,8 +122,7 @@
          delete @{$CPAN::Config}{keys %$CPAN::Config};
          $CPAN::Config->{urllist} = $save;
          CPAN::Config->init;
-       }'
-    );
+       }';
 
     $ENV{PERL_MM_USE_DEFAULT} = 1;
 
@@ -138,6 +138,8 @@
       $cpan_command .= 'force("install","CPAN"); ';
     }
     if(length $cpan_command) {
+      system($^X, '-MCPAN', '-e', $cpan_config_command);
+      $did_cpan_config++;
       system($^X, '-MCPAN', '-e', $cpan_command);
     }
     if ($cpan) {
@@ -147,6 +149,8 @@
       # 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', $cpan_config_command)
+        unless $did_cpan_config;
       system($^X, '-MCPAN',
         '-e', 
         q[CPAN::HandleConfig->load;],
@@ -200,25 +204,27 @@
     # 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
+                }
             }
         }
     }
