Hi Eric.
On 12/19/2011 02:44 PM, Eric Blake wrote:
On 12/17/2011 10:22 PM, Gary V. Vaughan wrote:
We should try to minimise forks, especially on Windows where they are
+# unreasonably slow, so skip the feature probes when bash is being used:
+if test set = ${BASH_VERSION+set}; then
+: ${lt_HAVE_ARITH_OP=yes}
+: ${lt_HAVE_XSI_OPS=yes}
+# The += operator was introduced in bash 3.1
+test -z $lt_HAVE_PLUSEQ_OP \
+ test 3000 -lt $((${BASH_VERSINFO[0]}*1000 + ${BASH_VERSINFO[1]})) \
This MUST be hidden behind an eval. Otherwise, shells like Solaris
/bin/sh will choke on trying to parse this line:
$ /bin/sh -c 'echo $((${BASH_VERSINFO[0]}*1000 + \
${BASH_VERSINFO[1]}))'
/bin/sh: bad substitution
In truth, for Solaris /bin/sh, protecting the problematic construct with
an if
clause is enough:
$ /bin/sh -c 'if false; then \
echo $((${BASH_VERSINFO[0]}*1000 + ${BASH_VERSINFO[1]})); \
fi; \
echo OK'
OK
But, as I've shown, that is not enough for dash and NetBSD /bin/sh:
$ dash -c 'if false; then \
echo $((${BASH_VERSINFO[0]}*1000 + ${BASH_VERSINFO[1]})); \
fi; \
echo OK'
dash: Syntax error: Bad substitution
So you're still right about the need to use an eval (or to rework the
code so that
it doesn't try to to reference array variables).
Regards,
Stefano