Disable test cleanup trap with OSF1/Tru64 sh.
authorRalf Wildenhues <Ralf.Wildenhues@gmx.de>
Sun, 3 May 2009 07:32:44 +0000 (09:32 +0200)
committerRalf Wildenhues <Ralf.Wildenhues@gmx.de>
Sun, 3 May 2009 07:39:18 +0000 (09:39 +0200)
* configure.ac: Test whether /bin/sh has working 'set -e'
in conjunction with an exit trap.  Set $am_cv_sh_errexit_works
accordingly, substitute sh_errexit_works, and warn about
leftover test directories with broken shells like Tru64 /bin/sh.
* tests/defs.in: Do not install any traps with broken shells.

Signed-off-by: Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
12 files changed:
ChangeLog
Makefile.in
configure
configure.ac
doc/Makefile.in
lib/Automake/Makefile.in
lib/Automake/tests/Makefile.in
lib/Makefile.in
lib/am/Makefile.in
m4/Makefile.in
tests/Makefile.in
tests/defs.in

index 2560eeb..c8e4689 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2009-05-03  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       Disable test cleanup trap with OSF1/Tru64 sh.
+       * configure.ac: Test whether /bin/sh has working 'set -e'
+       in conjunction with an exit trap.  Set $am_cv_sh_errexit_works
+       accordingly, substitute sh_errexit_works, and warn about
+       leftover test directories with broken shells like Tru64 /bin/sh.
+       * tests/defs.in: Do not install any traps with broken shells.
+
 2009-05-02  Bruno Haible  <bruno@clisp.org>
            Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 
index 34193e8..320635a 100644 (file)
@@ -210,6 +210,7 @@ prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 sbindir = @sbindir@
+sh_errexit_works = @sh_errexit_works@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
 sysconfdir = @sysconfdir@
index e73a0bd..6fb2ae7 100755 (executable)
--- a/configure
+++ b/configure
@@ -603,6 +603,7 @@ PACKAGE_BUGREPORT='bug-automake@gnu.org'
 ac_unique_file="automake.in"
 ac_subst_vars='LTLIBOBJS
 LIBOBJS
+sh_errexit_works
 FGREP
 EGREP
 GREP
@@ -2818,6 +2819,32 @@ $as_echo "$ac_cv_path_FGREP" >&6; }
 
 
 
+{ $as_echo "$as_me:$LINENO: checking whether /bin/sh has working 'set -e' with exit trap" >&5
+$as_echo_n "checking whether /bin/sh has working 'set -e' with exit trap... " >&6; }
+if test "${am_cv_sh_errexit_works+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if /bin/sh -ec "trap 'exit \$?' 0; (exit 77); exit 77"; test $? = 77
+then
+  am_cv_sh_errexit_works=yes
+else
+  am_cv_sh_errexit_works=no
+fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $am_cv_sh_errexit_works" >&5
+$as_echo "$am_cv_sh_errexit_works" >&6; }
+if test $am_cv_sh_errexit_works = no; then
+  { $as_echo "$as_me:$LINENO: WARNING: \`${MAKE-make} check' will leave leftover directories tests/*.dir" >&5
+$as_echo "$as_me: WARNING: \`${MAKE-make} check' will leave leftover directories tests/*.dir" >&2;}
+  { $as_echo "$as_me:$LINENO: WARNING: you can clean them up manually using \`${MAKE-make} clean' or" >&5
+$as_echo "$as_me: WARNING: you can clean them up manually using \`${MAKE-make} clean' or" >&2;}
+  { $as_echo "$as_me:$LINENO: WARNING: \`cd tests && ${MAKE-make} clean-local-check'" >&5
+$as_echo "$as_me: WARNING: \`cd tests && ${MAKE-make} clean-local-check'" >&2;}
+  fi
+sh_errexit_works=$am_cv_sh_errexit_works
+
+
 ac_config_files="$ac_config_files Makefile doc/Makefile lib/Automake/Makefile lib/Automake/tests/Makefile lib/Makefile lib/am/Makefile m4/Makefile tests/Makefile tests/defs"
 
 ac_config_files="$ac_config_files tests/aclocal-${APIVERSION}:tests/aclocal.in"
