I'm all for requiring bash. We already did for configure and autogen.sh,
so the damage is already done.
/Erik
On 2013-04-03 09:21, David Holmes wrote:
On 3/04/2013 1:03 PM, Mike Duigou wrote:
Hello all;
Further testing on JDK-8011342 revealed that hgforest.sh can fail if
the sh shell is not bash. The problem appears to be due to mixing of
-o -a and ! in [] test expressions.
What a bizarre failure mode. In the tests I did:
/usr/local/bin/python -V | cut -f 1 -d " "
produces
Python 2.7.3
on both sh and bash. Yet when it is part of the script:
if [ -x "$python" -a ! -d "$python" -a "`${python} -V 2>&1 | cut -f 1
-d " "`" == "Python" ] ; then
it evaluates to just "Python" on bash.
I have prepared a webrev here:
http://cr.openjdk.java.net/~mduigou/JDK-8011350/0/webrev/common/bin/hgforest.sh.udiff.html
This converts all of the potentially problematic [ expr -o expr ] [
expr -a expr ] and [ expr -{o|a} ! expr ] to use "test". My
conversions are based on the advice of the autotools chapter on
"Writing portable Bourne Shell"
(http://sourceware.org/autobook/autobook/autobook_208.html#SEC208)
for avoiding potential problems.
The other option is just to require bash which is already required by
the new build process.
I'm inclined to go for the latter though that requires a change to
get_source.sh as well to use bash.
But I defer to the build gurus.
BTW this is now a P1 as it blocks the TL nightly build as the
pre-build is done on a Solaris machine.
David
Mike