[PATCH] configure: test shell parameter substring processing and possibly exec one

Tomi Ollila tomi.ollila at iki.fi
Mon Apr 16 08:13:19 PDT 2012

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
+	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
 # Store original IFS value so it can be changed (and restored) in many places.
 readonly DEFAULT_IFS=$IFS

More information about the notmuch mailing list