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

Reply via email to