summaryrefslogtreecommitdiff
path: root/m4
diff options
context:
space:
mode:
authorStefano Lattarini <stefano.lattarini@gmail.com>2013-01-12 19:20:54 +0100
committerStefano Lattarini <stefano.lattarini@gmail.com>2013-01-16 13:11:54 +0100
commitf78b0f0b2741fcdd4e21151758a8a75ddaa8aa17 (patch)
tree10ef41ceaf43d29b03ccd9452a87b56f9b4101be /m4
parent593032130119da79aba14dc26c3cc985bf3a5610 (diff)
downloadautomake-f78b0f0b2741fcdd4e21151758a8a75ddaa8aa17.tar.gz
automake-f78b0f0b2741fcdd4e21151758a8a75ddaa8aa17.tar.bz2
automake-f78b0f0b2741fcdd4e21151758a8a75ddaa8aa17.zip
init.m4: add probe to check "rm -f" without args work
See automake bug#10828. POSIX will say in a future version that running "rm -f" with no argument is OK: <http://austingroupbugs.net/view.php?id=542>). We want to be able to make that assumption in our Makefile recipes. So we introduce an aggressive probe to check that the usage we want is actually supported "in the wild" to an acceptable degree. * m4/init.m4 (AM_INIT_AUTOMAKE): Implement the probe. To make any issue more visible, cause the running configure to be aborted by default if the 'rm' program in use doesn't match our expectations; the user can still override this though, by setting the ACCEPT_INFERIOR_RM_PROGRAM environment variable to "yes". * t/spy-rm.tap: Update heading comments. * t/rm-f-probe.sh: New test. * t/list-of-tests.mk: Add it. * PLANS/rm-f-without-args.txt: Adjust. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Diffstat (limited to 'm4')
-rw-r--r--m4/init.m443
1 files changed, 42 insertions, 1 deletions
diff --git a/m4/init.m4 b/m4/init.m4
index c5af65cce..ce64a6ccf 100644
--- a/m4/init.m4
+++ b/m4/init.m4
@@ -117,7 +117,48 @@ dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
AC_CONFIG_COMMANDS_PRE(dnl
[m4_provide_if([_AM_COMPILER_EXEEXT],
[AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
-])
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes. So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+ cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present. This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake@gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message. This
+can help us improve future automake versions.
+
+END
+ if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+ echo 'Configuration will proceed anyway, since you have set the' >&2
+ echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+ echo >&2
+ else
+ cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+ AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
+ fi
+fi])
dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further