[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.
[ng] dist: less use of transforms, prefer make variables (2)
* automake.in (handle_dist): Turn the '%DIST-TARGETS%' transform
into the 'am.dist.extra-targets' internal variable.
* lib/am/distdir.am (distdir): Adjust and simplify accordingly.
[ng] dist: less use of transforms, prefer make variables (1)
* automake.in (handle_dist): Turn the '%FILENAME_FILTER%' transform
into the 'am.dist.filename-filter' internal variable.
* lib/am/distdir.am (distdir): Adjust and simplify accordingly (and
improve an error message while at it). In particular, this removed
the need for ...
(am.dist.skip-length-check): ... this variable.
For better parallelism in "make dist". This was already the case
for mainline Automake, but our recent changes to the dist-related
code in Automake-NG had broken that invariant.
* automake.in (handle_dist): Here, use 'unshift' rather than
'push' on '@archive_formats'.
[ng] dist: more verbatim inclusion of relevant makefile fragments
* lib/am/distdir.am: Move most of the '%?TOPDIR_P%'-protected, verbatim
stuff (i.e., containing no Automake-time transforms) from here ...
* lib/am/distcheck.mk: ... to here, with related adjustments.
Those formats being the 'shar' archive and the tar archive compressed
with 'compress'. Support for them is kept in mainline Automake for
the sake of backward compatibility only, and modern software releases
should not use those formats anyway, so it's better if we just remove
them.
* NG-NEWS, doc/automake-ng.texi: Update.
* lib/Automake/Options.pm (_is_valid_easy_option): Remove 'dist-shar'
and 'dist-tarZ'.
(_process_option_list): Give a fatal error if one of those two options
is seen.
* lib/am/distdir.am (am.dist.ext.tarZ, am.dist.ext.shar): Remove these
variables.
(dist-tarZ, dist-shar): And these targets.
* lib/am/distcheck.mk (distcheck): Do not try to decompress '.shar.gz'
or '.tar.Z' archives: they won't be there anyway.
* t/dist-formats.tap: Adjust and simplify.
* t/dist-obsolete.sh: New test.
* t/lzma.sh: Remove, subsumed by it.
[ng] dist: refactor handling of dist formats a little
* automake.in (handle_dist): Define list of default dist formats in the
new internal make variable 'am.dist.formats'. Related adjustments.
(preprocess_file): Drop the following now-unused transforms: XZ, LZMA,
LZIP, BZIP2, COMPRESS, GZIP, SHAR, ZIP.
* lib/am/distdir.am: Drop any use of the removed transforms, throughout.
(DIST_TARGETS): Redefine in function of '$(am.dist.formats)'.
(.PHONY): Update in function of '$(am.dist.formats)'.
(am.dist.ext.gzip, am.dist.ext.bzip2, am.dist.ext.xz, am.dist.ext.lzip,
am.dist.ext.tarZ, am.dist.ext.shar, am.dist.ext.zip): New internal
variables.
(DIST_ARCHIVES): Redefine in function of them and of '$(am.dist.formats)'.
[ng] distcheck: include it as a verbatim makefile fragment
* lib/am/distcheck.am: Rename ...
* lib/am/distcheck.mk: ... like this, and adjust to use GNU
make conditionals rather than Automake ones, and to allow for
user overrides of the '$(distcleancheck_listfiles)' variable.
Fix some comments while at it.
* automake.in (handle_dist): Include it suing the 'verbatim'
function.
* Makefile.am (dist_am_DATA): Adjust.
* t/distcheck-configure-flags-am.sh: Remove obsolete grepping
checks, that would cause the test to fails spuriously.
* t/distcheck-configure-flags.sh: Likewise.
* lib/am/distdir.am: From here ...
* lib/am/distcheck.am: ... to here. That is especially useful because
all of the 'distcheck' target has to be protected by a if '%?TOPDIR_P%'
conditional (since the 'distcheck' target must only be present in the
top-level makefile), so that we can now remove this overly long
conditional from this fragment ...
* automake.in (handle_dist): ... and simply limiting the inclusion
of it to when '$reldir' is '.'.
* Makefile.am (dist_am_DATA): Adjust.
* master:
automake: remove an unused local variable
distcheck: more resilient against possible failures
cleanup: remove almost-unused global var 'am_relative_dir'
* t/gettext.sh: Move checks about PR/381 ...
* t/gettext-pr381.sh: ... to this new test.
* t/gettext.sh: Move checks about config.rpath requirement ...
* t/gettext-config-rpath.sh: ... to this new test.
[ng] tests: avoid spurious failure in a gettext test
* t/gettext2.sh: Here, remove obsolete grepping checks in favor
of more modern ones.
* t/gettext.sh: Likewise. This doesn't fix any failure, but
makes the test more reliable.
[ng] tests: adjust weaknesses in the gettext tests
* t/gettext-macros.sh (m4/mk-dirp.m4): Define 'AM_PROG_MKDIR_P' rather
than 'AM_MKDIR_P', and in doing so, use 'AC_PROG_MKDIR_P' rather than
'AC_MKDIR_P'.
* maint:
automake: remove an unused local variable
distcheck: more resilient against possible failures
cleanup: remove almost-unused global var 'am_relative_dir'
distcheck: more resilient against possible failures
* lib/am/distdir.am (distcheck): Ensure that a failure in the commands
making the just-extracted source tree read-only cause the recipe to fail.
While at it, save a fork by creating the '_build' and '_inst' subdir
with a single mkdir invocation.
* automake.in ($am_relative_dir): Delete, it was only used once ...
(generate_makefile): ... in here, so it's simpler to inline its
expansion.
(initialize_per_input): Don't reset the deleted variable.
[ng] distcheck: --with-included-gettext: with a variable, not a transform
This is mostly a preparatory refactoring in view of future changes.
* automake.in (handle_dist): Define the new internal variable
'am.dist.handle-gettext' to "yes" if the package uses gettext,
to the empty string otherwise. This takes over the role of the
transform 'GETTEXT', which has thus been removed.
* lib/am/distdir.am (distcheck): Adjust to rely on the new variable
instead than of the removed transform.
[ng] disthook: with an internal variable, not a transform
This is mostly a preparatory refactoring in view of future changes.
* automake.in (handle_dist): Define the internal variable
'am.dist.handle-distcheck-hook' to "yes" if a user-defined
'distcheck-hook' rule, to the empty string otherwise. This
take over the role of the transform 'DISTCHECK-HOOK', which
has thus been removed.
* lib/am/distdir.am (distcheck): Adjust to rely on the new
variable instead than of the removed transform.
* t/distcheck-hook.sh: Remove obsolete or obsolescent grepping
checks.
* t/distcheck-hook2.sh: Likewise.
* master:
cleanup: remove two almost-unused global variables: {am,in}_file_name
cleanup: remove almost-unused global var 'topsrcdir'
automake: remove an unused variable
tests: make a test script more semantic
tests: remove an obsolete, no-op test script
tests: remove an obsolete test script
* ng/inst-work:
[ng] uninstall: refactor, more processing delegated to GNU make
[ng] uninstall: reimplement various recipes using more GNU make features
[ng] am.xargs-map: can pass further arguments to the mapped function
[ng] refactor: remove all uses of $(am__nobase_strip{,_setup})
[ng] refactor: remove all uses of '$(am__strip_dir)'
* lib/am/dejagnu.am: Rename ...
* lib/am/dejagnu.mk: ... like this, and rewrite partially to make it
readable verbatim.
* Makefile.am (dist_am_DATA): Adjust.
* automake.in (handle_tests): When DejaGNU support is needed, include
'dejagnu.mk' verbatim in the output Makefile.
* t/dejagnu2.sh: Adjust.
* lib/am/dejagnu.am: Rename ...
* lib/am/dejagnu.mk: ... like this, and rewrite partially to make it
readable verbatim.
* Makefile.am (dist_am_DATA): Adjust.
* automake.in (handle_tests): When DejaGNU support is needed, include
'dejagnu.mk' verbatim in the output Makefile.
* maint:
cleanup: remove two almost-unused global variables: {am,in}_file_name
cleanup: remove almost-unused global var 'topsrcdir'
automake: remove an unused variable
tests: make a test script more semantic
tests: remove an obsolete, no-op test script
tests: remove an obsolete test script
[ng] refactor: drop 'HOST', 'BUILD' and 'TARGET' transforms
Instead, use the new make variables $(am.conf.host-triplet),
$(am.conf.build-triplet) and $(am.conf.host-triplet) are defined.
* automake.in (preprocess_file): Drop 'HOST', 'BUILD' and 'TARGET'
transforms. Their role taken over ...
(generate_makefile): ... by the new variables 'am.conf.host-triplet',
'am.conf.build-triplet' and 'am.conf.target-triplet' defined here.
* lib/am/dejagnu.am: Adjust.
* t/triplet.sh: New test.
* automake.in ($am_file_name, $in_file_name): Delete these, which were
used only in the 'read_main_am_file' subroutine; instead ...
(read_main_am_file): ... modify it to only work from the '$makefile_am'
argument (which it was already receiving), and the new '$makefile_in'
argument, which is now passed to it ...
(generate_makefile): ... from here.
(initialize_per_input): Don't reset the two deleted variables anymore.
* automake.in ($topsrcdir): Delete, it was only used once ...
(handle_LIBOBJS_or_ALLOCA): ... in here, so it's simpler to inline
its expansion. Improve formatting of immediately surrounding code
a little while we are at it.
(initialize_per_input): Don't reset the deleted variable.
* lib/am/tags.am: Moved ...
* lib/am/tags.mk: ... here, rewrite to be included verbatim, reformatted,
and enhanced to take over the role of ...
* automake.in (handle_tags): ... this function as well, which has thus
been removed.
(generate_makefile): Call the removed function no more. Include 'tags.mk'
verbatim in the generated Makefile.
* Makefile.am (dist_am_DATA): Adjust.
* t/tags.sh: This weak grepping test is broken by the other changes done
here; so remove it, adding ...
* t/tags-id.sh: ... this in its place, which is more semantic, i.e.,
operated by actually running the 'ID' target.
* t/tags2.sh: Remove as obsolete.
* t/location.sh: Adjust to avoid spurious errors.
* t/targetclash.sh: Likewise.
* automake.in (generate_makefile): Define that variable to "yes" if the
Makefile being currently generated is in the top-level directory, define
it to the empty string otherwise. This offers a way (alternative to the
'%?TOPDIR_P%' transform) to determine whether a recipe is being executed
in the top-level directory or not.
This will also simplify future changes aimed at making the current
'tags.am' makefile fragment included more "verbatim".
* lib/am/tags.am (am.tags.include-option): New internal variable, the
include-like option used by the $(EATGS) problem. This must be
determined dynamically because Exuberant Ctags wants '--etags-include'
while GNU Etags wants '--include'.
(am.tags.subfiles): New, TAGS files in $(SUBDIRS) entries (if any)
that must be included in the top-level TAGS file.
(tags-am): Use them, and simplify accordingly.
[ng] tags: drop support for pre-5.6 exuberant ctags
Exuberant Ctags before that version (release in 2006) could
fail to create TAGS files when no files are supplied, despite
any '--etags-include' option. This required the addition of
a workaround ...
* lib/am/tags.am (tags-am): ... here, which can now be removed.
* lib/am/tags.am (am__uniquify_input, am__define_uniq_tagged_files):
Remove, their role taken over by ...
(am.tags.files.uniq): ... this new (memoized) variable.
All rules adjusted.
(tags-am): Use $(CURDIR) instead of `pwd` to compute the absolute
path of the current working directory.
(GTAGS): Use $(abs_top_builddir) instead of `cd $(top_builddir) && pwd`
to compute the absolute path of the top-level build directory.