On Solaris 10 (and presumably earlier), /bin/sh trips up on here-documents that contains a command substitution *and* are fed to a shell function:
# All as expected. $ cat <<END `pwd` END /home/stefano $ echo status = $? status = 0 # An apparently innocuous function ... $ kitty () { cat; } # ... but hilarity ensues! $ kitty <<END `pwd` END /tmp/sh137723: cannot open $ echo status = $? status = 1 We need to work around this misbehaviour in a couple of our tests (whose failures where causing cascading failures in a lot of other tests). * tests/gettext-macros.test: Avoid the use of command substitution in a here-document passed to the `indent' function, by using the `echo' builtin instead. * tests/libtool-macros.test: Likewise. See also: <http://lists.gnu.org/archive/html/bug-autoconf/2011-12/msg00001.html> --- ChangeLog | 38 ++++++++++++++++++++++++++++++++++++++ tests/gettext-macros.test | 6 ++---- tests/libtool-macros.test | 6 ++---- 3 files changed, 42 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index d97d461..94b1b44 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,41 @@ +2011-12-23 Stefano Lattarini <stefano.lattar...@gmail.com> + + tests: avoid spurious failure of libtool and gettext tests + + On Solaris 10 (and presumably earlier), /bin/sh trips up on + here-documents that contains a command substitution *and* are + fed to a shell function: + + # All as expected. + $ cat <<END + `pwd` + END + /home/stefano + $ echo status = $? + status = 0 + + # An apparently innocuous function ... + $ kitty () { cat; } + # ... but hilarity ensues! + $ kitty <<END + `pwd` + END + /tmp/sh137723: cannot open + $ echo status = $? + status = 1 + + We need to work around this misbehaviour in a couple of our + tests (whose failures where causing cascading failures in a + lot of other tests). + + * tests/gettext-macros.test: Avoid the use of command substitution + in a here-document passed to the `indent' function, by using the + `echo' builtin instead. + * tests/libtool-macros.test: Likewise. + + See also: + <http://lists.gnu.org/archive/html/bug-autoconf/2011-12/msg00001.html> + 2011-12-14 Stefano Lattarini <stefano.lattar...@gmail.com> tests: better handling of gettext and libtool requirements diff --git a/tests/gettext-macros.test b/tests/gettext-macros.test index 7fe1274..5dd3a79 100755 --- a/tests/gettext-macros.test +++ b/tests/gettext-macros.test @@ -46,10 +46,8 @@ else fi if $am_gettextize_command --force && test -f m4/gettext.m4; then - unindent >> get.sh <<END - ACLOCAL_PATH="`pwd`/m4":\$ACLOCAL_PATH - export ACLOCAL_PATH -END + echo "ACLOCAL_PATH='`pwd`/m4':\$ACLOCAL_PATH" >> get.sh + echo "export ACLOCAL_PATH" >> get.sh else # Older versions of gettext might not have a gettextize program # available, but this doesn't mean the user hasn't made the gettext diff --git a/tests/libtool-macros.test b/tests/libtool-macros.test index 31e5019..06a35d9 100755 --- a/tests/libtool-macros.test +++ b/tests/libtool-macros.test @@ -27,10 +27,8 @@ echo : >> get.sh echo ACLOCAL_AMFLAGS = -I m4 > Makefile.am if libtoolize --copy --install && test -f m4/libtool.m4; then - unindent >> get.sh <<END - ACLOCAL_PATH="`pwd`/m4":\$ACLOCAL_PATH - export ACLOCAL_PATH -END + echo "ACLOCAL_PATH='`pwd`/m4':\$ACLOCAL_PATH" >> get.sh + echo "export ACLOCAL_PATH" >> get.sh else # Libtoolize from libtool < 2.0 didn't support the `--install' option, # but this doesn't mean the user hasn't made the libtool macros -- 1.7.7.3