This is the mail archive of the automake@gnu.org mailing list for the automake project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [BUG] config.status: error on rebuild Makefile


Hi Alexander,

>>> "zaufi" == Alexander Turbov <zaufi at sendmail dot ru> writes:

 zaufi> I don't know exactly is this autoconf or automake BUG --
 zaufi> so I post to both lists...

 zaufi> I found $subj problem when configure.ac contain non trivial input file 
 zaufi> definition like this:

 zaufi> AC_CONFIG_FILES([Makefile:Makefile.in:Makefile.bottom])

 zaufi> In attached sample project shell script to reproduce bug.

Thanks for the report.  Automake is obviously guilty for running

   ./config.status Makefile:Makefile.in:Makefile.bottom

although the Autoconf manual documents config.status thusly

|    Synopsis:
|      ./config.status OPTION... [FILE...]
|   
|    It configures the FILES; if none are specified, all the templates
| are instantiated.  The files must be specified without their
| dependencies, as in
|      
|      ./config.status foobar
| 
| not  
|      
|      ./config.status foobar:foo.in:bar.in


I'm installing the following fix on HEAD and branch-1-7.

2003-04-19  Alexandre Duret-Lutz  <adl at gnu dot org>

	Fix for PR automake/389:
	* automake.in (handle_configure): Don't put $colon_infile in
	CONFIG-MAKEFILE.
	* tests/conff.test: New file.
	* tests/Makefile.am (TESTS): Add conff.test.
	Reported by Alexander Turbov.

Index: automake.in
===================================================================
RCS file: /cvs/automake/automake/automake.in,v
retrieving revision 1.1365.2.41
diff -u -r1.1365.2.41 automake.in
--- automake.in	18 Apr 2003 09:08:45 -0000	1.1365.2.41
+++ automake.in	19 Apr 2003 11:12:09 -0000
@@ -4482,8 +4482,7 @@
 		       'MAKEFILE-DEPS'
 		       => "@rewritten",
 		       'CONFIG-MAKEFILE'
-		       => ((($relative_dir eq '.') ? '$@' : '$(subdir)/$@')
-			   . $colon_infile),
+		       => ($relative_dir eq '.') ? '$@' : '$(subdir)/$@',
 		       'MAKEFILE-IN'
 		       => $infile,
 		       'MAKEFILE-IN-DEPS'
Index: tests/Makefile.am
===================================================================
RCS file: /cvs/automake/automake/tests/Makefile.am,v
retrieving revision 1.443.2.26
diff -u -r1.443.2.26 Makefile.am
--- tests/Makefile.am	18 Apr 2003 09:17:30 -0000	1.443.2.26
+++ tests/Makefile.am	19 Apr 2003 11:12:09 -0000
@@ -111,6 +111,7 @@
 conf2.test \
 confdeps.test \
 confdist.test \
+conff.test \
 confh.test \
 confh4.test \
 config.test \
Index: tests/conff.test
===================================================================
RCS file: tests/conff.test
diff -N tests/conff.test
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ tests/conff.test	19 Apr 2003 11:12:10 -0000
@@ -0,0 +1,99 @@
+#! /bin/sh
+# Copyright (C) 2003  Free Software Foundation, Inc.
+#
+# This file is part of GNU Automake.
+#
+# GNU Automake 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.
+#
+# GNU Automake 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 Automake; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+# Make sure rebuild rules work even when AC_CONFIG_FILES uses colons.
+# Report from Alexander Turbov.
+
+required=GNUmake
+. ./defs || exit 1
+
+set -e
+
+cat >> configure.in << 'END'
+AC_CONFIG_FILES([bar/Makefile:bar/Makefile.in:Makefile.bot])
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+SUBDIRS = bar
+EXTRA_DIST = Makefile.bot
+END
+
+mkdir bar
+cat > bar/Makefile.am << 'END'
+top-rule:
+	@echo 'top rule'
+END
+
+cat > Makefile.bot << 'END'
+bot-rule:
+	@echo 'bot rule'
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+$MAKE
+
+cd bar
+$MAKE top-rule >stdout
+cat stdout
+grep 'top rule' stdout
+$MAKE bot-rule >stdout
+cat stdout
+grep 'bot rule' stdout
+cd ..
+
+$sleep
+
+cat > bar/Makefile.am << 'END'
+top-rule:
+	@echo 'top2 rule'
+END
+$MAKE
+
+cd bar
+$MAKE top-rule >stdout
+cat stdout
+grep 'top2 rule' stdout
+$MAKE bot-rule >stdout
+cat stdout
+grep 'bot rule' stdout
+cd ..
+
+$sleep
+
+cat > Makefile.bot << 'END'
+bot-rule:
+	@echo 'bot2 rule'
+END
+$MAKE
+
+cd bar
+$MAKE top-rule >stdout
+cat stdout
+grep 'top2 rule' stdout
+$MAKE bot-rule >stdout
+cat stdout
+grep 'bot2 rule' stdout
+cd ..
+
+$MAKE distcheck

-- 
Alexandre Duret-Lutz




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]