Michael Schwern wrote in response to me:
!I missed your response to this. My answer is: because there's no need
for
!it to be. During the build process we control the name of the perl
!executable. Once perl has been installed, we get the name of the perl
Indeed we do control the name of the perl binary.
On VMS without usevmsdebug the names are MINIPERL.EXE;1
and PERL.EXE;1. With usevmsdebug the names are
MINIPERL.EXE;1, DBGPERL.EXE;1, and NDBGPERL.EXE;1.
!Once perl has been installed, we get the name of the perl
!executable from $^X. Actually, during the build process we should be
getting
The name ndbgperl.exe never was checked for an installed
usevmsdebug PERL_ROOT.
!the name of the perl executable from $^X. Is $^X not getting set
!properly? Is lib/File/Spec/t/rel2abs2rel.t working? That relies on $^X.
If I turn on C<$trace = 2;> inside of MM_VMS.pm::find_perl() it
seems that it prefers miniperl.exe and then the s/miniperl/perl/i
turns miniperl.exe into perl.exe (even though there is no perl.exe
file in a usevmsdebug build of perl). lib/File/Spec/t/rel2abs2rel.t
will work OK if I have set default'ed to an absolute path, but it
will fail if I have set defaulted to a rooted logical named path.
That could be a problem with $^X. Note that for an installed
usevmsdebug NDBGPERL.EXE it is run from PERL_ROOT which is a
rooted logical name.
!If so then there's a deeper problem with the init_PERL/find_perl logic.
!
!Or is this all to work around the dubious "find miniperl" logic?
!
! # Define 'FULLPERL' to be a non-miniperl (used in test: target)
! ($self->{FULLPERL} = $self->{PERL}) =~ s/miniperl/perl/i
! unless $self->{FULLPERL};
The second portion of my patch addresses this problem and changing the
regular expression substitution to C<s/miniperl/${ndbg}perl/i> is what
allows the
regression tests to pass. If I omit that substitution but retain the push
of the name
'ndbgperl' onto the @perls stack then MakeMaker can set the FULLPERL macro
properly in a descrip.mms for a CPAN module being built against an
installed
usevmsdebug PERL_ROOT.
Have I explained the patch adequately?
Peter Prymmer