automake-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Automake-commit] [SCM] GNU Automake branch, master, updated. v1.14.1-19


From: Stefano Lattarini
Subject: [Automake-commit] [SCM] GNU Automake branch, master, updated. v1.14.1-196-gc24233d
Date: Wed, 24 Dec 2014 00:29:42 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Automake".

http://git.sv.gnu.org/gitweb/?p=automake.git;a=commitdiff;h=c24233d4194639cf2f87ceee162b0f0525ecdbd3

The branch, master has been updated
       via  c24233d4194639cf2f87ceee162b0f0525ecdbd3 (commit)
       via  bd838a68d44a3adce9ae4b2c5e3e17b47eead7c1 (commit)
       via  6979c8e680b68dbc2b27b4db808cb037ba6aabb7 (commit)
       via  01a7a4a7bea81b4e2d03d08b45d605b98501e024 (commit)
       via  2629aa9e713c584c799677987ffb03156b8aae8e (commit)
       via  a38fe86d4f425575e9753b34d65d73c98838b085 (commit)
       via  55270ac3222bb00e60505ec7c2d63f0047152bfa (commit)
       via  b2f771441af6d3fc26c4e4ab8273573f55d6723c (commit)
      from  033293c247160e1d7a6d834a785bd1adf16d34d5 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
-----------------------------------------------------------------------

Summary of changes:
 NEWS                                               |   23 +++++++
 THANKS                                             |    1 +
 lib/am/configure.am                                |    6 ++-
 lib/am/distdir.am                                  |   12 ++-
 ...h => am-include-only-one-generated-fragment.sh} |   32 ++++-----
 t/dejagnu-relative-srcdir.sh                       |    6 +-
 t/distcheck-pr18286.sh                             |   70 ++++++++++++++++++++
 t/list-of-tests.mk                                 |    2 +
 t/subdir-ac-subst.sh                               |   14 ++--
 t/subdir-am-cond.sh                                |   14 ++--
 t/txinfo-builddir.sh                               |    2 +-
 11 files changed, 144 insertions(+), 38 deletions(-)
 copy t/{recurs-user-no-top-level.sh => 
am-include-only-one-generated-fragment.sh} (62%)
 create mode 100644 t/distcheck-pr18286.sh

diff --git a/NEWS b/NEWS
index 52ffac2..3d8b363 100644
--- a/NEWS
+++ b/NEWS
@@ -178,6 +178,29 @@ New in 1.15:
     Makefiles, in the face of the newly-introduced randomization for
     hash keys order in Perl 5.18.
 
+  - In older Automake versions, if a user defined one single Makefile
+    fragment (say 'foo.am') to be included (via Automake includes) in
+    his main Makefile.am, and defined a custom make rule to generate that
+    file from other data, Automake used to spuriously complain about with
+    something like "... overrides Automake target '$(srcdir)/foo.am".
+    This bug is now fixed.
+
+  - Automake bug#18286: "make distcheck" could sometimes fail to detect
+    missing files in the distribution tarball, especially in those cases
+    where both the generated files and their dependencies are explicitly
+    in $(srcdir).  An important example of this are *generated* makefile
+    fragments included at Automake time in Makefile.am; e.g.:
+
+        ...
+        $(srcdir)/fragment.am: $(srcdir)/data.txt $(srcdir)/preproc.sh
+            cd $(srcdir) && $(SHELL) preproc.sh <data.txt >fragment.am
+        include $(srcdir)/fragment.am
+        ...
+
+    If the use forgot to add data.txt and/or preproc.sh in the distribution
+    tarball, "make distcheck" would have erroneously succeeded!  This issue
+    is now fixed.
+
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 New in 1.14.1:
diff --git a/THANKS b/THANKS
index 3d8dd8f..b66f744 100644
--- a/THANKS
+++ b/THANKS
@@ -285,6 +285,7 @@ Nathanael Nerode                address@hidden
 Nelson H. F. Beebe              address@hidden
 Nicholas Wourms                 address@hidden
 Nick Bowler                     address@hidden
+Nicola Fontana                  address@hidden
 Nicolas Joly                    address@hidden
 Nicolas Thiery                  address@hidden
 NightStrike                     address@hidden
diff --git a/lib/am/configure.am b/lib/am/configure.am
index 8f037fd..34ebd17 100644
--- a/lib/am/configure.am
+++ b/lib/am/configure.am
@@ -83,7 +83,11 @@ endif %?TOPDIR_P%
        esac;
 
 ## Avoid the "deleted header file" problem for the dependencies.
