Subject: Re: Cygwin's libtool problem with directory that contains white spaces
From: Ralf Wildenhues <[email-masked]>
To: Jean-Philippe Barrette-LaPierre <[email-masked]>
Cc: [email-masked], [email-masked]
Date: Tue, 22 Mar 2005 10:50:42 +0100

Hi Jean-Philippe,

* Jean-Philippe Barrette-LaPierre wrote on Mon, Mar 21, 2005 at 06:31:14PM CET:
> I'm experiencing problems with libtool 1.5.10 on Cygwin. I'm trying to 
> compile a project in:
> 
> /home/Jean-Philippe\ Barret/project/curlpp
> 
> In the 'examples' subdirectory, this problem occurs:

*snip*
> /bin/bash ../libtool --silent --mode=link --tag=CXX g++ -I../ -g  -W -Wall -Werror   -I/usr/local/include -g  -W -Wall -Werror   -I/usr/local/include -L../curlpp/ -lcurlpp -static  -o example01.exe  example01.o  -lstdc++ -L/usr/local/lib -lcurl -lssl -lcrypto -lgdi32 -lwinmm -lz
> libtool: link: cannot find the library `'
*snip*

> I investigated the problem and when I call libtool with --debug like 
> this (in the "examples" subdirectory):
> 
> $ /bin/bash ../libtool --debug --silent --mode=link --tag=CXX g++ -I../ -g  -W -Wall -Werror   -I/usr/local/include -g  -W -Wall -Werror -I/usr/local/include -L../curlpp/ -lcurlpp -static  -o example01.exe  example01.o  -lstdc++ -L/usr/local/lib -lcurl -lssl -lcrypto -lgdi32 -lwinmm -lz
> 
> here's the output:
*snip*

> If you take a look at this line (last 10 lines):
> + deplibs=-L/home/Jean-Philippe
> 
> you can see that this is not correct. It didn't expanded the 
> "-L/home/Jean-Philippe Barret/curlpp/curlpp"
> ("-L../curlpp" on the libtool call) correctly. We should have this line 
> instead:
> 
> + deplibs=-L/home/Jean-Philippe Barret/curlpp/curlpp

No, that is not correct either.  How would you distinguish between
two separate arguments if not by a space?

Hint: we'd need to do quoting here.  (Plus, the bug happens earlier.)

> So, it seems that it doesn't handle correctly a directory with white 
> spaces. I tried with a directory without any whitespace, and it worked 
> perfectly.

Yes.  This is a problem, and I can understand that it is
frustrating, but the facts that the shell uses white space as
argument delimiter, plus people love spaces in path names, are an
unfortunate combination.  What's more is, that this problem is very
hard to solve in a shell libtool.  I'm not saying it's impossible,
it _is_ possible, but it would be a _lot_ of work, and some backwards
incompatibilities.

What I'm trying to say is it's much much easier to just not use white
space in path names.  If you can't avoid them per se, you might be able
to use the old-style name (something like jean-p~1 or so) or create a
link (symlink or hardlink -- IIRC one of them works on cygwin) for the
directory with a different name.

So, in your case (with appropriate permissions):
  cd /home
  mv 'Jean-Philippe Barret' Jean-Philippe
  ln -s Jean-Philippe 'Jean-Philippe Barret'

I would, by the way, have strong doubts about whether other unixy tools
cope with spaces in $HOME.

Regards,
Ralf

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/