Skip Menu |

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

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

People
Owner: Nobody in particular
Requestors: imacat [...] mail.imacat.idv.tw
Cc:
AdminCc:

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



Subject: Spaces in PREFIX Broken
I found that spaces cannot be contained in the PREFIX and other directories. I was trying to set PREFIX under my Windows XP %USERPROFILE% and found this problem. I attached a simple patch to this issue. This patch has tested to work in Linux, ActivePerl and Cygwin. A complete fix should escape the shall special characters like double quotes ("), slashes (\), etc, when outputing PREFIX, PERLPREFIX, etc.
diff -r -u ExtUtils-MakeMaker-6.28.orig/lib/ExtUtils/MM_Unix.pm ExtUtils-MakeMaker-6.28/lib/ExtUtils/MM_Unix.pm --- ExtUtils-MakeMaker-6.28.orig/lib/ExtUtils/MM_Unix.pm Tue Apr 5 07:32:26 2005 +++ ExtUtils-MakeMaker-6.28/lib/ExtUtils/MM_Unix.pm Sat May 7 22:06:49 2005 @@ -2054,74 +2054,74 @@ pure_perl_install :: $(NOECHO) $(MOD_INSTALL) \ - read }.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \ - write }.$self->catfile('$(DESTINSTALLARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \ - $(INST_LIB) $(DESTINSTALLPRIVLIB) \ - $(INST_ARCHLIB) $(DESTINSTALLARCHLIB) \ - $(INST_BIN) $(DESTINSTALLBIN) \ - $(INST_SCRIPT) $(DESTINSTALLSCRIPT) \ - $(INST_MAN1DIR) $(DESTINSTALLMAN1DIR) \ - $(INST_MAN3DIR) $(DESTINSTALLMAN3DIR) - $(NOECHO) $(WARN_IF_OLD_PACKLIST) \ - }.$self->catdir('$(SITEARCHEXP)','auto','$(FULLEXT)').q{ + read "}.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{" \ + write "}.$self->catfile('$(DESTINSTALLARCHLIB)','auto','$(FULLEXT)','.packlist').q{" \ + $(INST_LIB) "$(DESTINSTALLPRIVLIB)" \ + $(INST_ARCHLIB) "$(DESTINSTALLARCHLIB)" \ + $(INST_BIN) "$(DESTINSTALLBIN)" \ + $(INST_SCRIPT) "$(DESTINSTALLSCRIPT)" \ + $(INST_MAN1DIR) "$(DESTINSTALLMAN1DIR)" \ + $(INST_MAN3DIR) "$(DESTINSTALLMAN3DIR)" + $(NOECHO) "$(WARN_IF_OLD_PACKLIST)" \ + "}.$self->catdir('$(SITEARCHEXP)','auto','$(FULLEXT)').q{" pure_site_install :: $(NOECHO) $(MOD_INSTALL) \ - read }.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{ \ - write }.$self->catfile('$(DESTINSTALLSITEARCH)','auto','$(FULLEXT)','.packlist').q{ \ - $(INST_LIB) $(DESTINSTALLSITELIB) \ - $(INST_ARCHLIB) $(DESTINSTALLSITEARCH) \ - $(INST_BIN) $(DESTINSTALLSITEBIN) \ - $(INST_SCRIPT) $(DESTINSTALLSCRIPT) \ - $(INST_MAN1DIR) $(DESTINSTALLSITEMAN1DIR) \ - $(INST_MAN3DIR) $(DESTINSTALLSITEMAN3DIR) + read "}.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{" \ + write "}.$self->catfile('$(DESTINSTALLSITEARCH)','auto','$(FULLEXT)','.packlist').q{" \ + $(INST_LIB) "$(DESTINSTALLPRIVLIB)" \ + $(INST_ARCHLIB) "$(DESTINSTALLSITEARCH)" \ + $(INST_BIN) "$(DESTINSTALLSITEBIN)" \ + $(INST_SCRIPT) "$(DESTINSTALLSCRIPT)" \ + $(INST_MAN1DIR) "$(DESTINSTALLSITEMAN1DIR)" \ + $(INST_MAN3DIR) "$(DESTINSTALLSITEMAN3DIR)" $(NOECHO) $(WARN_IF_OLD_PACKLIST) \ - }.$self->catdir('$(PERL_ARCHLIB)','auto','$(FULLEXT)').q{ + "}.$self->catdir('$(PERL_ARCHLIB)','auto','$(FULLEXT)').q{" pure_vendor_install :: $(NOECHO) $(MOD_INSTALL) \ read }.$self->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').q{ \ write }.$self->catfile('$(DESTINSTALLVENDORARCH)','auto','$(FULLEXT)','.packlist').q{ \ - $(INST_LIB) $(DESTINSTALLVENDORLIB) \ - $(INST_ARCHLIB) $(DESTINSTALLVENDORARCH) \ - $(INST_BIN) $(DESTINSTALLVENDORBIN) \ - $(INST_SCRIPT) $(DESTINSTALLSCRIPT) \ - $(INST_MAN1DIR) $(DESTINSTALLVENDORMAN1DIR) \ - $(INST_MAN3DIR) $(DESTINSTALLVENDORMAN3DIR) + $(INST_LIB) "$(DESTINSTALLVENDORLIB)" \ + $(INST_ARCHLIB) "$(DESTINSTALLVENDORARCH)" \ + $(INST_BIN) "$(DESTINSTALLVENDORBIN)" \ + $(INST_SCRIPT) "$(DESTINSTALLSCRIPT)" \ + $(INST_MAN1DIR) "$(DESTINSTALLVENDORMAN1DIR)" \ + $(INST_MAN3DIR) "$(DESTINSTALLVENDORMAN3DIR)" doc_perl_install :: $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod - -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB) + -$(NOECHO) $(MKPATH) "$(DESTINSTALLARCHLIB)" -$(NOECHO) $(DOC_INSTALL) \ "Module" "$(NAME)" \ "installed into" "$(INSTALLPRIVLIB)" \ LINKTYPE "$(LINKTYPE)" \ VERSION "$(VERSION)" \ EXE_FILES "$(EXE_FILES)" \ - >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{ + >> "}.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{" doc_site_install :: $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod - -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB) + -$(NOECHO) $(MKPATH) "$(DESTINSTALLARCHLIB)" -$(NOECHO) $(DOC_INSTALL) \ "Module" "$(NAME)" \ "installed into" "$(INSTALLSITELIB)" \ LINKTYPE "$(LINKTYPE)" \ VERSION "$(VERSION)" \ EXE_FILES "$(EXE_FILES)" \ - >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{ + >> "}.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{" doc_vendor_install :: $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod - -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB) + -$(NOECHO) $(MKPATH) "$(DESTINSTALLARCHLIB)" -$(NOECHO) $(DOC_INSTALL) \ "Module" "$(NAME)" \ "installed into" "$(INSTALLVENDORLIB)" \ LINKTYPE "$(LINKTYPE)" \ VERSION "$(VERSION)" \ EXE_FILES "$(EXE_FILES)" \ - >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{ + >> "}.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{" }; @@ -2130,13 +2130,13 @@ $(NOECHO) $(NOOP) uninstall_from_perldirs :: - $(NOECHO) $(UNINSTALL) }.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{ + $(NOECHO) $(UNINSTALL) "}.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{" uninstall_from_sitedirs :: - $(NOECHO) $(UNINSTALL) }.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{ + $(NOECHO) $(UNINSTALL) "}.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{" uninstall_from_vendordirs :: - $(NOECHO) $(UNINSTALL) }.$self->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').q{ + $(NOECHO) $(UNINSTALL) "}.$self->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').q{" }; join("",@m);
From: imacat [...] mail.imacat.idv.tw
Sorry that the previous patch has some typo. Here is the fixed patch that corrected the error. ^^;
diff -u -r ExtUtils-MakeMaker-6.28.orig/lib/ExtUtils/MM_Unix.pm ExtUtils-MakeMaker-6.28/lib/ExtUtils/MM_Unix.pm --- ExtUtils-MakeMaker-6.28.orig/lib/ExtUtils/MM_Unix.pm Tue Apr 5 07:32:26 2005 +++ ExtUtils-MakeMaker-6.28/lib/ExtUtils/MM_Unix.pm Mon May 9 06:18:50 2005 @@ -2054,74 +2054,74 @@ pure_perl_install :: $(NOECHO) $(MOD_INSTALL) \ - read }.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \ - write }.$self->catfile('$(DESTINSTALLARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \ - $(INST_LIB) $(DESTINSTALLPRIVLIB) \ - $(INST_ARCHLIB) $(DESTINSTALLARCHLIB) \ - $(INST_BIN) $(DESTINSTALLBIN) \ - $(INST_SCRIPT) $(DESTINSTALLSCRIPT) \ - $(INST_MAN1DIR) $(DESTINSTALLMAN1DIR) \ - $(INST_MAN3DIR) $(DESTINSTALLMAN3DIR) + read "}.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{" \ + write "}.$self->catfile('$(DESTINSTALLARCHLIB)','auto','$(FULLEXT)','.packlist').q{" \ + $(INST_LIB) "$(DESTINSTALLPRIVLIB)" \ + $(INST_ARCHLIB) "$(DESTINSTALLARCHLIB)" \ + $(INST_BIN) "$(DESTINSTALLBIN)" \ + $(INST_SCRIPT) "$(DESTINSTALLSCRIPT)" \ + $(INST_MAN1DIR) "$(DESTINSTALLMAN1DIR)" \ + $(INST_MAN3DIR) "$(DESTINSTALLMAN3DIR)" $(NOECHO) $(WARN_IF_OLD_PACKLIST) \ - }.$self->catdir('$(SITEARCHEXP)','auto','$(FULLEXT)').q{ + "}.$self->catdir('$(SITEARCHEXP)','auto','$(FULLEXT)').q{" pure_site_install :: $(NOECHO) $(MOD_INSTALL) \ - read }.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{ \ - write }.$self->catfile('$(DESTINSTALLSITEARCH)','auto','$(FULLEXT)','.packlist').q{ \ - $(INST_LIB) $(DESTINSTALLSITELIB) \ - $(INST_ARCHLIB) $(DESTINSTALLSITEARCH) \ - $(INST_BIN) $(DESTINSTALLSITEBIN) \ - $(INST_SCRIPT) $(DESTINSTALLSCRIPT) \ - $(INST_MAN1DIR) $(DESTINSTALLSITEMAN1DIR) \ - $(INST_MAN3DIR) $(DESTINSTALLSITEMAN3DIR) + read "}.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{" \ + write "}.$self->catfile('$(DESTINSTALLSITEARCH)','auto','$(FULLEXT)','.packlist').q{" \ + $(INST_LIB) "$(DESTINSTALLPRIVLIB)" \ + $(INST_ARCHLIB) "$(DESTINSTALLSITEARCH)" \ + $(INST_BIN) "$(DESTINSTALLSITEBIN)" \ + $(INST_SCRIPT) "$(DESTINSTALLSCRIPT)" \ + $(INST_MAN1DIR) "$(DESTINSTALLSITEMAN1DIR)" \ + $(INST_MAN3DIR) "$(DESTINSTALLSITEMAN3DIR)" $(NOECHO) $(WARN_IF_OLD_PACKLIST) \ - }.$self->catdir('$(PERL_ARCHLIB)','auto','$(FULLEXT)').q{ + "}.$self->catdir('$(PERL_ARCHLIB)','auto','$(FULLEXT)').q{" pure_vendor_install :: $(NOECHO) $(MOD_INSTALL) \ read }.$self->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').q{ \ write }.$self->catfile('$(DESTINSTALLVENDORARCH)','auto','$(FULLEXT)','.packlist').q{ \ - $(INST_LIB) $(DESTINSTALLVENDORLIB) \ - $(INST_ARCHLIB) $(DESTINSTALLVENDORARCH) \ - $(INST_BIN) $(DESTINSTALLVENDORBIN) \ - $(INST_SCRIPT) $(DESTINSTALLSCRIPT) \ - $(INST_MAN1DIR) $(DESTINSTALLVENDORMAN1DIR) \ - $(INST_MAN3DIR) $(DESTINSTALLVENDORMAN3DIR) + $(INST_LIB) "$(DESTINSTALLVENDORLIB)" \ + $(INST_ARCHLIB) "$(DESTINSTALLVENDORARCH)" \ + $(INST_BIN) "$(DESTINSTALLVENDORBIN)" \ + $(INST_SCRIPT) "$(DESTINSTALLSCRIPT)" \ + $(INST_MAN1DIR) "$(DESTINSTALLVENDORMAN1DIR)" \ + $(INST_MAN3DIR) "$(DESTINSTALLVENDORMAN3DIR)" doc_perl_install :: $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod - -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB) + -$(NOECHO) $(MKPATH) "$(DESTINSTALLARCHLIB)" -$(NOECHO) $(DOC_INSTALL) \ "Module" "$(NAME)" \ "installed into" "$(INSTALLPRIVLIB)" \ LINKTYPE "$(LINKTYPE)" \ VERSION "$(VERSION)" \ EXE_FILES "$(EXE_FILES)" \ - >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{ + >> "}.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{" doc_site_install :: $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod - -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB) + -$(NOECHO) $(MKPATH) "$(DESTINSTALLARCHLIB)" -$(NOECHO) $(DOC_INSTALL) \ "Module" "$(NAME)" \ "installed into" "$(INSTALLSITELIB)" \ LINKTYPE "$(LINKTYPE)" \ VERSION "$(VERSION)" \ EXE_FILES "$(EXE_FILES)" \ - >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{ + >> "}.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{" doc_vendor_install :: $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod - -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB) + -$(NOECHO) $(MKPATH) "$(DESTINSTALLARCHLIB)" -$(NOECHO) $(DOC_INSTALL) \ "Module" "$(NAME)" \ "installed into" "$(INSTALLVENDORLIB)" \ LINKTYPE "$(LINKTYPE)" \ VERSION "$(VERSION)" \ EXE_FILES "$(EXE_FILES)" \ - >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{ + >> "}.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{" }; @@ -2130,13 +2130,13 @@ $(NOECHO) $(NOOP) uninstall_from_perldirs :: - $(NOECHO) $(UNINSTALL) }.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{ + $(NOECHO) $(UNINSTALL) "}.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{" uninstall_from_sitedirs :: - $(NOECHO) $(UNINSTALL) }.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{ + $(NOECHO) $(UNINSTALL) "}.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{" uninstall_from_vendordirs :: - $(NOECHO) $(UNINSTALL) }.$self->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').q{ + $(NOECHO) $(UNINSTALL) "}.$self->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').q{" }; join("",@m);
Subject: 3rd Patch to Fix Spaces in PREFIX
From: imacat
Sorry that I found another typo in my previous patch. Please use this one and retire the previous 2 patches. This patch is required to deal with things like: "PREFIX=C:\Document and Settings\user\Application Data" PREFIX="/cygdrive/c/Document and Settings/user/Application Data" Please tell me if there is any problem. Thank you.
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 diff -r -u ExtUtils-MakeMaker-6.30.orig/lib/ExtUtils/MM_Unix.pm ExtUtils-MakeMaker-6.30/lib/ExtUtils/MM_Unix.pm - --- ExtUtils-MakeMaker-6.30.orig/lib/ExtUtils/MM_Unix.pm Sat May 21 07:05:33 2005 +++ ExtUtils-MakeMaker-6.30/lib/ExtUtils/MM_Unix.pm Sun May 22 18:00:30 2005 @@ -2055,74 +2055,74 @@ pure_perl_install :: $(NOECHO) $(MOD_INSTALL) \ - - read }.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \ - - write }.$self->catfile('$(DESTINSTALLARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \ - - $(INST_LIB) $(DESTINSTALLPRIVLIB) \ - - $(INST_ARCHLIB) $(DESTINSTALLARCHLIB) \ - - $(INST_BIN) $(DESTINSTALLBIN) \ - - $(INST_SCRIPT) $(DESTINSTALLSCRIPT) \ - - $(INST_MAN1DIR) $(DESTINSTALLMAN1DIR) \ - - $(INST_MAN3DIR) $(DESTINSTALLMAN3DIR) + read "}.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{" \ + write "}.$self->catfile('$(DESTINSTALLARCHLIB)','auto','$(FULLEXT)','.packlist').q{" \ + $(INST_LIB) "$(DESTINSTALLPRIVLIB)" \ + $(INST_ARCHLIB) "$(DESTINSTALLARCHLIB)" \ + $(INST_BIN) "$(DESTINSTALLBIN)" \ + $(INST_SCRIPT) "$(DESTINSTALLSCRIPT)" \ + $(INST_MAN1DIR) "$(DESTINSTALLMAN1DIR)" \ + $(INST_MAN3DIR) "$(DESTINSTALLMAN3DIR)" $(NOECHO) $(WARN_IF_OLD_PACKLIST) \ - - }.$self->catdir('$(SITEARCHEXP)','auto','$(FULLEXT)').q{ + "}.$self->catdir('$(SITEARCHEXP)','auto','$(FULLEXT)').q{" pure_site_install :: $(NOECHO) $(MOD_INSTALL) \ - - read }.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{ \ - - write }.$self->catfile('$(DESTINSTALLSITEARCH)','auto','$(FULLEXT)','.packlist').q{ \ - - $(INST_LIB) $(DESTINSTALLSITELIB) \ - - $(INST_ARCHLIB) $(DESTINSTALLSITEARCH) \ - - $(INST_BIN) $(DESTINSTALLSITEBIN) \ - - $(INST_SCRIPT) $(DESTINSTALLSCRIPT) \ - - $(INST_MAN1DIR) $(DESTINSTALLSITEMAN1DIR) \ - - $(INST_MAN3DIR) $(DESTINSTALLSITEMAN3DIR) + read "}.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{" \ + write "}.$self->catfile('$(DESTINSTALLSITEARCH)','auto','$(FULLEXT)','.packlist').q{" \ + $(INST_LIB) "$(DESTINSTALLSITELIB)" \ + $(INST_ARCHLIB) "$(DESTINSTALLSITEARCH)" \ + $(INST_BIN) "$(DESTINSTALLSITEBIN)" \ + $(INST_SCRIPT) "$(DESTINSTALLSCRIPT)" \ + $(INST_MAN1DIR) "$(DESTINSTALLSITEMAN1DIR)" \ + $(INST_MAN3DIR) "$(DESTINSTALLSITEMAN3DIR)" $(NOECHO) $(WARN_IF_OLD_PACKLIST) \ - - }.$self->catdir('$(PERL_ARCHLIB)','auto','$(FULLEXT)').q{ + "}.$self->catdir('$(PERL_ARCHLIB)','auto','$(FULLEXT)').q{" pure_vendor_install :: $(NOECHO) $(MOD_INSTALL) \ read }.$self->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').q{ \ write }.$self->catfile('$(DESTINSTALLVENDORARCH)','auto','$(FULLEXT)','.packlist').q{ \ - - $(INST_LIB) $(DESTINSTALLVENDORLIB) \ - - $(INST_ARCHLIB) $(DESTINSTALLVENDORARCH) \ - - $(INST_BIN) $(DESTINSTALLVENDORBIN) \ - - $(INST_SCRIPT) $(DESTINSTALLSCRIPT) \ - - $(INST_MAN1DIR) $(DESTINSTALLVENDORMAN1DIR) \ - - $(INST_MAN3DIR) $(DESTINSTALLVENDORMAN3DIR) + $(INST_LIB) "$(DESTINSTALLVENDORLIB)" \ + $(INST_ARCHLIB) "$(DESTINSTALLVENDORARCH)" \ + $(INST_BIN) "$(DESTINSTALLVENDORBIN)" \ + $(INST_SCRIPT) "$(DESTINSTALLSCRIPT)" \ + $(INST_MAN1DIR) "$(DESTINSTALLVENDORMAN1DIR)" \ + $(INST_MAN3DIR) "$(DESTINSTALLVENDORMAN3DIR)" doc_perl_install :: $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod - - -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB) + -$(NOECHO) $(MKPATH) "$(DESTINSTALLARCHLIB)" -$(NOECHO) $(DOC_INSTALL) \ "Module" "$(NAME)" \ "installed into" "$(INSTALLPRIVLIB)" \ LINKTYPE "$(LINKTYPE)" \ VERSION "$(VERSION)" \ EXE_FILES "$(EXE_FILES)" \ - - >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{ + >> "}.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{" doc_site_install :: $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod - - -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB) + -$(NOECHO) $(MKPATH) "$(DESTINSTALLARCHLIB)" -$(NOECHO) $(DOC_INSTALL) \ "Module" "$(NAME)" \ "installed into" "$(INSTALLSITELIB)" \ LINKTYPE "$(LINKTYPE)" \ VERSION "$(VERSION)" \ EXE_FILES "$(EXE_FILES)" \ - - >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{ + >> "}.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{" doc_vendor_install :: $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod - - -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB) + -$(NOECHO) $(MKPATH) "$(DESTINSTALLARCHLIB)" -$(NOECHO) $(DOC_INSTALL) \ "Module" "$(NAME)" \ "installed into" "$(INSTALLVENDORLIB)" \ LINKTYPE "$(LINKTYPE)" \ VERSION "$(VERSION)" \ EXE_FILES "$(EXE_FILES)" \ - - >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{ + >> "}.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{" }; @@ -2131,13 +2131,13 @@ $(NOECHO) $(NOOP) uninstall_from_perldirs :: - - $(NOECHO) $(UNINSTALL) }.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{ + $(NOECHO) $(UNINSTALL) "}.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{" uninstall_from_sitedirs :: - - $(NOECHO) $(UNINSTALL) }.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{ + $(NOECHO) $(UNINSTALL) "}.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{" uninstall_from_vendordirs :: - - $(NOECHO) $(UNINSTALL) }.$self->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').q{ + $(NOECHO) $(UNINSTALL) "}.$self->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').q{" }; join("",@m); -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.1 (GNU/Linux) iD8DBQFCw3d6i9gubzC5S1wRAiPxAKCc8PEjzSGPFb/AahWvGy8KDf9SVQCeLwRc 8iJUUO2tAnL3NWEg9iwlCsk= =KgB2 -----END PGP SIGNATURE-----
Date: Wed, 29 Jun 2005 23:18:03 -0700
From: Michael G Schwern <schwern [...] pobox.com>
To: via RT <bug-ExtUtils-MakeMaker [...] rt.cpan.org>
CC: undisclosed-recipients: ;
Subject: Re: [cpan #12713] 3rd Patch to Fix Spaces in PREFIX
RT-Send-Cc:
On Thu, Jun 30, 2005 at 12:48:13AM -0400, via RT wrote: Show quoted text
> Please tell me if there is any problem. Thank you.
All of the patches appear to be mangled. diff -r -u ExtUtils-MakeMaker-6.30.orig/lib/ExtUtils/MM_Unix.pm ExtUtils-MakeMak er-6.30/lib/ExtUtils/MM_Unix.pm - --- ExtUtils-MakeMaker-6.30.orig/lib/ExtUtils/MM_Unix.pm Sat May 21 07:05 :33 2005 +++ ExtUtils-MakeMaker-6.30/lib/ExtUtils/MM_Unix.pm Sun May 22 18:00:30 2005 @@ -2055,74 +2055,74 @@ pure_perl_install :: $(NOECHO) $(MOD_INSTALL) \ - - read }.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.pa cklist').q{ \ - - write }.$self->catfile('$(DESTINSTALLARCHLIB)','auto','$(FULLEXT )','.packlist').q{ \ - - $(INST_LIB) $(DESTINSTALLPRIVLIB) \ ...etc... -- Michael G Schwern schwern@pobox.com http://www.pobox.com/~schwern 'All anyone gets in a mirror is themselves,' she said. 'But what you gets in a good gumbo is everything.' -- "Witches Abroad" by Terry Prachett
Date: Wed, 29 Jun 2005 23:32:52 -0700
From: Michael G Schwern <schwern [...] pobox.com>
To: via RT <bug-ExtUtils-MakeMaker [...] rt.cpan.org>
CC: undisclosed-recipients: ;
Subject: Re: [cpan #12713] 3rd Patch to Fix Spaces in PREFIX
RT-Send-Cc:
On Thu, Jun 30, 2005 at 12:48:13AM -0400, via RT wrote: Show quoted text
> Sorry that I found another typo in my previous patch. Please use this > one and retire the previous 2 patches. This patch is required to deal > with things like: > > "PREFIX=C:\Document and Settings\user\Application Data" > PREFIX="/cygdrive/c/Document and Settings/user/Application Data"
Technical issues asside, the worry that I have with a patch like this is scope. At the moment paths with spaces in them are just right out, the code doesn't handle them. If we make a special case for PREFIX what about other paths used? And how much of the code is covered? I'm open to convincing that PREFIX and DESTDIR are worth special casing because of the ubiquity of paths with spaces in them on Windows but its been an open issue for quite some time. Otherwise the technical problem with the patch is that " is not the safe quote character on all platforms. It is on Windows but on Unix " will evaluate special characters. ' is the Unix quote character equivalent to " on Windows. 0 ~/Downloads$ echo "$PWD" /Users/schwern/Downloads 0 ~/Downloads$ echo '$PWD' $PWD And then there's the matter of what to do with a path which contains a quote. There's an existing method to do all this, quote_literal(). The problem then is altering the code to use quote_literal() makes this a much more invasive patch. To avoid this, rather than quote the paths when they are used perhaps the better approach is to quote them when they are declared, not when they are used. PREFIX = 'foo bar' This greatly reduces the amount of code change as most macro declarations are encapsulated in MM_Unix->constants. It also means you can escape all the paths used in MakeMaker rather than just the special case of PREFIX. I would very much like to see that. -- Michael G Schwern schwern@pobox.com http://www.pobox.com/~schwern Don't try the paranormal until you know what's normal. -- "Lords and Ladies" by Terry Prachett
Dear Michael, Sorry if you receive multiple copies of this message. I'm not familiar with this rt system yet. ^^; I'm a little flattered to receive your reply so fast. ^^; Thank you. [schwern@pobox.com - Thu Jun 30 02:32:35 2005]: Show quoted text
> I'm open to convincing that PREFIX and DESTDIR are worth special > casing > because of the ubiquity of paths with spaces in them on Windows but > its > been an open issue for quite some time.
Maybe I mislead the subject. This patch apply to all the DESTDIR, PREFIX, INST_ARCHLIB, INST_LIB... etc. This patch does not fix the PREFIX definitions, but the install_* targets. I wrote that subject only for better understanding. Show quoted text
> Otherwise the technical problem with the patch is that " is not the > safe quote > character on all platforms. It is on Windows but on Unix " will > evaluate > special characters. ' is the Unix quote character equivalent to " on > Windows. > > 0 ~/Downloads$ echo "$PWD" > /Users/schwern/Downloads > 0 ~/Downloads$ echo '$PWD' > $PWD > > And then there's the matter of what to do with a path which contains a > quote.
I'm aware of this problem. But it's still better than nothing, the current situation, where passing spaces as the PREFIX, DESTDIR is not working at all. Argument quoting rules are shell-specific. I know cmd.exe on MSWin32 does not accept "C:\Program Files\Perl\bin"\perl.exe, but only "C:\Program Files\Perl\bin\perl.exe". Maybe bash, tcsh, ash, zsh, ksh are the same? I don't know. That's why even though I'm aware of that problem, I have no idea how to solve it. A simple quotation is the best I can do at this time. If you preferred, I would like to follow this issue further. But right now I sincerely do not wish this issue to prevent this patch, since it does help a lot in the real world situation. Show quoted text
> There's an existing method to do all this, quote_literal(). The > problem then > is altering the code to use quote_literal() makes this a much more > invasive > patch. To avoid this, rather than quote the paths when they are used > perhaps > the better approach is to quote them when they are declared, not when > they are used. > > PREFIX = 'foo bar' > > This greatly reduces the amount of code change as most macro > declarations > are encapsulated in MM_Unix->constants. It also means you can escape > all the paths used in MakeMaker rather than just the special case of > PREFIX. > I would very much like to see that.
I have tried this, but failed. The problem is that cmd.exe on MSWin32 only accepts "C:\Document and Settings\user\Application Data\lib\5.8.7" but not "C:\Document and Settings\user\Application Data"\lib\5.8.7 An argument has to be quoted entirely for cmd.exe, but not partially. Arguments are not gluable. I have to quote the result, but not the definition. And MM_Win32::install() inherits from MM_Unix::instal(). Unless you want to write a seperate MM_Win32::install(), which I think is a more difficult approach. Thank you, again, for your quick reply.
I claim this is now obsolete since a) duplicate of RT-448; b) hopefully fixed in https://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker/pull/105