Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 09 Mar 2008 18:13:59 -0400
From:      Chuck Robey <chuckr@chuckr.org>
To:        Mike Meyer <mwm-keyword-freebsdhackers2.e313df@mired.org>
Cc:        hackers@freebsd.org
Subject:   Re: Why doesn't autoconf like our /bin/sh?
Message-ID:  <47D46127.2030802@chuckr.org>
In-Reply-To: <20080309152712.42752293@bhuda.mired.org>
References:  <20080309152712.42752293@bhuda.mired.org>

next in thread | previous in thread | raw e-mail | index | archive | help
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Mike Meyer wrote:
> I've stumbled on to an obscure problem with autoconf 2.61, and I'm not
> sure quite what to do with it. I've already sent mail to the autoconf
> folks, but I'd like to understand what's going on.
> 
> The problem is that, on a FreeBSD system with only /bin/sh and the
> ports zsh as installed shells, if you have SHELL set to zsh when
> invoking the autoconf-generated configure script, the script produces
> a broken Makefile. It doesn't generate an error, it just complains
> that:
> 
> as_func_failure succeeded.
> as_func_failure succeeded.
> No shell found that supports shell functions.
> Please tell autoconf@gnu.org about your system,
> including any error possibly output before this
> message
> 
> and then runs to completion, with no other indication of an error, and
> non in the config.log file either. This has happened on multiple
> different FreeBSD systems (including both 6-STABLE and 7-RELEASE), on
> multiple autoconf scripts (possibly from multiple versions of
> autoconf).
> 
> Installing bash (or presumably any of the other shells that the
> configure script looks for) changes this, and it works fine. Setting
> SHELL to /bin/sh, or unsetting it, also solves this.
> 
> And of course, if you build from ports, SHELL gets set to /bin/sh, so
> there isn't a problem at all (which probably has a lot to do with why
> I never noticed it before - the ports systems pretty much covers most
> of my needs).
> 
> From poking at things it seems that autoconf isn't happy with /bin/sh
> for some reason, even though it works. With SHELL set to zsh, it then
> tries that - and again isn't happy. However, it's not so unhappy that
> it fails completely, so it tries to run with whatever shell it tried
> last.
> 
> My question is, why doesn't the configure script just accept /bin/sh?
> After all, it's going to work. Is there an autoconf person who knows
> this one?
> 

The top of the configure script I just inspected (the one from
print/libxslt) called out, on the top line:

#!/bin/sh

and so, as long as you do have a real shell there (which you have to have)
should really work, BUT I know, from past experience, that many, many
Linuxers, when told that their script doesn't work with any shell but Bash,
will just tell you "but why don't you run Bash?" as if no  one should ever
run any other shell.  I went to far, back when I ran Gentoo, to try to fix
some broken scripts wrt non-bash usage, but no one really cared to fix that
kind of thing.  It's not going to be a proboem with configure, but it's
possible that soome script called by configure is setting it's own shell.
Configure probably needs, way up at the top, something like "export
SHELL=/bin/sh" but don't hold your breath, and if Linuxers gave it a try,
they'd probably want to peg it to bash, and that'd cause worse problems,
because Linux and FreeBSD store bash in a different places.

But if you're considering some holy war to try to convince Linux folks to
correct this, DING DING, let me off at the next stop, please.

>      Thanks,
>      <mike

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.4 (FreeBSD)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFH1GEnz62J6PPcoOkRAjiMAJ9NfsAKek+9Kjn+nY8cSrhwA1u1MgCeIry3
/T4m3hgOGlA3r2mgrj2Y8W4=
=aJDf
-----END PGP SIGNATURE-----



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?47D46127.2030802>