* master:
tests: avoid a possible failure due to autom4te cache staleness
tests: fix spurious failure in test on TEXINFO_TEX overriding
tests: avoid some spurious failures on AIX 7.1
tests: fix spurious failure in test on TEXINFO_TEX overriding
* t/txinfo-override-texinfo-tex.sh: Here. The issue was pre-existing, but
has been only recently exposed by the fix for automake bug#18286 "distcheck
fails to detect missing files" (see commit v1.14.1-4-g01a7a4a) and by the
BSD make semantics. To convince yourself this change actually makes sense
semantically, see https://sourceware.org/ml/binutils/2012-06/msg00004.html
* t/lex-noyywrap.sh: Here.
* t/instmany-mans.sh: And here.
* t/instmany-python.sh: And here.
* t/instmany.sh: And here.
* t/parallel-tests-concurrency.sh: And here.
[ng] cleanup: after the merge master -> ng/master done recently
* t/distcheck-pr18286.sh: Slightly simplify and tighten by assuming
that $MAKE is GNU make.
* lib/am/configure.am: Use $(am.chars.empty) rather than $(am__empty)
for the internal variable always expansing to the empty string.
* master:
dist: fix bug#18286 "distcheck fails to detect missing files"
tests: expose automake bug#18286 "distcheck fails to detect missing files"
include: fix bug in handling of user-defined makefile fragments generation
tests: expose bug in handling of user-defined makefile fragments generation
+ Extra non-trivial changes:
* lib/am/distcheck.mk: Backport the changes done to lib/am/distdir.am
in commit v1.14.1-4-g01a7a4a (fix for automake bug#18286 "distcheck
fails to detect missing files").
dist: fix bug#18286 "distcheck fails to detect missing files"
BTW, this issue had been already reported in the past:
http://lists.gnu.org/archive/html/automake/2006-09/msg00008.html
http://lists.gnu.org/archive/html/automake/2013-01/msg00049.html
"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. A basic example:
# -*- Makefile.am -*-
$(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!
The reason is that, while $(srcdir)/data.txt does not exist, make also
looks in $(srcdir)/$(srcdir)/data.txt, and in the distcheck-issued
VPATH build where $(srcdir) is '..', that file exists, as it is
part of the original development directory.
* t/distdir.am (distcheck): Adjust to have the build directory be
'$(distdir)/_build/sub' rather than just '$(distdir)/_build'. Thanks
Nicola Fontana for the suggestion.
* t/distcheck-pr18286.sh: Enhance and tighten a little.
* t/list-of-tests.mk (XFAIL_TESTS): Remove 't/distcheck-pr18286.sh',
as it's now passing.
* t/subdir-am-cond.sh: Adjust to avoid a fully spurious failure due
to the new distcheck semantics.
* t/subdir-ac-subst.sh: Likewise.
* t/dejagnu-relative-srcdir.sh: Likewise.
* t/txinfo-builddir.sh: Likewise.
* NEWS: Update.
Helped-by: Nicola Fontana <ntd@entidi.it> Helped-by: Peter Johansson <trojkan@gmail.com> Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
include: fix bug in handling of user-defined makefile fragments generation
If a user defined one single Makefile fragment to be included (via Automake
includes) in his main Makefile.am, and gave a rule to generate that file
from other data, Automake used to spuriously complain about with something
like "overrides Automake target '$(srcdir)/foo.am". This change remove that
spurious error (via a simple hack rather than a systematic change, but oh
well).
* lib/am/configure.am (%MAKEFILE-IN-DEPS%) [?HAVE-MAKEFILE-IN-DEPS?]: Add
a trailing "$(am__empty)" to the list of targets, which is enough to trick
Automake into not 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.
* t/list-of-tests.mk (XFAIL_TESTS): Remove now-passing test
't/am-include-only-one-generated-fragment.sh'.
* NEWS: Update.
tests: expose bug in handling of user-defined makefile fragments generation
If a user defines one single Makefile fragment to be included (via Automake
includes) in his main Makefile.am, and givse a rule to generate that file
from other data, Automake will spuriously complain about with something
like "overrides Automake target '$(srcdir)/foo.am".
* t/am-include-only-one-generated-fragment.sh: Expose the bug (this test
is still XFAILing).
* t/list-of-tests.mk: Add the new test.
* t/self-check-dir.tap: Here (where we didn't account for VPATH builds).
* t/subpkg.sh: And here (where we were trying to copy the 'compile'
build-aux script on a pre-existing, read-only one).
This change fixes the failures in test 'make-dryrun.tap' (exposed by
previous commit v1.13.1d-928-g723f6d9), and also fixes a long-standing
failure of the test 'remake-gnulib-add-acsubst.sh'. Yay!
make flags analysis: expose bug in dry-run recognition
* t/make-dryrun.tap: Here. If, e.g., the '--no-print-directory' option is
given, the $(am.make.dry-run) variable will erroneously set to 'true',
even when make is *not* running in dry mode :-(
* master:
cleanup: refactor code to initialize DIST_COMMON
dist: ordering of files in DIST_COMMON is deterministic now
tests: refactor some tests on DIST_COMMON
maint: make output of 'gen-testsuite-part' deterministic
When computing lispdir, don't load emacs site wide init file.
PATH: quote $(PATH_SEPARATOR) as well
Improve detection of GNU make, avoiding "Arg list too long" errors.
* minor:
cleanup: refactor code to initialize DIST_COMMON
dist: ordering of files in DIST_COMMON is deterministic now
tests: refactor some tests on DIST_COMMON
maint: make output of 'gen-testsuite-part' deterministic
When computing lispdir, don't load emacs site wide init file.
PATH: quote $(PATH_SEPARATOR) as well
Improve detection of GNU make, avoiding "Arg list too long" errors.
* micro:
cleanup: refactor code to initialize DIST_COMMON
dist: ordering of files in DIST_COMMON is deterministic now
tests: refactor some tests on DIST_COMMON
maint: make output of 'gen-testsuite-part' deterministic
When computing lispdir, don't load emacs site wide init file.
PATH: quote $(PATH_SEPARATOR) as well
Improve detection of GNU make, avoiding "Arg list too long" errors.
There is not need to make that an Automake variable early,
only to later get and munge its contents, and use the new
content to redefine the variable.
* bin/automake.in (@dist_common): New global variable.
(push_dist_common, handle_dist): Use it.
(handle_dist): Define am__DIST_COMMON instead of DIST_COMMON
directly.
(initialize_per_input): Reset it to empty.
($configure_dist_common): Turn this scalar variable ...
(@configure_dist_common): ... into this array variable.
(handle_dist): Adjust.
(required_file_check_or_copy): Update and wrap some comments.
* lib/am/distdir.am (DIST_COMMON): Append $(am__DIST_COMMON).
* t/distcom2.sh: Tighten a little.
dist: ordering of files in DIST_COMMON is deterministic now
It had likely stopped being deterministic due to the new perl behavior
of having non-deterministic order of numerating hash keys:
<http://search.cpan.org/dist/perl-5.18.0/pod/perldelta.pod#Hash_randomization>
<http://onionstand.blogspot.ie/2012/12/are-you-relying-on-hash-keys-being.html>
See also similar commit v1.14-19-g52e6404, albeit in this case the issue
is likely coming from autom4te/autoconf, not from automake itself.
Fixes automake bug http://debbugs.gnu.org/17908
* bin/automake.in (handle_dist): Sort @dist_common.
(print_autodist_files): Swap invocations of 'sort' and 'uniq', for
consistency with the new code in 'handle_dist' and to get rid of a
minor hack.
* NEWS: Update.
So that they prefer checking the semantics of the generated Makefiles,
rather than grepping their content. This will be useful in an upcoming
refactoring.
* t/distcom-subdir.sh: Adjust this test.
* t/distcom2.sh: And this.
* t/distcom3.sh: And this.
* t/distcom4.sh: And this.
* t/distcom5.sh: And this.
* master:
Fix stupid typo in test, causing spurious failure
sync: update third-part files from upstream
Make sure AM_INIT_AUTOMAKE has a trailing newline
dist: adjust warning messages about shar and tarZ deprecation
docs: improve description of ${PACKAGE}, ${VERSION}, and similar variables
Fix dumb logic error preventing $install_sh from being be overridden
Automake docs: fix typos and use of British English
Expose automake bug#19311
build: fix race in parallel builds
build: fix race in parallel builds
init: ensure $ac_aux_dir is defined before being used
plans: enabling subdir-object by default is blocked on bug#13928
maint: update copyright (for files in 'master' only)
maint: update copyright years
maint: sync files from upstream ("make fetch")
Typofixes in warning messages and manual
doc: fix encoding error with UTF-8 characters
NEWS: a typofix, and better word wrapping
parallel-tests: avoid possible implicit "make all" in test-suite.log rule
Allow user to extend .PRECIOUS target
cosmetics: remove a couple of extra trailing white spaces
tests: fix a spurious failure on Mac OS X
docs: make clear the JAVA primary is frozen
install-sh: a slightly better diagnostic, and tests enhancements
install-sh: be stricter in catching invalid usages
tests: more significant names for some tests
tests: some cosmetic fixes
tests: more significant names for a test
docs: drop a few obsolescent FIXME/TODO comments, and associated text
testsuite harness: report test exit status in log file
TAP driver: no need to invoke AC_PROG_AWK directly
TAP driver: remove perl implementation (move it into contrib/)
NEWS: stop reporting "new" Automake versioning scheme
post-release: micro version bump to 1.14.1a devel version
release: stable micro release 1.14.1
HACKING: minor clarification
tests: make install-info-dir.sh print more debugging info
tests: remove too-brittle test tap-realtime.sh
maintainer: am-ft: add option to cater to clock skews
sync: update INSTALL, config.guess and config.sub from upstream
TAP driver: cosmetic fixes
cosmetics: fix typo in a user-facing message in tests
automake: account for perl hash order randomization
tests: avoid use of intervals to capitalize letters
cosmetics: untabify the install-sh script
install-sh: assume that "set -f" and "set +f" work...
install-sh: assume ${var:-value} works as expected
install-sh: assume 'dirname' is available and working correctly
distcheck: don't allow overriding of --prefix and --srcdir by the user
tests: expose bug#14991 (relates to 'distcheck')
tests: fix spurious failure when zip is present but unzip is not
tests: fix spurious failure due to localization issues
NEWS: update with the changes since v1.14
docs: correct typos in the fix-timestamp.sh script
python: byte-compile nobase_*_PYTHON files only once
cosmetics: typofix in the 'missing' script
test: avoid false positives in 'cc-no-c-o' script
test harness: improve catching of usage errors in script 'test-driver'
tests: fix a spurious failure on NetBSD-current
am-ft: make the environment available earlier
NEWS: post-release tweaks (for 1.14.x series)
tests: avoid a spurious failure on MacOS X 10.6.8
tests: don't risk hanging on the 'cl' requirement
post-release: micro version bump (1.14a)
post-release: micro version bump (1.14.0a)
release: stable minor release 1.14
Andrew Burgess [Wed, 30 Jul 2014 16:41:15 +0000 (17:41 +0100)]
When computing lispdir, don't load emacs site wide init file.
When computing the lispdir emacs was previously invoked with the '-q'
option to avoid loading the users initialisation files, however, the
site wide initialisation file was still loaded, in some cases this can
cause emacs to hang, with the result that a configure can also hang.
The lisp code that aclocal causes to be executed reduces the load-path
list (in emacs) to empty. The load-path is used by emacs to find
packages which it wants to load. Currently, if emacs tries to auto
load a package during shut down, and the package is not found, then
emacs will hang. This does seem like an emacs bug, but protecting
against this in aclocal is simply a case of not loading the site wide
initialisation file.
In this patch then the '-q' option to emacs is replaced with '-Q',
this has the same, the '-Q' option is similar to '-q --no-site-file
--no-splash'.
* doc/automake.texi (Hard-Coded Install Paths): Update explanation of
emacs code used to get lispdir.
* m4/lispdir.m4 (AM_PATH_LISPDIR): Update emacs flags.
Improve detection of GNU make, avoiding "Arg list too long" errors.
Such errors could take place when the main makefile included too many
sub-makefiles, making $(MAKEFILE_LIST) too long and causing the
recipes $(am__is_gnu_make) to exceed the shell's command-line length
limits. This is not a theoretical issue: it could happen for projects
having lots of C/C++ sources and using automatic dependency tracking,
which created an included .Po sub-makefile for each of such sources.
Fixes http://debbugs.gnu.org/18744
* lib/am/header-vars.am (am__is_gnu_make): Fix the logic to avoid
the use of $(MAKEFILE_LIST).
* NEWS: Update.
* minor:
Fix stupid typo in test, causing spurious failure
sync: update third-part files from upstream
Make sure AM_INIT_AUTOMAKE has a trailing newline
dist: adjust warning messages about shar and tarZ deprecation
docs: improve description of ${PACKAGE}, ${VERSION}, and similar variables
* micro:
sync: update third-part files from upstream
Make sure AM_INIT_AUTOMAKE has a trailing newline
dist: adjust warning messages about shar and tarZ deprecation
docs: improve description of ${PACKAGE}, ${VERSION}, and similar variables
This used to be the case until Automke 1.13, but we broke it in
Automake 1.14 (see commit v1.13.1-71-gf78b0f0). This caused
issues like http://debbugs.gnu.org/16841
* m4/init.m4 (AM_INIT_AUTOMAKE): Adjust.
* t/aminit-trailing-dnl-comment-pr16841.sh: New test.
* t/list-of-tests.mk: Add it.
* NEWS, THANKS: Update.
docs: improve description of ${PACKAGE}, ${VERSION}, and similar variables
In particular, suggesting that $PACKAGE and $VERSION should be aliases of
the $PACKAGE_TARNAME and $PACKAGE_VERSION definitions coming from AC_INIT,
and not be defined via an obsolete 2-argument invocation of AM_INIT_AUTOMAKE;
and why that is the best default, given all our historical baggage.
See discussion in http://debbugs.gnu.org/16623 for more information and
background.
* minor:
Fix dumb logic error preventing $install_sh from being be overridden
Automake docs: fix typos and use of British English
Expose automake bug#19311
build: fix race in parallel builds
build: fix race in parallel builds
Paul Eggert [Sat, 23 Aug 2014 14:55:28 +0000 (07:55 -0700)]
build: fix race in parallel builds
Reported by Friedrich Beckmann in: http://bugs.gnu.org/18301
* lib/am/texi-vers.am (?DIRSTAMP?): Put the process-ID into the
temporary file name. Use a similar temporary in the source dir.
Paul Eggert [Sat, 23 Aug 2014 14:55:28 +0000 (07:55 -0700)]
build: fix race in parallel builds
Reported by Friedrich Beckmann in: http://bugs.gnu.org/18301
* lib/am/texi-vers.am (?DIRSTAMP?): Put the process-ID into the
temporary file name. Use a similar temporary in the source dir.
init: ensure $ac_aux_dir is defined before being used
Since we use '$ac_aux_dir' to define '$am_aux_dir', we need
to ensure the former has been initialized before we try to
define the latter, otherwise the definition:
am_aux_dir=`cd $ac_aux_dir && pwd`
will set '$am_aux_dir' to '$HOME', likely causing weird and
unexpected behaviours.
This change fixes automake bug#15981.
* m4/auxdir.m4 (AM_AUX_DIR_EXPAND): AC_REQUIRE expansion
of 'AC_CONFIG_AUX_DIR_DEFAULT'. Fix redundant comment and
AC_PREREQ, add extra quoting around '$ac_aux_dir'.
* t/auxdir-pr15981.sh: New test.
* t/auxdir-cc-pr15981.sh: Likewise.
* t/list-of-tests.mk (handwritten_TESTS): Add them.
* THANKS, NEWS: Update.
* bin/automake.in: Fix a harmless typo in comments, that
I happened to notice while writing this patch.
* minor:
doc: fix encoding error with UTF-8 characters
NEWS: a typofix, and better word wrapping
parallel-tests: avoid possible implicit "make all" in test-suite.log rule
Paul Eggert [Sat, 4 Jan 2014 04:52:29 +0000 (20:52 -0800)]
doc: fix encoding error with UTF-8 characters
* doc/automake.texi: Specify @documentencoding and
@documentlanguage, to prevent encoding errors for parts of this
input file that are UTF-8. This also causes the .info output to
use curly quotes, which is easier to read though it does assume
UTF-8 support.
parallel-tests: avoid possible implicit "make all" in test-suite.log rule
This change fixes automake bug#16302.
* lib/am/check.am ($(TEST_SUITE_LOG)): Avoid running "make $redo_logs"
when $redo_logs expands to empty, since in that case we are actually
ending up invoking a full "make all". That shouldn't be required, and
can cause slowdowns for people implementing their extra "laziness
wrappers" around check-TESTS (automake bug#16302).
* NEWS: Update.
* minor:
Allow user to extend .PRECIOUS target
cosmetics: remove a couple of extra trailing white spaces
tests: fix a spurious failure on Mac OS X
docs: make clear the JAVA primary is frozen
install-sh: a slightly better diagnostic, and tests enhancements
install-sh: be stricter in catching invalid usages
tests: more significant names for some tests
tests: some cosmetic fixes
tests: more significant names for a test
docs: drop a few obsolescent FIXME/TODO comments, and associated text
testsuite harness: report test exit status in log file
TAP driver: no need to invoke AC_PROG_AWK directly
TAP driver: remove perl implementation (move it into contrib/)
* bin/automake.in: Adjust to ensure we handle '.PRECIOUS' the same way
we do for '.PHONY' and '.MAKE'.
* lib/Automake/Rule.pm: Likewise.
* t/precious.sh: New test.
* t/list-of-tests.mk: Add it.
* t/phony.sh: Enhance a little while at it.
* NEWS: Update.
* THANKS: Likewise.
Reported-by: Holger Hans Peter Freyther <holger@freyther.de> Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
install-sh: a slightly better diagnostic, and tests enhancements
* lib/install-sh: When called with no non-option arguments and the '-t'
option with an argument that is not an existing directory, have the
diagnostic output complain about the lack of required arguments rather
than about the bad argument passed to '-t'.
* t/install-sh-unittests.sh: Enhance to also check diagnostic printed
in cases of expected failure.
testsuite harness: report test exit status in log file
The exit status of a test should be reported in the test logs, so
that one can see at a glance whether the test has succeeded or failed,
without having to look also into the corresponding .trs file.
This fixes automake bug#11814.
* lib/test-driver: Also report the test script exit status in the
test log (as the last line).
* t/check-exit-status-reported.sh: Test this new behaviour.
* t/list-of-tests.mk: Add the new test.
* t/ax/test-lib.sh( am_exit_trap): No longer log the test exit status;
this has been made redundant by the change to 'test-driver'. While at
it, fix an imperfect quoting.
TAP driver: no need to invoke AC_PROG_AWK directly
It is already required by AM_INIT_AUTOMAKE anyway.
* doc/automake.texi: Adjust examples.
* t/tap-doc2.sh: Adjust documentation-tracking test.
* m4/init.m4 (AM_INIT_AUTOMAKE): Explicitly tell that the AC_PROG_AWK
requirement is also needed whenever the TAP driver is used.
TAP driver: remove perl implementation (move it into contrib/)
That implementation was only meant as a standard against which the
portable awk+shell implementation was to be measured. Now, since
Automake 1.12, the latter implementation is fully functional and
already used in the wild, and in fact feature-par with the perl
implementation. So the perl implementation is now just slowing
down and complicating our testsuite. Let's move it to 'contrib/'
(we don't want to remove it, in case someone is actually using it
in the wild).
* lib/tap-driver.pl: Move it ...
* contrib/tap-driver.pl: ... here. While at it, convert quoting
`like this' to quoting 'like this', and remove an obsolescent FIXME
comment.
* lib/Makefile.inc (dist_script_DATA): Drop '%D%/tap-driver.pl'.
* Makefile.am (EXTRA_DIST): Add 'contrib/tap-driver.pl'.
* doc/automake.texi: Remove one stray reference to 'tap-driver.pl',
and reference 'tap-driver.sh' instead, as intended.
* t/ax/am-test-lib.sh ($am_tap_implementation): Delete definition and
uses.
(fetch_tap_driver): Simplify to unconditionally assume the shell+awk
implementation of the TAP driver is used.
(get_shell_script): Make more flexible so that it can cater to the
needs of 'fetch_tap_driver()'.
* t/tap-bad-prog.tap: Likewise.
* t/tap-bailout-leading-space.sh: Likewise.
* t/tap-signal.tap: Likewise.
* t/tap-test-number-0.sh: Likewise.
* t/test-driver-cond.sh: Use 'tap-driver.sh' instead of 'tap-driver.pl'.
* gen-testsuite-part (%test_generators): Do not generate sister tests
that use the perl TAP driver rather than the shell+awk one.
* NEWS: Update.
* minor:
NEWS: stop reporting "new" Automake versioning scheme
post-release: micro version bump to 1.14.1a devel version
release: stable micro release 1.14.1
HACKING: minor clarification
tests: make install-info-dir.sh print more debugging info
tests: remove too-brittle test tap-realtime.sh
maintainer: am-ft: add option to cater to clock skews
sync: update INSTALL, config.guess and config.sub from upstream
TAP driver: cosmetic fixes
* micro:
post-release: micro version bump to 1.14.1a devel version
release: stable micro release 1.14.1
HACKING: minor clarification
tests: make install-info-dir.sh print more debugging info
tests: remove too-brittle test tap-realtime.sh
maintainer: am-ft: add option to cater to clock skews
sync: update INSTALL, config.guess and config.sub from upstream
TAP driver: cosmetic fixes
* t/tap-realtime.sh: Delete. It has always been brittle, but now
it's also causing spurious failures when mawk is used as the awk
implementation in tap-driver.sh (see bug#14601).
* t/list-of-tests.mk: Adjust.
maintainer: am-ft: add option to cater to clock skews
* maintainer/am-ft: Add option '-S', giving a number of seconds to sleep
after copying the tarball to the remote system and before unpacking,
building and testing it. This is to cater to situations where the clock
of the remote system is skewed (in the past) w.r.t. the clock the local
system the tarball has been built on.
* minor:
cosmetics: fix typo in a user-facing message in tests
automake: account for perl hash order randomization
tests: avoid use of intervals to capitalize letters
cosmetics: untabify the install-sh script
install-sh: assume that "set -f" and "set +f" work...
install-sh: assume ${var:-value} works as expected
install-sh: assume 'dirname' is available and working correctly
distcheck: don't allow overriding of --prefix and --srcdir by the user
tests: expose bug#14991 (relates to 'distcheck')
* modernize-install-sh:
cosmetics: untabify the install-sh script
install-sh: assume that "set -f" and "set +f" work...
install-sh: assume ${var:-value} works as expected
install-sh: assume 'dirname' is available and working correctly
* micro:
cosmetics: fix typo in a user-facing message in tests
automake: account for perl hash order randomization
tests: avoid use of intervals to capitalize letters
distcheck: don't allow overriding of --prefix and --srcdir by the user
tests: expose bug#14991 (relates to 'distcheck')