Skip Menu |

This queue is for tickets about the ExtUtils-MakeMaker CPAN distribution.

Report information
The Basics
Id: 46678
Status: resolved
Priority: 0/
Queue: ExtUtils-MakeMaker

People
Owner: Nobody in particular
Requestors: cberry [...] cpan.org
Cc:
AdminCc:

Bug Information
Severity: Normal
Broken in: 6.52
Fixed in: (no value)



Subject: [PATCH] arch_check.t fails on VMS
After the integration of 6.52 into blead I see: $ perl [-.lib.extutils.t]arch_check.t ok 1 ok 2 ok 3 ok 4 Use of uninitialized value $arch in concatenation (.) or string at ../lib/ExtUtils/MM_Any.pm line 2090. not ok 5 # Failed test at [-.lib.extutils.t]arch_check.t line 57. ok 6 not ok 7 # Failed test at [-.lib.extutils.t]arch_check.t line 72. # got: 'Have # Want \_64\perl1004\lib # Your perl and your Config.pm seem to have different ideas about the # architecture they are running on. # Perl thinks: [] # Config says: [VMS_IA64-ithread] # This may or may not cause problems. Please check your installation of perl # if you have problems building this extension. # ' # expected: '' ok 8 ok 9 1..9 # Looks like you failed 2 tests of 9. %SYSTEM-F-ABORT, abort The first failure is because it is sending an ordinary Unix filespec to arch_check (in the guise of a Win32 filespec with forward slashes) and the first thing the VMS override method does is vmsify it: ExtUtils::MM_VMS::arch_check(../lib/ExtUtils/MM_VMS.pm:1577): 1577: return $self->SUPER::arch_check(map { vmsify($_) } @_); The result later gets passed to File::Spec::Win32::splitpath, which doesn't do very well splitting a native VMS path. But I can't see any reason these paths need to be converted to native syntax, nor any reason that MM_VMS.pm even needs an override for this method, so the attached path removes that override and allows the Win32 test to pass on VMS. N.B. the Win32 override also does an explicit native call to localize the filename, so if there were ever a test that wanted to do a non-Win32 test of some sort, it would fall afoul of an analogous problem. The second failure is just fallout from the first one because STDOUT is not cleared before proceeding. The attached patch does a $stdout->read to clear pending output.
Subject: vms_arch_check.txt
--- lib/ExtUtils/MM_VMS.pm;-0 2009-06-04 10:29:56 -0500 +++ lib/ExtUtils/MM_VMS.pm 2009-06-04 19:20:14 -0500 @@ -1564,20 +1564,6 @@ map_clean : join '', @m; } - -=item arch_check (override) - -vmsify all arguments for consistency - -=cut - -sub arch_check { - my $self = shift; - - return $self->SUPER::arch_check(map { vmsify($_) } @_); -} - - # --- Output postprocessing section --- =item maketext_filter (override) --- lib/ExtUtils/t/arch_check.t;-0 2009-06-04 10:29:56 -0500 +++ lib/ExtUtils/t/arch_check.t 2009-06-04 19:10:41 -0500 @@ -64,6 +64,7 @@ SKIP: { # PERL_SRC is set, no check is done { local $mm->{PERL_SRC} = 1; + $stdout->read; ok $mm->arch_check( $rel2abs->(qw(. t testdata reallylongdirectoryname arch1 Config.pm)), $rel2abs->(qw(. t testdata reallylongdirectoryname arch2 Config.pm)),
Thanks. Fixed as 90ef7949c24edf963d1a105a5da0ed379accebbb It was a mistake to run that test outside of Windows. I wrote it that way so I could check it without firing up a Windows machine. It only gets run on Windows now.