Windows expert needed on this one (Re: '()' escaped to '\(\)' is breaking my build)

Michael G Schwern <[email protected]> Thu, 17 Dec 2009 13:52:09 -0800
Newsgroups gmane.comp.lang.perl.modules.extutils-makemaker.devel
Message-ID <[email protected]>
Dave Anderson wrote:
 > I attached a .zip of Makefile.PL, Makefile, and error.txt which is text
 > from my command prompt.

Thanks.

Poking through the code, the quoting is done by 
ExtUtils::MM_Unix->quote_paren() which pretty much just applies it to 
everything in the const_config section.  Its been doing that since before I 
have history.  There's no special cases in it for Windows.

The simple fix would be to use the platform specific quote_literal() instead 
of the generic quote_paren().  quote_literal() would have to be fixed to guard 
against parens as necessary.

Here's the problem, two problems.  First, Windows has a lot of different 
quoting rules.  They seem to go by what variant of make you're using and maybe 
particular version of Windows.  I'm no expert.  I'm not sure if its really 
safe to let parens go unescaped in general.

Then there's that the macros in const_config are going to be used by a lot of 
things, so there's a potentially large downstream impact of this change.  It 
could break a lot of things.  I don't want to do that at this point in 
MakeMaker's maturity.

Blarf.  Normally I'd say "don't use a directory with parens in it" but that 
directory seems to be some standard Windows 2000 thing.  I also see more than 
a few tools choke on it.

Can you write your module with Module::Build instead?  That will be much 
better suited to dealing with weird characters, since its not trying to write 
out in nine different formats.

A work around for you would be to use replace quote_paren() with 
$self->quote_literal() in MM_Unix->const_config().

Sorry I don't have a better answer.


PS  Don't send HTML mail to technical mailing lists, its a great source of 
flame wars.

-- 
101. I am not allowed to mount a bayonet on a crew-served weapon.
     -- The 213 Things Skippy Is No Longer Allowed To Do In The U.S. Army
            http://skippyslist.com/list/