[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: autoconf 2.52f and OS/2
From: |
Tim Van Holder |
Subject: |
Re: autoconf 2.52f and OS/2 |
Date: |
Sat, 26 Jan 2002 18:34:11 +0100 |
Sorry for not respoding more quickly:
> I've just tested autoconf 2.52f with OS/2. There are two
> problems I want to mention. The first one (PATH_SEPARATOR)
> should be obvious, the second one (#! $SHELL) can become
> a problem if $SHELL refers to a not sh compatible shell.
> In my opinion it would be better to define $SHELL
> _before_ using it, e.g.:
> SHELL=${CONFIG_SHELL-/bin/sh}
> --- old/autoconf-2.52f/lib/m4sugar/m4sh.m4 Fri Nov 2
> 16:10:56 2001
> +++ gnu/autoconf-2.52f/lib/m4sugar/m4sh.m4 Sun Dec 16
> 00:29:34 2001
> @@ -502,7 +502,7 @@
> fi
> case $CONFIG_SHELL in
> '')
> - _AS_PATH_WALK([/bin:/usr/bin:$PATH],
> + _AS_PATH_WALK([/bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH],
> [for as_base in sh bash ksh sh5; do
> case $as_dir in
> /*)
If this change is needed, you might as well use
[\\/]* | ?:[\\/]*)
to detect absolute paths, instead of '/*)'.
> @@ -579,7 +579,7 @@
> m4_defun([_AS_PATH_SEPARATOR_PREPARE],
> [# The user is always right.
> if test "${PATH_SEPARATOR+set}" != set; then
> - echo "#! $SHELL" >conftest.sh
> + echo "#! /bin/sh" >conftest.sh
> echo "exit 0" >>conftest.sh
> chmod +x conftest.sh
> if (PATH=".;."; conftest.sh) >/dev/null 2>&1; then
This breaks the check on DJGPP; if /bin/sh is used, the
test never detects the ';'; it needs $SHELL(*).
While using PATH_SEPARATOR=: isn't harmful for configure
(as DJGPP's bash transforms PATH to match PATH_SEPARATOR),
it does break make rules that use @PATH_SEPARATOR@, as
the environment won't have PATH_SEPARATOR set to ':' and
therefore path searches won't work as expected.
In any case, if anything goes wrong with the test due to
a bad shell, it will detect ':', which will very likely be
the correct result. On DOSish systems, which is what this
test is intended for, '/bin/sh' is much more likely to fail
than $SHELL. If the problem is that SHELL might not be set,
then ${SHELL-/bin/sh} would solve that better. And if SHELL
is not a Unixy shell, than that is a user error IMHO.
Andreas, what exactly was the problem on OS/2? What is SHELL
set to (and is this a user setting, or forced by the OS)?
(*) This might be a shell bug (IIRC we are supposed to emulate
/bin paths for #!), and has been reported as such to our
bash maintainer, but that doesn't really matter for the
purpose of this discussion.