configure script uses parameter substring extensively. It is Posix shell feature. Original Bourne shell does not have such features. Some systems still ships such shells as /bin/sh (for compatibility reasons -- shell scripts written on those platforms are expected to work in 1990's systems...)
To tackle this situation the beginning of configure attemts to do a silent parameter substitution in a subshell; in case this fails the subshell exits with nonzero value which is easy to detect. The || constructs are used twice. The first one is used as Bourne shell chokes on 'if ! ... ' construct (and if ...; then :; else do_things; fi looks stupid). The second one(liner) takes care of the possible future 'set -eu' in the beginning of this script. --- This patch obsoletes id:"1333966665-10469-2-git-send-email-Vladimir.Marek at oracle.com" configure | 14 ++++++++++++++ 1 files changed, 14 insertions(+), 0 deletions(-) diff --git a/configure b/configure index 71981b7..06fbeff 100755 --- a/configure +++ b/configure @@ -1,5 +1,19 @@ #! /bin/sh +# Test whether this sh is capable of parameter substring processing. +# If not, attempt to locate and launch one which probably can. +( option=option=value; : ${option#*=} ) 2>/dev/null || { + if test x"${_NOTMUCH_CONFIGURE-}" = x ; then + NOTMUCH_CONFIGURE=1; export _NOTMUCH_CONFIGURE + for x in /bin/ksh /bin/bash /usr/bin/bash + do test ! -x "$x" || exec "$x" "$0" "$@" + done + fi + echo "Cannot find compatible shell to execute '$0'" >&2 + exit 1 +} +unset _NOTMUCH_CONFIGURE + # Store original IFS value so it can be changed (and restored) in many places. readonly DEFAULT_IFS=$IFS -- 1.7.8.2