[+cc automake-patches] On 03/13/2013 02:40 AM, Nick Bowler wrote: > Consider the following: > > % cat >configure.ac <<'EOF' > AC_INIT([test], [0]) > > AM_INIT_AUTOMAKE([foreign]) > > AM_CONDITIONAL([FOO], [true]) > > AC_CONFIG_FILES([Makefile]) > AC_OUTPUT > EOF > > % cat >Makefile.am <<'EOF' > if FOO > all-local: bar > bar: ; @echo bar > endif > > all-local: baz > baz: ; @echo baz > EOF > > On this input, Automake is producing the following warning: > > Makefile.am:6: warning: all-local was already defined in condition > FOO, which is included in condition TRUE ... > Makefile.am:2: ... 'all-local' previously defined here > > This warning makes no sense, because there is no problem with this > Makefile.am as far as I can see. However, the warnings seem to be just > noise as the generated Makefile.in appears correct and works fine. > > The conditional there is important: Automake only appears to warn when > one of the all-local rules is inside a conditional and the other is not. > > I've exposed the bug with the patch inlined below. Not sure when I'll be able to attempt a proper fix. If anyone wants to give it a try in the meantime, be my guest!
Thanks, Stefano ---- 8< ---- 8< ---- 8< ---- 8< ---- 8< ---- 8< ---- 8< ---- 8< ---- >From b2b3692d37e9812a5895b5a054da597731d7eb08 Mon Sep 17 00:00:00 2001 Message-Id: <b2b3692d37e9812a5895b5a054da597731d7eb08.1370706503.git.stefano.lattar...@gmail.com> From: Stefano Lattarini <stefano.lattar...@gmail.com> Date: Sat, 8 Jun 2013 17:47:30 +0200 Subject: [PATCH] tests: expose automake bug#13940 * t/override-conditional-pr13940.sh: New test, still xfailing. * t/list-of-tests.mk (XFAIL_TESTS, handwritten_TESTS): Add it. Signed-off-by: Stefano Lattarini <stefano.lattar...@gmail.com> --- t/list-of-tests.mk | 2 ++ t/override-conditional-pr13940.sh | 44 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 t/override-conditional-pr13940.sh diff --git a/t/list-of-tests.mk b/t/list-of-tests.mk index fb2e444..68ca58c 100644 --- a/t/list-of-tests.mk +++ b/t/list-of-tests.mk @@ -33,6 +33,7 @@ t/all.sh \ t/cond17.sh \ t/gcj6.sh \ t/override-conditional-2.sh \ +t/override-conditional-pr13940.sh \ t/dist-pr109765.sh \ t/instdir-cond2.sh \ t/java-nobase.sh \ @@ -740,6 +741,7 @@ t/output13.sh \ t/output-order.sh \ t/override-conditional-1.sh \ t/override-conditional-2.sh \ +t/override-conditional-pr13940.sh \ t/override-html.sh \ t/override-suggest-local.sh \ t/parallel-am.sh \ diff --git a/t/override-conditional-pr13940.sh b/t/override-conditional-pr13940.sh new file mode 100644 index 0000000..4bc4128 --- /dev/null +++ b/t/override-conditional-pr13940.sh @@ -0,0 +1,44 @@ +#! /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/>. + +# Expose automake bug#1394: automake erroneously think that a .PHONY +# target's rule is overridden only because we declare dependencies +# to such targets twice: one in an Automake conditional, and once +# unconditionally. + +. test-init.sh + +cat >> configure.ac << 'END' +AM_CONDITIONAL([FOO], [true]) +AC_OUTPUT +END + +cat > Makefile.am << 'END' +# The conditional here is important: Automake only appears to warn +# when one of the all-local rules is inside a conditional and the +# other is not. +if FOO +all-local: bar +bar: ; @echo bar +endif +all-local: baz +baz: ; @echo baz +END + +$ACLOCAL +$AUTOMAKE -a + +: -- 1.8.3.rc3.8.g5e49f30