index 4229d68..e3c8535 100644 (file)
@@ -171,6 +171,23 @@ AC_SUBST([MODIFICATION_DELAY])
 AC_PROG_EGREP
 AC_PROG_FGREP
 
+AC_CACHE_CHECK([whether /bin/sh has working 'set -e' with exit trap],
+[am_cv_sh_errexit_works],
+[if /bin/sh -ec "trap 'exit \$?' 0; (exit 77); exit 77"; test $? = 77
+then
+  am_cv_sh_errexit_works=yes
+else
+  am_cv_sh_errexit_works=no
+fi
+])
+if test $am_cv_sh_errexit_works = no; then
+  AC_MSG_WARN([`${MAKE-make} check' will leave leftover directories tests/*.dir])
+  AC_MSG_WARN([you can clean them up manually using `${MAKE-make} clean' or])
+  AC_MSG_WARN([`cd tests && ${MAKE-make} clean-local-check'])
+  dnl restore font-lock: `
+fi
+AC_SUBST([sh_errexit_works], [$am_cv_sh_errexit_works])
+
 AC_CONFIG_FILES([
   Makefile
   doc/Makefile
index 189cdfb..6433ad8 100644 (file)
@@ -178,6 +178,7 @@ prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 sbindir = @sbindir@
+sh_errexit_works = @sh_errexit_works@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
 sysconfdir = @sysconfdir@
index f649390..9a62aa2 100644 (file)
@@ -197,6 +197,7 @@ prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 sbindir = @sbindir@
+sh_errexit_works = @sh_errexit_works@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
 sysconfdir = @sysconfdir@
index 222f751..9f3a097 100644 (file)
@@ -213,6 +213,7 @@ prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 sbindir = @sbindir@
+sh_errexit_works = @sh_errexit_works@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
 sysconfdir = @sysconfdir@
index ee031a9..ba470fe 100644 (file)
@@ -200,6 +200,7 @@ prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 sbindir = @sbindir@
+sh_errexit_works = @sh_errexit_works@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
 sysconfdir = @sysconfdir@
index ce96885..84d09f0 100644 (file)
@@ -157,6 +157,7 @@ prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 sbindir = @sbindir@
+sh_errexit_works = @sh_errexit_works@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
 sysconfdir = @sysconfdir@
index 7cc2c68..bb7bbf9 100644 (file)
@@ -157,6 +157,7 @@ prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 sbindir = @sbindir@
+sh_errexit_works = @sh_errexit_works@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
 sysconfdir = @sysconfdir@
index 3125d04..d735afa 100644 (file)
@@ -217,6 +217,7 @@ prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
 sbindir = @sbindir@
+sh_errexit_works = @sh_errexit_works@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
 sysconfdir = @sysconfdir@
index d44ac9f..47e1c3a 100644 (file)
@@ -251,21 +251,24 @@ chmod -R u+rwx $testSubDir > /dev/null 2>&1
 rm -rf $testSubDir > /dev/null 2>&1
 mkdir $testSubDir
 
-trap 'exit_status=$?
-  cd "$curdir"
-  case $exit_status,$keep_testdirs in
-  0,)
-    chmod -R a+rwx $testSubDir > /dev/null 2>&1
-    rm -rf "$testSubDir" ;;
-  esac
-  test "$signal" != 0 &&
-    echo "$as_me: caught signal $signal"
-  echo "$as_me: exit $exit_status"
-  exit $exit_status
-' 0
-for signal in 1 2 13 15; do
-  trap 'signal='$signal'; { Exit 1; }' $signal
-done
+sh_errexit_works=@sh_errexit_works@
+if test "$sh_errexit_works" = yes; then
+  trap 'exit_status=$?
+    cd "$curdir"
+    case $exit_status,$keep_testdirs in
+    0,)
+      chmod -R a+rwx $testSubDir > /dev/null 2>&1
+      rm -rf "$testSubDir" ;;
+    esac
+    test "$signal" != 0 &&
+      echo "$as_me: caught signal $signal"
+    echo "$as_me: exit $exit_status"
+    exit $exit_status
+  ' 0
+  for signal in 1 2 13 15; do
+    trap 'signal='$signal'; { Exit 1; }' $signal
+  done
+fi
 signal=0
 
 # Copy in some files we need.