init: obsolete usages of AM_INIT_AUTOMAKE not supported anymore
This is a follow-up on commit v1.12-66-g27136df of 2012-05-06, "init: warn
against obsolete usage of AM_INIT_AUTOMAKE".
With this change, we drop support for the two-arguments and three-arguments
invocation forms of the AM_INIT_AUTOMAKE macro, as in either of:
AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
AM_INIT_AUTOMAKE($PACKAGE, $VERSION, NODEFINE)
* NEWS, doc/automake.texi: Update.
* m4/init.m4 (AM_INIT_AUTOMAKE): Report the two- and three-arguments
invocation form as a hard error.
* t/aminit-moreargs-deprecation.sh: Renamed ...
* t/aminit-moreargs-deprecation.sh: ... to this, and updated to check
the new semantics.
* t/ac-output-old.tap: Adjust by avoiding old-style uses of AC_INIT
and AM_INIT_AUTOMAKE.
* t/acsilent.sh: Likewise.
* t/dirlist.sh: Likewise.
* t/dirlist2.sh: Likewise.
* t/req.sh: Likewise.
* t/nodef.sh: Remove as obsolete.
* t/version.sh: Likewise.
* t/version2.sh: Likewise.
* t/backcompat.sh: Likewise.
* t/backcompat2.sh: Likewise.
* t/backcompat3.sh: Likewise.
* t/backcompat5.sh: Likewise.
* t/backcompat4.sh: Renamed ...
* t/backcompat-acout.sh: ... to this.
* t/list-of-tests.mk: Adjust.
init: warn against obsolete usage of AM_INIT_AUTOMAKE
Support for the two- and three-arguments invocation forms of the
AM_INIT_AUTOMAKE macro, as in:
AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
or:
AM_INIT_AUTOMAKE($PACKAGE, $VERSION, NODEFINE)
will be removed in the next major Automake release (1.13).
Such usages have already been deprecated in the documentation
starting from commit v1.11-2015-ge99690a of 23-02-2012 "docs,
news: document planned removal of obsolete macros and features".
We now start giving runtime warnings as well (in the 'obsolete'
category).
* NEWS: Update.
* m4/init.m4 (AM_INIT_AUTOMAKE): Report the two- and three-arguments
form invocation.
* automake.in (scan_autoconf_traces): Likewise.
* doc/automake.texi: Minor adjustments. Add an @anchor to the
location where it's described how to modernize outdated invocation
of AM_INIT_AUTOMAKE, so that it can be referenced from automake
warning/error messages.
* t/aminit-moreargs-deprecation.sh: New test.
* tests/list-of-tests.mk: Add it.
* tests/ac-output-old.tap: Adjust by calling automake with the
warnings in the 'obsolete' category disabled.
* t/backcompat.test: Likewise.
* t/backcompat3.test: Likewise.
* t/backcompat5.test: Likewise.
* t/backcompat6.test: Likewise.
* t/version.test: Likewise.
* t/version2.test: Likewise.
* t/pr2.test: Modernize style of AC_INIT and AM_INIT_AUTOMAKE
invocations, and use proper m4 quoting.
* t/pr87.test: Likewise.
* t/confsub.test: Likewise.
* t/install2.test: Likewise.
The comments in 'lib/autoconf/autoconf.m4' from Autoconf 2.69 read:
We discourage the use of the non prefixed macro names: M4sugar maps
all the builtins into 'm4_'. Autoconf has been converted to these
names too. But users may still depend upon these, so reestablish
them.
Alas, in our init.m4 files, we were still using m4 builtins without
prefixing them with "m4_". Not nice for a package that is one of the
major clients of Autoconf, and an integral part of the GNU Autotools!
Fix the issue.
* m4/init.m4 (AM_INIT_AUTOMAKE): Use 'm4_define' and 'm4_defn' instead
of 'define' and 'defn'.
Nick Alcock [Fri, 4 May 2012 14:14:43 +0000 (15:14 +0100)]
docs: fix clumsy grammar in the scripts-based testsuite chapter
* doc/automake.texi (Scripts-based Testsuites): "We'll have later" is
a rare example of English in the Automake manual clearly not written
by a native English-speaker: while comprehensible, it can be better
formulated.
Copyright-paperwork-exempt: yes Signed-off-by: Nick Alcock <nick.alcock@oracle.com> Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
tests: use append mode to capture parallel make output
This should fix the spurious failure reported in automake bug#11413.
This is due to the fact that the redirected output of parallel make
can racily loose lines. For example, if GNU make (3.82) is run on
a Makefile like this:
and has its standard output redirected in overwrite-mode to a regular
file, it looses a line of that output every 15 runs or so on a Fedora
17 system with 64 ppc64 cores and Linux 3.3.1. Redirection in append
mode does not suffer of this problem.
See also similar commit 'Release-1-10-280-g6426999' of 2009-03-10,
"Use append mode to capture parallel test output", which tackled a
similar problem for 't/parallel-tests3.sh' and 't/lisp8.sh'.
* t/tap-more.sh: Use append mode for output from "make -j", to avoid
dropped lines.
* t/parallel-tests3.sh, t/lisp8.sh: Enhance comments.
parallel-tests: separate different logs with an empty line
After commit v1.12-21-g5eeb366 "parallel-tests: optimize global log
creation", the log files copied in the global log are not anymore
separated by a blank line, causing unclear output like this:
FAIL: test1
===========
output from test 1
FAIL: test2
===========
output from test 2
where we would want something like this:
FAIL: test1
===========
output from test 1
FAIL: test2
===========
output from test 2
Fix this regression.
* lib/am/check.am (am__create_global_log): Print an extra empty line
after having displayed the content of a '.log' file.
* t/objcxx-deps.sh, t/objcxx-minidemo.sh: In C++ files, use
"std::cout <<", not "cout <<", to avoid triggering a spurious
failure by the syntax check 'sc_tests_here_document_format'.
Cherry-picked from yesterday's commit v1.12-81-g7f3f467, that
had erroneously been applied to 'master' only rather than to
'maint'.
* syntax-checks.mk: Move ...
(sc_tests_plain_aclocal,
sc_tests_plain_autoconf,
sc_tests_plain_perl,
sc_tests_plain_autoupdate,
sc_tests_plain_automake,
sc_tests_plain_make,
sc_tests_plain_autoheader,
sc_tests_plain_autoreconf,
sc_tests_plain_autom4te): ... all these targets ...
(sc_tests_plain_egrep_fgrep): ... and part of this target ...
(sc_tests_plain_check_rules): ... into this variable, and
reimplement their recipes ...
($(sc_tests_plain_check_rules)): ... with this static pattern
rule. Enhance the coverage they offer a little since we are
at it.
(sc_m4_am_plain_egrep_fgrep): New rule, the part of the old
'sc_tests_plain_egrep_fgrep' rule that checked for use of
'fgrep' and 'egrep' in *.am and *.m4 fragments (rather than
in test scripts).
(syntax_check_rules): Update.
* t/dist-formats.tap: Fix bad use of "make" instead of "$MAKE"
revealed by the extra coverage.
* t/cond5.sh, t/auxdir-autodetect.sh: Cosmetic changes to avoid
spuriously triggering the maintainer checks due to the
enhanced coverage.
tests: avoid spurious failure on missing Obj C/C++ compiler
* t/objc-megademo.sh: Arrange the test to SKIP, not FAIL, if there is
no Objective C or no Objective C++ compiler. Since we are at it, remove
some checks that were actually testing Autoconf (not Automake) behaviour.
* objc++:
objc, objc++: test support for compilation flags
objc, objc++: add stress test
objc, objc++: test automatic dependency tracking
objc: reorganize basic tests
objc++, objc: add first semantic tests
objc++: add first basic test
news: announce initial support for Objective C++
objc++: test support for '.mm' suffix in _SOURCES entries
objc++: add documentation
objc++: initial support for Objective C++
tests: fix spurious failure due to autom4te caching
Reported by Peter Breitenlohner :
<http://lists.gnu.org/archive/html/automake-patches/2012-05/msg00045.html>
* t/suffix.sh: Remove stale autom4te.cache directories, to prevent racy,
spurious failures (using 'aclocal --force' was not enough, since the cache
was still picked up by the following automake call).
* t/objc-megademo.sh: New test, trying out a package using all
of C, C++, Objective C and Objective C++ at the same time.
* t/list-of-tests.mk: Add it.
* t/objc.sh, t/objc2.sh: Removed, merged into ...
* t/objc-basic.sh: ... this new test.
* t/objcxx-basic.sh: Add reference to new sister test.
* t/list-of-tests.mk: Update.
Merge branch 'parallel-tests-performance' into maint
* parallel-tests-performance:
parallel-tests: save few forks when possible
parallel-tests: optimize global log creation
parallel-tests: optimize 'recheck' target for speed
coverage: add performance tests on some parallel-tests aspects
aclocal: error out again on unrecognized arguments
Starting from commit v1.11-662-g52246cc of 2102-02-18, "cmdline parsing:
move into a dedicated perl module", aclocal has been silently ignoring
non-option arguments instead of correctly reporting them.
Fix this regression.
* t/aclocal.sh: Update to catch the regression.
* aclocal.in (parse_arguments): Explicitly reject non-option arguments.
* NEWS: Update.
bootstrap: consistently use correct copyright year
Suggested by Peter Johansson in the discussion about automake bug#11356:
<http://debbugs.gnu.org/cgi/bugreport.cgi?bug=11356#41>
* boostrap.sh (dosubst): Don't initialize the substituted value for the
release year from the current year (using `date +%Y`); instead, do it
through ...
($RELEASE_YEAR): ... this new statically-defined variable. To ensure it
won't get out-of-sync, it will be automatically updated ...
* Makefile.am (update-copyright): ... by this target's recipe.
Since are at it, fix a botched output redirection for an error message,
i.e., use ">&2" instead of ">&1".
* lib/am/check.am (am__check_pre): Save some forks, by analyzing more
carefully the value of '$@' to decide how to extract its dirname part,
and whether that should be created as a directory.
Autoconf 2.65 is almost three years old now, so requiring it is
acceptable. Also, the soon-to-appear support for Objective C++
in Automake will be simplified if we can assume that Autoconf
version (which is the one that introduced support for Objective
C++).
* NEWS (Planned future backward-incompatibilities): Automake 1.13
will require Autoconf 2.65 or later.
readme: update INSTALL to latest version from Autoconf
* INSTALL: Updated to the version coming with Autoconf 2.69. This
is warranted now that we use and require that same Autoconf version
in our build system.
color-tests: coloring can be forced on non-ANSI terminals as well
Before this change, colorization of testsuite output was suppressed
whenever the terminal was recognized to be a "dumb" one, incapable
of handling ANSI coloring (i.e., when the environment variable TERM
had a value of "dumb"). This happened even when the AM_COLOR_TESTS
variable was set to a value of "always".
Such a behaviour was suboptimal and slightly confusing; in fact, if
a user wants to force coloring of testsuite output that is being
redirected to a regular file, he should be able to do so even if his
terminal is not capable of handling ANSI colors -- in fact, such
terminal wouldn't be involved with the testsuite output in any way,
so why should it be allowed to influence it?
Thus, we now enable coloring of test output whenever AM_COLOR_TESTS
is set to "always", irrespective of the value of the TERM environment
variable.
* NEWS: Update.
* lib/am/check.am [%?COLOR%] (am__tty_colors): Activate colorization
of testsuite output whenever AM_COLOR_TESTS has the value of "always".
* t/ax/tap-summary-aux.sh: Export the TERM environment variable to
"dumb" when forcing colorization of the testsuite output; this should
*not* prevent such colorization from taking place, and we want to
check that this expectation really holds.
* t/ax/testsuite-summary-checks.sh: Likewise.
* t/color.sh: Likewise, and adjust some grepping checks.
* t/tap-color.sh: Likewise. Also, remove redundant "make check"
invocation since we are at it.
* t/color2.sh: Likewise, and check that exporting TERM=dumb actually
prevents testsuite output colorization when AM_COLOR_TESTS is unset.
* t/parallel-tests-reset-term.sh: Relax, to prevent it from failing
spuriously due to the new semantic.
cygnus: warn when it's used (flagged as 'obsolete' now)
Support for "Cygnus-style" tree as enabled by the 'cygnus'
option is now reported as obsolete when the warnings in the
'obsolete' category are enabled.
See automake bug#11034.
* automake.in (check_cygnus): Report the use of 'cygnus' mode as
obsolete.
* NEWS: Update.
* docs/automake.texi: Minor adjustments.
* t/cygnus-deprecation.sh: New test.
* t/list-of-tests.mk: Add it.
* tests/cygnus-check-without-all.sh: Adjust by calling automake
with the warnings in the 'obsolete' category disabled.
* t/cygnus-requires-maintainer-mode.sh: Likewise.
* t/cygnus-dependency-tracking.sh: Likewise.
* t/cygnus-imply-foreign.sh: Likewise.
* t/cygnus-no-installinfo.sh: Likewise.
* t/cygnus-no-dist.sh: Likewise.
* t/clean2.sh: Likewise.
* t/flavor.sh: Likewise.
* t/txinfo5.sh: Likewise.
* t/txinfo5b.sh: Likewise.
* t/library.sh: Remove use of 'cygnus' and 'dejagnu' options,
and of AM_MAINTAINER_MODE macro.
With this change, the time required to execute the test case
'testsuite-summary-speed.sh' has dropped as follows:
+ Slow Debian i686 system, 1 core x 1.5 GHz, 768 MB of RAM,
GNU make 3.81:
- 1 run: 4 minutes => 30/40 seconds
+ Fast Solaris 10 i686 system, 4 cores x 3 GHz, 20 GB of RAM,
Solaris CCS make:
- 2 runs: 6 minutes => 30 seconds
+ Very fast Fedora ppc64 system, 64 cores x 3.5 GHz, 64 GB of RAM,
GNU make 3.82:
- 5 runs: 7 minutes => 1 minute and 10 seconds
* lib/am/check.am ($(TEST_SUITE_LOG)): Optimize for speed, by avoiding
lots of forks with the help of ...
(am__create_global_log): ... this new internal variable, basically
defining a smart awk program, and ...
(am__global_test_result_rx, am__copy_in_global_log_rx): ... these new
internal variables, used by the one above.
(am__rst_section): Remove as obsolete
* t/rst-formatting.trs: Remove.
* t/list-of-tests.mk: Update.
* t/testsuite-summary-count-many.sh: Improve its stress testing by
using 1 million tests rather than just 5 thousands: we can afford
this with our new optimization, and still have the test completed
in a reasonable time.
parallel-tests: optimize 'recheck' target for speed
With this change, the time required to execute the test case
'testsuite-recheck-speed.sh' has dropped as follows:
+ Slow Debian i686 system, 1 core x 1.5 GHz, 768 MB of RAM,
GNU make 3.81:
- 1 run: 6 minutes => 40 seconds
+ Fast Solaris 10 i686 system, 4 cores x 3 GHz, 20 GB of RAM,
Solaris CCS make:
- 4 runs: 3 minutes => 1 minute
+ Very fast Fedora ppc64 system, 64 cores x 3.5 GHz, 64 GB of RAM,
GNU make 3.82:
- 5 runs: 4 minutes => 1 minute 30 seconds
* lib/am/check.am (recheck): Optimize for speed, by avoiding lots of
forks with the help of ...
(am__list_recheck_tests): ... this new internal variable, basically
defining a proper awk program, and ...
(am__recheck_rx): ... this other new internal variable, used by the
one above.
* t/test-trs-recover2.sh: Relax by not checking for a very corner
case ('.log' and '.trs' files both unreadable) that we don't handle
anymore.
coverage: add performance tests on some parallel-tests aspects
* t/testsuite-recheck-speed.sh: New test.
* t/testsuite-summary-speed.sh: Likewise.
* t/list-of-tests.mk: Update.
The new tests are not meant to PASS/FAIL, but rather to help us to
obtain quantitative measurements of the performance improvements
offered by soon-to-appear optimization patches.
Timing before the optimizations implemented by following patches:
+ Slow Debian i686 system, 1 core x 1.5 GHz, 768 MB of RAM,
GNU make 3.81:
- testsuite-recheck-speed.sh: 1 run, ~ 6 minutes
- testsuite-summary-speed.sh: 1 run, ~ 4 minutes
+ Fast Solaris 10 i686 system, 4 cores x 3 GHz, 20 GB of RAM,
Solaris CCS make:
- testsuite-recheck-speed.sh: 4 runs, ~ 3 minutes
- testsuite-summary-speed.sh: 2 runs, ~ 6 minutes
+ Very fast Fedora ppc64 system, 64 cores x 3.5 GHz, 64 GB of RAM,
GNU make 3.82:
- testsuite-recheck-speed.sh: 5 runs, ~ 4 minutes
- testsuite-summary-speed.sh: 5 runs, ~ 7 minutes
AM_PROG_MKDIR_P: deprecate, to be removed in Automake 1.13
Support for the obsolescent 'AM_PROG_MKDIR_P' macro (and its
output variable '$(mkdir_p)') has already been deprecated in
the documentation. It's now time to make its use actively
emit warnings in the 'obsolete' category as well.
* automake.in (scan_autoconf_traces): Warn about 'AM_PROG_MKDIR_P'
obsolescent if that macro is seen.
* m4/mkdirp.m4 (AM_PROG_MKDIR_P): Warn about its own obsolescence.
* m4/init.m4: Require 'AC_PROG_MKDIR_P', not 'AM_PROG_MKDIR_P'.
* t/mkdirp-deprecation.sh: New test.
* t/list-of-tests.mk: Add it.
* syntax-check.mk (sc_mkdir_p): Delete this check as obsolete.
(syntax_check_rules): Remove it.
* t/gettext-macros.sh: Ensure the gettext-requiring tests will
call aclocal and automake with the 'obsolete' warnings disabled,
since even recent versions of gettext used the now-deprecated
'AM_PROG_MKDIR_P' m4 macro.
* NEWS: Update.
fixup: avoid unconditional re-bootstrapping on "make dist"
Since our 'bootstrap' script is distributed, the 'distdir' target depends
on it. But in our GNUmakefile, we also have a 'bootstrap' target declared
.PHONY, which when called re-bootstrap the Automake distribution. Thus,
whenever we run "make dist", GNU make sees it must remake the 'bootstrap'
target (as it is a dependency of the 'distdir' target), and thus ends up
re-bootstrapping all the package (because of the .PHONY 'bootstrap' target
in GNUmakefile).
We fix this issue by renaming our bootstrap script to 'bootstrap.sh'.
build: ensure release year in copyright notice is up-to-date
From a suggestion by Eric Blake. See automake bug#11356.
This is a follow-up to previous patch 'v1.12-12-gb99b5be'.
* configure.ac (RELEASE_YEAR): New AC_SUBST'd variable, should hold
the value of the current year.
* Makefile.am (update-copyright): Be sure to also update the
definition of 'RELEASE_YEAR' in configure.ac.
* lib/Automake/Config.in ($RELEASE_YEAR): New exported variable,
initialized from the value substituted for '@RELEASE_YEAR@'.
(@EXPORT): Add it.
* automake.in, aclocal.in: Use '$RELEASE_YEAR' (which will be
substituted at make time) instead of hard-coding the release
year. This should ensure the copyright range in the version
message and in the generated files (Makefile.in and aclocal.m4)
are automatically kept up-to-date.
* bootstrap (dosubst): Update, also substitute '@RELEASE_YEAR@'.
* THANKS: Use spaces, not tabs, to separate a reporter's name from
his e-mail address. Also, increase such spacing, to allow a more
consistent formatting with longer names.
readme: explicitly state we use ranges in copyright years
Reported by Jack Kelly in automake bug#11356.
* README: Explicitly state we use ranges in copyright years; this is
mandated by the GNU Coding Standards for each package that wants to
actually use ranges in copyright years.
Dependencies in the Automake build system are not completely specified
(see for example the commit log of recent commit 'v1.12-10-gab14841',
"build: avoid too greedy rebuilds in the testsuite"). In fact, some of
them cannot even be; for example, Makefile is generated at configure
time from Makefile.in, which should be regenerated by our bleeding-edge
automake script, which is generated by out Makefile -- specifying the
complete chain of dependencies here would bring to a circular dependency
issue.
For this reason, before testing or deploying a change, we are often
forced to perform a full re-bootstrap of the Automake package, to ensure
all our files are actually up-to-date. Until now, this has to be done
manually, thus causing wasted keystrokes and more possibilities of error.
With this change, we introduce a new 'bootstrap' make target to
automatize all the (easy) steps of this re-bootstrapping (plus some
minor bells & whistles since we are at it).
* GNUmakefile: Rewrite to allow an easy bootstrapping and clean rebuild
of the whole package, in particular with the help of ...
(bootstrap): ... this new target.
automake, aclocal: update copyright year in output
Fixes automake bug#11356.
* aclocal.in, automake.in: Add copyright year '2012' in the version
message. Ditto for the copyright notice in the generated Makefile.in
or aclocal.m4 files; and for those, since we are at it, prefer using
a range for copyright years, rather than listing each copyright year
individually.
maint: don't use "union" merge driver for NEWS anymore
The use of the "union" merge driver to avoid conflicts in NEWS has
proven to be problematic, as it often silently produced mis-merges
(instead of spurious conflicts, but a spurious conflict is better
than a mis-merge). Also, our new branching policy (see automake
bug#11153 for a description) should greatly mitigate the problem of
merge conflicts in NEWS. For further discussion, see:
<http://lists.gnu.org/archive/html/automake-patches/2012-04/msg00148.html>
The autogenerated makefile fragment 't/testsuite-part.am' used to depend
on the list of *all* the hand-written files. This was technically correct,
since that makefile fragment was (and still is) generated by the script
'gen-testsuite-part', which scans all the hand-written files to detect
implicit dependencies and to decide for which tests a further wrapper test
should be generated.
However, the presence of such a dependency implied that, whenever *any*
test case was modified (no matter how slightly), the 't/testsuite-part.am'
file was rebuilt, and since that is included by our 'Makefile.am', the
'Makefile.in' file was rebuilt as well by automake. In order to do so,
automake scanned our 'configure.ac' file, which requires the latest
Autoconf version (2.69 at the time of writing), and the casual user can
easily lack that on his machine (and that should be allowed, as automake
currently supports any autoconf version >= 2.62).
The described situation could hinder in-field testing or debugging by
users (even experienced ones) that are not automake developers; see for
example automake bug#11347.
So we drop the explicit dependency of 't/testsuite-part.am' on the
hand-written test cases. (As an aside, note that this has already
been done in Automake-NG, albeit for other reasons; see the commit
'v1.11b-129-g1690aca' of 2012-04-23, "[ng] build: define $(TESTS)
through a wildcard").
This is not a serious regression in the faithfulness of the Automake
build systems, since it unfortunately already had several undeclared
dependencies; e.g., 'Makefile.in' should depend on the automake script,
and 'aclocal.m4' should depend on the aclocal script (but this isn't
possible, as it would mean that distributed files depend on ones generated
at make time). Similarly, 'Makefile.in' should depend on some of the
'lib/am/*.am' files, but does not.
Currently, the workaround to get a faithful and correct rebuild is to run
./bootstrap && ./config.status --recheck && make clean all
and the present commit does not change that.
* Makefile.am ($(srcdir)/t/testsuite-part.am): Don't depend on
't/list-of-tests.mk' nor on '$(handwritten_TESTS)' anymore.
($(generated_TESTS)): Likewise, and don't depend on 'Makefile.am'
either.
The <cstdio> header from Xcode-4.3.2 on Mac OS X 10.7.3 declares a 'isatty'
function with C++ linkage, that conflicts with our dummy definition of the
same function, which in turn is required to work around the absence of the
unistd.h header on MinGW (see commit 'v1.11-2138-gfeea090' of 11-04-2012).
So we tweak the affected tests to work around this new problem as well.
This fixes automake bug#11345.
* t/lex-clean-cxx.sh ($required): Since we are at it, add an explicit
'c++' requirement.
* t/lex-depend-cxx.sh ($required): Likewise.
(my-hdr.hxx): Don't include <cstdio>. The "using namespace" directive
should still be enough to ensure the content of this header is not valid
C, albeit being of course valid C++.
Fix unrelated typos in comments.
(joe.ll): Adjust, by removing the call to 'printf'.
* THANKS: Add entry for reporter "Adam Mercer".
It is only from version 2.69 that the 'AC_PROG_FC' macro has started to
set the '$GFC' variable to "yes" if the selected Fortran compiler is a
GNU compiler. Since we use this variable in our configure.ac, we better
require autoconf 2.69 explicitly.
build: don't require minimal automake version in AM_INIT_AUTOMAKE
* configure.ac (AM_INIT_AUTOMAKE): Don't explicitly require a minimal
automake version number. Since the Automake build system is only meant
to work with the bleeding-edge automake, that requirement was redundant
and misleading.
* configure.ac (AC_INIT): Bump version number to 1.12.
* NEWS: Likewise.
* m4/amversion.m4 (AM_AUTOMAKE_VERSION): Likewise (autoupdated
by ./bootstrap).
coverage: test the internal $(am__relativize) variable
This new coverage might turn out be useful for the planned changes
in Automake-NG. Even if it eventually doesn't, we gen an improved
testsuite exposure of some non-trivial internals, so it's always a
win for us.
* t/relativize.tap: New test.
* t/list-of-tests.mk: Add it.
On at least OpenSUSE 12.1, "make install" will install libraries in
the '${prefix}/lib64' directory by default. This is due to the
$CONFIG_SITE set by /etc/profile.d/site.sh, which sets a libdir
that ends in '/lib64' rather than '/lib' if it finds that the compiler
is generating 64-bit code. This behaviour was causing some spurious
failures in our testsuite. Fix them.
* t/posixsubst-libraries.sh: Assume the libraries are installed in
'$(libdir)' rather than in '$(prefix)/lib'.
* t/posixsubst-ltlibraries.sh: Likewise.
* t/posixsubst-scripts.sh: Similarly, don't assume that '$(bindir)',
'$(sbindir)' and '$(libexedir)' always defaults to respectively
'$(prefix)/bin', '$(prefix)/sbin' and '$(prefix)/libexec'.
* t/transform3.test: Likewise.
* t/lex-libobj.sh: We used to pass LEXLIB='-L /lib' to the ./configure
invocation, to prevent it from explicitly searching for a "lex library".
But the linker on MacOS X 10.5 apparently chokes on that:
cc -g -O2 -o foo foo.o -L /lib yywrap.o
ld: file not found: /lib
collect2: ld returned 1 exit status
So, we now instead pass LEXLIB=' ', which being non-empty is enough
to prevent the search of a "lex library". And since we are at it,
enhance comments on this non-obvious usage.
Co-authored-by: Bruno Haible <bruno@clisp.org> Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
vala: configure exit with status 77, not 1, if valac version is too old
From a report by Bruno Haible in automake bug#1193. This change should
also automatically avoid spurious testsuite failures with older vala
versions.
* m4/vala.m4 (AM_PROG_VALAC): Exit with status 77, rather than 1, if
the Vala compiler found older than the minimal required version (if
any). This is more consistent with what is done by other macros like
AM_PROG_UPC or AC_PROG_CC.
* NEWS: Update.
* t/vala-headers.sh: Adjust, so that the test is only skipped of the
vala compiler is too old or the required PKG_CHECK_MODULES third-party
macro is not found by aclocal, and not if a generic error happens in
the configure script.
* t/vala-libs.sh: Likewise.
* t/vala2.sh: Likewise.
* t/vala3.sh: Likewise.
* t/vala5.sh: Likewise.
* t/vala-vpath.sh: Likewise (but don't check for the potential error
with PKG_CHECK_MODULES, as that macro is not used in any way here).
* t/vala4.sh: Adjust, to avoid the new semantic causing this test to
skip instead of failing.
This is a pure refactoring, with no intended functional or semantic
changes. It breaks up an overly-long function in three smaller
sub-functions. This change will very especially useful for the work
on Automake-NG.
* lib/Automake/Rule.pm (define): Move quite a lot of code out, into ...
(_rule_defn_with_exeext_awareness, _maybe_warn_about_duplicated_target,
_conditionals_for_rule): ... these new subroutines.
automake: refactor pre-processing of makefile fragments
This change will provide the automake script with a new function that
reads in a Makefile fragment *without* performing Automake ad-hoc parsing,
but only the pre-processing step, i.e., removal of '##' comments and
substitution of tokens like '%SUBDIRS%', '%?LIBTOOL%' or '?GENENRIC?'.
This will very likely be useful for the work on Automake-NG.
This is a pure refactoring, with no intended functional or semantic
changes.
* automake.in (preprocess_file): New function, extracted ...
(make_paragraphs): ... from here.
Autoconf 2.13 is definitely obsolete today, so giving hints or caveats
about it in the Automake documentation is not only obsolescent, but
also counter-productive, as it suggests that autoconf 2.13 is still
relevant.
* doc/automake.texi: Adjust. Related rewordings. Since we are at it,
prefer using a more modern autoconf version number (2.68 instead of 2.57)
in an example showing how to correctly use 'AC_PREREQ' in third-party
.m4 files.
tests: fix spurious failure with non-ANSI terminals
* t/ax/tap-summary-aux.sh: When checking colored testsuite output,
be sure to export the TERM variable to the value "ansi"; otherwise
the automake testsuite driver will not display colored output, not
even if AM_COLOR_TESTS is exported to "always". Failure revealed
by NixOS Hydra.
* configure.ac (AC_INIT): Bump version number to 1.11e, as per
HACKING suggestion.
* NEWS: Likewise.
* m4/amversion.m4: Likewise (autoupdated by ./bootstrap).
* t/aclocal-install-fail.sh: Do not set the 'errexit' shell flag,
as it is already set by './defs'.
* t/aclocal-install-mkdir.sh: Likewise.
* t/aclocal-no-install-no-mkdir.sh: Likewise.
* t/aclocal-verbose-install.sh: Likewise.
* t/instdir-no-empty.sh: Likewise.
* t/link_cond.sh: Likewise.
* t/python-pr10995.sh: Likewise.
* t/vala-vapi.sh: Likewise.
tests: avoid spurious failures when cross-compiling
* t/parallel-tests-recheck-depends-on-all.sh: Skip the test
when cross-compiling.
* t/vala-vapi.sh: Skip tests that do not make sense when
cross-compiling.
* t/yacc-basic.sh: Likewise.
* t/yacc-cxx.sh: Likewise.
* syntax-checks.mk (ams): The previous change 'v1.11b-36-g127adfb' solved
one problem in the definition of this variable, but also caused it contain
the names of all the left-behind 't/*.dir' temporary test directories.
Fix that.
* syntax-checks.mk (ams): The definition of this variable was invoking
the 'find' utility in an incorrect way, which resulted into the variable
being empty, thus reducing coverage in some maintainer check and making
other hang. Fix this.
When a developer experience one or more failures in the testsuite, a good
workflow is for him to modify its program's sources to fix the bug thus
revealed, run "make recheck" to verify that the change has indeed solved
the testsuite failures previously experienced, and then run "make check"
to verify that the change has not introduced any new failure or regression.
Unfortunately, this apparently natural workflow couldn't have worked until
now, since the Automake-provided 'recheck' target (which didn't depend on
'all') wouldn't have causes the program to be recompiled, and the failed
tests would have thus been run with the older, buggy version of the
program, failing the same way as before.
* lib/am/check.am (recheck): Depend on 'all'.
* t/parallel-tests-recheck-depends-on-all.sh: New test.
* t/list-of-tests.mk: Add it.
* NEWS: Update.
automake: fix botched call to 'check_user_variables'
* automake.in (lang_vala_finish_target): The 'check_user_variables' function
takes an array, not an array ref, as argument; adjust its call accordingly.
* t/vala-headers.sh: New test, checking use of 'valac' options for
header generation (e.g., '-H', '--vapi', ...) in '$(..._VALAFLAGS)'.
* t/list-of-tests.mk: Add it.
* t/vala4.sh: Don't run 'libtoolize', it's not truly required.
($required): Don't require 'libtoolize'.
(configure.ac): Don't invoke 'AC_PROG_LIBTOOL'.
* t/vala-mix.sh ($required): Require 'cc'.
Avoid some calls to 'framework_failure_', they were only useful when
this test was xfailing (to ensure it wasn't failing for the wrong
reasons).
Ensure the stamp file is created in the source directory.
Jim Meyering [Sun, 15 Apr 2012 16:44:50 +0000 (18:44 +0200)]
build: use latest help2man, but without locale support
* doc/help2man: Update to latest (1.40.8), but built with
--disable-nls, which elides the less-portable locale-related
code, and with the "use 5.008" manually changed to "use 5.006".
Thanks to Brendan O'Dea for the tips.
* THANKS: Update Brendan's address.
Jim Meyering [Fri, 13 Apr 2012 15:58:04 +0000 (17:58 +0200)]
build: use slightly older help2man, for improved portability
Fixes automake bug#11235
* doc/help2man: Downgrade to help2man-1.36.4, so that it does
not require Locale/gettext.pm, which is not available on a
default Fedora 16 installation. Reported by Stefano Lattarini.