Explicitly set the location of cpanp-run-perl when under PERL_CORE
Jos Boumans [Tue, 6 Apr 2010 21:19:08 +0000 (22:19 +0100)]
    CPANPLUS::Config checks 3 specific scenarios first
    when looking for cpanp-run-perl: parallel to cpanp,
    parallel to CPANPLUS.pm, or installed into a custom
    prefix like /tmp/foo. Only *THEN* does it check the
    the path.
    If the perl core is extracted to a directory that has
    cpanp-run-perl installed the same amount of 'uplevels'
    as the /tmp/foo prefix, we'll pull in the wrong script
    by accident.
    Since we set the path to cpanp-run-perl explicitily
    at the top of this script, it's best to update the config
    ourselves with a path lookup, rather than rely on its
    heuristics. Thanks to David Wheeler, Josh Jore and Vincent
    Pit for helping to track this down.

Effects both CPANPLUS and CPANPLUS-Dist-Build

cpan/CPANPLUS-Dist-Build/t/inc/conf.pl
cpan/CPANPLUS/t/inc/conf.pl

index f8268b1..a104eb9 100644 (file)
@@ -187,6 +187,24 @@ sub gimme_conf {
         }
     }
 
+    ### CPANPLUS::Config checks 3 specific scenarios first
+    ### when looking for cpanp-run-perl: parallel to cpanp,
+    ### parallel to CPANPLUS.pm, or installed into a custom
+    ### prefix like /tmp/foo. Only *THEN* does it check the
+    ### the path.
+    ### If the perl core is extracted to a directory that has
+    ### cpanp-run-perl installed the same amount of 'uplevels'
+    ### as the /tmp/foo prefix, we'll pull in the wrong script
+    ### by accident.
+    ### Since we set the path to cpanp-run-perl explicitily
+    ### at the top of this script, it's best to update the config
+    ### ourselves with a path lookup, rather than rely on its
+    ### heuristics. Thanks to David Wheeler, Josh Jore and Vincent
+    ### Pit for helping to track this down.
+    if( $ENV{PERL_CORE} ) {
+        $conf->set_program( "perlwrapper" => IPC::Cmd::can_run('cpanp-run-perl') );
+    }
+
     $conf->set_conf( source_engine =>  $ENV{CPANPLUS_SOURCE_ENGINE} )
         if $ENV{CPANPLUS_SOURCE_ENGINE};
     
index 1287ec9..4f6c3d6 100644 (file)
@@ -150,6 +150,24 @@ sub gimme_conf {
         }
     }
 
+    ### CPANPLUS::Config checks 3 specific scenarios first
+    ### when looking for cpanp-run-perl: parallel to cpanp,
+    ### parallel to CPANPLUS.pm, or installed into a custom
+    ### prefix like /tmp/foo. Only *THEN* does it check the
+    ### the path.
+    ### If the perl core is extracted to a directory that has
+    ### cpanp-run-perl installed the same amount of 'uplevels'
+    ### as the /tmp/foo prefix, we'll pull in the wrong script
+    ### by accident.
+    ### Since we set the path to cpanp-run-perl explicitily
+    ### at the top of this script, it's best to update the config
+    ### ourselves with a path lookup, rather than rely on its
+    ### heuristics. Thanks to David Wheeler, Josh Jore and Vincent
+    ### Pit for helping to track this down.
+    if( $ENV{PERL_CORE} ) {
+        $conf->set_program( "perlwrapper" => IPC::Cmd::can_run('cpanp-run-perl') );
+    }
+
     $conf->set_conf( source_engine =>  $ENV{CPANPLUS_SOURCE_ENGINE} )
         if $ENV{CPANPLUS_SOURCE_ENGINE};