Patch 13140, at least on Linux, changed $^X to be always an absolute
path:

/usr/sources/perl/repoperls/perl-5.7.2@13139% ./miniperl -le 'print $^X'
../miniperl

/usr/sources/perl/repoperls/perl-5.7.2@13140% ./miniperl -le 'print $^X'
/usr/sources/perl/repoperls/perl-5.7.2@13140/miniperl

This has the unfortunate side effect on MakeMaker's init_PERL method,
that all Makefiles below ext now contain the absolute path to miniperl
in the PERL variable. This is a bug. We must not have absolute paths
in Makefiles for PERL and FULLPERL.

I suppose the bug has not been discovered yet because it only
manifests itself if you move the source around.

The following patch fixes the problem for me (tested):

--- perl-5.8.0@17791-moved/lib/ExtUtils/MM_Unix.pm@17791        Thu Aug 29 11:31:34 
2002
+++ perl-5.8.0@17791-moved/lib/ExtUtils/MM_Unix.pm      Thu Aug 29 11:34:11 2002
@@ -2145,6 +2145,7 @@ sub init_PERL {
     # core.  Otherwise its a last resort.
     my $miniperl = "miniperl$Config{exe_ext}";
     if( $self->{PERL_CORE} ) {
+        $perls[0] = File::Spec->abs2rel($perls[0]);
         splice @perls, 1, 0, $miniperl;
     }
     else {


I'm sure there will be other ways to fix it, but that's the first that
came to my mind. I hope it has no negative side effects.

-- 
andreas

Reply via email to