[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: bug#8360: distcheck-hook never called
From: |
Stefano Lattarini |
Subject: |
Re: bug#8360: distcheck-hook never called |
Date: |
Thu, 1 Sep 2011 20:12:37 +0200 |
User-agent: |
KMail/1.13.7 (Linux/2.6.30-2-686; KDE/4.6.5; i686; ; ) |
Resurrecting an old thread, for reference see:
<http://debbugs.gnu.org/cgi/bugreport.cgi?bug=8360>
On Saturday 09 April 2011, Ralf Wildenhues wrote:
> Hello Pitamila,
>
> let's keep the mailing list in Cc:, please. I would've seen your reply
> earlier then.
>
> * address@hidden wrote on Mon, Apr 04, 2011 at 04:02:53PM CEST:
> > ----- "Ralf Wildenhues" a écrit :
> > >
> > > thanks for the report.
> >
> > thanks for the support, I hope my answer is not too late.
>
> There's (almost) never a "too late" when giving useful feedback!
>
> > > * address@hidden wrote on Mon, Mar 28, 2011 at 09:17:09AM CEST:
> > > > I'd like to make a rpm buildpackage in my distcheck-hook rule.
> > > > My 'distcheck-hook' rule in my root Makefile.am is never called.
> > > > I tryed to define a 'distcheck-local' too without success.
> > > > Is there something more to know than 14.4 of automake manual?
> > >
> > > Can you show the Makefile.am file? distcheck-hook should work.
> >
> > Find attached the Makefile.am of my doc/ subdir
> > In fact I try to call a clean-local without success (I suppose
> > it's the same bug than my distcheck-local not beeing called
> > in my top Makefile.am)
>
> Yep. And you have indeed stumbled over a limitation in automake;
> I could call it a bug, but I'm inclined to document it rather than
> fix it as it is worked around easily.
>
> Quoting your Makefile.am:
>
> clean-local :
> -rm -rf html/* html @address@hidden latex/* latex
>
> There is a literal TAB after 'clean-local'. automake's parser is pretty
> dumb when it comes to distinguishing rule commands from rule lines from
> variable assignments, mostly because it is hard to get things right when
> hard-core GNU make code is used.
>
> Anyway, in this case it gets things wrong due to the TAB. Solution is
> to remove the TAB before the colon, maybe replacing it with a number of
> spaces. Then everything will work out fine.
>
I've ended up writing a documentation patch for this, as well for another
unrelated limitation encountered by Roberto Bagnara in an older thread on
the automake list, see:
<http://lists.gnu.org/archive/html/automake/2010-08/msg00074.html>
Since I was at it, I've written two tests verifying the documented
behaviour.
I will wait a few hours before pushing (to maint), to allow for reviews.
Regards,
Stefano
From 00e845afb826107a14db247a465eefea728f9bc5 Mon Sep 17 00:00:00 2001
Message-Id: <address@hidden>
From: Stefano Lattarini <address@hidden>
Date: Thu, 1 Sep 2011 19:17:39 +0200
Subject: [PATCH] docs: report few more automake parsing limitations
Partly motivated by automake bug#8360.
* doc/automake.texi (General Operation): Report few more automake
limitations w.r.t. parsing of unusual makefile constructs. Related
minor reorderings.
* tests/doc-parsing-buglets-colneq-subst.test: New test.
* tests/doc-parsing-buglets-tabs.test: Likewise.
* tests/Makefile.am (TESTS): Update.
---
ChangeLog | 11 +++++
doc/automake.texi | 26 +++++++++--
tests/Makefile.am | 2 +
tests/Makefile.in | 2 +
tests/doc-parsing-buglets-colneq-subst.test | 39 ++++++++++++++++
tests/doc-parsing-buglets-tabs.test | 64 +++++++++++++++++++++++++++
6 files changed, 139 insertions(+), 5 deletions(-)
create mode 100755 tests/doc-parsing-buglets-colneq-subst.test
create mode 100755 tests/doc-parsing-buglets-tabs.test
diff --git a/ChangeLog b/ChangeLog
index 7c11ab3..5d0eda1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2011-09-01 Stefano Lattarini <address@hidden>
+
+ docs: report few more automake parsing limitations
+ Partly motivated by automake bug#8360.
+ * doc/automake.texi (General Operation): Report few more automake
+ limitations w.r.t. parsing of unusual makefile constructs. Related
+ minor reorderings.
+ * tests/doc-parsing-buglets-colneq-subst.test: New test.
+ * tests/doc-parsing-buglets-tabs.test: Likewise.
+ * tests/Makefile.am (TESTS): Update.
+
2011-08-25 Stefano Lattarini <address@hidden>
tests: list "forgotten" test script in TESTS
diff --git a/doc/automake.texi b/doc/automake.texi
index 49a6cd1..3be8578 100644
--- a/doc/automake.texi
+++ b/doc/automake.texi
@@ -1813,14 +1813,30 @@ supported. This operator appends its right hand
argument to the variable
specified on the left. Automake will translate the operator into
an ordinary @samp{=} operator; @samp{+=} will thus work with any make program.
address@hidden indentation
-Further note that variable assignments should not be indented with
address@hidden characters, use spaces if necessary. On the other hand,
-rule commands should be indented with a leading @key{TAB} character.
-
Automake tries to keep comments grouped with any adjoining rules or
variable definitions.
address@hidden Limitations of automake parser
address@hidden Automake parser, limitations of
address@hidden indentation in Makefile.am
+Generally, Automake is not particularly smart in the parsing of unusual
+Makefile constructs, so you're advised to avoid fancy constructs or
+``creative'' use of whitespaces.
address@hidden Keep this in sync with doc-parsing-buglets-tabs.test.
+For example, @key{TAB} characters cannot be used between a target name
+and the following address@hidden:}'' character, and variable assignments
+shouldn't be indented with @key{TAB} characters.
address@hidden Keep this in sync with doc-parsing-buglets-colneq-subst.test.
+Also, using more complex macro in target names can cause trouble:
+
address@hidden
+% @kbd{cat Makefile.am}
+$(FOO:=x): bar
+% @kbd{automake}
+Makefile.am:1: bad characters in variable name `$(FOO'
+Makefile.am:1: `:='-style assignments are not portable
address@hidden example
+
@cindex Make targets, overriding
@cindex Make rules, overriding
@cindex Overriding make rules
diff --git a/tests/Makefile.am b/tests/Makefile.am
index a1c67ff..6101460 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -325,6 +325,8 @@ distcheck-configure-flags-subpkg.test \
distcheck-hook.test \
distcheck-hook2.test \
dmalloc.test \
+doc-parsing-buglets-colneq-subst.test \
+doc-parsing-buglets-tabs.test \
dollar.test \
dollarvar.test \
dollarvar2.test \
diff --git a/tests/Makefile.in b/tests/Makefile.in
index 4b2d845..108672d 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -603,6 +603,8 @@ distcheck-configure-flags-subpkg.test \
distcheck-hook.test \
distcheck-hook2.test \
dmalloc.test \
+doc-parsing-buglets-colneq-subst.test \
+doc-parsing-buglets-tabs.test \
dollar.test \
dollarvar.test \
dollarvar2.test \
diff --git a/tests/doc-parsing-buglets-colneq-subst.test
b/tests/doc-parsing-buglets-colneq-subst.test
new file mode 100755
index 0000000..685d2b6
--- /dev/null
+++ b/tests/doc-parsing-buglets-colneq-subst.test
@@ -0,0 +1,39 @@
+#! /bin/sh
+# Copyright (C) 2011 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 a documented limitation of the Automake's Makefile parser
+# w.r.t. POSIX variable substitutions used in the name of targets.
+# See Section "General Operation" in the Automake manual.
+# If you cause some parts of this test to fail, chances are that you've
+# improved the Automake parser ;-)
+# See: <http://lists.gnu.org/archive/html/automake/2010-08/msg00074.html>
+# or:
<http://thread.gmane.org/gmane.comp.sysutils.automake.general/11943/focus=11962>
+
+. ./defs || Exit 1
+
+set -e
+
+cat > Makefile.am <<'END'
+$(FOO:=x): bar
+END
+
+$ACLOCAL
+AUTOMAKE_fails
+
+grep 'bad characters.*variable name.*\$(FOO' stderr
+grep ':=.*assignments.*not portable' stderr
+
+:
diff --git a/tests/doc-parsing-buglets-tabs.test
b/tests/doc-parsing-buglets-tabs.test
new file mode 100755
index 0000000..eee4a81
--- /dev/null
+++ b/tests/doc-parsing-buglets-tabs.test
@@ -0,0 +1,64 @@
+#! /bin/sh
+# Copyright (C) 2011 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 the documented limitation of the Automake's Makefile parser w.r.t.
+# use of TAB characters; see Section "General Operation" in the Automake
+# manual, and automake bug#8360.
+# If you cause some parts of this test to fail, chances are that you've
+# improved the Automake parser ;-)
+
+. ./defs || Exit 1
+
+set -e
+
+cat > Makefile.am <<END
+.PHONY: test
+test: all check
+
+fail:
address@hidden "'\$@ recipe executed'"; exit 1
+
+## This won't be recognized as a target+recipe by Automake.
+all-local${tab}:
address@hidden 1
+#check-local :
address@hidden 1
+
+## This won't be recognized as a target+rdependency by Automake.
+all-local${tab}: fail
+#check-local : fail
+
+just_to_separate: dummy deps
+
+## This won't be recognized as a variable assignment by Automake.
+${tab}bin_PROGRAMS = foo
+END
+
+echo AC_OUTPUT >> configure.in
+
+$ACLOCAL
+$AUTOMAKE
+
+$FGREP '$(EXEEEXT)' Makefile.in && Exit 1
+grep 'all:.*all-local' Makefile.in && Exit 1
+grep "^${tab}bin_PROGRAMS = foo" Makefile.in
+
+$AUTOCONF
+./configure
+
+$MAKE test
+
+:
--
1.7.2.3
- Re: bug#8360: distcheck-hook never called,
Stefano Lattarini <=