[Ecls-list] Help needed: autoconf with spaces in names

Michael Wood esiotrot at gmail.com
Sun Oct 3 22:09:16 UTC 2010


On 3 October 2010 22:41, Juan Jose Garcia-Ripoll
<juanjose.garciaripoll at googlemail.com> wrote:
>
>
> On Sun, Oct 3, 2010 at 10:31 PM, Samium Gromoff
> <_deepfire at feelingofgreen.ru> wrote:
>>
>> On Sun, 3 Oct 2010 22:16:21 +0200, Juan Jose Garcia-Ripoll
>> <juanjose.garciaripoll at googlemail.com> wrote:
>> > It seems that "configure" does not work when one of the directories
>> > contains
>> > a space in the name. Is this a known limitation?
>>
>> I have never /ever/ tried to run configure with --prefix having spaces
>> in it.
>>
>> On Linux due to cultural reasons.
>>
>> On Windows -- because MinGW strongly encourages one to install itself at
>> disc:/MinGW, and one would have to be pressed hard to --prefix a package
>> into outside of MinGW's /.
>
> I am not even talking about "prefix", which seems to work fine, but about
> the location of sources. If ECL's source tree is say in "/home/jjgarcia/some
> path/ecl/" then "configure" refuses to run because /bin/bash refuses to
> execute files (config.sub) which are located in paths with spaces. That
> seems like a bug in autoconf to me.
> BTW, the fact that you have not ever done it does not mean that people
> haven't tried and been bitten by it... and complained ;-)

I've just tried with curl, since I have the sources on my machine and
it uses autoconf.  I copied it to '/tmp/some where' and then ran
'./configure --prefix="/tmp/some path"'.

The configure step worked without complaint, as did the compile.
"make install" died, though:

/tmp/some where/curl$ make install
Making install in lib
make[1]: Entering directory `/tmp/some where/curl/lib'
make[2]: Entering directory `/tmp/some where/curl/lib'
test -z "/tmp/some path/lib" || /bin/mkdir -p "/tmp/some path/lib"
 /bin/bash ../libtool   --mode=install /usr/bin/install -c
'libcurl.la' '/tmp/some path/lib/libcurl.la'
libtool: install: /usr/bin/install -c .libs/libcurl.so.4.2.0 /tmp/some
path/lib/libcurl.so.4.2.0
/usr/bin/install: target `path/lib/libcurl.so.4.2.0' is not a directory
make[2]: *** [install-libLTLIBRARIES] Error 1
make[2]: Leaving directory `/tmp/some where/curl/lib'
make[1]: *** [install-am] Error 2
make[1]: Leaving directory `/tmp/some where/curl/lib'
make: *** [install-recursive] Error 1

So it doesn't seem like configure is necessarily broken when there's a
space in the directory containing the source tree.

Then I tried sshguard and there was no problem, even with the install.

This patch gets past the issue with the top level configure:

--- a/configure
+++ b/configure
@@ -34,6 +34,6 @@ if ( echo $* | grep guess-host-cflags ); then
 fi

 cd ${buildir}
-${srcdir}/configure --srcdir=${srcdir} "$@"
+"${srcdir}/configure" --srcdir="${srcdir}" "$@"

 echo Configuration complete. To build ECL, issue 'make' in this directory.

but then you get:

configure: error: cannot run /bin/bash /tmp/some where/ecl/src/gmp/config.sub

I tried for a bit to fix that, but it's past my bed time :)

-- 
Michael Wood <esiotrot at gmail.com>




More information about the ecl-devel mailing list