* master:
options: consistently use return statuses to report errors (more)
options: try to report as much errors as possible
warns: don't tell AM_PROG_MKDIR_P is going to be removed
refactor: fix few "inverted boolean" usages
options: better name for an internal function
options: more consistency in use of return statuses to report errors
options: tiny simplification in dealing with erroneous opts
options: consistently use return statuses to report errors
options: re-enable some sanity checks
THANKS: update Eric Blake's e-mail address
NEWS: typofix
dist: remove support for shar and tarZ formats
news: document new 'subdir-objects' warning
PLANS: one minor fixlet (mostly cosmetic)
PLANS: we have already dropped support for split info files in master
NEWS: fix a reference to Automake 1.14 where Automake 2.0 was intended
PLANS: fix reference to non-existent 'next' branch
PLANS: fix botched version reference
maintcheck: fix two references to old location of aclocal and automake
dist: deprecated shar and tar+compress formats
options: consistently use return statuses to report errors (more)
This is a follow-up to commit 'v1.13.1d-128-g6e486c5', needed to deal
with errors that are only present in the 'master' branch (while the
reported commit was on the 'maint' branch).
* lib/Automake/Options.pm (_process_option_list): Adjust, where dealing
with the removed options 'dist-shar' and 'dist-tarZ'.
* maint:
options: try to report as much errors as possible
warns: don't tell AM_PROG_MKDIR_P is going to be removed
refactor: fix few "inverted boolean" usages
options: better name for an internal function
options: more consistency in use of return statuses to report errors
options: tiny simplification in dealing with erroneous opts
options: consistently use return statuses to report errors
options: re-enable some sanity checks
THANKS: update Eric Blake's e-mail address
NEWS: typofix
warns: don't tell AM_PROG_MKDIR_P is going to be removed
That is no longer true. For a more extended rationale, see file
'PLANS/obsolete-removed/am-prog-mkdir-p.txt' in the maint branch
(as of commit v1.13.1d-132-g90ec3fe).
* automake.in (scan_autoconf_traces): So adjust the warning message
here.
In some subroutines, we used a return value of 0 to indicate success,
and a return status of 1 to indicate failure. That was not very
consistent with the perl interpretation of 0 as a false value and 1 as
a true value. So we now invert the meaning of the exit statuses.
* lib/Automake/Options.pm (_process_option_list): Here.
(process_global_option_list, process_option_list): And by reflex,
here as well.
* bin/automake.in (handle_options): And here.
(generate_makefile, scan_autoconf_traces): Adjust.
options: tiny simplification in dealing with erroneous opts
* lib/Automake/Options.pm (_process_option_list): Here, when an
invalid option is detected, there's no need to call &error with
the "uniq_scope => US_GLOBAL" switch. In fact, if the same
erroneous option is specified in AUTOMAKE_OPTIONS in both (say)
'Makefile.am' and 'sub/Makefile.am', we want each such erroneous
usage reported separately, rather than just the first time it is
encountered (as happens when "uniq_scope => US_GLOBAL" is used).
See also discussion about automake wishlist bug#13324.
* lib/Automake/Options.pm: Give fatal errors (rather than warnings) if
the 'dist-shar' or 'dist-tarZ' options are used.
* lib/distdir.am: Remove the 'dist-tarZ' and 'dist-shar' targets, and
references to the '.tar.Z' and '.shar' archives.
* bin/automake.in (preprocess_file): Remove 'COMPRESS' and 'SHAR'
transforms.
(handle_dist): Remove lingering references to 'dist-tarZ' and 'dist-shar'
options.
* doc/automake.texi: Adjust, removing references to the removed targets
and distribution formats.
* t/dist-shar.sh: Adjust to expect fatal errors rather than warnings.
* t/dist-tarZ.sh: Likewise.
* maint:
news: document new 'subdir-objects' warning
PLANS: one minor fixlet (mostly cosmetic)
PLANS: we have already dropped support for split info files in master
NEWS: fix a reference to Automake 1.14 where Automake 2.0 was intended
PLANS: fix reference to non-existent 'next' branch
PLANS: fix botched version reference
maintcheck: fix two references to old location of aclocal and automake
dist: deprecated shar and tar+compress formats
* NEWS: Automake 1.14 will warn if a subdir source file is
specified but the 'subdir-objects' option is not given. This
is done to smooth the transition to Automake 2.0, which will
unconditionally assume the behaviour now given only with the
'subdir-objects' option.
* PLANS/rm-f-without-args.txt: Here. The probe checking that "rm -f"
without arguments works will be introduced in Automake 1.14, not in
Automake 1.13.2.
See also discussion about automake wishlist bug#13324.
* lib/Automake/Options.pm: Give proper warnings in the 'obsolete'
category if the 'dist-shar' or 'dist-tarZ' options are used.
* lib/distdir.am: When the 'dist-tarZ' or 'dist-shar' targets are
invoked, make them give a non-fatal warning.
* doc/automake.texi: Report the new deprecations.
* t/dist-shar.sh: New test.
* t/dist-tarZ.sh: Likewise.
* t/lzma.sh: While at it, rename ...
* t/dist-lzma.sh: ... like this, and tweak it to keep more in
sync with the new tests.
* t/dist-formats.tap: Remove references to deprecated formats.
* t/list-of-tests.mk: Adjust.
Merge branch 'tmp-for-master-merge' into ng/master
* tmp-for-master-merge:
build: remove temporary files, used for merging master
build: adapt the per-subdir Makefile.inc files
tmp: re-add old top-level Makefile.am from master
tmp: backup-and-move top-level Makefile
automake: typofix in comments: s/AC_CONFIG_HEADER/AC_CONFIG_HEADERS/
build: move automake and aclocal in 'bin' subdir
build: break up monolithic Makefile.am in subdir-specific fragments
So that they can correctly implement the Automake-NG build system.
This has been done with the help of the diffs between the old top-level
Makefile.am files from mainline Automake (master branch) and Automake-NG
(ng/master branch), obtained with the command:
* Makefile.old: Here, from v1.13.1d-174-g1a1c3ac:Makefile.am. The
purpose of this temporary file is to allow us an easy way to compare
the old contents of the top-level Makefile.am for mainline Automake
(as it was before the merge commit 'v1.13.1d-185-g0dd95c8') with the
still-unpatched top-level Makefile.am for Automake-NG (currently
saved as 'Makefile.sav'), and use that information to backport the
splitting of Makefile.am into several per-subdir included Makefile
fragments (as implemented by mainline Automake commits
'v1.13.1d-103-gc8f106c' and 'v1.13.1d-104-gce70cf4').
* master:
automake: typofix in comments: s/AC_CONFIG_HEADER/AC_CONFIG_HEADERS/
build: move automake and aclocal in 'bin' subdir
build: break up monolithic Makefile.am in subdir-specific fragments
This leaves the tree in a partially-inconsistent state. We will fix
the situation with follow-up patches.
This is just a trick to facilitate the resolution of conflicts in
the upcoming merge of the master branch, where the to-level Makefile
has been broken up in several per-subdir makefiles fragments (that
are then included by the top-level one, thus keeping the build system
non-recursive).
* Makefile.sav: New, verbatim copy of the "old" Makefile.am.
* Makefile.am: Make it a symlink to Makefile.sav.
* maint:
automake: typofix in comments: s/AC_CONFIG_HEADER/AC_CONFIG_HEADERS/
am: prefer a shorter idiom where possible
cosmetics: fix few typos, grammaros and missing whitespace
fixup: remove an obsolete comment
docs: we still don't have the promised better Java interface
build: move automake and aclocal in 'bin' subdir
build: break up monolithic Makefile.am in subdir-specific fragments
+ Extra non-trivial edits:
* m4/Makefile.inc (dist_automake_ac_DATA): Drop lead-dot.m4 and
mkdirp.m4.
* lib/Automake/Makefile.inc (dist_perllib_DATA): Drop Configure_ac.pm.
refactor: unify handing of autogenerated config headers
* automake.in (handle_configure): Move stuff handling regeneration
of config.h and config.h.in ...
(handle_config_headers): ... in here, with adjustments and
simplifications.
* maint:
am: prefer a shorter idiom where possible
cosmetics: fix few typos, grammaros and missing whitespace
fixup: remove an obsolete comment
docs: we still don't have the promised better Java interface
maint: re-run "make update-copyright" ...
tests: avoid spurious failure with older flex (2.5.4)
announcement: cater to more flexible NEWS format
* branch-1.13.2:
cosmetics: fix few typos, grammaros and missing whitespace
fixup: remove an obsolete comment
docs: we still don't have the promised better Java interface
tests: avoid spurious failure with older flex (2.5.4)
That old version is unfortunately still relevant, being the one
installed on NetBSD 5.1.
* t/lex-multiple.sh: Use the '-o' option rather than the longer
equivalent '--outfile'. The latter is not supported by older
versions of flex (e.g., flex 2.5.4).
* maint.mk (announcement): Here, be prepared to handle the case
in which the first section of the NEWS file is dedicated to report
future backward-incompatibilities and/or other warnings.
* automake.in: Rename ...
* bin/automake.in: ... like this.
* aclocal.in: Rename ...
* bin/aclocal.in: ... like this.
* Makefile.am: Move parts that dealt with the building/distribution
of aclocal and Automake ..
* bin/Makefile.inc): ... in this new included fragment. Adjust as
needed, and make deliberate use of the '%D%' substitution.
* lib/gen-perl-protos: Move ...
* bin/gen-perl-protos: ... here.
* bootstrap.sh, configure.ac, maintainer/rename-tests,
t/wrap/aclocal.in, t/wrap/automake.in, doc/Makefile.inc,
t/ax/tap-setup.sh, .gitignore: Adjust.
* maintainer/syntax-checks.mk: Likewise, and enhance a little.
build: break up monolithic Makefile.am in subdir-specific fragments
This is convenient to do, now that we have improved "relative directory"
support with the '%reladir%' (a.k.a. '%D%') and '%canon_reladir%' (a.k.a.
'%C%') Automake-time substitutions for included makefile fragments.
This move also satisfy our philosophy of using new Automake features in
our own build system, as a way of facilitating early discovery of possible
bugs or interface warts.
* Makefile.am: Break up ...
* doc/Makefile.inc, lib/Automake/Makefile.inc, lib/Makefile.inc,
lib/am/Makefile.inc, m4/Makefile.inc, t/Makefile.inc): ... in this
new included fragments. Adjust as needed, and make deliberate use
of the '%D%' substitution.
* contrib/t/local.am: Rename ...
* contrib/t/Makefile.inc: ... like this.
make flags analysis: take advantage of GNU make features
* lib/am/header-vars.mk: Here. In particular ...
(am__make_keepgoing): ... rename this ...
(am.make.keep-going): ... like this, and reimplement using ...
(am.make.is-running-with-option): ... this new macro, cannibalized
from the old version of the 'am.make.dry-run' macro.
(am.make.dry-run): Reimplement using such new macro.
* lib/am/subdirs.mk: Adjust.
* t/make-keepgoing.tap: Likewise. While at, simplify by assuming
that $MAKE is GNU make, and enhance to test more setups (in particular,
this makes this test more in sync with the test 't/make-dryrun.tap').
* t/make-dryrun.tap: While at it, remove an extra empty line.
* master:
docs: fix warnings given by Texinfo 5.x
fixlet: remove leftover comment fragment
master branch: we are going to become Automake 2.0
maint branch: we are going to become Automake 1.14
maint: version bump after beta release 1.13.1d
release: beta release 1.13.1d (will become 1.13.2)
NEWS: document more robust handling/recognition of make options
tests: typofixes in comments in t/preproc-c-compile.sh
tests: remove bashism from a test
maint: targets and recipes to simplify testing on real-world packages
build: preparatory refactoring
build: tiny reduction in code duplication
make flags analysis: handle more options with args
make flags analysis: use simpler variable names
make flags analysis: whitespace changes
make flags analysis: embed in a subshell
make flags analysis: be more robust
make flags analysis: cater to GNU make 3.83 (still unreleased as of now)
tests: expose weaknesses in make flags analysis
tests: improve debugging output in checks on make flags analysis
make flags analysis: refactor, to reduce code duplication
tests: avoid one tricky use of "make -e"
cosmetics: remove few trailing whitespace occurrences
typofix: in NEWS (extra whitespace)
compat: substitute '@mkdir_p@' as '$(MKDIR_P)' unconditionally
tests: avoid a spurious error with Solaris make
subdirs: don't return false positives for the '-k' option's presence
header-vars: recognize more make flags ('-k' in particular)
header-vars: simplify how make flags are determined
tests: remove dead code from t/make-dryrun.tap
header-vars: new variable $(am__running_with_option)
tests: expose bug#12554 (false positives for presence of '-k' make option)
doc/automake.texi:3885: warning: node next `Public Macros' in menu \
`Private Macros' and in sectioning `Obsolete Macros' differ
doc/automake.texi:4050: warning: node `Private Macros' is next for \
`Obsolete Macros' in sectioning but not in menu
doc/automake.texi:4050: warning: node prev `Obsolete Macros' in menu \
`Private Macros' and in sectioning `Public Macros' differ
doc/automake.texi:4090: warning: node `Obsolete Macros' is next for \
`Private Macros' in menu but not in sectioning
doc/automake.texi:4090: warning: node prev `Private Macros' in menu \
`Public Macros' and in sectioning `Obsolete Macros' differ
* maint:
maint branch: we are going to become Automake 1.14
maint: version bump after beta release 1.13.1d
release: beta release 1.13.1d (will become 1.13.2)
NEWS: document more robust handling/recognition of make options
tests: typofixes in comments in t/preproc-c-compile.sh
tests: remove bashism from a test
* branch-1.13.2:
maint: version bump after beta release 1.13.1d
release: beta release 1.13.1d (will become 1.13.2)
NEWS: document more robust handling/recognition of make options
* maint:
maint: targets and recipes to simplify testing on real-world packages
build: preparatory refactoring
build: tiny reduction in code duplication
make flags analysis: handle more options with args
make flags analysis: use simpler variable names
make flags analysis: whitespace changes
make flags analysis: embed in a subshell
make flags analysis: be more robust
make flags analysis: cater to GNU make 3.83 (still unreleased as of now)
tests: expose weaknesses in make flags analysis
tests: improve debugging output in checks on make flags analysis
make flags analysis: refactor, to reduce code duplication
tests: avoid one tricky use of "make -e"
cosmetics: remove few trailing whitespace occurrences
typofix: in NEWS (extra whitespace)
tests: avoid a spurious error with Solaris make
subdirs: don't return false positives for the '-k' option's presence
header-vars: recognize more make flags ('-k' in particular)
header-vars: simplify how make flags are determined
tests: remove dead code from t/make-dryrun.tap
header-vars: new variable $(am__running_with_option)
tests: expose bug#12554 (false positives for presence of '-k' make option)
* branch-1.13.2:
maint: targets and recipes to simplify testing on real-world packages
build: preparatory refactoring
build: tiny reduction in code duplication
make flags analysis: handle more options with args
make flags analysis: use simpler variable names
make flags analysis: whitespace changes
make flags analysis: embed in a subshell
make flags analysis: be more robust
make flags analysis: cater to GNU make 3.83 (still unreleased as of now)
tests: expose weaknesses in make flags analysis
tests: improve debugging output in checks on make flags analysis
make flags analysis: refactor, to reduce code duplication
tests: avoid one tricky use of "make -e"
tests: avoid a spurious error with Solaris make
subdirs: don't return false positives for the '-k' option's presence
header-vars: recognize more make flags ('-k' in particular)
header-vars: simplify how make flags are determined
tests: remove dead code from t/make-dryrun.tap
header-vars: new variable $(am__running_with_option)
tests: expose bug#12554 (false positives for presence of '-k' make option)
Merge 'better-makeflags-recognition' and 'testing-work' into branch-1.13.2
* better-makeflags-recognition:
make flags analysis: handle more options with args
make flags analysis: use simpler variable names
make flags analysis: whitespace changes
make flags analysis: embed in a subshell
make flags analysis: be more robust
make flags analysis: cater to GNU make 3.83 (still unreleased as of now)
tests: expose weaknesses in make flags analysis
tests: improve debugging output in checks on make flags analysis
make flags analysis: refactor, to reduce code duplication
* testing-work:
maint: targets and recipes to simplify testing on real-world packages
build: preparatory refactoring
build: tiny reduction in code duplication
maint: targets and recipes to simplify testing on real-world packages
We introduce a new section in the maintainer-specific makefile that
contains recipes to test the build system of some well-known GNU
packages with the current development version of Automake. Not the
cleanest way to do so, but good enough for the moment. We'll revisit
the matter after the 1.13.2 release (which we now hope will happen
soon).
* maint.mk (git-sv-host): New.
(SV_GIT_CF, SV_GIT_AC, SV_GIT_GL): Use it to reduce code duplication.
(ALL_PACKAGES, FEW_PACKAGES): New, lists of GNU packages to try out.
(ttp-check, ttp-check-all): New targets, do the checking with said
packages.
(ttp): New, alias for 'ttp-check'.
(ttp-all): New, alias for 'ttp-check-all'.
The code was only duplicated two times, but we are soon going to
need a third occurrence, and that would be one to much.
* Makefile.am (extend_path): New.
(update_mans): Use it instead of copying & pasting its contents.
($(srcdir)/doc/amhello-1.0.tar.gz): Likewise, and minor related
adjustments.
* lib/am/header-vars.am (am__make_running_with_option): Here. Now
that we expect to be run in a subshell, we don't have to worry about
being namespace-safe. And '$foo' is much more pleasant to read than
'$am__foo' -- and pleasant code tends to be more correct.
(am__make_dryrun, am__make_keepgoing): Adjust.
make flags analysis: cater to GNU make 3.83 (still unreleased as of now)
The current development version of GNU make (that is planned to become
GNU make 3.83, sooner or later) has changed the format its $(MFLAGS)
variable slightly, removing the space between an option and its argument:
# With GNU make 3.82, compiled from official tarball:
$ make -f- <<<'all:; @echo "$$MFLAGS"' -I none
-I none
# With development version of GNU make (Git commit b5ea49b):
$ make -f- <<<'all:; @echo "$$MFLAGS"' -I none
-Inone
This was done on purpose, in order to support more easily the new
option '-O', which takes an optional argument; see:
Which was causing a spurious failure on FreeBSD. Not particularly
surprising, given how brittle "make -e" is in general ...
* t/cxx-lt-demo.sh: Instead of forcing $(CC) to be 'false' by
exporting "CC=false" in the environment and then passing the '-e'
option to make, do so by passing "CC=false" on the make command
line, both directly and using AM_MAKEFLAGS.
* fix-pr12554:
tests: avoid a spurious error with Solaris make
subdirs: don't return false positives for the '-k' option's presence
header-vars: recognize more make flags ('-k' in particular)
header-vars: simplify how make flags are determined
tests: remove dead code from t/make-dryrun.tap
header-vars: new variable $(am__running_with_option)
tests: expose bug#12554 (false positives for presence of '-k' make option)
compat: substitute '@mkdir_p@' as '$(MKDIR_P)' unconditionally
We had started to do so only when the obsolete AM_PROG_MKDIR_P variable
was used, but that has recently turned out not to be not good enough,
because Gettext 0.18.2 (the latest one at the moment of writing) is using
the modern macro AC_PROG_MKDIR_P in its '*.m4' files, but at the same time
is still using the obsolete make variable '$(mkdir_p)' in its Makefile
fragments. This has been causing failures in real-world packages
bootstrapped with latest Gettext (0.18.2) and with bleeding-edge automake.
And the worst things is that those failures have been basically silent
and unnoticeable up until the final "make install" --- that is, after
the affected package had been bootstrapped, configured and built. Yikes!
This issue has been reported to the Gettext developers:
But even if they will quickly fix it, Gettext 0.18.2 will remain
affected.
The fix we can implement in Automake is small and unobtrusive enough,
definitely worth having in order to save the users and developers from
having to deal with this hard-to-spot issue.
* m4/init.m4 (AM_INIT_AUTOMAKE): AC_SUBST '@mkdir_p@' to '$(MKDIR_P)'.
* t/am-prog-mkdir-p.sh: Enhance.
tests: adjust for warnings that have been moved to GNU make runtime
Some of those warnings are given at automake runtime in mainline
Automake, and some tests were relying on that behaviour, thus causing
spurious testsuite failures.
* master:
sync: update files from upstream with "make fetch"
maintcheck: remove outdated whitelisting
tar: format 'ustar' cannot support UID/GID longer than 21 bits
docs: issues with configure substitutions in TESTS
tests: avoid possible autotools caching issues (automake bug#13832)
tests: rename some with more descriptive names
docs: add myself and Ralf Wildenhues as authors
authors: add myself
dry-run: don't get confused by '-I' option
tests: avoid a spurious failure with the Korn Shell
dry-run: with GNU make, prefer $(MFLAGS) over $(MAKEFLAGS)
header vars: can determine whether we are running under GNU make
NEWS: improve wording for automake bug#13514 fix
NEWS: document fix for automake bug#13514
+ Extra non-trivial changes:
* lib/am/header-vars.am: Ignore all upstream changes, we shouldn't
need them.
* t/make-is-gnu.sh: Remove; our generated makefiles have no need to
test whether they are running under GNU make --- of course they are!
* maint:
sync: update files from upstream with "make fetch"
maintcheck: remove outdated whitelisting
tar: format 'ustar' cannot support UID/GID longer than 21 bits
docs: issues with configure substitutions in TESTS
tests: avoid possible autotools caching issues (automake bug#13832)
tests: rename some with more descriptive names
docs: add myself and Ralf Wildenhues as authors
authors: add myself
dry-run: don't get confused by '-I' option
tests: avoid a spurious failure with the Korn Shell
dry-run: with GNU make, prefer $(MFLAGS) over $(MAKEFLAGS)
header vars: can determine whether we are running under GNU make
NEWS: improve wording for automake bug#13514 fix
NEWS: document fix for automake bug#13514
* branch-1.13.2:
sync: update files from upstream with "make fetch"
maintcheck: remove outdated whitelisting
tar: format 'ustar' cannot support UID/GID longer than 21 bits
subdirs: don't return false positives for the '-k' option's presence
This change fixes automake bug#12554.
The old implementation of the code descending into $(SUBDIRS)
entries used the following snippet to decide whether make is running
with the '-k' a.k.a. '--keep-going' option, and thus whether a failure
in a subdirectory should prevent the descent in the following ones:
fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done
It's clear that the second pattern in the 'case' construct could possibly
match false positives, for examples in these two cases:
make check TESTS="x.test k.test"
make -I /usr/local/kool-fragments
which are somewhat unusual, but not invalid. So we need a more resilient
implementation, as we did for the detection of the '-n' flag.
This implementation is now provided by the new private macro
'$(am__make_keepgoing)' (introduced in recent commits); so we can
just us that to fix the bug.
* lib/am/subdirs.am ($(am__recursive_targets)): Use '$(am__make_keepgoing)'
instead of ad-hoc and more brittle checks.
* t/list-of-tests.mk (XFAIL_TESTS): Remove the now-passing test case
't/subdir-keep-going-pr12554.sh'.
Reported-by: Michael Daniels <mdaniels@rim.com> Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
header-vars: recognize more make flags ('-k' in particular)
* lib/am/header-vars.am (am__running_with_option): Here.
Few improvements to comments, while at it.
(am__make_keepgoing): New, tell whther make is being runt with
the '-k' option.
* t/make-keepgoing.tap: New test.
* t/list-of-tests.mk: Add it.
* t/make-dryrun.tap: Minor edits to keep it more in sync with
the new test.
* syntax-checks.mk (sc_tests_overriding_macros_on_cmdline): Here.
The test 'make-dryrun.sh' has been since long rewritten as the TAP
test 'make-dryrun.tap', and no longer spuriously triggers this
maintainer check.
header-vars: simplify how make flags are determined
Actually, son far only the '-n' option ("dry mode") was detected,
but this change will allow us to soon detect more options.
* lib/am/header-vars.am (am__running_with_option): Even when $MAKEFLAGS
appears to contain definition of variables with embedded whitespace,
use simple textual pre-processing over $MAKEFLAGS rather than tricky
recursive invocations of make to determine whether the '-n' option was
given. This is enough to correctly handle all the tricky usages covered
in the testsuite.
* t/nodep.sh: Adjust to avoid a spurious failure.