tests: warnings in the 'obsolete' category: fix spurious failure
* t/warnings-obsolete-default.sh: $(INCLUDES) is no longer supported
in any way by Automake-NG, to a point that its definition will just
be ignored, but cause no warning; so, instead, use the two-argument
invocation form of AM_INIT_AUTOMAKE to elicit warnings in the 'obsolete'
category.
* master:
fix typos in mk-dirp.m4
tags: automake bug bug#12372 is fixed
coverage: better exposure for automake bug#12372 (tags-related)
coverage: expose automake bug#12372 (tags-related)
sync: update files from upstream with "make fetch"
news: cygnus will be removed in automake 1.13
news: some changes for 1.13 has been "de-planned"
news: report that the have seen fixlets after 1.12.3
warns: enable category 'obsolete' by default
Jim Meyering [Wed, 12 Sep 2012 15:31:24 +0000 (17:31 +0200)]
fix typos in mk-dirp.m4
* t/gettext-macros.sh: Fix typo in name of macro emitted into
mk-dirp.m4: s/AM_MKDIR_P/AM_PROG_MKDIR_P/,
and as Stefano Lattarini noted, also fix this typo:
s/AC_MKDIR_P/AC_PROG_MKDIR_P/.
built sources: avoid fork bomb in $(BUILT_SOURCES) handling
Due to how the handling of $(BUILT_SOURCES) was implemented in Automake-NG,
a recursive make call in the recipe of any $(BUILT_SOURCES) (or of any of
its prerequisites) would have caused an infinite recursion (complete with
fork bomb, yuck). Work around the issue.
* lib/am/common-targets.mk: Here, with the help of ...
(am.hack.making-built-sources): ... this new internal variable.
* Makefile.am (XFAIL_TESTS): Remove 't/built-sources-fork-bomb.sh'.
coverage: expose fork bomb in $(BUILT_SOURCES) handling
Due to how the handling of $(BUILT_SOURCES) is implemented in Automake-NG,
a recursive make call in the recipe of any $(BUILT_SOURCES) (or of any of
its prerequisites) will cause an infinite recursion (complete with fork
bomb, yuck). Expose the issue in a test case (still failing, of course).
coverage: better exposure for automake bug#12372 (tags-related)
Alas, in contrast with what is said in the commit message of previous
commit 'v1.12.3-14-g94b7b8e', that bug is still present also in the
current maint branch (which will become automake version 1.12.4); it
is just that it only triggers when a _SOURCES variable contains only
files with custom extension.
* t/tags-pr12372.sh: Extend.
* t/list-of-tests.mk: Add it.
Suggested-by: Юрий Пухальский <aikipooh@gmail.com> Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* maint:
sync: update files from upstream with "make fetch"
news: cygnus will be removed in automake 1.13
news: some changes for 1.13 has been "de-planned"
news: report that the have seen fixlets after 1.12.3
warns: enable category 'obsolete' by default
* NEWS (Future backward-incompatibilities): The planned Automake release
1.13 already has too much stuff on its plate; so we are not going to
In Automake 1.13, we are definitely not going to change the exact order
in which the directories in the aclocal macro search path are looked up.
Also, experience and user feedback have shown that the "obsolescent"
two-arguments invocation for AM_INIT_AUTOMAKE:
AM_INIT_AUTOMAKE(PACKAGE-NAME, PACKAGE-VERSION)
is still useful (until at least Autoconf is fixed to offer better support
for "dynamically" package versions), so we are not going to remove
support for that usage in Automake 1.13. For more details, see commit v1.12.2-245-g2abe183 of 2012-08-24, "AM_INIT_AUTOMAKE: allow obsolescent
two-args invocation once again".
(New in 1.12.1): Adjust accordingly.
No surprise that our users were bitten by backward-incompatible changes
especially hard: the warnings in the 'obsolete' category, that might
have informed them of the upcoming incompatibilities, and help them to
prepare for the transition, where not enabled by default!
* NEWS, doc/automake.texi: Update.
* lib/Automake/ChannelDefs.pm: Enable warnings in the category 'obsolete'
by default.
* t/warnings-obsolete-default.sh: New test.
* t/list-of-tests.mk: Add it.
* t/backcompat.sh: Use 'configure.ac' rather than 'configure.in' as
autoconf input file, to avoid spurious aclocal errors.
* t/backcompat2.sh: Likewise.
* t/backcompat3.sh: Likewise.
* t/backcompat5.sh: Add '-Wno-obsolete' when invoking aclocal. Adjust
heading comments.
* t/backcompat6.sh: Likewise.
* t/cygnus-imply-foreign.sh: Add '-Wno-obsolete' when invoking automake.
* t/lisp-flags.sh: Avoid use of brittle "make -e".
* Makefile.am (perf): Don't use $(AM_MAKEFLAGS) when invoking make
recursively.
* t/dist-obsolete-opts.sh: Make executable.
tests: fix spurious failure in test on Flex headers
* t/lex-headers.sh: Don't use 'yl_distcheck', simply call "make distcheck"
instead, as GNU make cannot suffer of the FreeBSD bug 'yl_distcheck' was
meant to guard against.
(Makefile.am): Don't use $(AM_MAKEFLAGS) when invoking make recursively.
This avoids a maintainer-check failure.
* master:
tests: fix a maintainer-check failure ('Exit' used instead of 'exit')
sync: update files from upstream with "make fetch"
automake: don't define many identical 'lang_*_rewrite' subroutines
coverage: bugs #8844 and #9933 (already fixed by Akim's work on ylwrap)
* maint:
sync: update files from upstream with "make fetch"
automake: don't define many identical 'lang_*_rewrite' subroutines
coverage: bugs #8844 and #9933 (already fixed by Akim's work on ylwrap)
coverage: bugs #8844 and #9933 (already fixed by Akim's work on ylwrap)
* t/flex-header.sh: New test, show that automake bug#8844 and bug#9933
have already been fixed by the recent-ish improvements to ylwrap (merged
with commit v1.12.2-27-gec5cb49 of 2012-07-16, "Merge branch 'yacc-work'
into maint").
* t/list-of-tests.mk: Update.
* master:
AM_INIT_AUTOMAKE: allow obsolescent two-args invocation once again
docs: don't suggest to use recursive makefile setup
tests: fix a timestamp race in python tests
tests: fixup: make distcheck-override-infodir pass again
sync: update files from upstream with "make fetch"
maint: post-release minor version bump
release: stable release 1.12.3
maintcheck: fix spurious warnings
docs: fix typo: s/make install-info/make uninstall-info/
tests: fixup: make a couple of tests executable
* maint:
docs: don't suggest to use recursive makefile setup
tests: fix a timestamp race in python tests
tests: fixup: make distcheck-override-infodir pass again
sync: update files from upstream with "make fetch"
maint: post-release minor version bump
release: stable release 1.12.3
maintcheck: fix spurious warnings
docs: fix typo: s/make install-info/make uninstall-info/
tests: fixup: make a couple of tests executable
AM_INIT_AUTOMAKE: allow obsolescent two-args invocation once again
This partially reverts commit 'v1.12-67-ge186355' of 2012-05-25,
"init: obsolete usages of AM_INIT_AUTOMAKE not supported anymore"
Some users still need to be able to define the version number for
their package dynamically, at configure runtime.
Their user case is that, for development snapshots, they want to be
able to base the complete version of the package on the VCS revision
ID (mostly Git or Mercurial). They could of course do so by
specifying such version dynamically in their call to AC_INIT, as is
done by several GNU packages. But then they would need to regenerate
and re-run the configure script before each snapshot, which might be
very time-consuming for complex packages, to the point of slowing
down and even somewhat impeding development.
The situation should truly be solved in Autoconf, by allowing a way
to specify the version dynamically in a way that doesn't force the
configure script to be regenerated and re-run every time the package
version changes. But until Autoconf has been improved to allow
this, Automake will have to support the obsolescent two-arguments
invocation for AM_INIT_AUTOMAKE, to avoid regressing the suboptimal
but working solution for the use case described above.
See also:
<http://lists.gnu.org/archive/html/automake/2012-08/msg00025.html>
* NEWS: Update.
* m4/init.m4 (AM_INIT_AUTOMAKE): Support once again invocation with
two or three arguments.
* t/aminit-moreargs-no-more.sh: Renamed ...
* t/aminit-moreargs-deprecated.sh: ... like this, and updated.
* t/nodef.sh: Recovered test, with minor adjustments.
* t/backcompat.sh: Likewise.
* t/backcompat2.sh: Likewise.
* t/backcompat3.sh: Likewise.
* t/backcompat6.sh: Likewise.
* t/list-of-tests.mk: Adjust.
Suggested-by: Bob Friesenhahn n<bfriesen@simple.dallas.tx.us> Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
docs: don't suggest to use recursive makefile setup
* doc/automake.texi (Introduction): Here, by erroneously telling that
"there should generally be one Makefile.am per directory of a project".
For reference, see commit 'v1.12.1-25-g61dfb47' of 2012-06-12, "docs:
recursive make considered harmful".
Adam Sampson [Thu, 16 Aug 2012 16:54:41 +0000 (18:54 +0200)]
tests: fix a timestamp race in python tests
Fixes automake bug#12210.
* t/python-missing.sh: Call aclocal and autoconf with the "--force"
option. We need this because, on fast machines, it's possible for
'mypy.m4' and 'aclocal.m4' to end up with the same timestamp as configure,
so autoconf (without the "--force" options) wouldn't bother to rebuild it,
and would just rerun the previous AM_PATH_PYTHON test, succeeding rather
than failing as expected.
* t/python-am-path-iftrue.sh: Likewise.
* t/distcheck-override-infodir.sh: Be sure that valid occurences
of the "aclocal" and "automake" strings, which can confuse the
'sc_tests_plain_automake' check, are protected by leading "#"
characters.
* t/ax/test-lib.sh: Always use '$(...)' for command subtitution,
to avoid triggering the 'sc_tests_command_subst' check; there was
still once place where `...` was used. While at it, fix a related
comment.
* t/ax/test-defs.in ($sleep): Use creative quoting to avoid
spuriously triggering the 'sc_tests_plain_sleep' check.
Merge branches 'ng/dist-work' and 'ng/info-no-split' into ng/master
* ng/dist-work:
[ng] rename: am.dist.uninstallcheck-listfiles -> am.dist.uninstallcheck-listfiles
[ng] dist: new internal API to specify formats of distribution tarballs
[ng] diag: new make function $(am.fatal)
[ng] dist: fixup: add 'dist' and 'dist-all' to AM_RECURSIVE_TARGETS
[ng] distcheck: remove stale tarballs with 'rm -f', not 'rm -rf'
[ng] dist: vars DIST_TARGETS and DIST_ARCHIVES are no more public
[ng] dist: refactor: reduce duplication in the 'dist-*' recipes
* ng/info-no-split:
[ng] texinfo: don't support split info files anymore
[ng] dist: new internal API to specify formats of distribution tarballs
The API to specify the formats of distribution tarballs has been changed
completely, in a BACKWARD-INCOMPATIBLE way.
Instead of using the various 'dist-*' automake options, the developer is
now expected to specify the default formats of its distribution tarballs
with the special variable AM_DIST_FORMATS; for example, where once would
have been:
Similarly, The various 'dist-*' targets (dist-gzip, dist-xz, dist-lzip,
dist-bzip2 and dist-gz) has been removed. If the user wants to generate
tarballs for formats not specified by the default AM_DIST_FORMATS, he can
simply override that variable dynamically:
# Will generate a '.zip' archive and a '.tar.xz' archive, and not
# further ones.
make dist AM_DIST_FORMATS='zip xz'
This change is of course is totally backward incompatible, but the
enhanced flexibility and simplicity is worth it. Not to mention that
the transition from the mainline Automake API to the new Automake-NG
one is trivial.
* NG-NEWS: Update.
* ng/automake-ng.texi: Likewise.
* configure.ac (AM_INIT_AUTOMAKE): Drop the 'dist-xz' option. While
at it, drop the 'color-tests' option (now on by default, even in
coming-soon Automake 1.13) and add the 'ng' option (mostly for some
showing-off :-).
* t/ax/am-test-lib.sh: Also unset 'AM_DIST_FORMATS'.
* Makefile.am (AM_DIST_FORMATS): New, containing 'gzip' ad 'xz' (so
that we distribute the same formats we did before).
* lib/am/distcheck.mk (AM_DIST_FORMATS): New, defaulting to 'gzip'.
(am.dist.bad-targets): New, list invalid entries of $(AM_DIST_FORMATS).
Error out with a suitable message if that variable is non-empty.
Rename all the 'dist-*' targets, once public, to '.am/dist-*' (which
are private). Adjust their rules.
(am.dist.all-targets): Adjust to said 'dist-*' => '.am/dist-*'
renaming.
(am.dist.default-targets): New, defined from $(AM_DIST_FORMATS).
(dist, dist-all): Rewritten to rely on dependencies rather than on
recursive make invocation (the new API allows us to do so easily).
Other minor related adjustments.
(distcheck): Use $(AM_DIST_FORMATS) instead of $(am.dist.formats)
in the recipe.
* automake.in (handle_dist): Drop analysis of the various 'dist-*'
options, and of the 'no-dist-gzip' one; don't define the internal
make variable 'am.dist.formats'.
* lib/Automake/Options.pm (_is_valid_easy_option): Recognize the
various 'dist-*' options and the 'no-dist-gzip' one no more.
(_process_option_list): Explicitly reject them (to give better
diagnostic).
* t/dist-obsolete-opts.sh: New, check such diagnostic.
* t/dist-obsolete.sh: Remove as obsolete.
* t/repeated-options.sh: Minor adjustments to avoid spurious
failures.
* t/dist-formats.tap: Adjust heavily (almost a complete rewrite).
* lib/am/header-vars.mk (am.fatal): New.
* automake.in (generate_makefile): Use in instead of $(error) in the
generated make code exiting for earlier errors.
[ng] dist: fixup: add 'dist' and 'dist-all' to AM_RECURSIVE_TARGETS
* lib/am/distcheck.mk: Here. That wasn't happing due to a botched
"ifdef", broken by some recent change (probably during the transition
from 'distcheck.am' to 'distcheck.mk').
[ng] dist: vars DIST_TARGETS and DIST_ARCHIVES are no more public
Turn them into two internal variables. This will clean up the
interface a bit, and make the new planned dist-related APIs (still
to be implemented) simpler to use.
[ng] dist: refactor: reduce duplication in the 'dist-*' recipes
* lib/am/distcheck.mk: Here, with heavy refactorings, in particular
introducing ...
(am.dist.all-formats,
am.dist.all-targets,
am.dist.compress-cmd.gzip,
am.dist.uncompress-cmd.gzip,
am.dist.compress-cmd.bzip2,
am.dist.uncompress-cmd.bzip2,
am.dist.compress-cmd.lzip,
am.dist.uncompress-cmd.lzip
am.dist.compress-cmd.xz,
am.dist.uncompress-cmd.xz,
am.dist.create-cmd.zip,
am.dist.extract-cmd.zip): ... these new internal variables ...
(am.dist.create-archive-for-format.aux,
am.dist.create-archive-for-format,
am.dist.extract-archive-for-format.aux,
am.dist.extract-archive-for-format): ... and these new internal
make functions ...
(am.dist-gzip, am.dist-bzip2, am.dist-lzip, am.dist-xz,
am.dist.zip): ... and rewriting these rules as static-pattern
rules sharing the same recipe ...
(distcheck): ... and updating the recipe for this target.
* t/dist-formats.tap: Little adjustments for better usefulness
of verbose output when debugging.
[ng] texinfo: don't support split info files anymore
They were once required for performance or memory-saving reasons; but
such considerations, while certainly relevant in the past, will,
thanks to today's powerful machines, get less and less important in
the future, shrinking to irrelevance soon enough ("soon" for what
concerns the Automake-NG timetable, at least).
So, since the need to cater to split '.info' output files adds some
annoying complexity in some places of the Automake-NG codebase, we
simply stop supporting them. This change should actually be almost
transparent to the users.
* master:
tests: rework tests on AM_PATH_PYTHON
cosmetics: fix typos and references in comments
typofix: in a test diagnostic
readme: fixlets to HACKING
cleanup: remove unused transform '%HAVE-MANS%'
cleanup: remove stale references to 'lzma' option
* maint:
tests: rework tests on AM_PATH_PYTHON
cosmetics: fix typos and references in comments
typofix: in a test diagnostic
readme: fixlets to HACKING
* t/python8.sh, t/python9.sh: Merge into ...
* t/python-am-path-iftrue.sh: ... this new test, with minor adjustments.
* t/python4.sh, t/python5.sh, t/python6.sh, t/python7.sh: Merge into ...
* t/python-missing.sh: ... this new test.
* t/python5b.sh: Rename ...
* t/python-too-old.sh: ... like this, and adjust/extend.
* t/list-of-tests.mk: Adjust.
* HACKING: Use longer "=====" lines to separate different section (this
is just eye-candy admittedly, but I prefer it).
(Release procedure): Don't tell to "update NEWS"; that should be updated
throughout the normal course of development. Instead, tell to just check
it. Improve description of the re-bootstrapping and rechecking procedure,
also suggesting to use "git clean" beforehand (with all due warnings!).
[ng] tests: remove dead code from a test, fix a typo
* t/dist-formats.tap: Fix typo in a message: s/.tar.Z/.tar.xz/.
(have_compressor): Remove special handling of the 'compress' tool.
This is now useless, since we've removed support for '.tar.Z' tarballs
and thus care no more whether a 'compress' program is available or not.
Also, in the main code, one stray remaining reference to the 'shar'
program, that too useless now that we've removed support for '.shar.gz'
archives.
[ng] texi: verbatim include of rules for texinfo installation
It tells whether the '.info' files must be installed by default (usually
yes, unless the "no-installinfo" automake option is used). This is just
a preparatory change, in view of future ones.
* lib/am/texinfos.am: Move ...
* lib/am/texinfos.mk: ... here, with related adjustments. Also ...
(info_TEXINFOS): ... initialize this to empty by default.
* lib/am/automake.in (handle_texinfo): Adjust and simplify accordingly.
* Makefile.am (dist_am_DATA): Adjust.
* t/txinfo10.sh: Remove, basically an obsolete grepping check. We can
instead ...
* t/txinfo21.sh: ... enhance this semantic test to subsume and supersede
the removed one.
* t/override-conditional-1.sh: Adjust to avoid spurious failures.
[ng] refactor: new internal make variable 'am.conf.no-installinfo'
It tells whether the '.info' files must be installed by default (usually
yes, unless the "no-installinfo" automake option is used). This is just
a preparatory change, in view of future ones.
* lib/am/automake.in (generate_makefile): Define it here.
* lib/am/texibuild.mk (am.texi.build.info): Here, by not hiding the
creation of the directory containing the target info when "make V=1"
is used (or "./configure --disable-silent-rules").
[ng] tests: avoid spurious error with ctags from older Emacs and XEmacs
* t/ctags.sh: Here. Those ctags (from Emacs 22.3 and XEmacs 21.5)
apparently have problems grasping "#define" in header files; feed
them an inline function instead.
[ng] tests: avoid a spurious failure on OpenIndiana
* t/autodist.sh: Ensure that the 'install-sh' script has legit content,
because it's going to be used by the "make distdir" target on systems
lacking a decent 'install' program.
[ng] contrib: rewrite and fix 'check-html' and 'recheck-html'
That has actually been broken for some time, due to the changes
done in Automake-NG proper in the meantime.
* contrib/check-html.am (.log.html): Re-declare this suffix rule ...
(%.html: %.log): ... as a pattern rule.
(mostlyclean-check-html): Remove, instead ...
(MOSTLYCLEANFILES): ... appending to this variable. Not only this
reduce the code size, but will give us resilience against possible
exceeded command line length limits for free.
(check-html, recheck-html): Rewrite as static pattern rules. Fix
the recursive "make check" and "make recheck" invocation to override
TESTS, not TEST_LOGS (the latter override is not honoured anymore
by the new incarnation of the parallel-test rules).
* contrib/t/parallel-tests-html-recursive.sh: Adjust a little, by
initializing 'MOSTLYCLEANFILES' (to empty) in all the 'Makefile.am'
files that use 'check-html.am'.
* contrib/t/parallel-tests-html.sh: Likewise. Also, since the
parallel-tests API does not allow command-line overriding of
TEST_LOGS anymore, stop doing that.
[ng] refactor: in declaration of Texinfo-related files to be cleaned
Less code, less variables, better locality.
* automake.in (handle_texinfo_helper ): Update '%clean_dirs' and
'%clean_files' from here, rather than returning the files to clean
as a triplet.
(handle_texinfo): Adjust and simplify.
[ng] texi: less use of transforms in 'texinfos.am'
* automake.in (handle_texinfo): Drop the 'MOSTLYCLEAN', 'TEXICLEAN'
and 'MAINTCLEAN' transforms, instead adding directly to '%clean_dirs'
as appropriate.
* lib/am/texinfos.am: Adjust.
That is, fail through the usual avenues ("possibly undefined macro
'AM_C_PROTOTYPES', "option 'ansi2knr' not recognized") rather than
giving a special error message "automatic de-ANSI-fication support
has been removed". Since the removal has taken place in Automake 1.12
already, people will have got used to it once Automake-NG gets stable
enough.
* lib/Automake/Options.pm (_process_option_list): Remove special
handling of 'ansi2knr' option.
* m4/protos.m4: Remove.
* Makefile.am (dist_automake_ac_DATA): Adjust.
* t/ansi2knr-no-more.sh: Remove.
[ng] subdirs: verbatim include of relevant makefile fragment
* lib/am/subdirs.am: Rename ...
* lib/am/subdirs.mk: ... like this. Prefer '#' comments over
'##' ones.
* automake.in (handle_subdirs): Include it with the 'verbatim'
function rather than with the 'file_contents' one.
(generate_makefile): Move its call later. This is actually required
to avoid spurious failures.
* Makefile.am (dist_am_DATA): Adjust.
* lib/am/distdir.mk: Here, using the fact that this file is now included
verbatim and we can thus use GNU make constructs that would have confused
the Automake parser.
[ng] tests: fix spurious testsuite failures introduced by recent changes
* t/distcom2.sh: Remove as basically obsolete.
* t/distcom3.sh: Use semantic checks rather than brittle grepping checks.
* t/hdr-vars-defined-once.sh: Likewise.
* t/location.sh: Remove some checks that would become too cumbersome to
run.
* t/targetclash.sh: Adjust to ensure the expected automake diagnostic is
actually triggered.
[ng] distdir: verbatim inclusion of relevant makefile fragment
* lib/am/distdir.am: Rename ...
* lib/am/distdir.mk: ... like here, with related adjustments.
* automake.in (handle_dist): Include it using the 'verbatim'
function, rather than the 'file_contents' one.
* Makefile.am (dist_am_DATA): Adjust.