* master:
fixup: avoid unconditional re-bootstrapping on "make dist"
build: ensure release year in copyright notice is up-to-date
cosmetics: fix spacing in THANKS
readme: explicitly state we use ranges in copyright years
aclocal: remove the --acdir option
bootstrap: add convenience make target
m4: delete several obsolete macros
automake, aclocal: update copyright year in output
maint: don't use "union" merge driver for NEWS anymore
build: avoid too greedy rebuilds in the testsuite
tests: avoid yet another spurious environment influence
tests: fix a failure in Lex/C++ tests on Mac OS X
tests: fix a spurious failure due to truncated timestamps
build: require autoconf 2.69
build: don't require minimal automake version in AM_INIT_AUTOMAKE
post-release: major version bump
post-release: minor version bump
release: stable major release 1.12
tests: cater to systems installing libs in /lib64
tests: fix spurious failure on Mac OS X
* maint:
fixup: avoid unconditional re-bootstrapping on "make dist"
build: ensure release year in copyright notice is up-to-date
cosmetics: fix spacing in THANKS
readme: explicitly state we use ranges in copyright years
bootstrap: add convenience make target
automake, aclocal: update copyright year in output
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.
It not documented in the manual anymore, its use has already been
causing a deprecation warning, and its oncoming removal has already
been announced in the NEWS file. So let's finally remove it.
* aclocal.in (parse_arguments): Don't recognize the '--acdir' option
anymore.
(handle_acdir_option): Remove subroutine.
* configure.ac ($ACLOCAL): Adjust.
($AUTOMAKE): Cosmetic changes, for consistency.
* tests/aclocal-acdir.test: Remove usages of the '--acdir' option.
* tests/aclocal-print-acdir.test: Likewise.
* NEWS: Update.
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.
Support for several obsolescent macros has already been deprecated,
and their removal already announced in the documentation and in the
NEWS file. It's now time to finally remove them.
* m4/dmalloc.m4 (fp_WITH_DMALLOC): Don't define anymore.
* m4/maintainer.m4 (jm_MAINTAINER_MODE): Likewise.
* m4/lispdir.m4 (ud_PATH_LISPDIR): Likewise.
* m4/protos.m4 (fp_C_PROTOTYPES): Likewise.
* m4/ccstdc.m4: Delete file.
* m4/header.m4: Likewise.
* m4/obsol-gt.m4: Likewise.
* m4/obsol-lt.m4: Likewise.
* m4/obsolete.m4: Likewise.
* Makefile.am (dist_automake_ac_DATA): Don't list the deleted '.m4'
files anymore.
* t/confh.sh: Use 'AC_CONFIG_HEADERS' instead of the now-removed
AM_CONFIG_HEADER.
* t/confh.sh: Likewise.
* t/confh4.sh: Likewise.
* t/confh6.sh: Likewise.
* t/confh7.sh: Likewise.
* t/confh8.sh: Likewise.
* t/confsub.sh: Likewise.
* t/stamph2.sh: Likewise.
* t/subdir6.sh: Likewise.
* t/autohdr2.sh: Remove as obsolete.
* t/obsolete.sh: Likewise.
* t/list-of-tests.mk. Don't list the deleted test cases anymore.
* NEWS: Update.
* doc/automake.texi: Likewise. In particular ...
(Obsolete Macros): Remove this node altogether.
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:
maint: don't use "union" merge driver for NEWS anymore
build: avoid too greedy rebuilds in the testsuite
tests: avoid yet another spurious environment influence
tests: fix a failure in Lex/C++ tests on Mac OS X
tests: fix a spurious failure due to truncated timestamps
build: require autoconf 2.69
build: don't require minimal automake version in AM_INIT_AUTOMAKE
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).
* master:
coverage: test the internal $(am__relativize) variable
coverage: parallel make with vala
vala: configure exit with status 77, not 1, if valac version is too old
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.
[ng] dist: remove workaround needed by BSD make only
* am/lib/configure.am (distcheck): GNU make (without the '.ONESHELL'
special target specified, which we don't support anyway) is assured
not to re-use the same shell in different commands of the same recipe,
so we can slightly simplify our rule accordingly, removing workarounds
that were only relevant fr BSD make when run in parallel mode.
* am/lib/configure.am (am--refresh): No need to explicitly depend
on %MAKEFILE%, as GNU make will always make sure %MAKEFILE% is
updated before considering the am--refresh target anyway. Also,
this target don't need a recipe, so don't add any.
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>
* t/parallel-tests-unreadable.sh: On Solaris 10, on an error due to missing
read permission, 'cat' reports simply "cat: cannot open FILENAME", rather
than a proper "Permission denied" message; similarly fr grep. Adjust the
test (and comments) to cater for that.
[ng] parallel-tests: fix confusing function names in Makefile recipes
* lib/am/check.am: Rename shell function 'result_count' to
'display_result_count', to avoid confusion with the recently
added 'count_result' function. Throw in a couple of cosmetic
improvements since we are at it.
[ng] tests: run long-running ones early (useful with parallel make)
For multicore machines, whenever running the testsuite in parallel, it
makes sense to start the longer-running tests earlier, to make better
use of the CPU parallelism (in particular, to minimize the possibility
that the test harness will be left stuck to wait a single tests to
finish, thus leaving all cores but one idle).
In the previous commit 'v1.11b-129-g1690aca', we started defining the
automake $(TESTS) through a call to the $(wildcard) function. This has
many positive effects, but also the drawback that the tests are now
ordered randomly, so that there is an unpredictable possibility that
some long-running will be executed late, which is bad in light of what
explained above.
But luckily, we can be still able to ensure longer tests are run early,
by using a simple trick (which relies on those very GNU make features
that the parallel testsuite harness has only recently learned to grasp).
* Makefile.am (long_running_TESTS, all_TESTS): New variables.
(TESTS): Redefine in function of them, in a way that ensures the tests
in $(long_running_TESTS) are run first.
We can finally do that thanks to our recent improvements to the parallel
testsuite harness :-)
* t/list-of-tests.mk: Delete.
* t/CheckListOfTests.am: Likewise, the checks it implemented being now
redundant.
* syntax-checks.mk (maintainer-check): Don't depend on the obsolete and
now removed 'maintainer-check-list-of-tests' check anymore.
* Makefile.am: Don't include those deleted makefile fragments anymore.
(TESTS): Define through a proper use of the $(wildcard) GNU make builtin.
(perl_fake_XFAIL_TESTS, XFAIL_TESTS): Moved in from 't/list-of-tests.mk'.
($(srcdir)/t/testsuite-part.am): Don't generate nor include anymore, ...
($(srcdir)/autodeps.am): ... generate and include this instead.
Remove explicit dependency of the generated tests and their list on the
'$(srcdir)/gen-testsuite-part' file; while technically correct, that was
overly picky and source of problems for casual testers/users. And anyway,
we don't have an explicit list of all the generated files anymore ...
* bootstrap: Adjust, by generating 'testsuite-autodeps.am' rather than
't/testsuite-part.am'.
* .gitignore: Update.
* t/self-check-dir.tap: Update to avoid a spurious failure due to the
changes in Makefile.am.
* gen-testsuite-part: Do not output the list of automatically generated
tests. Ensure the generated tests are always placed in the $(srcdir).
Assume (here and in the generated scripts) that all the test scripts
(whther autogenerated or not) are to be found in $(srcdir). Adjust some
comments.
[ng] parallel-tests: support "TESTS = $(srcdir)/foo.test"
This change fixes a small but annoying limitation of the parallel
testsuite harness. Before this change, if $(TESTS) contained a test
case with '$(srcdir)' in its name:
TESTS = $(srcdir)/foo.test
the parallel testsuite driver would have created the 'foo.log' and
'foo.trs' files in the source directory rather than in the build
directory. This made it impossible to employ useful constructs of the
following kind:
TESTS = $(wildcard *.test)
in a VPATH setup. In fact, the idiom as written above would have missed
any test in the source directory (i.e., any non-generated tests), while
the "corrected" idiom:
would have created the '.log' and '.trs' files for any distributed test
in the source directory.
After this change, the "corrected" idiom above is usable, and created
'.log' and '.trs' files in the build directory.
* doc/automake.texi: Don't warn about the old limitation anymore.
* NG-NEWS: Document that that limitation has been lifted.
* lib/am/check.am (am__cooked_tests): New variable, containing all the
entries of $(TESTS) with $(srcdir) prefix (if present) removed.
* am__cooked_tests: Likewise, but for the contents of $(XFAIL_TESTS).
* automake.in (handle_tests): Adjust the definition of $(TEST_LOGS) to
use '$(am__cooked_tests)' instead of raw '$(TESTS)'.
* t/parallel-tests-srcdir-in-test-name.sh: Adjust to test the new
semantics.
* t/list-of-tests.mk (XFAIL_TESTS): Remove the above test, it now
passes.
* t/parallel-tests-dynamic.sh: Enhance a little.
[ng] coverage: parallel-tests and dynamic $(TESTS) content
The recent changes to the parallel-tests implementation should allow us
to define or override TESTS with more dynamic contents; in particular,
something like:
TESTS = $(wildcard t[0-9][0-9]*.sh)
should now work smoothly. Let's cover this enhanced functionalities
explicitly in our testsuite.
* t/parallel-tests-dynamic.sh: New test.
* t/list-of-tests.mk: Add it.
* NG-NEWS: Document the new feature.
Our new pattern rules, introduced in recent commit 'v1.11b-124-gaeaba3f',
are smart enough to allow us to ditch most of our cumbersome automake-time
analysis and rewriting of the $(TESTS) variable when the parallel-tests
driver is used. This also makes other related simplifications possible.
This change causes a little regression in that we won't be able anymore to
diagnose at automake time test cases that start with the '$(srcdir)' or
'$(top_srcdir)' component, but that's acceptable, since a later commit will
make the former case actually work, and the second case isn't important
enough to worry to much about.
This change also causes a small behavioural change in automake, in that it
will also need the 'LOG_DRIVER' variable to be defined in each Makefile.am
defining the 'TESTS' variable; and if it's not defined, automake will
define it itself, and require the presence of the 'test-driver' auxiliary
script in the process (or bing it in if the "--add-missing" option is in
use). See the changes to 'NG-NEWS' for more details, and for workarounds.
* automake.in (handle_tests): Don't walk nor rewrite $(TESTS) when the
'parallel-tests' option is active. Other related minor simplifications.
* t/exeext4.sh: Define '$am_parallel_tests' to "no", so that the test
won't be run with the 'parallel-tests' option enabled (as the semantics
in that case have been changed in a way that would make this test fail).
* t/check7.sh: When '$am_parallel_tests' is "yes", skip checks that
don't work anymore with the 'parallel-tests' option is enabled.
* t/test-driver-custom-no-extra-driver.sh: Adjust to avoid spurious
failures to to the "LOG_DRIVER must be defined somehow" semantic change.
* t/tap-common-setup.sh: Likewise.
* t/tap-recheck.sh: Likewise.
* t/tap-basic.sh: Likewise.
* t/tap-diagnostic-custom.sh: Likewise.
* t/tap-more.sh: Likewise.
* t/tap-recheck.sh: Likewise.
* t/tap-signal.tap: Likewise.
* t/test-driver-custom-multitest.sh: Likewise.
* t/test-driver-custom-multitest-recheck.sh: Likewise.
* t/test-driver-custom-multitest-recheck2.sh: Likewise.
* t/test-driver-custom-xfail-tests.sh: Likewise.
* t/test-driver-fail.sh: Likewise.
* t/test-driver-strip-vpath.sh: Likewise.
* t/test-metadata-global-log.sh: Likewise.
* t/test-metadata-global-results.sh: Likewise, and enhanced a little since
we are at it.
* t/test-metadata-results.sh: Likewise.
* t/tap-bad-prog.tap: Likewise.
* t/parallel-tests8.sh: Move the now-failing checks verifying that automake
diagnoses test cases that start with the '$(srcdir)' or '$(top_srcdir)'...
* t/parallel-tests-srcdir-in-test-name.sh: ... this new xfailing test.
* t/spy-pattern-rules.sh: New "spy" test, verify our new assumptions on the
precedence of pattern rules truly hold.
* t/parallel-tests-longest-stem.sh: New test.
* t/list-of-tests.mk: Update.
* doc/automake.texi: Document that $(TESTS) is rewritten for $(EXEEXT)
appending only when the 'parallel-tests' option is *not* in use.
Add a "FIXME" comment about the fact that automake does not diagnose test
cases that start with the '$(srcdir)' or '$(top_srcdir)' anymore.
* NG-NEWS: Update.
[ng] cleanup: simplify %transforms for parallel-tests handling
* automake.in (handle_tests, handle_per_suffix_test): Drop some %transforms
previously required when processing 'lib/am/check.am': '%SOURCE%', '%OBJ%',
'%BASE%' and '?GENERIC?'.
[ng] parallel-tests: simplify, using pattern rules with multiple targets
In GNU make, a pattern with multiple targets, like:
%.tab.c %.tab.h: %.y
bison -d $<
informs make that the associated recipe (in this example, "bison -d foo.y")
will make create all the targets *at once* (in this example, both 'x.tab.c'
and 'x.tab.h').
Using this semantics we can simplify the parallel testsuite harness nicely,
especially the recipe to build 'test-suite.log' in face of partially
missing prerequisites (e.g., a missing '.trs' file while the corresponding
'.log' file is present and up-to-date).
In doing so, we unfortunately lose the ability to cope with very fringe-case
situations and weird errors (e.g., a '.log' or '.trs' file somehow created
unreadable), but that's a more than fair trade-off for the simplifications
we obtain.
* lib/am/check.am (am__set_TESTS_bases): Removed, superseded by ...
(am__TEST_BASES): ... this new variable.
(check-TESTS, recheck): Adjust these recipes.
(am__TEST_RESULTS): New variable.
(am__check_pre): Adjust, to avoid an extra error (syntax error in the
shell) when a circular dependency due to $(TEST_SUITE_LOG) being listed
in $(TEST_LOGS) is detected.
($(TEST_SUITE_LOG)): Recipe heavily edited and simplified. Also,
depend on $(am__TEST_RESULTS) explicitly.
(.log.trs): Remove this suffix rule, superseded by ...
* lib/am/check2.am (%.log %.trs): ... this new pattern rule.
Remove obsolete suffix rules.
(am__runtest): Adjust.
* automake.in (handle_tests): Adjust minimally.
* lib/Automake/Rule.pm: Skip detection of duplicated rules for pattern
rules; it would be tricky, prone to false positives, and not worth it.
* t/parallel-tests-fork-bomb.sh: Minimal adjustments.
* t/parallel-tests-unreadable.sh: Adjust functional tests.
* t/serial-tests.sh: Adjust grepping checks.
* t/serial-extensions.sh: Likewise.
* t/parallel-tests-fd-redirect.sh: Relax grepping checks.
* t/parallel-tests-fd-redirect-exeext.sh: Likewise.
* t/test-trs-basic.sh: Adjust checks about some internal details that
have been changed.
* t/parallel-tests-no-repeat.sh: New test.
* t/test-trs-recover-parallel.sh: Likewise.
* t/test-driver-trs-suffix-registered.sh: Remove as obsolete.
* t/test-missing2.sh: Remove (as "too picky").
* t/test-trs-recover2.sh: Likewise.
* t/list-of-tests.mk: Update.
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.
[ng] maint: bump version, for better compatibility with mainstream automake
Having a version number of '0.5a' for Automake-NG, while somewhat more
correct and "honest" (see comments in commit 'v1.11-2001-g2684923' of
17-02-2012 for more details), is also more problematic, in that it makes
more difficult to adapt a project using mainstream Automake to the use of
Automake-NG. And alas, this difficulty cannot always be solved simply by
downgrading the required version number in AM_INIT_AUTOMAKE (as we had
naively thought originally); for example, Makefile.am fragments generated
by Gnulib will usually have a required version number of '1.5' hard-coded
in AUTOMAKE_OPTIONS, so that many Gnulib client would be prevented from
switching to Automake-NG (or they should be forced to put greater efforts
in the conversion, e.g., by adding hacks that post-process the Gnulib
generated Makefile.am). And of course, other third-party tools might
have similar issues.
So, to avoid a plethora of potential spurious issues and breakages due
only to version number incompatibilities, we change the Automake-NG
version number again to closely track the one in the 'master' branch of
mainstream Automake. Practicality beats purity.
Also, this "equal version" policy should be enough to avoid giving the
wrong impressions that Automake-NG is somehow meant to obsolete or
supersede mainstream Automake, which some automake users would consider
a sort of "abuse":
<http://lists.gnu.org/archive/html/automake-ng/2012-02/msg00024.html>
* configure.ac (AC_INIT): Change version number from 0.5a to 1.11e.
* m4/amversion.m4: Likewise (autoupdated by './bootstrap').
* .gitignore: Update w.r.t. automake and aclocal wrappers in 't/wrap'.
* t/version4.sh: Require again version '1.4-p3', to avoid useless diffs
with the 'master' branch.
[ng] opts: new 'ng' option, to better differentiate from mainstream Automake
We add a new no-op option 'ng', that will be recognized by Automake-NG but
not by mainstream Automake. It can be used by developers to declare that
their build system requires Automake-NG, and in a way that will ensure a
clear error if mainstream Automake is used by mistake.
* lib/Automake/Options.pm (_is_valid_easy_option): Recognize 'ng'.
* doc/automake.texi: Document the new option and its purpose.
* t/option-ng.sh: New test.
* t/list-of-tests.mk: Add it.
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.
* lib/am/check.am (am__check_pre): Shave off a couple of forks in
the case the test script is placed in a subdirectory.
* t/spy-autovars.sh: New "spy" test, verifying that our expectations
on the behaviour of (some) GNU make automatic variables are correct.
* t/list-of-tests.mk: Add it.
[ng] silent rules: support for them is always active now
At the time of writing, in mainstream Automake, support for silent rules
is optional and activated only if the 'silent-rules' option is specified.
The rationale behind this behaviour is that the silent-rules machinery
originally [1] only worked with make implementations supporting nested
variables expansions, which wasn't a POSIX-specified features, so that
packages wanting to be "extra-portable" couldn't use the silent-rules
machinery at all.
But since Automake-NG only targets GNU make, and since silent rules are
disabled by default even when the 'silent-rules' option is given [2], we
can now have the support for silent rules always enabled.
The 'silent-rules' option will thus become a no-op, but will reaming a
valid option for the time being, for better backward-compatibility.
[NOTES]
[1] At least, until Paul Eggert's commit 'v1.11-598-g8493499' of
25-12-2011, "silent-rules: fallback for makes without nested
vars", motivate by automake bugs #9928 and #10237.
[2] Unless the developer makes them enabled by default be calling
"AM_SILENT_RULES([yes])" in configure.ac.
[DETAILS]
For more details, see this thread on the automake-ng mailing list:
<http://lists.gnu.org/archive/html/automake-ng/2012-04/msg00027.html>
* automake.in: Enable silent-rules machinery unconditionally. Reword
some comments.
* m4/init.m4: Call 'AC_REQUIRE' on 'AM_SILENT_RULES' unconditionally.
* lib/Automake/Options.pm: Recognize 'silent-rules' as a dummy option
* t/silent.sh: Remove now-redundant calls to AM_SILENT_RULES.
* t/silent2.sh: Likewise.
* t/silent3.sh: Likewise.
* t/silent4.sh: Likewise.
* t/silent6.sh: Likewise.
* t/silent8.sh: Likewise.
* t/silent9.sh: Likewise.
* t/silent-lex.sh: Likewise.
* t/silent-many-gcc.sh: Likewise.
* t/silent-many-generic.sh: Likewise.
* t/silent-yacc-headers.sh: Likewise.
* t/silent-yacc.sh: Likewise.
* t/silentcxx-gcc.sh: Likewise.
* t/silentcxx.sh: Likewise.
* t/silentf77.sh: Likewise.
* t/silentf90.sh: Likewise.
* t/help-silent.sh: Likewise.
* t/silent-configsite.sh: Likewise, and other minor adjustments.
* t/silent7.sh: Likewise. Also, extend to check that silent rules
are disabled by default, and remove obsoleted checks about the
'silent-rules' option being rejected in AUTOMAKE_OPTIONS.
* t/compile_f_c_cxx.sh: Adjust to avoid a spurious failure.
* t/silent-amopts.sh: Remove as obsolete.
* t/list-of-tests.mk: Adjust.
* NG-NEWS: Update.
* doc/automake.texi: Update and simplify accordingly.
* configure.ac (AM_INIT_AUTOMAKE): Remove 'silent-rules' option.
Issue reveled by a "make maintainer-check" failure.
* t/vala-vapi.sh ($required): Drop 'GNUmake' requirement, which was
causing the test to be spuriously skipped.
* t/vala-libs.sh: Likewise.
* t/vala-headers.sh: Likewise.
* 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.
* master:
maintainer-check: do not hang
parallel-tests: 'recheck' must depend on 'all'
vala tests: building libraries, and more on '.vapi' files
automake: fix botched call to 'check_user_variables'
vala: cleanup rules are better and more complete now
vala tests: check headers generation
vala tests: remove redundant libtool requirements and usages
vala tests: some enhancements
vala tests: few adjustments and improvements
build: use latest help2man, but without locale support
* 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.
[ng] parallel-tests: don't cater to VPATH rewrites
GNU make doesn't do VPATH rewrites a' la' Solaris make, but does VPATH
rewrites for the '$<' automatic variable. Take advantage of these facts
to simplify the recipes of the parallel testsuite harness.
* lib/am/check.am: Don't include 'inst-vars.am'
(am__check_pre): Simplify and adjust.
(am__set_TESTS_bases): Likewise.
(check-TESTS): Likewise.
* lib/am/check2.am (am__runtest): Don't bother setting the 'p' shell
variable, it's not needed anymore.
[ng] parallel-tests: reduce code duplication a little
Use more GNU make features and built-ins, and less automake-time
pre-processing, in order to reduce code duplication and improve
clarity.
* lib/am/check2.am: Define a new custom make function 'am__runtest', used
to simplify rules in here, and reduce code duplication among them.
* automake.in (handle_per_suffix_test): Update and simplify accordingly.
As a result, the automake-defined 'LOG_COMPILE' variables are not defined
anymore, which we should mention ...
* NG-NEWS: ... in here.
* t/test-extensions.sh: Adjust outdated grepping checks.
[ng] parallel-tests: remove workaround for BSD make
When BSD make is run in parallel mode, it apparently strips any
leading directory component from the automatic variable '$*' (of
course, against what POSIX mandates). In order to avoid this
behaviour from breaking the parallel-tests driver, we added an
hacky workaround in commit v1.11-1982-ge1606b3 of 18-02-2012.
Now that we assume GNU make, this workaround is not needed anymore,
so let's remove it.
* lib/check2.am (am__set_b): Remove its definition and its uses.
[ng] dry run: only use GNU make builtins to determine whether running dry
* lib/am/header-vars.am (am__make_dryrun): only use GNU make builtins to
determine whether make is being running in "dry mode".
* t/nodep.sh: Adjust grepping checks to avoid spurious failures.
* 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.
Some make implementations (especially Solaris make) have some problems
in '.PHONY' support, and this has had the consequence that mainstream
Automake hadn't been able to fully take advantage of the '.PHONY'
semantics to simplify some of its idioms or recipes. Since we now
want to assume and take advantage of such semantics, we add a new "spy"
test case verifying that they truly hold GNU make, to avoid unwelcome
surprises.
* t/spy-phony.sh: New test.
* t/list-of-tests.mk: Add it.
[ng] build: simplify rules for ChangeLog generation
The pre-existing rules used an hacky indirection, only to work
around a Solaris make bug in '.PHONY' support. GNU make does
not suffer of this bug, so we can simplify our rules accordingly.
* Makefile.am (am--changelog-regen-hook): Remove this dummy target.
(.PHONY, ChangeLog): Do not depend on it.
(.PHONY): Depend directly on 'ChangeLog' instead.
Remove outdated comments.
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.
[ng] tests: prefer to grep make stderr for expected diagnostic
Few make implementations, like BSD's, can print diagnostic from make or
its spawned recipes on stdout rather than on stderr. Some of our tests
had been relaxed to cater for this. Now that we assume GNU make, there
is no reason to be this "sloppy" anymore.
* t/uninstall-fail.sh: Expect diagnostic from make and its recipes
to be on stderr, not possibly also on stdout.
* t/lisp3.sh: Likewise.
* t/test-missing.sh: Likewise.
* t/test-missing2.sh: Likewise.
* t/distcheck-pr10470.sh: Likewise.
* t/distcheck-pr9579.sh: Likewise.
* t/dist-missing-am.sh: Likewise.
* t/dist-missing-included-m4.sh: Likewise.
* t/dist-missing-m4.sh: Likewise.
* t/deleted-am.sh: Likewise.
* t/deleted-m4.sh: Likewise.
* t/distcheck-configure-flags-am.sh: Likewise.
* t/distcheck-configure-flags-subpkg.sh: Likewise.
* t/distcheck-configure-flags.sh: Likewise.
* t/yacc-dist-nobuild.sh: Likewise. Also, be stricter in matching
expected make diagnostic.
[ng] tests: remove some workarounds for non-GNU make
* t/makej2.sh: Adjust heading comments. Don't check whether $MAKE
groks the '-j' option: GNU make is assured to do so.
* t/check-concurrency-bug9245.sh: Likewise. Fix botched indentation
since we are at it.
* t/remake4.sh: Adjust heading comments.
* t/parallel-tests6.sh: Likewise.
* t/deleted-am.sh: Remove extra '$sleep' call required to work around
a bug of FreeBSD make.
* t/colon6.test: Remove a workaround needed by HP-UX make.
* t/spy.test: Likewise. Uncomment the part of the checks that still
wasn't portable to BSD make.
[ng] tests: remove stale workarounds for non-GNU make
* t/yacc-depend2.sh: Remove now-irrelevant comment about
the fact that this test fails with FreeBSD make.
* t/silent8.sh: Remove useless workaround for NetBSD make.
* t/tap-signal.tap: Likewise.
* t/posixsubst-ldadd.sh: Remove useless workaround for
FreeBSD make.
* t/posixsubst-libraries.sh: Likewise.
* t/posixsubst-ltlibraries.sh: Likewise.
* t/posixsubst-sources.sh: Likewise.
* t/posixsubst-tests.sh: Likewise.
* t/distcheck-outdated-m4.sh: Remove workaround for
extra-verbose make implementations (like Solaris make).
* t/distcheck-missing-m4.sh: Likewise.
* t/tap-color.sh: Likewise.
* t/color.test (test_no_color): Likewise.
* t/color2.test (test_no_color): Likewise.
Remove redundant check that parallel make does nor redirect
output to temporary files or named pipes.
* t/tap-color.sh: Likewise.
* t/tap-doc.sh: Do not post-process make output to strip
extra lines printed bu Sun dmake..
* t/tap-doc2.sh: Remove stray comment.
* t/yacc-mix-c-cxx.sh: Just assume that "make -jN" can
run make in parallel mode.
* t/tap-more.sh: Likewise.
* t/dist-formats.tap: Likewise.
* t/yacc-line.sh: Avoid workaround to cater for the
Solaris XPG4 make inability to chain suffix rules.
* t/lex-line.sh: Likewise.
* master:
build: use slightly older help2man, for improved portability
tests: avoid spurious failure when 'install-info' program is unavailable
install: shell parameter expansions can be used in directory names
test defs: more environment cleanups
test defs: unset 'AM_UPDATE_INFO_DIR' environment variable
build: generate doc/*.1 files; include help2man
build: avoid parallel build failures
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.
install: shell parameter expansions can be used in directory names
Fixes automake bug#11232.
GNU automake used to support shell parameter expansion and command
substitutions in installation directories, but that was inadvertently
broken by commit v1.11-759-g368f1c4 "install: don't create empty dirs
when an empty 'foo_PRIMARY' is used" of 18-03-2012, where shell quoting
of generated MKDIR_P command was changed from double to single quotes
in 3 places, while some 21 other places still use double quotes for
generated MKDIR_P commands.
* lib/am/data.am: Use double quotes for generated "mkdir -p" commands.
* lib/am/libs.am: Likewise.
* lib/am/ltlib.am: Likewise.
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org> Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* defs (SH_LOG_COMPILER, SH_LOG_COMPILE, SH_LOG_FLAGS,
AM_SH_LOG_FLAGS, SH_LOG_DRIVER, SH_LOG_DRIVER_FLAGS,
AM_SH_LOG_DRIVER_FLAGS): Unset these variable to avoid
potential interferences from the environment.
test defs: unset 'AM_UPDATE_INFO_DIR' environment variable
* defs (AM_UPDATE_INFO_DIR): Unset, to be sure to avoid unduly
interferences from the environment. See also automake bug#11204.
* THANKS: Add entry for David Fang.