On 4/13/05, Michael G Schwern <[EMAIL PROTECTED]> wrote: > On Wed, Apr 13, 2005 at 09:21:48AM +0100, Steve Hay wrote: > > Michael G Schwern wrote: > > > > >http://www.pobox.com/~schwern/src/ExtUtils-MakeMaker-6.28.tar.gz > > > > > Any ideas how to fix the current problems in bleadperl on Win32?: > > http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2005-04/msg00216.html > > > > The problems seem to have crept in in version 6.25_07: If I manually > > run the basic.t and installbase.t tests in that version in a command > > prompt that doesn't have my perl "bin" directory on the PATH then both > > tests fail in the same way as is happening in bleadperl. The same two > > tests run in the same way work OK in version 6.25_06. > > The pl2bat problem is the result of this: > > $self->{FIXIN} ||= $self->{PERL_CORE} ? > '$(PERLRUN) ../../win32/bin/pl2bat.pl' : > 'pl2bat.bat'; > > Which assumes that things are being run from exactly two levels below the > perl source directory such as ext/Foo/. This hard coded assumption had > not shown up before because prior to 6.25_07 there were not tests which > involved executables. Now there is.
I looked into this and the line in question doesnt seem to be directly at fault, as the times where the error occurs $self->{PERL_CORE} is set to 0 despite $ENV{PERL_CORE} being set to 1. I figured out how to fix that, and then the error you meant popped up. The attached patch resolves the issue with a hack that works fine for win32 but might cause problems with winCE. > So pl2bat needs to be modularized, something which should have happened > a long time ago anyway. Nothing fancy, just something along the lines > of Pod::Html would be fine... a functional version of the command line > interface. It could live, for now, in ExtUtils::Command::MM and if > someone wants to turn it into a real, public module they're welcome to. > Theres a minor issue that the /wince branch has its own copy. -- perl -Mre=debug -e "/just|another|perl|hacker/"
diff -ur cblead\lib\ExtUtils/MM_Unix.pm blead\lib\ExtUtils/MM_Unix.pm --- cblead\lib\ExtUtils/MM_Unix.pm 2005-04-07 10:36:27.000000000 +0200 +++ blead\lib\ExtUtils/MM_Unix.pm 2005-04-17 18:12:43.093750000 +0200 @@ -1921,7 +1921,7 @@ } # Are we building the core? - $self->{PERL_CORE} = 0 unless exists $self->{PERL_CORE}; + $self->{PERL_CORE} = $ENV{PERL_CORE} unless exists $self->{PERL_CORE}; # How do we run perl? foreach my $perl (qw(PERL FULLPERL ABSPERL)) { diff -ur cblead\lib\ExtUtils/MM_Win32.pm blead\lib\ExtUtils/MM_Win32.pm --- cblead\lib\ExtUtils/MM_Win32.pm 2005-04-07 10:36:27.000000000 +0200 +++ blead\lib\ExtUtils/MM_Win32.pm 2005-04-17 21:26:08.984375000 +0200 @@ -167,10 +167,18 @@ $self->{TEST_F} ||= '$(ABSPERLRUN) -MExtUtils::Command -e test_f'; $self->{DEV_NULL} ||= '> NUL'; - $self->{FIXIN} ||= $self->{PERL_CORE} ? - '$(PERLRUN) ../../win32/bin/pl2bat.pl' : - 'pl2bat.bat'; - + if ($self->{PERL_CORE}) { + my $file=$^X; + unless ($file=~s!perl\.exe!win32/bin/pl2bat.pl!i and -e $file ) { + require Cwd; + require Carp; + Carp::croak "Can't find pl2bat! cwd:",Cwd::cwd(),"\texe:\t$^X"; + } + $self->{FIXIN} ||= '$(PERLRUN) '.$file; + } else { + $self->{FIXIN} ||= 'pl2bat.bat'; + } + $self->{LD} ||= $Config{ld} || 'link'; $self->{AR} ||= $Config{ar} || 'lib';