Hi Ralf, Paul,
* Ralf Menzel wrote on Thu, May 26, 2005 at 07:19:06PM CEST:
> Ralf Menzel <[EMAIL PROTECTED]> writes:
> >
> > bash> ../configure > /dev/null ; grep '^SHELL' Makefile
> > SHELL = /bin/bash
> > bash> /bin/bash ../configure > /dev/null ; grep '^SHELL' Makefile
> > SHELL = /bin/sh
> > bash> /bin/sh ../configure > /dev/null ; grep '^SHELL' Makefile
> > SHELL = /bin/bash
>
> I tried to find out what is causing this 'inconsistency'. (Please keep
> in mind that I don't fully understand what I'm doing.) To me it looks
> like the configure script tests if its executing shell is 'compatible
> enough'. If this is not the case it looks for a better shell and
> records its name in CONFIG_SHELL. If the script is happy with the
> executing shell it doesn't touch the variable CONFIG_SHELL. It then
> assigns the variable SHELL the value of CONFIG_SHELL with /bin/sh as
> default.
>
> So, if the shell that executes the configure script is bash the
> varible SHELL will be set to /bin/sh.
This patch addresses the "inconsistency":
| 2005-01-31 Paul Eggert <[EMAIL PROTECTED]>
|
| * doc/autoconf.texi (config.status Invocation): Warn about
| discrepancy between CONFIG_SHELL and shell used to invoke 'configure'.
| * doc/install.texi (Defining Variables): Likewise.
| Based on a proposed patch by Ralf Wildenhues.
*snip*
| --- doc/install.texi 20 Aug 2004 19:58:07 -0000 1.41
| +++ doc/install.texi 29 Jan 2005 14:31:09 -0000
| @@ -226,6 +226,15 @@
| will cause the specified gcc to be used as the C compiler (unless it is
| overridden in the site shell script).
|
| +If you need @command{configure} as well as subsequent scripts like
| [EMAIL PROTECTED] to be executed by a certain shell, then set
| [EMAIL PROTECTED] and use @command{configure} as argument to the
| shell:
| +
| [EMAIL PROTECTED]
| +CONFIG_SHELL=/usr/bin/bash /usr/bin/bash ./configure [...]
| [EMAIL PROTECTED] example
| +
| [EMAIL PROTECTED] Invocation}, for more details.
> It tried the following patch.
>
> --- lib/autoconf/general.m4 24 May 2005 07:32:13 -0000 1.862
> +++ lib/autoconf/general.m4 26 May 2005 17:05:48 -0000
> @@ -398,7 +398,7 @@ cross_compiling=no
> subdirs=
> MFLAGS=
> MAKEFLAGS=
> -AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}])dnl
> +AC_SUBST([SHELL], [${CONFIG_SHELL-${SHELL-/bin/sh}}])dnl
> AC_SUBST([PATH_SEPARATOR])dnl
>
> # Maximum number of lines to put in a shell here document.
> --- snip ---
>
> This helped in my case. So you think it might be useful in general?
I don't think it's correct. SHELL could be /bin/tcsh (and I vaguely
remember a similar discussion before, but cannot find it at the moment).
Moreover, I'm not sure that it won't break Libtool[1].
Regards,
Ralf
[1] Which is not Autoconf's primary problem, sure. But it'd still be
nice to keep an eye on it if possible.