The patch at the end of this message repairs a VMS-only problem with file
lists passed to Extutils::MakeMaker::WriteMakeFile(). The bug is
reproducible with the following dummy Makefile.PL, greatly whittled down
from XML::Parser where it originally showed up:
### begin dummy Makefile.PL
use ExtUtils::MakeMaker;
WriteMakefile(
NAME => 'FOO::Bar',
C => ['foo.c', 'subdir/bar.c'],
OBJECT => '$(O_FILES)'
);
### end dummy Makefile.PL
Before the patch, the following lines appear in the generated makefile:
OBJECT = [.foo_obj subdir]bar.obj
LDFROM = [.foo_obj subdir]bar.obj
but after the patch the same Makefile.PL properly generates:
OBJECT = foo.obj [.subdir]bar.obj
LDFROM = foo.obj [.subdir]bar.obj
A similar patch was sent in for 5.005_57 or thereabouts, but the changes
were lost when duplicate methods in ExtUtils::MM_VMS and File::Spec::VMS
were consolidated later in the development of 5.6.0. Here's the patch:
--- lib/File/Spec/VMS.pm;-0 Tue Mar 21 02:55:48 2000
+++ lib/File/Spec/VMS.pm Wed May 10 16:15:01 2000
@@ -37,7 +37,7 @@
my($self,$path) = @_;
return '' unless $path;
$self = {} unless ref $self;
- my($npath) = unixify($path);
+ my($npath) = join(' ', map(unixify($_), split(/\s+/, $path)));
my($complex) = 0;
my($head,$macro,$tail);
@@ -88,10 +88,10 @@
if ($path =~ m#^\$\([^\)]+\)\z#s || $path =~ m#[/:>\]]#) {
if ($force_path or $path =~ /(?:DIR\)|\])\z/) {
- $fixedpath = vmspath($self->eliminate_macros($path));
+ $fixedpath = join(' ', map(vmspath($_),split(/\s+/,
+$self->eliminate_macros($path))));
}
else {
- $fixedpath = vmsify($self->eliminate_macros($path));
+ $fixedpath = join(' ', map(vmsify($_),split(/\s+/,
+$self->eliminate_macros($path))));
}
}
elsif ((($prefix,$name) = ($path =~ m#^\$\(([^\)]+)\)(.+)#s)) &&
$self->{$prefix}) {
[End of Patch.]
_______________________________________________
Craig A. Berry
mailto:[EMAIL PROTECTED]