On Sunday 02 October 2011, Stefano Lattarini wrote: > The automake manual says: > > AC_REQUIRE_AUX_FILE > For each AC_REQUIRE_AUX_FILE([file]), automake will ensure that file > exists in the aux directory, and will complain otherwise. It will also > automatically distribute the file. > > But the last sentence is incorrect (see attached test case). > Apparently, the bug seems to be present only when the directory of the auxiliary files itself contains a Makefile.am (in particular, when it is `.'). I've committed the attached patch (to maint) to expose the bug. I'm working on a fix (that also tackles bug#9546), but that is still causing few unresolved issues with threaded automake, and will introduce some (very minor) backward-incomatibilities, so I plan to finally commit the fix to master only.
Regards, Stefano
From e8082fb643b8ecd5997b9d8ca52204a81d60ea10 Mon Sep 17 00:00:00 2001 Message-Id: <e8082fb643b8ecd5997b9d8ca52204a81d60ea10.1317901115.git.stefano.lattar...@gmail.com> From: Stefano Lattarini <stefano.lattar...@gmail.com> Date: Thu, 6 Oct 2011 13:26:58 +0200 Subject: [PATCH] coverage: expose automake bug#9651 * tests/dist-auxfile.test: New test, xfailing. * tests/dist-auxfile-2.test: Likewise. * tests/Makefile.am (TESTS, XFAIL_TESTS): Add them. --- ChangeLog | 7 +++ tests/Makefile.am | 4 ++ tests/Makefile.in | 4 ++ tests/dist-auxfile-2.test | 62 +++++++++++++++++++++++++++++ tests/dist-auxfile.test | 96 +++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 173 insertions(+), 0 deletions(-) create mode 100755 tests/dist-auxfile-2.test create mode 100755 tests/dist-auxfile.test diff --git a/ChangeLog b/ChangeLog index 7d22655..b195156 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2011-10-06 Stefano Lattarini <stefano.lattar...@gmail.com> + + coverage: expose automake bug#9651 + * tests/dist-auxfile.test: New test, xfailing. + * tests/dist-auxfile-2.test: Likewise. + * tests/Makefile.am (TESTS, XFAIL_TESTS): Add them. + 2011-10-01 Stefano Lattarini <stefano.lattar...@gmail.com> parallel-tests: automake error our on invalid TEST_EXTENSIONS diff --git a/tests/Makefile.am b/tests/Makefile.am index f9b8d6c..bf17aea 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -20,6 +20,8 @@ XFAIL_TESTS = \ all.test \ auxdir2.test \ cond17.test \ +dist-auxfile.test \ +dist-auxfile-2.test \ gcj6.test \ java-nobase.test \ pr8365-remake-timing.test \ @@ -316,6 +318,8 @@ destdir.test \ dirlist.test \ dirlist2.test \ discover.test \ +dist-auxfile.test \ +dist-auxfile-2.test \ dist-included-parent-dir.test \ distcleancheck.test \ distcom2.test \ diff --git a/tests/Makefile.in b/tests/Makefile.in index adfac58..f66a9c7 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -291,6 +291,8 @@ XFAIL_TESTS = \ all.test \ auxdir2.test \ cond17.test \ +dist-auxfile.test \ +dist-auxfile-2.test \ gcj6.test \ java-nobase.test \ pr8365-remake-timing.test \ @@ -600,6 +602,8 @@ destdir.test \ dirlist.test \ dirlist2.test \ discover.test \ +dist-auxfile.test \ +dist-auxfile-2.test \ dist-included-parent-dir.test \ distcleancheck.test \ distcom2.test \ diff --git a/tests/dist-auxfile-2.test b/tests/dist-auxfile-2.test new file mode 100755 index 0000000..08daa6c --- /dev/null +++ b/tests/dist-auxfile-2.test @@ -0,0 +1,62 @@ +#! /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/>. + +# Files specified by AC_REQUIRE_AUX_FILE must exist, and if a Makefile +# is present in the build-aux directory, they correctly get automatically +# distributed. +# Related to automake bug#9651. + +am_create_testdir=empty +. ./defs || Exit 1 + +set -e + +cat > configure.in <<END +AC_INIT([$me], [1.0]) +AC_CONFIG_AUX_DIR([sub]) +AM_INIT_AUTOMAKE +AC_REQUIRE_AUX_FILE([zardoz]) +AC_CONFIG_FILES([Makefile sub/Makefile]) +AC_OUTPUT +END + +cat > Makefile.am <<'END' +SUBDIRS = sub +test: distdir + ls -l $(distdir) $(distdir)/* ;: For debugging. + test -f $(distdir)/sub/zardoz +.PHONY: test +check-local: test +END + +mkdir sub +: > sub/Makefile.am + +echo dummy > sub/zardoz + +$ACLOCAL +$AUTOCONF +$AUTOMAKE -a +test -f sub/install-sh +# Should work also without `--add-missing'. +$AUTOMAKE + +./configure + +$MAKE test +$MAKE distcheck + +: diff --git a/tests/dist-auxfile.test b/tests/dist-auxfile.test new file mode 100755 index 0000000..2776a25 --- /dev/null +++ b/tests/dist-auxfile.test @@ -0,0 +1,96 @@ +#! /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/>. + +# Files specified by AC_REQUIRE_AUX_FILE must exist, and they get +# automatically distributed by the top-level Makefile.am. +# Automake bug#9651 reported that this didn't happen when the build-aux +# directory was set to `.' by AC_CONFIG_AUX_DIR. + +am_create_testdir=empty +. ./defs || Exit 1 + +set -e + +i=0 +for auxdir in build-aux ''; do + + echo "*** Testing with auxdir '$auxdir' ***" + + i=`expr $i + 1` + mkdir T$i.d + cd T$i.d + + unindent > configure.in <<END + AC_INIT([$me], [1.0]) + AC_CONFIG_AUX_DIR([${auxdir:-.}]) + AM_INIT_AUTOMAKE + AC_REQUIRE_AUX_FILE([foo.txt]) + AC_REQUIRE_AUX_FILE([bar.sh]) + AC_REQUIRE_AUX_FILE([zardoz]) + AC_CONFIG_FILES([Makefile subdir/Makefile]) + AC_OUTPUT +END + + echo auxdir = ${auxdir:+"$auxdir/"} > Makefile.am + unindent >> Makefile.am <<'END' + SUBDIRS = subdir + test: distdir + ls -l $(distdir) $(distdir)/* ;: For debugging. + @echo DIST_COMMON = $(DIST_COMMON) ;: Likewise. + echo ' ' $(DIST_COMMON) ' ' | grep '[ /]$(auxdir)foo.txt ' + echo ' ' $(DIST_COMMON) ' ' | grep '[ /]$(auxdir)bar.sh ' + echo ' ' $(DIST_COMMON) ' ' | grep '[ /]$(auxdir)zardoz ' + test -f $(distdir)/$(auxdir)foo.txt + test -f $(distdir)/$(auxdir)bar.sh + test -f $(distdir)/$(auxdir)zardoz + .PHONY: test + check-local: test +END + + mkdir subdir + : > subdir/Makefile.am + + test -z "$auxdir" || mkdir "$auxdir" || Exit 99 + + if test -z "$auxdir"; then + auxdir=. + auxdir_rx='\.' + else + auxdir_rx=$auxdir + fi + + $ACLOCAL + $AUTOCONF + + AUTOMAKE_fails + grep "^configure\\.in:4:.* required file.*$auxdir_rx/foo\\.txt" stderr + grep "^configure\\.in:5:.* required file.*$auxdir_rx/bar\\.sh" stderr + grep "^configure\\.in:6:.* required file.*$auxdir_rx/zardoz" stderr + + touch $auxdir/foo.txt $auxdir/bar.sh $auxdir/zardoz + cp "$testsrcdir"/../lib/missing "$testsrcdir"/../lib/install-sh $auxdir + $AUTOMAKE + ./configure + $MAKE test + $EGREP '(foo\.txt|bar\.sh|zardoz)' subdir/Makefile.in && Exit 1 + + $MAKE distcheck + + cd .. + +done + +: -- 1.7.2.3