Yesterday Peter Prymmer reported that installing extensions on VMS would not install all the necessary files. I hadn't noticed this because installperl does the heavy lifting for all the core extensions, but I have now confirmed and fixed the problem. The root cause was that ExtUtils::Install::install() needs to get its list of files to install as a space-separated list but it was getting them with line breaks interspersed and was ignoring all lines except the first. The line breaks were caused by the use of the $(ECHO) macro to create a temporary file that is later read by install(); $(ECHO) is based on C<perl -le>, which of course creates a new line on every print statement. The attached patch gets things working again.
There was also some gobbledygook in the realclean target caused by overzealous use of MM_VMS::fixpath().
The patch is against [EMAIL PROTECTED]
--- lib/ExtUtils/MM_VMS.pm;-0 Thu Jun 19 10:42:46 2003
+++ lib/ExtUtils/MM_VMS.pm Sat Jul 5 00:01:45 2003
@@ -1377,7 +1377,6 @@
my $line = '';
foreach $file (@files) {
- $file = $self->fixpath($file);
if (length($line) + length($file) > 80 || ++$fcnt >= 2) {
push @m, "\t\$(RM_F) $line\n";
$line = "$file";
@@ -1532,12 +1531,12 @@
pure_perl_install ::
$(NOECHO) $(PERLRUN) "-MFile::Spec" -e "print 'read
'.File::Spec->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').' '" >.MM_tmp
$(NOECHO) $(PERLRUN) "-MFile::Spec" -e "print 'write
'.File::Spec->catfile('$(INSTALLARCHLIB)','auto','$(FULLEXT)','.packlist').' '"
>>.MM_tmp
- $(NOECHO) $(ECHO) "$(INST_LIB) $(INSTALLPRIVLIB) " >>.MM_tmp
- $(NOECHO) $(ECHO) "$(INST_ARCHLIB) $(INSTALLARCHLIB) " >>.MM_tmp
- $(NOECHO) $(ECHO) "$(INST_BIN) $(INSTALLBIN) " >>.MM_tmp
- $(NOECHO) $(ECHO) "$(INST_SCRIPT) $(INSTALLSCRIPT) " >>.MM_tmp
- $(NOECHO) $(ECHO) "$(INST_MAN1DIR) $(INSTALLMAN1DIR) " >>.MM_tmp
- $(NOECHO) $(ECHO) "$(INST_MAN3DIR) $(INSTALLMAN3DIR) " >>.MM_tmp
+ $(NOECHO) $(PERLRUN) -e "print '$(INST_LIB) $(INSTALLPRIVLIB) ';" >>.MM_tmp
+ $(NOECHO) $(PERLRUN) -e "print '$(INST_ARCHLIB) $(INSTALLARCHLIB) ';" >>.MM_tmp
+ $(NOECHO) $(PERLRUN) -e "print '$(INST_BIN) $(INSTALLBIN) ';" >>.MM_tmp
+ $(NOECHO) $(PERLRUN) -e "print '$(INST_SCRIPT) $(INSTALLSCRIPT) ';" >>.MM_tmp
+ $(NOECHO) $(PERLRUN) -e "print '$(INST_MAN1DIR) $(INSTALLMAN1DIR) ';" >>.MM_tmp
+ $(NOECHO) $(PERLRUN) -e "print '$(INST_MAN3DIR) $(INSTALLMAN3DIR) ';" >>.MM_tmp
$(NOECHO) $(MOD_INSTALL) <.MM_tmp
$(NOECHO) $(RM_F) .MM_tmp
$(NOECHO) $(WARN_IF_OLD_PACKLIST)
].$self->catfile($self->{SITEARCHEXP},'auto',$self->{FULLEXT},'.packlist').q[
@@ -1546,12 +1545,12 @@
pure_site_install ::
$(NOECHO) $(PERLRUN) "-MFile::Spec" -e "print 'read
'.File::Spec->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').' '" >.MM_tmp
$(NOECHO) $(PERLRUN) "-MFile::Spec" -e "print 'write
'.File::Spec->catfile('$(INSTALLSITEARCH)','auto','$(FULLEXT)','.packlist').' '"
>>.MM_tmp
- $(NOECHO) $(ECHO) "$(INST_LIB) $(INSTALLSITELIB) " >>.MM_tmp
- $(NOECHO) $(ECHO) "$(INST_ARCHLIB) $(INSTALLSITEARCH) " >>.MM_tmp
- $(NOECHO) $(ECHO) "$(INST_BIN) $(INSTALLSITEBIN) " >>.MM_tmp
- $(NOECHO) $(ECHO) "$(INST_SCRIPT) $(INSTALLSCRIPT) " >>.MM_tmp
- $(NOECHO) $(ECHO) "$(INST_MAN1DIR) $(INSTALLSITEMAN1DIR) " >>.MM_tmp
- $(NOECHO) $(ECHO) "$(INST_MAN3DIR) $(INSTALLSITEMAN3DIR) " >>.MM_tmp
+ $(NOECHO) $(PERLRUN) -e "print '$(INST_LIB) $(INSTALLSITELIB) ';" >>.MM_tmp
+ $(NOECHO) $(PERLRUN) -e "print '$(INST_ARCHLIB) $(INSTALLSITEARCH) ';"
>>.MM_tmp
+ $(NOECHO) $(PERLRUN) -e "print '$(INST_BIN) $(INSTALLSITEBIN) ';" >>.MM_tmp
+ $(NOECHO) $(PERLRUN) -e "print '$(INST_SCRIPT) $(INSTALLSCRIPT) ';" >>.MM_tmp
+ $(NOECHO) $(PERLRUN) -e "print '$(INST_MAN1DIR) $(INSTALLSITEMAN1DIR) ';"
>>.MM_tmp
+ $(NOECHO) $(PERLRUN) -e "print '$(INST_MAN3DIR) $(INSTALLSITEMAN3DIR) ';"
>>.MM_tmp
$(NOECHO) $(MOD_INSTALL) <.MM_tmp
$(NOECHO) $(RM_F) .MM_tmp
$(NOECHO) $(WARN_IF_OLD_PACKLIST)
].$self->catfile($self->{PERL_ARCHLIB},'auto',$self->{FULLEXT},'.packlist').q[
@@ -1559,12 +1558,12 @@
pure_vendor_install ::
$(NOECHO) $(PERLRUN) "-MFile::Spec" -e "print 'read
'.File::Spec->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').' '" >.MM_tmp
$(NOECHO) $(PERLRUN) "-MFile::Spec" -e "print 'write
'.File::Spec->catfile('$(INSTALLVENDORARCH)','auto','$(FULLEXT)','.packlist').' '"
>>.MM_tmp
- $(NOECHO) $(ECHO) "$(INST_LIB) $(INSTALLVENDORLIB) " >>.MM_tmp
- $(NOECHO) $(ECHO) "$(INST_ARCHLIB) $(INSTALLVENDORARCH) " >>.MM_tmp
- $(NOECHO) $(ECHO) "$(INST_BIN) $(INSTALLVENDORBIN) " >>.MM_tmp
- $(NOECHO) $(ECHO) "$(INST_SCRIPT) $(INSTALLSCRIPT) " >>.MM_tmp
- $(NOECHO) $(ECHO) "$(INST_MAN1DIR) $(INSTALLVENDORMAN1DIR) " >>.MM_tmp
- $(NOECHO) $(ECHO) "$(INST_MAN3DIR) $(INSTALLVENDORMAN3DIR) " >>.MM_tmp
+ $(NOECHO) $(PERLRUN) -e "print '$(INST_LIB) $(INSTALLVENDORLIB) ';" >>.MM_tmp
+ $(NOECHO) $(PERLRUN) -e "print '$(INST_ARCHLIB) $(INSTALLVENDORARCH) ';"
>>.MM_tmp
+ $(NOECHO) $(PERLRUN) -e "print '$(INST_BIN) $(INSTALLVENDORBIN) ';" >>.MM_tmp
+ $(NOECHO) $(PERLRUN) -e "print '$(INST_SCRIPT) $(INSTALLSCRIPT) ';" >>.MM_tmp
+ $(NOECHO) $(PERLRUN) -e "print '$(INST_MAN1DIR) $(INSTALLVENDORMAN1DIR) ';"
>>.MM_tmp
+ $(NOECHO) $(PERLRUN) -e "print '$(INST_MAN3DIR) $(INSTALLVENDORMAN3DIR) ';"
>>.MM_tmp
$(NOECHO) $(MOD_INSTALL) <.MM_tmp
$(NOECHO) $(RM_F) .MM_tmp
@@ -1572,8 +1571,8 @@
doc_perl_install ::
$(NOECHO) $(ECHO) "Appending installation info to
].$self->catfile($self->{INSTALLARCHLIB}, 'perllocal.pod').q["
$(NOECHO) $(MKPATH) $(INSTALLARCHLIB)
- $(NOECHO) $(ECHO) "installed into|$(INSTALLPRIVLIB)|" >.MM_tmp
- $(NOECHO) $(ECHO)
"LINKTYPE|$(LINKTYPE)|VERSION|$(VERSION)|EXE_FILES|$(EXE_FILES) " >>.MM_tmp
+ $(NOECHO) $(PERLRUN) -e "print 'installed into|$(INSTALLPRIVLIB)|';" >.MM_tmp
+ $(NOECHO) $(PERLRUN) -e "print
'LINKTYPE|$(LINKTYPE)|VERSION|$(VERSION)|EXE_FILES|$(EXE_FILES) ';" >>.MM_tmp
],@exe_files,
q[ $(NOECHO) $(DOC_INSTALL) "Module" "$(NAME)" <.MM_tmp
>>].$self->catfile($self->{INSTALLARCHLIB},'perllocal.pod').q[
$(NOECHO) $(RM_F) .MM_tmp
@@ -1582,8 +1581,8 @@
doc_site_install ::
$(NOECHO) $(ECHO) "Appending installation info to
].$self->catfile($self->{INSTALLSITEARCH}, 'perllocal.pod').q["
$(NOECHO) $(MKPATH) $(INSTALLSITEARCH)
- $(NOECHO) $(ECHO) "installed into|$(INSTALLSITELIB)|" >.MM_tmp
- $(NOECHO) $(ECHO)
"LINKTYPE|$(LINKTYPE)|VERSION|$(VERSION)|EXE_FILES|$(EXE_FILES) " >>.MM_tmp
+ $(NOECHO) $(PERLRUN) -e "print 'installed into|$(INSTALLSITELIB)|';" >.MM_tmp
+ $(NOECHO) $(PERLRUN) -e "print
'LINKTYPE|$(LINKTYPE)|VERSION|$(VERSION)|EXE_FILES|$(EXE_FILES) ';" >>.MM_tmp
],@exe_files,
q[ $(NOECHO) $(DOC_INSTALL) "Module" "$(NAME)" <.MM_tmp
>>].$self->catfile($self->{INSTALLSITEARCH},'perllocal.pod').q[
$(NOECHO) $(RM_F) .MM_tmp
@@ -1591,8 +1590,8 @@
doc_vendor_install ::
$(NOECHO) $(ECHO) "Appending installation info to
].$self->catfile($self->{INSTALLVENDORARCH}, 'perllocal.pod').q["
$(NOECHO) $(MKPATH) $(INSTALLVENDORARCH)
- $(NOECHO) $(ECHO) "installed into|$(INSTALLVENDORLIB)|" >.MM_tmp
- $(NOECHO) $(ECHO)
"LINKTYPE|$(LINKTYPE)|VERSION|$(VERSION)|EXE_FILES|$(EXE_FILES) " >>.MM_tmp
+ $(NOECHO) $(PERLRUN) -e "print 'installed into|$(INSTALLVENDORLIB)|';" >.MM_tmp
+ $(NOECHO) $(PERLRUN) -e "print
'LINKTYPE|$(LINKTYPE)|VERSION|$(VERSION)|EXE_FILES|$(EXE_FILES) ';" >>.MM_tmp
],@exe_files,
q[ $(NOECHO) $(DOC_INSTALL) "Module" "$(NAME)" <.MM_tmp
>>].$self->catfile($self->{INSTALLVENDORARCH},'perllocal.pod').q[
$(NOECHO) $(RM_F) .MM_tmp
