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)),