summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog43
-rw-r--r--Makefile.in7
-rw-r--r--automake.in11
-rw-r--r--doc/Makefile.in3
-rw-r--r--lib/Automake/Makefile.in2
-rw-r--r--lib/Automake/tests/Makefile.in3
-rw-r--r--lib/am/Makefile.in2
-rw-r--r--lib/am/distdir.am1
-rw-r--r--m4/Makefile.in3
-rw-r--r--tests/Makefile.am8
-rw-r--r--tests/Makefile.in13
-rwxr-xr-xtests/dist-auxdir-many-subdirs.test142
-rwxr-xr-xtests/dist-readonly.test60
-rwxr-xr-xtests/dist-repeated.test102
-rwxr-xr-xtests/distcom-subdir.test (renamed from tests/distcom7.test)40
-rwxr-xr-xtests/java-compile-run-nested.test2
-rwxr-xr-xtests/test-driver-is-distributed.test44
17 files changed, 460 insertions, 26 deletions
diff --git a/ChangeLog b/ChangeLog
index b298f85e2..452664813 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,46 @@
+2011-10-08 Stefano Lattarini <stefano.lattarini@gmail.com>
+
+ dist: auxiliary files can be distributed from subdir Makefiles
+ With this change, we make it possible for a subdir Makefile.am
+ to distribute files in the config auxdir; while this means that
+ some files might be copied multiple times, it simplify some logic
+ in the automake script, and fix at least one important bug. In
+ fact, before this change, the auxiliary script `test-driver' was
+ not being distributed as expected when TESTS was defined only in
+ a subdir Makefile (which is a pretty common setup indeed). Now
+ this does not happen anymore: so the present change fixes automake
+ bug#9546.
+ Another welcome collateral effect is that `dist-auxfile-2.test'
+ now passes.
+ OTOH, the present changes *breaks threaded automake*. The reason
+ is that automake needs to serialize file installations spawned
+ by `--add-missing' (this isn't for cosmetic reasons, but is
+ really needed to avoid possible race conditions and botched output
+ files). Currently the code that installs required files is
+ intertwined with the code that declares the DIST_COMMON variables;
+ so, upon de-serialization, the definition of DIST_COMMON might get
+ emitted in the wrong Makefile.in.
+ Some follow-up refactoring in automake will soon take care of
+ remedying this situation. For the moment, we just declare some
+ "parallel-am" tests as xfailing.
+ * automake.in (maybe_push_required_file): Add ad-hoc handling for
+ the case where the directory part of the required file is different
+ from the subdir where the current Makefile.am resides, but is equal
+ to the "config-aux directory" ($config_auxdir). This is needed to
+ allow a construct in a non-top-level Makefile.am to require a file
+ in the config-aux directory.
+ * tests/test-driver-is-distributed.test: Extend and adjust. This
+ test now passes.
+ * tests/java-compile-run-nested.test: Call automake with the `-a'
+ option to ensure that the `test-driver' auxiliary script gets
+ correctly installed. This test now passes.
+ * tests/distcom-subdir.test: New test.
+ * tests/dist-readonly.test: Likewise.
+ * tests/dist-repeated.test: Likewise.
+ * tests/dist-auxdir-many-subdirs.test: Likewise.
+ * tests/distcom7.test: Removed, it's obsolete now.
+ * tests/Makefile.am (TESTS, XFAIL_TESTS): Update.
+
2011-10-07 Stefano Lattarini <stefano.lattarini@gmail.com>
parallel-tests: warn on conditional TEST_EXTENSIONS definition
diff --git a/Makefile.in b/Makefile.in
index 24a6c7fe1..5104e2953 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -52,8 +52,11 @@ POST_UNINSTALL = :
build_triplet = @build@
subdir = .
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in $(top_srcdir)/configure AUTHORS COPYING \
- ChangeLog INSTALL NEWS THANKS TODO
+ $(srcdir)/Makefile.in $(top_srcdir)/configure \
+ $(top_srcdir)/lib/config.guess $(top_srcdir)/lib/config.sub \
+ $(top_srcdir)/lib/install-sh $(top_srcdir)/lib/missing \
+ $(top_srcdir)/lib/mkinstalldirs AUTHORS COPYING ChangeLog \
+ INSTALL NEWS THANKS TODO
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/amversion.m4 \
$(top_srcdir)/m4/auxdir.m4 $(top_srcdir)/m4/init.m4 \
diff --git a/automake.in b/automake.in
index 9d6acc0ac..d5b39b741 100644
--- a/automake.in
+++ b/automake.in
@@ -7619,6 +7619,17 @@ sub maybe_push_required_file
push_dist_common ($file);
return 1;
}
+ # This is needed to allow a construct in a non-top-level Makefile.am
+ # to require a file in the build-aux directory (see at least the test
+ # script `test-driver-is-distributed.test'). This is related to the
+ # automake bug#9546. Note that the use of $config_aux_dir instead
+ # of $am_config_aux_dir here is deliberate and necessary.
+ elsif ($dir eq $config_aux_dir)
+ {
+ # FIXME: this breaks serialization of threaded automake :-(
+ push_dist_common ("$am_config_aux_dir/$file");
+ return 1;
+ }
elsif ($relative_dir eq '.' && ! &is_make_dir ($dir))
{
# If we are doing the topmost directory, and the file is in a
diff --git a/doc/Makefile.in b/doc/Makefile.in
index b0d06f2d2..ab3e552f1 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -52,7 +52,8 @@ subdir = doc
DIST_COMMON = $(automake_TEXINFOS) $(dist_doc_DATA) $(dist_man1_MANS) \
$(dist_noinst_DATA) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(srcdir)/stamp-vti \
- $(srcdir)/version.texi
+ $(srcdir)/version.texi $(top_srcdir)/lib/mdate-sh \
+ $(top_srcdir)/lib/mkinstalldirs $(top_srcdir)/lib/texinfo.tex
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/amversion.m4 \
$(top_srcdir)/m4/auxdir.m4 $(top_srcdir)/m4/init.m4 \
diff --git a/lib/Automake/Makefile.in b/lib/Automake/Makefile.in
index 2ea1a18fe..b83778bf2 100644
--- a/lib/Automake/Makefile.in
+++ b/lib/Automake/Makefile.in
@@ -51,7 +51,7 @@ POST_UNINSTALL = :
build_triplet = @build@
subdir = lib/Automake
DIST_COMMON = $(dist_perllib_DATA) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in
+ $(srcdir)/Makefile.in $(top_srcdir)/lib/mkinstalldirs
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/amversion.m4 \
$(top_srcdir)/m4/auxdir.m4 $(top_srcdir)/m4/init.m4 \
diff --git a/lib/Automake/tests/Makefile.in b/lib/Automake/tests/Makefile.in
index 3e5def591..ead6233a9 100644
--- a/lib/Automake/tests/Makefile.in
+++ b/lib/Automake/tests/Makefile.in
@@ -48,7 +48,8 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
subdir = lib/Automake/tests
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(top_srcdir)/lib/mkinstalldirs $(top_srcdir)/lib/test-driver
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/amversion.m4 \
$(top_srcdir)/m4/auxdir.m4 $(top_srcdir)/m4/init.m4 \
diff --git a/lib/am/Makefile.in b/lib/am/Makefile.in
index 53ce53d41..050806aaf 100644
--- a/lib/am/Makefile.in
+++ b/lib/am/Makefile.in
@@ -51,7 +51,7 @@ POST_UNINSTALL = :
build_triplet = @build@
subdir = lib/am
DIST_COMMON = $(dist_am_DATA) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in
+ $(srcdir)/Makefile.in $(top_srcdir)/lib/mkinstalldirs
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/amversion.m4 \
$(top_srcdir)/m4/auxdir.m4 $(top_srcdir)/m4/init.m4 \
diff --git a/lib/am/distdir.am b/lib/am/distdir.am
index 7e31f2c8b..0eed2480c 100644
--- a/lib/am/distdir.am
+++ b/lib/am/distdir.am
@@ -216,6 +216,7 @@ endif %?TOPDIR_P%
## Test for file existence because sometimes a file gets included in
## DISTFILES twice. For example this happens when a single source
## file is used in building more than one program.
+## See also test `dist-repeated.test'.
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
diff --git a/m4/Makefile.in b/m4/Makefile.in
index 8bc9b701c..66ca13846 100644
--- a/m4/Makefile.in
+++ b/m4/Makefile.in
@@ -51,7 +51,8 @@ POST_UNINSTALL = :
build_triplet = @build@
subdir = m4
DIST_COMMON = $(dist_automake_ac_DATA) $(dist_system_ac_DATA) \
- $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(top_srcdir)/lib/mkinstalldirs
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/amversion.m4 \
$(top_srcdir)/m4/auxdir.m4 $(top_srcdir)/m4/init.m4 \
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 35baf9eee..8fdec80f5 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -28,14 +28,13 @@ all.test \
auxdir2.test \
cond17.test \
dist-auxfile.test \
-dist-auxfile-2.test \
gcj6.test \
override-conditional-2.test \
+parallel-am.test \
java-nobase.test \
pr8365-remake-timing.test \
yacc-dist-nobuild-subdir.test \
vala-vpath.test \
-test-driver-is-distributed.test \
txinfo5.test
@@ -405,13 +404,16 @@ discover.test \
dist-auxfile.test \
dist-auxfile-2.test \
dist-included-parent-dir.test \
+dist-readonly.test \
+dist-repeated.test \
+dist-auxdir-many-subdirs.test \
distcleancheck.test \
distcom2.test \
distcom3.test \
distcom4.test \
distcom5.test \
distcom6.test \
-distcom7.test \
+distcom-subdir.test \
distdir.test \
distlinks.test \
distlinksbrk.test \
diff --git a/tests/Makefile.in b/tests/Makefile.in
index 3d7fe7c9e..dbe4621bb 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -51,7 +51,8 @@ build_triplet = @build@
DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
$(srcdir)/aclocal.in $(srcdir)/automake.in $(srcdir)/defs \
$(srcdir)/defs-static.in $(srcdir)/instspc-tests.am \
- $(srcdir)/parallel-tests.am
+ $(srcdir)/parallel-tests.am $(top_srcdir)/lib/mkinstalldirs \
+ $(top_srcdir)/lib/test-driver
subdir = tests
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/amversion.m4 \
@@ -294,10 +295,9 @@ EXTRA_DIST = ChangeLog-old gen-parallel-tests instspc-tests.sh \
extract-testsuite-summary tap-setup.sh tap-summary-aux.sh \
distcheck-hook-m4.am
XFAIL_TESTS = all.test auxdir2.test cond17.test dist-auxfile.test \
- dist-auxfile-2.test gcj6.test override-conditional-2.test \
+ gcj6.test override-conditional-2.test parallel-am.test \
java-nobase.test pr8365-remake-timing.test \
- yacc-dist-nobuild-subdir.test vala-vpath.test \
- test-driver-is-distributed.test txinfo5.test \
+ yacc-dist-nobuild-subdir.test vala-vpath.test txinfo5.test \
$(instspc_xfail_tests)
parallel_tests = check-concurrency-bug9245-p.test \
check-exported-srcdir-p.test check-fd-redirect-p.test \
@@ -668,13 +668,16 @@ discover.test \
dist-auxfile.test \
dist-auxfile-2.test \
dist-included-parent-dir.test \
+dist-readonly.test \
+dist-repeated.test \
+dist-auxdir-many-subdirs.test \
distcleancheck.test \
distcom2.test \
distcom3.test \
distcom4.test \
distcom5.test \
distcom6.test \
-distcom7.test \
+distcom-subdir.test \
distdir.test \
distlinks.test \
distlinksbrk.test \
diff --git a/tests/dist-auxdir-many-subdirs.test b/tests/dist-auxdir-many-subdirs.test
new file mode 100755
index 000000000..4f32f645d
--- /dev/null
+++ b/tests/dist-auxdir-many-subdirs.test
@@ -0,0 +1,142 @@
+#! /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/>.
+
+# It should be legitimate for many subdir Makefiles to require the
+# same config-aux files.
+
+am_create_testdir=empty
+parallel_tests=yes
+required=cc
+. ./defs || Exit 1
+
+count=0
+ocwd=`pwd` || fatal_ "cannot get current working directory"
+
+# Usage: do_check [--add-missing] [CONFIG-AUXDIR-PATH=.]
+do_check ()
+{
+ case $1 in
+ -a|--add-missing) add_missing=yes; shift;;
+ *) add_missing=no;;
+ esac
+ auxdir=${1-.}
+
+ count=`expr $count + 1`
+ mkdir T$count.d
+ cd T$count.d
+
+ distdir=$me-$count
+ unindent > configure.in << END
+ AC_INIT([$me], [$count])
+ AC_CONFIG_AUX_DIR([$auxdir])
+ AM_INIT_AUTOMAKE([parallel-tests])
+ AC_PROG_CC
+ # We don't want to require python or emcas in this test, so
+ # the tricks below.
+ AM_PATH_PYTHON([2.2], [], [:])
+ EMACS=no; AM_PATH_LISPDIR
+ AC_CONFIG_FILES([Makefile])
+END
+
+ unindent > Makefile.stub <<'END'
+ ## For depcomp.
+ bin_PROGRAMS = foo
+ foo_SOURCES = foo.c
+ ## For py-compile.
+ python_PYTHON = bar.py
+ ## For elisp-comp.
+ lisp_LISP = baz.el
+ ## For test-driver.
+ TESTS =
+END
+
+ required_files='
+ install-sh
+ missing
+ depcomp
+ py-compile
+ elisp-comp
+ test-driver
+ '
+
+ echo "SUBDIRS =" > Makefile.am
+
+ suffixes='0 1 2 3 4 5 6 7 8 9'
+
+ for x in $suffixes; do
+ mkdir sub$x
+ echo "SUBDIRS += sub$x" >> Makefile.am
+ echo "AC_CONFIG_FILES([sub$x/Makefile])" >> configure.in
+ cp Makefile.stub sub$x/Makefile.am
+ echo 'int main (void) { return 0; }' > sub$x/foo.c
+ touch sub$x/bar.py sub$x/baz.el
+ done
+ echo AC_OUTPUT >> configure.in
+
+ $ACLOCAL
+ $AUTOCONF
+
+ # FIXME: this is not good for installcheck; fix after merging
+ # into testsuite-work.
+ "$top_testsrcdir"/lib/install-sh -d $auxdir
+ if test $add_missing = yes; then
+ $AUTOMAKE -a --copy
+ for f in $required_files; do
+ test -f $auxdir/$f
+ # To ensure that if a auxiliary file is required and distributed
+ # by many Makefiles, the "dist" rule won't try to copy it multiple
+ # times in $(distdir).
+ chmod a-w $auxdir/$f
+ done
+ else
+ for f in $required_files; do
+ # FIXME: this is not good for installcheck; fix after merging
+ # into testsuite-work.
+ cp "$top_testsrcdir"/lib/$f $auxdir/$f
+ # See comments above.
+ chmod a-w $auxdir/$f
+ done
+ $AUTOMAKE
+ fi
+
+ for vpath in : false; do
+ if $vpath; then
+ mkdir build
+ cd build
+ srcdir=..
+ else
+ srcdir=.
+ fi
+ $srcdir/configure
+ $MAKE distdir
+ find $distdir # For debugging.
+ for f in $required_files; do
+ test -f $distdir/$auxdir/$f
+ done
+ cd $srcdir
+ done
+
+ cd "$ocwd" || fatal_ "cannot chdir back to '$ocwd'"
+}
+
+do_check .
+do_check --add-missing .
+do_check build-aux
+do_check --add-missing build-aux
+do_check a/b/c
+do_check --add-missing a/b/c
+
+:
diff --git a/tests/dist-readonly.test b/tests/dist-readonly.test
new file mode 100755
index 000000000..3b558c95e
--- /dev/null
+++ b/tests/dist-readonly.test
@@ -0,0 +1,60 @@
+#! /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/>.
+
+# Test that a readonly files are distributed as such, and not make
+# writable while being copied in the $(distdir).
+
+required=cc
+. ./defs || Exit 1
+
+cat >> configure.in << 'END'
+AC_PROG_CC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+bin_PROGRAMS = foo
+foo_SOURCES = foo.c
+EXTRA_DIST = bar.txt
+check-local: test
+.PHONY: test
+test:
+ test -f $(srcdir)/foo.c && test ! -w $(srcdir)/foo.c
+ if (echo x > $(srcdir)/foo.c); then exit 1; else :; fi
+ grep 'main (void)' $(srcdir)/foo.c
+ test -f $(srcdir)/bar.txt && test ! -w $(srcdir)/bar.txt
+ if (echo x > $(srcdir)/bar.txt); then exit 1; else :; fi
+ grep 'To be, or not to be' $(srcdir)/bar.txt
+END
+
+echo 'int main (void) { return 0; }' > foo.c
+echo To be, or not to be ... > bar.txt
+chmod a-w foo.c bar.txt
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE distdir
+ls -l $distdir # For debugging.
+test -f foo.c && test ! -w foo.c || Exit 1
+(echo x > foo.c) && Exit 1
+test -f bar.txt && test ! -w bar.txt || Exit 1
+(echo x > bar.txt) && Exit 1
+$MAKE distcheck
+
+:
diff --git a/tests/dist-repeated.test b/tests/dist-repeated.test
new file mode 100755
index 000000000..7dd8bdd8f
--- /dev/null
+++ b/tests/dist-repeated.test
@@ -0,0 +1,102 @@
+#! /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/>.
+
+# Test that we can distribute the same file as many times as we want.
+# The distdir target should take care of not copying it more than one
+# time anyway.
+
+. ./defs || Exit 1
+
+echo AC_OUTPUT >> configure.in
+
+cat > Makefile.am <<'END'
+bin_PROGRAMS = foo bar
+foo_SOURCES = foo.c
+bar_SOURCES = foo.c
+python_PYTHON = bar.py
+EXTRA_DIST = foo.c bar.py
+
+.PHONY: sanity-check
+sanity-check:
+ for f in $(DISTFILES); do echo " $$f "; done > dist.txt
+ cat dist.txt
+ test `grep ' foo\.c ' dist.txt | wc -l` -eq 3
+ test `grep ' bar\.py ' dist.txt | wc -l` -eq 2
+
+# So that we don't have to require a C compiler.
+AUTOMAKE_OPTIONS = no-dependencies
+CC = false
+
+# So that we don't have to require a Python interpreter.
+pythondir = ${prefix}/py
+PYTHON = false
+END
+
+ocwd=`pwd` || fatal_ "cannot get current working directory"
+
+# Help to ensure cp won't see the same file twice.
+mkdir bin
+cat > bin/cp <<END
+#!/bin/sh
+PATH='$PATH'; export PATH
+
+case " \$* " in
+ *foo.c\ *)
+ if test -f '$ocwd'/foo-c-copied; then
+ echo "\$0: we tried to copy foo.c twice" >&2
+ exit 1
+ else
+ # For a sanity check later.
+ echo ok > '$ocwd'/cp-wrapper-has-seen-foo-c
+ fi
+ ;;
+esac
+
+case " \$* " in
+ *bar.py\ *)
+ if test -f '$ocwd'/bar-py-copied; then
+ echo "\$0: we tried to copy bar.py twice" >&2
+ exit 1
+ else
+ # For a sanity check later.
+ echo ok > '$ocwd'/cp-wrapper-has-seen-bar-py
+ fi
+ ;;
+esac
+
+exec cp "\$@"
+END
+chmod a+x bin/cp
+PATH=`pwd`/bin$PATH_SEPARATOR$PATH; export PATH;
+
+: > foo.c
+: > bar.py
+: > py-compile
+
+# Help to ensure cp won't try to copy the same file twice.
+chmod a-w foo.c bar.py
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE sanity-check || fatal_ "expected invariants not verified"
+$MAKE distdir
+test -f cp-wrapper-has-seen-foo-c && test -f cp-wrapper-has-seen-bar-py \
+ || fatal_ "our cp wrapper hasn't run correctly"
+
+:
diff --git a/tests/distcom7.test b/tests/distcom-subdir.test
index 129bb5763..f873682f9 100755
--- a/tests/distcom7.test
+++ b/tests/distcom-subdir.test
@@ -14,8 +14,8 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-# Test to make sure that Automake complains when an auxfile (here depcomp)
-# is installed, but the Makefile that distributes it is not processed.
+# Test to make sure that if an auxfile (here depcomp) is required
+# by a subdir Makefile.am, it is distributed by that Makefile.am.
. ./defs || Exit 1
@@ -32,14 +32,44 @@ END
rm -f depcomp
mkdir subdir
+: > subdir/Makefile.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+test ! -f depcomp
+
cat > subdir/Makefile.am << 'END'
bin_PROGRAMS = foo
END
: > subdir/foo.c
-$ACLOCAL
-AUTOMAKE_fails --add-missing subdir/Makefile
-grep 'without.*Makefile.*arguments' stderr
+$AUTOMAKE -a subdir/Makefile
+test -f depcomp
+
+# FIXME: the logic of this check and other similar ones in other
+# FIXME: `distcom*.test' files should be factored out in a common
+# FIXME: subroutine in `defs'...
+sed -n -e "
+ /^DIST_COMMON =.*\\\\$/ {
+ :loop
+ p
+ n
+ t clear
+ :clear
+ s/\\\\$/\\\\/
+ t loop
+ s/$/ /
+ s/[$tab ][$tab ]*/ /g
+ p
+ n
+ }" subdir/Makefile.in > dc.txt
+cat dc.txt
+$FGREP ' $(top_srcdir)/depcomp ' dc.txt
+
+./configure
+$MAKE distdir
+test -f $distdir/depcomp
:
diff --git a/tests/java-compile-run-nested.test b/tests/java-compile-run-nested.test
index ec75c92ce..2019208fa 100755
--- a/tests/java-compile-run-nested.test
+++ b/tests/java-compile-run-nested.test
@@ -238,7 +238,7 @@ chmod a+x tests/*.test
$ACLOCAL
$AUTOCONF
-$AUTOMAKE
+$AUTOMAKE -a
# To have the parallel testsuite more verbose.
VERBOSE=yes; export VERBOSE
diff --git a/tests/test-driver-is-distributed.test b/tests/test-driver-is-distributed.test
index 09ea45a86..e9a3f146d 100755
--- a/tests/test-driver-is-distributed.test
+++ b/tests/test-driver-is-distributed.test
@@ -26,19 +26,23 @@ AC_CONFIG_FILES([tests/Makefile])
AC_OUTPUT
END
+rm -f depcomp # It's unneeded.
+
mkdir tests
cat > Makefile.am << 'END'
SUBDIRS = tests
-test0:
- echo ' ' $(DIST_COMMON) ' ' | grep '[ /]test-driver '
-test1: distdir
+check-local: test-top
+test-top: distdir
ls -l $(distdir) $(distdir)/* ;: For debugging.
test -f $(distdir)/test-driver
-.PHONY: test0 test1
+.PHONY: test-top
END
cat > tests/Makefile.am << 'END'
+check-local: test-sub
+test-sub:
+ echo ' ' $(DIST_COMMON) ' ' | grep '[ /]test-driver '
TESTS = foo.test
EXTRA_DIST = $(TESTS)
END
@@ -53,7 +57,37 @@ $ACLOCAL
$AUTOCONF
$AUTOMAKE -a
./configure
-$MAKE test0 test1
+$MAKE test-top
+cd tests; $MAKE test-sub; cd ..;
+$MAKE distcheck
+
+# Try again, with a `config_auxdir' != `.' this time.
+
+$MAKE distclean
+
+mkdir build-aux
+mv missing install-sh test-driver build-aux
+
+for d in . tests; do
+ sed 's|test-driver|build-aux/test-driver|' $d/Makefile.am > $d/t
+ mv -f $d/t $d/Makefile.am
+ cat $d/Makefile.am # For debugging.
+done
+
+# Extra newline possibly required by OpenBSD 3.9 sed, see the autoconf
+# manual for details.
+sed '/^AC_INIT/i\
+AC_CONFIG_AUX_DIR([build-aux])
+' configure.in > t
+mv -f t configure.in
+cat configure.in # For debugging.
+
+touch aclocal.m4 # To avoid useless remakes.
+$AUTOCONF
+$AUTOMAKE
+./configure
+$MAKE test-top
+cd tests; $MAKE test-sub; cd ..;
$MAKE distcheck
: