diff options
author | Stefano Lattarini <stefano.lattarini@gmail.com> | 2013-04-29 16:12:34 +0200 |
---|---|---|
committer | Stefano Lattarini <stefano.lattarini@gmail.com> | 2013-04-29 19:55:22 +0200 |
commit | 02ead48eb3043b1cfa9eb8072d8270cf5cc66c84 (patch) | |
tree | ab16d1f4c3c72153e9f215b3726c8d2c69e74f20 /lib/am | |
parent | 69f7791509c523fe8b199a432b72dca6a5ce3caa (diff) | |
download | automake-02ead48eb3043b1cfa9eb8072d8270cf5cc66c84.tar.gz |
subdirs: don't return false positives for the '-k' option's presence
This change fixes automake bug#12554.
The old implementation of the code descending into $(SUBDIRS)
entries used the following snippet to decide whether make is running
with the '-k' a.k.a. '--keep-going' option, and thus whether a failure
in a subdirectory should prevent the descent in the following ones:
fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done
It's clear that the second pattern in the 'case' construct could possibly
match false positives, for examples in these two cases:
make check TESTS="x.test k.test"
make -I /usr/local/kool-fragments
which are somewhat unusual, but not invalid. So we need a more resilient
implementation, as we did for the detection of the '-n' flag.
This implementation is now provided by the new private macro
'$(am__make_keepgoing)' (introduced in recent commits); so we can
just us that to fix the bug.
* lib/am/subdirs.am ($(am__recursive_targets)): Use '$(am__make_keepgoing)'
instead of ad-hoc and more brittle checks.
* t/list-of-tests.mk (XFAIL_TESTS): Remove the now-passing test case
't/subdir-keep-going-pr12554.sh'.
Reported-by: Michael Daniels <mdaniels@rim.com>
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Diffstat (limited to 'lib/am')
-rw-r--r-- | lib/am/subdirs.am | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/lib/am/subdirs.am b/lib/am/subdirs.am index c4c3694cb..999aa7877 100644 --- a/lib/am/subdirs.am +++ b/lib/am/subdirs.am @@ -39,13 +39,12 @@ AM_RECURSIVE_TARGETS += $(am__recursive_targets:-recursive=) $(am__recursive_targets): ## Using $failcom allows "-k" to keep its natural meaning when running a ## recursive rule. - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ ## For distclean and maintainer-clean we make sure to use the full |