-?HAVE-MAKEFILE-IN-DEPS?%MAKEFILE-IN-DEPS%:
+##  Add the trailing "$(am__empty)" to trick Automake into not spuriously
+## complaining about "duplicated targets" in case the %MAKEFILE-IN-DEPS%
+## list expands to a single target that is also declared in some
+## user-defined rule.
+?HAVE-MAKEFILE-IN-DEPS?%MAKEFILE-IN-DEPS% $(am__empty):
 
 DIST_COMMON += %MAKEFILE-AM%
 
diff --git a/lib/am/distdir.am b/lib/am/distdir.am
index e143483..5b23aff 100644
--- a/lib/am/distdir.am
+++ b/lib/am/distdir.am
@@ -407,7 +407,7 @@ distcheck: dist
 ## can make our new subdirs.
        chmod -R a-w $(distdir)
        chmod u+w $(distdir)
-       mkdir $(distdir)/_build $(distdir)/_inst
+       mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
 ## Undo the write access.
        chmod a-w $(distdir)
 ## With GNU make, the following command will be executed even with "make -n",
@@ -428,8 +428,12 @@ distcheck: dist
 ## Parallel BSD make may not start a new shell for each command in a recipe,
 ## so be sure to 'cd' back to the original directory after this.
          && am__cwd=`pwd` \
-         && $(am__cd) $(distdir)/_build \
-         && ../configure \
+## If we merely used '$(distdir)/_build' here, "make distcheck" could
+## sometimes fail to detect missing files in the distribution tarball,
+## especially in those cases where both the generated files and their
+## dependencies are explicitly in $(srcdir).  See automake bug#18286.
+         && $(am__cd) $(distdir)/_build/sub \
+         && ../../configure \
 ?GETTEXT?          --with-included-gettext \
 ## Additional flags for configure.
            $(AM_DISTCHECK_CONFIGURE_FLAGS) \
@@ -438,7 +442,7 @@ distcheck: dist
 ## and --prefix values, so don't allow them to be overridden by the user or
 ## the developer.  That used to be allowed, and caused issues in practice
 ## (in corner-case usages); see automake bug#14991.
-           --srcdir=.. --prefix="$$dc_install_base" \
+           --srcdir=../.. --prefix="$$dc_install_base" \
          && $(MAKE) $(AM_MAKEFLAGS) \
          && $(MAKE) $(AM_MAKEFLAGS) dvi \
          && $(MAKE) $(AM_MAKEFLAGS) check \
diff --git a/t/recurs-user-no-top-level.sh 
b/t/am-include-only-one-generated-fragment.sh
similarity index 62%
copy from t/recurs-user-no-top-level.sh
copy to t/am-include-only-one-generated-fragment.sh
index f88e03e..57a8aec 100644
--- a/t/recurs-user-no-top-level.sh
+++ b/t/am-include-only-one-generated-fragment.sh
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2012-2014 Free Software Foundation, Inc.
+# Copyright (C) 2014 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
@@ -14,37 +14,35 @@
 # 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 that user recursion works even for targets that don't exist
-# in the top-level Makefile.
+# Check that inclusion of only one '.am' that can be regenerated via
+# a user-defined Makefile rule does not incur in spurious automake
+# warnings about "target redefinition".
 
 . test-init.sh
 
 cat >> configure.ac <<'END'
 AC_CONFIG_FILES([sub/Makefile])
-AM_EXTRA_RECURSIVE_TARGETS([foo-bar])
 AC_OUTPUT
 END
 
-mkdir sub
-
 cat > Makefile.am <<'END'
-SUBDIRS = sub
-all-local: foo-bar
+include foobar.am
+$(srcdir)/foobar.am: $(srcdir)/touch.sh
+       $(SHELL) $(srcdir)/touch.sh $(srcdir)/foobar.am
+EXTRA_DIST = touch.sh
 END
 
+mkdir sub
 cat > sub/Makefile.am <<'END'
-foo-bar-local:
-       : > foo-bar
-MOSTLYCLEANFILES = foo-bar
+include $(top_srcdir)/quux.am
+$(top_srcdir)/quux.am: $(top_srcdir)/touch.sh
+       $(SHELL) $(top_srcdir)/touch.sh $@
 END
 
+: > foobar.am
+: > quux.am
+
 $ACLOCAL
-$AUTOCONF
 $AUTOMAKE
 
-./configure
-
-$MAKE foo-bar
-test -f sub/foo-bar
-
 :
