GNU bug report logs -
#14315
[PATCH 5/7] header-vars: recognize more make flags ('-k' in particular)
Previous Next
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 14315 in the body.
You can then email your comments to 14315 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-automake <at> gnu.org
:
bug#14315
; Package
automake
.
(Mon, 29 Apr 2013 21:02:06 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Stefano Lattarini <stefano.lattarini <at> gmail.com>
:
New bug report received and forwarded. Copy sent to
bug-automake <at> gnu.org
.
(Mon, 29 Apr 2013 21:02:07 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
* lib/am/header-vars.am (am__running_with_option): Here.
Few improvements to comments, while at it.
(am__make_keepgoing): New, tell whther make is being runt with
the '-k' option.
* t/make-keepgoing.tap: New test.
* t/list-of-tests.mk: Add it.
* t/make-dryrun.tap: Minor edits to keep it more in sync with
the new test.
Signed-off-by: Stefano Lattarini <stefano.lattarini <at> gmail.com>
---
lib/am/header-vars.am | 13 +++--
t/list-of-tests.mk | 1 +
t/make-dryrun.tap | 7 +--
t/make-keepgoing.tap | 134 ++++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 148 insertions(+), 7 deletions(-)
create mode 100755 t/make-keepgoing.tap
diff --git a/lib/am/header-vars.am b/lib/am/header-vars.am
index c0a5f0c..4ad1783 100644
--- a/lib/am/header-vars.am
+++ b/lib/am/header-vars.am
@@ -38,15 +38,15 @@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
am__make_running_with_option = \
{ \
case $${am__target_option-} in \
- n) ;; \
+ ?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${am__target_option-}' specified" >&2; \
exit 1;; \
esac; \
am__has_opt=no; \
if $(am__is_gnu_make); then \
-## GNU make: $(MAKEFLAGS) is quite tricky there, and the older
-## $(MFLAGS) variable behaves much better.
+## GNU make: $(MAKEFLAGS) is quite tricky there, while the older variable
+## $(MFLAGS) behaves much better. So use the latter.
for am__flg in $$MFLAGS; do \
case $$am__flg in \
*=*|--*) ;; \
@@ -61,7 +61,7 @@ am__make_running_with_option = \
## to " TESTS=foo\ nap", so that the simpler loop below (on word-splitted
## $$MAKEFLAGS) would see a "make flag" equal to "nap", and would wrongly
## misinterpret that as and indication that make is running in dry mode.
-## This has already happened in practice. So we need this unpleasant hack.
+## This has already happened in practice. So we need this hack.
*\\[\ \ ]*) \
## Extra indirection with ${am__bs} required by FreeBSD 8.x make.
## Not sure why (so sorry for the cargo-cult programming here).
@@ -97,6 +97,11 @@ am__make_running_with_option = \
## their recipes contain the "$(MAKE)" string (GNU and Solaris make).
am__make_dryrun = { am__target_option=n; $(am__make_running_with_option); }
+## Shell code that determines whether make is running in "keep-going mode"
+## ("make -k") or not. Useful in rules that must recursively descend into
+## subdirectories, and decide whther to stop at the first error or not.
+am__make_keepgoing = { am__target_option=k; $(am__make_running_with_option); }
+
## Some derived variables that have been found to be useful.
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
diff --git a/t/list-of-tests.mk b/t/list-of-tests.mk
index fbe2b56..51a3272 100644
--- a/t/list-of-tests.mk
+++ b/t/list-of-tests.mk
@@ -667,6 +667,7 @@ t/maken.sh \
t/maken3.sh \
t/makevars.sh \
t/make-dryrun.tap \
+t/make-keepgoing.tap \
t/make-is-gnu.sh \
t/man.sh \
t/man2.sh \
diff --git a/t/make-dryrun.tap b/t/make-dryrun.tap
index a7597a3..a6470b6 100755
--- a/t/make-dryrun.tap
+++ b/t/make-dryrun.tap
@@ -18,7 +18,7 @@
. test-init.sh
-plan_ 18
+plan_ 20
if echo "all: ; +@printf %sbb%s aa cc" | $MAKE -n -f - | grep aabbcc; then
make_plus_silence () { return 0; }
@@ -26,7 +26,7 @@ else
make_plus_silence () { return 1; }
fi
-mkdir none
+mkdir none # Also used later.
if echo nil: | $MAKE -I none -f -; then
make_supports_option_I () { return 0; }
else
@@ -59,7 +59,6 @@ check_make ()
case $1 in
-C) condition=$2 skip_reason=$3; shift; shift;;
-M) msg=$2; shift;;
- -X) directive=TODO;;
--) shift; break;;
*) break;;
esac
@@ -136,7 +135,9 @@ check_metachars MYFLAGS='-knf2\ n\ \\n'
check_metachars MYFLAGS="(&) | ; \" \` '"
check_metachars MYFLAGS=" ' # ' "
check_metachars MYFLAGS='$(foo)'
+check_metachars MYFLAGS='$(foo -n)'
check_metachars MYFLAGS='`touch bad`'
+check_metachars MYFLAGS='`touch --dry-run bad`'
# ----------------------------------------------------------------------
diff --git a/t/make-keepgoing.tap b/t/make-keepgoing.tap
new file mode 100755
index 0000000..a81bf6c
--- /dev/null
+++ b/t/make-keepgoing.tap
@@ -0,0 +1,134 @@
+#! /bin/sh
+# Copyright (C) 2013 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# Check that $(am__make_keepgoing) works as expected.
+
+. test-init.sh
+
+plan_ 20
+
+mkdir kool # Also used later.
+if echo nil: | $MAKE -I kool -f -; then
+ make_supports_option_I () { return 0; }
+else
+ make_supports_option_I () { return 1; }
+fi
+
+echo AC_OUTPUT >> configure.ac
+
+cat > Makefile.am <<'END'
+all:
+ @echo 'Default target $@ should not be called'>&2; exit 1;
+k-y:
+ @echo ":: $$MAKEFLAGS ::" ;: For debugging.
+ $(am__make_keepgoing)
+k-n:
+ @echo ":: $$MAKEFLAGS ::" ;: For debugging.
+ ! $(am__make_keepgoing)
+END
+
+check_make ()
+{
+ r=ok msg= mode= condition=: directive= reason= skip_reason=
+ case $1 in
+ k-[yn]) mode=$1;;
+ *) fatal_ "check_run: invalid usage";;
+ esac
+ shift
+ while test $# -gt 0; do
+ case $1 in
+ -C) condition=$2 skip_reason=$3; shift; shift;;
+ -M) msg=$2; shift;;
+ -X) directive=TODO;;
+ --) shift; break;;
+ *) break;;
+ esac
+ shift
+ done
+ msg=${mode}${msg:+" [$msg]"}
+ if $condition; then
+ $MAKE "$mode" ${1+"$@"} || r='not ok'
+ else
+ directive=SKIP reason=$skip_reason
+ fi
+ result_ "$r" -D "$directive" -r "$reason" "$msg"
+ unset r msg mode condition directive reason skip_reason
+}
+
+# ----------------------------------------------------------------------
+
+$ACLOCAL || fatal_ "aclocal failed"
+$AUTOCONF || fatal_ "autoconf failed"
+$AUTOMAKE || fatal_ "automake failed"
+./configure || fatal_ "configure failed"
+
+# ----------------------------------------------------------------------
+
+check_make k-n
+
+# Test against a possible regressions similar to those that affected
+# detection of dry mode ("make -n").
+check_make k-n TESTS="k.test k2.test"
+check_make k-n TESTS="k1 k k2" AM_MAKEFLAGS="TESTS='k1 k2'"
+check_make k-n TESTS="k1 k k2" AM_MAKEFLAGS='TESTS="k1 k k2"'
+check_make k-n FOOFLAGS="-k -k -nkf2 k -ks --keep -k"
+check_make k-n MYFLAGS="-k --keepgoing -k --keep-run -k"
+
+# ----------------------------------------------------------------------
+
+check_make k-y -k
+check_make k-y -C using_gmake "\$MAKE is not GNU make" --keep-going
+
+# ----------------------------------------------------------------------
+
+# Related to automake bug#12554: the "k" in "kool" used to confound
+# am__make_keepgoing into thinking the '-k' option had been passed.
+
+pr='bug#12554'
+
+check_make k-n -C make_supports_option_I "-I make option unsupported" \
+ -M "$pr" -I kool
+
+check_make k-n -C using_gmake "\$MAKE is not GNU make" \
+ -M "$pr" -I kool --include keep-going
+
+check_make k-y -C make_supports_option_I "-I make option unsupported" \
+ -M "$pr" -I kool -k
+
+check_make k-y -C using_gmake "\$MAKE is not GNU make" \
+ -M "$pr" --keep-going -I kool --include keep-going
+
+# ----------------------------------------------------------------------
+
+# Test for when shell metacharacters or backslashes are in $(MAKEFLAGS).
+
+check_metachars ()
+{
+ check_make k-n -M "metachars" "$@"
+}
+
+check_metachars MYFLAGS="-k \"k\" '-k' --keep-going -k"
+check_metachars MYFLAGS='-knf2\ k\ \\k'
+check_metachars MYFLAGS="(&) | ; \" \` '"
+check_metachars MYFLAGS=" ' # ' "
+check_metachars MYFLAGS='$(foo)'
+check_metachars MYFLAGS='$(foo -k)'
+check_metachars MYFLAGS='`touch bad`'
+check_metachars MYFLAGS='`touch --keep-going bad`'
+
+# ----------------------------------------------------------------------
+
+:
--
1.8.2.1.610.g562af5b
Information forwarded
to
bug-automake <at> gnu.org
:
bug#14315
; Package
automake
.
(Mon, 29 Apr 2013 21:07:01 GMT)
Full text and
rfc822 format available.
Message #8 received at 14315 <at> debbugs.gnu.org (full text, mbox):
tags 14315 notabug
close 14315
stop
Oops, erroneously created while dealing with bug#12254. Please ignore,
and sorry for the noise,
Stefano
Added tag(s) notabug.
Request was from
Stefano Lattarini <stefano.lattarini <at> gmail.com>
to
control <at> debbugs.gnu.org
.
(Mon, 29 Apr 2013 21:07:02 GMT)
Full text and
rfc822 format available.
bug closed, send any further explanations to
14315 <at> debbugs.gnu.org and Stefano Lattarini <stefano.lattarini <at> gmail.com>
Request was from
Stefano Lattarini <stefano.lattarini <at> gmail.com>
to
control <at> debbugs.gnu.org
.
(Mon, 29 Apr 2013 21:07:02 GMT)
Full text and
rfc822 format available.
Forcibly Merged 14310 14315.
Request was from
Stefano Lattarini <stefano.lattarini <at> gmail.com>
to
control <at> debbugs.gnu.org
.
(Mon, 29 Apr 2013 21:10:03 GMT)
Full text and
rfc822 format available.
Forcibly Merged 14310 14311 14315.
Request was from
Stefano Lattarini <stefano.lattarini <at> gmail.com>
to
control <at> debbugs.gnu.org
.
(Mon, 29 Apr 2013 21:10:03 GMT)
Full text and
rfc822 format available.
Forcibly Merged 14310 14311 14312 14315.
Request was from
Stefano Lattarini <stefano.lattarini <at> gmail.com>
to
control <at> debbugs.gnu.org
.
(Mon, 29 Apr 2013 21:10:03 GMT)
Full text and
rfc822 format available.
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Thu, 30 May 2013 11:24:03 GMT)
Full text and
rfc822 format available.
This bug report was last modified 12 years and 24 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.