develooper Front page | perl.vmsperl | Postings from December 2001

Re: [PATCH lib/ExtUtils/] miniperl found before perl?

Thread Previous | Thread Next
Craig A. Berry
December 16, 2001 22:24
Re: [PATCH lib/ExtUtils/] miniperl found before perl?
Message ID:
At 5:53 PM -0500 12/16/01, Michael G Schwern wrote:
>I just recently tried to install a module (Test::Harness 2.00) using
>bleadperl on VMS and noticed it was using miniperl.  bleadperl's
> doesn't define a miniperl symbol, but I had one left
>over from 5.005_03 and it was pointing there.  So the build choked
>when it tried to use the 5.006 only ExtUtils::Installed with a
>5.005_03 miniperl.
>So, there's two things going on here.
>    1) Why is MakeMaker looking for miniperl?

Hmm.  There is no miniperl installed with 5.005_03 (or later) in any
installation I've looked at, nor have I found any version of Perl on
VMS that defines miniperl as a symbol (it's always invoked directly
during the core build).  Do you see something from the command C<SHOW

Perhaps your PERL_ROOT logical name points to a 5.005_03 build
directory (or possibly such a directory is in your path).  But that
should only happen if you were running Makefile.PL with 5.005_03.
Were you?

I have successfully built and installed the extension against a
bleadperl build directory tree, and though there were a number of
test failures, I had no trouble getting it to build and install, and
miniperl was never selected by find_perl even though it exists in the
directory PERL_ROOT points to.

>    2) Should define it?

I don't think so.  I don't believe there is anything that has reason
to use miniperl that doesn't also know how to invoke it directly.

>I think the answer to #1 is "because it needs it when building the
>core".  That can be made more elegant by only looking for miniperl if
>PERL_CORE is set.  I can fix it in ExtUtils::MM_Unix (patch below),

I don't have any objections to this patch.  Did it do you any good?

>but somebody else is going to have to fix this in MM_VMS:

Hmm.   I'd be willing to take a look if I had something I could reproduce.

>    # Check miniperl before perl, and check names likely to contain
>    # version numbers before "generic" names, so we pick up an
>    # executable that's less likely to be from an old installation.
>    @snames = sort { my($ba) = $a =~ m!([^:>\]/]+)$!;  # basename
>                     my($bb) = $b =~ m!([^:>\]/]+)$!;
>                     my($ahasdir) = (length($a) - length($ba) > 0);
>                     my($bhasdir) = (length($b) - length($bb) > 0);
>                     if    ($ahasdir and not $bhasdir) { return 1; }
>                     elsif ($bhasdir and not $ahasdir) { return -1; }
>                     else { $bb =~ /\d/ <=> $ba =~ /\d/
>                            or substr($ba,0,1) cmp substr($bb,0,1)
>                            or length($bb) <=> length($ba) } } @$names;

Craig A. Berry

"... getting out of a sonnet is much more
 difficult than getting in."
                 Brad Leithauser

Thread Previous | Thread Next Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About