diff options
-rw-r--r-- | ChangeLog | 30 | ||||
-rw-r--r-- | Makefile.in | 2 | ||||
-rw-r--r-- | doc/Makefile.in | 2 | ||||
-rw-r--r-- | lib/Automake/Makefile.in | 2 | ||||
-rw-r--r-- | lib/Automake/tests/Makefile.in | 2 | ||||
-rw-r--r-- | lib/Makefile.in | 2 | ||||
-rw-r--r-- | lib/am/Makefile.in | 2 | ||||
-rw-r--r-- | lib/am/inst-vars.am | 2 | ||||
-rwxr-xr-x | lib/tap-driver.sh | 29 | ||||
-rw-r--r-- | m4/Makefile.in | 2 | ||||
-rw-r--r-- | tests/Makefile.in | 2 |
11 files changed, 64 insertions, 13 deletions
@@ -1,5 +1,35 @@ 2011-09-28 Stefano Lattarini <stefano.lattarini@gmail.com> + maintcheck: fix usage of `cd' instead of `$(am__cd)' + * lib/am/inst-vars.am (am__uninstall_files_from_dir): Use + `$(am__cd)', not plain `cd'. + +2011-09-28 Stefano Lattarini <stefano.lattarini@gmail.com> + + tap/awk: account for unusual korn shell signal handling behaviour + This change has been motivated by a testsuite failure on Debian + with the AT&T Korn Shell version 93u-1. + * lib/tap-driver.sh: Temporarily ignore some common signals when + waiting for the test command to complete, to avoid premature exit + in Korn shells that propagate to themselves signals that have + killed a child process. + See also related commit `v1.11-1342-g6321ad3'. + +2011-09-28 Stefano Lattarini <stefano.lattarini@gmail.com> + + tap/awk: handle exit statuses > 256 (seen on few korn shells) + Some Korn shells, when a child process die due to signal number + n, can leave in $? an exit status of 256+n instead of the more + standard 128+n. Apparently, both behaviours are allowed by + POSIX, so be prepared to handle them both. + This change has been motivated by a testsuite failure on Debian + with the AT&T Korn Shell version 93u-1. + * lib/tap-driver.sh (get_test_exit_message): Handle the described + Korn Shell behaviour too. + ($scriptversion): Update. + +2011-09-28 Stefano Lattarini <stefano.lattarini@gmail.com> + tests: remove redundant workaround for Solaris /bin/sh After previous commit `v1.11-1424-g27a399a', some workarounds for Solaris 10 /bin/sh are no more required, and in fact they have diff --git a/Makefile.in b/Makefile.in index 813a40285..66d38a963 100644 --- a/Makefile.in +++ b/Makefile.in @@ -96,7 +96,7 @@ am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - cd "$$dir" && rm -f $$files; }; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(bindir)" SCRIPTS = $(bin_SCRIPTS) diff --git a/doc/Makefile.in b/doc/Makefile.in index 288904efd..a156070a0 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -137,7 +137,7 @@ am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - cd "$$dir" && rm -f $$files; }; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ } man1dir = $(mandir)/man1 NROFF = nroff diff --git a/lib/Automake/Makefile.in b/lib/Automake/Makefile.in index 81f9f7d38..d1c68f93b 100644 --- a/lib/Automake/Makefile.in +++ b/lib/Automake/Makefile.in @@ -107,7 +107,7 @@ am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - cd "$$dir" && rm -f $$files; }; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(perllibdir)" "$(DESTDIR)$(perllibdir)" DATA = $(dist_perllib_DATA) $(nodist_perllib_DATA) diff --git a/lib/Automake/tests/Makefile.in b/lib/Automake/tests/Makefile.in index 2b336f438..15f2b7846 100644 --- a/lib/Automake/tests/Makefile.in +++ b/lib/Automake/tests/Makefile.in @@ -120,7 +120,7 @@ am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - cd "$$dir" && rm -f $$files; }; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ } # Restructured Text title and section. am__rst_title = sed 's/.*/ & /;h;s/./=/g;p;x;p;g;p;s/.*//' diff --git a/lib/Makefile.in b/lib/Makefile.in index ad046760b..1fc83f499 100644 --- a/lib/Makefile.in +++ b/lib/Makefile.in @@ -110,7 +110,7 @@ am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - cd "$$dir" && rm -f $$files; }; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkgvdatadir)" "$(DESTDIR)$(scriptdir)" DATA = $(dist_pkgvdata_DATA) $(dist_script_DATA) diff --git a/lib/am/Makefile.in b/lib/am/Makefile.in index 1a9b01afc..ff18408dc 100644 --- a/lib/am/Makefile.in +++ b/lib/am/Makefile.in @@ -100,7 +100,7 @@ am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - cd "$$dir" && rm -f $$files; }; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(amdir)" DATA = $(dist_am_DATA) diff --git a/lib/am/inst-vars.am b/lib/am/inst-vars.am index 477513ff8..a807f79be 100644 --- a/lib/am/inst-vars.am +++ b/lib/am/inst-vars.am @@ -67,7 +67,7 @@ am__uninstall_files_from_dir = { \ ## is indeed desired and welcome (better to fail loudly thasn silently). || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - cd "$$dir" && rm -f $$files; }; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ } endif %?FIRST% diff --git a/lib/tap-driver.sh b/lib/tap-driver.sh index 44317d9de..e9f103755 100755 --- a/lib/tap-driver.sh +++ b/lib/tap-driver.sh @@ -23,7 +23,7 @@ # bugs to <bug-automake@gnu.org> or send patches to # <automake-patches@gnu.org>. -scriptversion=2011-08-25.11; # UTC +scriptversion=2011-09-28.14; # UTC # Make unconditional expansion of undefined variables an error. This # helps a lot in preventing typo-related bugs. @@ -116,14 +116,27 @@ else fi { - { if test $merge -gt 0; then + ( + # Ignore common signals (in this subshell only!) to avoid potential + # problems with Korn shells. Some Korn shells are known to propagate + # to themselves signals that have killed a child process they were + # waiting for (this is done at least for SIGINT -- and usually only + # for it in truth); this would cause a premature exit in this subshell, + # so that the awk script would never seen the exit status it expects + # on its last input line (and which is displayed below by the last + # `echo $?' command), and would thus die reporting an internal error. + # For more information, see the Autoconf manual and the threads: + # <http://lists.gnu.org/archive/html/bug-autoconf/2011-09/msg00004.html> + # <http://mail.opensolaris.org/pipermail/ksh93-integration-discuss/2009-February/004121.html> + trap : 1 3 2 13 15 + if test $merge -gt 0; then exec 2>&1 else exec 2>&3 fi "$@" echo $? - } | LC_ALL=C ${AM_TAP_AWK-awk} \ + ) | LC_ALL=C ${AM_TAP_AWK-awk} \ -v me="$me" \ -v test_script_name="$test_name" \ -v log_file="$log_file" \ @@ -440,7 +453,15 @@ function get_test_exit_message(status) exit_details = " (command not found?)" else if (status >= 128 && status <= 255) exit_details = sprintf(" (terminated by signal %d?)", status - 128) - else if (status >= 256) + else if (status > 256 && status <= 384) + # We used to report an "abnormal termination" here, but some Korn + # shells, when a child process die due to signal number n, can leave + # in $? an exit status of 256+n instead of the more standard 128+n. + # Apparently, both behaviours are allowed by POSIX (2008), so be + # prepared to handle them both. + exit_details = sprintf(" (terminated by signal %d?)", status - 256) + else + # Never seen in practice. exit_details = " (abnormal termination)" return sprintf("exited with status %d%s", status, exit_details) } diff --git a/m4/Makefile.in b/m4/Makefile.in index 149e968fb..c55b3edb8 100644 --- a/m4/Makefile.in +++ b/m4/Makefile.in @@ -100,7 +100,7 @@ am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - cd "$$dir" && rm -f $$files; }; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(automake_acdir)" \ "$(DESTDIR)$(system_acdir)" diff --git a/tests/Makefile.in b/tests/Makefile.in index 6e3fd4939..6c5691752 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -122,7 +122,7 @@ am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - cd "$$dir" && rm -f $$files; }; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ } # Restructured Text title and section. am__rst_title = sed 's/.*/ & /;h;s/./=/g;p;x;p;g;p;s/.*//' |