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