diff --git a/t/dejagnu-relative-srcdir.sh b/t/dejagnu-relative-srcdir.sh
index 79a37dd..34e6710 100644
--- a/t/dejagnu-relative-srcdir.sh
+++ b/t/dejagnu-relative-srcdir.sh
@@ -43,7 +43,7 @@ END
 cat > env.test/env.exp << 'END'
 set env_srcdir $env(srcdir)
 send_user "env_srcdir: $env_srcdir\n"
-if { [ regexp "^\.\.?$" $env_srcdir ] } {
+if { [ regexp "^\.(\./\.\.)?$" $env_srcdir ] } {
     pass "test_env_src"
 } else {
     fail "test_env_src"
@@ -52,13 +52,13 @@ END
 
 cat > tcl.test/tcl.exp << 'END'
 send_user "tcl_srcdir: $srcdir\n"
-if { [ regexp "^\.\.?$" $srcdir ] } {
+if { [ regexp "^\.(\./\.\.)?$" $srcdir ] } {
     pass "test_tcl_src"
 } else {
     fail "test_tcl_src"
 }
 send_user "tcl_orig_srcdir: $orig_srcdir\n"
-if { [ regexp "^\.\.?$" $orig_srcdir ] } {
+if { [ regexp "^\.(\./\.\.)?$" $orig_srcdir ] } {
     pass "test_tcl_orig_src"
 } else {
     fail "test_tcl_orig_src"
diff --git a/t/distcheck-pr18286.sh b/t/distcheck-pr18286.sh
new file mode 100644
index 0000000..fe89612
--- /dev/null
+++ b/t/distcheck-pr18286.sh
@@ -0,0 +1,70 @@
+#! /bin/sh
+# Copyright (C) 2014 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/>.
+
+# Ensure "make distcheck" detects all missing files, without getting
+# confused by the fact that they exists in the "original" source tree
+# from which "make distcheck" is run. See automake bug#18286.
+
+. test-init.sh
+
+echo AC_OUTPUT >> configure.ac
+
+cat > Makefile.am <<'END'
+$(srcdir)/test_data.am: $(srcdir)/test_data.txt $(srcdir)/gen-testdata.sh
+       cd $(srcdir) && $(SHELL) gen-testdata.sh <test_data.txt >test_data.am
+
+include $(srcdir)/test_data.am
+
+check-local:
+       is $(testdata) == foo bar
+END
+
+cat > test_data.txt <<'END'
+foo
+bar
+END
+
+
+cat > gen-testdata.sh <<'END'
+#!/bin/sh
+printf 'testdata = \\\n'
+sed 's/$/ \\/'
+echo '$(empty_string)'
+END
+chmod a+x gen-testdata.sh
+
+$sleep
+./gen-testdata.sh <test_data.txt >test_data.am
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE -a
+
+./configure
+
+$MAKE check
+
+# Oops, we failed to distribute some required files!
+run_make -e FAIL -M distcheck
+$FGREP '../../test_data.txt' output
+
+# But if we distribute them, everything will be OK.
+echo 'EXTRA_DIST = test_data.txt gen-testdata.sh' >> Makefile.am
+
+using_gmake || $MAKE Makefile
+$MAKE distcheck
+
+:
diff --git a/t/list-of-tests.mk b/t/list-of-tests.mk
index 12b74e3..630417c 100644
--- a/t/list-of-tests.mk
+++ b/t/list-of-tests.mk
@@ -147,6 +147,7 @@ t/amopts-location.sh \
 t/amopts-variable-expansion.sh \
 t/amsubst.sh \
 t/am-default-source-ext.sh \
+t/am-include-only-one-generated-fragment.sh \
 t/ansi2knr-no-more.sh \
 t/ar-lib.sh \
 t/ar-lib2.sh \
@@ -431,6 +432,7 @@ t/distcheck-no-prefix-or-srcdir-override.sh \
 t/distcheck-override-infodir.sh \
 t/distcheck-pr9579.sh \
 t/distcheck-pr10470.sh \
+t/distcheck-pr18286.sh \
 t/dmalloc.sh \
 t/doc-parsing-buglets-colneq-subst.sh \
 t/doc-parsing-buglets-tabs.sh \
diff --git a/t/subdir-ac-subst.sh b/t/subdir-ac-subst.sh
index aae3c84..b3ede8c 100644
--- a/t/subdir-ac-subst.sh
+++ b/t/subdir-ac-subst.sh
@@ -20,7 +20,7 @@
 
 . test-init.sh
 
-cat >>configure.ac <<'END'
+cat >> configure.ac <<'END'
 if test "$want_opt" = yes; then
   MAYBE_OPT=opt
 else
@@ -31,7 +31,7 @@ AC_CONFIG_FILES([src/Makefile opt/Makefile])
 AC_OUTPUT
 END
 
-cat >Makefile.am << 'END'
+cat > Makefile.am <<'END'
 SUBDIRS = src $(MAYBE_OPT)
 DIST_SUBDIRS = src opt
 
@@ -45,14 +45,16 @@ DIST_SUBDIRS = src opt
 # We rely on 'distcheck' to run 'check-local' and use
 # 'sanity1' and 'sanity2' as evidences that test-build was run.
 
+test_rootdir = $(top_builddir)/../../..
+
 test-build: all
        test -f src/result
        if test -n "$(MAYBE_OPT)"; then \
           test -f opt/result || exit 1; \
-          : > $(top_builddir)/../../sanity2 || exit 1; \
+          : > $(test_rootdir)/sanity2 || exit 1; \
        else \
           test ! -f opt/result || exit 1; \
-          : > $(top_builddir)/../../sanity1 || exit 1; \
+          : > $(test_rootdir)/sanity1 || exit 1; \
        fi
 
 test-dist: distdir
@@ -66,7 +68,7 @@ mkdir src opt
 : > src/source
 : > opt/source
 
-cat >src/Makefile.am << 'END'
+cat > src/Makefile.am <<'END'
 EXTRA_DIST = source
 all-local: result
 CLEANFILES = result
@@ -76,7 +78,7 @@ result: source
 END
 
 # We want in opt/ the same Makefile as in src/.  Let's exercise 'include'.
-cat >opt/Makefile.am << 'END'
+cat > opt/Makefile.am <<'END'
 include ../src/Makefile.am
 END
 
diff --git a/t/subdir-am-cond.sh b/t/subdir-am-cond.sh
index 73dba48..69345d1 100644
--- a/t/subdir-am-cond.sh
+++ b/t/subdir-am-cond.sh
@@ -20,13 +20,13 @@
 
 . test-init.sh
 
-cat >>configure.ac <<'END'
+cat >> configure.ac <<'END'
 AM_CONDITIONAL([COND_OPT], [test "$want_opt" = yes])
 AC_CONFIG_FILES([src/Makefile opt/Makefile])
 AC_OUTPUT
 END
 
-cat >Makefile.am << 'END'
+cat > Makefile.am <<'END'
 if COND_OPT
   MAYBE_OPT = opt
 endif
@@ -42,16 +42,18 @@ SUBDIRS = src $(MAYBE_OPT)
 # We rely on 'distcheck' to run 'check-local' and use
 # 'sanity1' and 'sanity2' as evidences that test-build was run.
 
+test_rootdir = $(top_builddir)/../../..
+
 if COND_OPT
 test-build: all
        test -f src/result
        test -f opt/result
-       : > $(top_builddir)/../../sanity2
+       : > $(test_rootdir)/sanity2
 else
 test-build: all
        test -f src/result
        test ! -f opt/result
-       : > $(top_builddir)/../../sanity1
+       : > $(test_rootdir)/sanity1
 endif
 
 test-dist: distdir
@@ -65,7 +67,7 @@ mkdir src opt
 : > src/source
 : > opt/source
 
-cat >src/Makefile.am << 'END'
+cat > src/Makefile.am <<'END'
 EXTRA_DIST = source
 all-local: result
 CLEANFILES = result
@@ -75,7 +77,7 @@ result: source
 END
 
 # We want in opt/ the same Makefile as in src/.  Let's exercise 'include'.
-cat >opt/Makefile.am << 'END'
+cat > opt/Makefile.am <<'END'
 include ../src/Makefile.am
 END
 
diff --git a/t/txinfo-builddir.sh b/t/txinfo-builddir.sh
index 2d4c670..50e3417 100644
--- a/t/txinfo-builddir.sh
+++ b/t/txinfo-builddir.sh
@@ -43,7 +43,7 @@ CLEANFILES = mu.info
 # to think 'version.texi' has been created...
 check-local:
        test ! -e mu.info
-       test -f ../mu.info
+       test -f $(srcdir)/mu.info
 END
 
 mkdir subdir


hooks/post-receive
-- 
GNU Automake



reply via email to

[Prev in Thread] Current Thread [Next in Thread]