tests init: better messages for 'yacc' and 'lex' requirements
* tests/defs.in: Give better diagnostic messages when a test must
be skipped to the unavailability of yacc or lex program. Also,
improve syncing between code for requiring yacc and lex.
configure: look for a lex program to be used by the testsuite
This will allow the testcases requiring a 'lex' program to run also
with vendor/legacy lex implementations, not only with 'flex'.
* configure.ac: Look for a lex program, using AC_CHECK_PROGS.
* tests/defs.in: New required entry 'lex'.
($LEX): Let the user override the lex program to be used by the
testsuite.
* tests/cond35.test ($required): Require 'lex', not 'flex'.
* tests/cond36.test: Likewise.
* tests/lexv3.test: Likewise.
* tests/lexv3.test: Likewise.
* tests/silent-lex-gcc.test: Likewise.
* tests/silent-lex-generic.test: Likewise.
* tests/silent-many-gcc.test: Likewise.
* tests/silent-many-generic.test:likewise.
* tests/lexvpath.test: Likewise, and fix typo in comments.
configure: look for a yacc program to be used by the testsuite
Instead of forcing the user to manually export 'YACC' in the
testsuite to use a non-bison yacc, we now look for a yacc program
at configure time, and use that as the default in the testsuite.
* configure.ac: Look for a yacc program, using AC_CHECK_PROGS.
* tests/defs.in: Updated to use the value of $YACC precomputed by
configure, unless the user overrides that in the environment.
tests: more coverage on yacc/lex silent-rules, plus minor cleanups
* tests/silent-yacc-gcc.test: Add sanity checks verifying that the
generated Makefile.in files really contains the non-generic rules
we expect. Do not redundantly manually remove files we know to be
already removed "make maintainer-clean".
(Makefile.am): Ensure we cover also non-generic yacc rules, by
setting target-specific YFLAGS.
(sub/Makefile.am): Likewise.
* tests/silent-yacc-generic.test: Likewise.
* tests/silent-lex-gcc.test: Likewise, but with LFLAGS instead of
YFLAGS.
* tests/silent-lex-generic.test: Likewise.
* tests/silent-many-gcc.test: Likewise, but with both LFLAGS and
YFLAGS. Also ...
(do_and_check_verbose_build): Remove redundant blank line.
* tests/silent-many-generic.test: Likewise.
* tests/silent-yacc-headers.test: New test.
* tests/Makefile.am (TESTS): Update.
tests: cover yacc target-specific flags, and `-v' flag handling
* tests/yacc-basic.test: Also try to build a parser having `-v'
as target-specific flags. Add a couple of `ls -l' commands, for
debugging. Update and extend comments. Escape literal dots in
grep regular expressions.
* doc/automake.texi (Yacc and Lex): Document that automake
recognizes '-d' in AM_YFLAGS only if it's not clustered with
other options.
From a report by Юрий Пухальский.
yacc: warn about conditional content in *YFLAGS variables
This commit fixes automake bug#7804.
* automake.in (lang_yacc_target_hook): Warn if any of the relevant
*YFLAGS variables has conditional contents (not only a conditional
definition). Related refactoring.
* NEWS: Updated.
* tests/yflags-conditional.test: Updated and extended.
* tests/yflags-conditional-force.test: New test.
* tests/Makefile.am (TESTS): Updated.
yacc: support variable expansions in *YFLAGS definition.
This change fixes automake bug#7800.
* automake.in (lang_yacc_target_hook): Use 'value_as_list_recursive'
instead of 'variable_value' to get the value of *YFLAGS variables.
Related changes.
($DASH_D_PATTERN): Removed.
* tests/Makefile.am (XFAIL_TESTS): Remove yflags-var-expand.test.
* tests/yacc-clean.test: Remove workaround for now-fixed bug.
* NEWS: Update.
* tests/yflags-var-expand.test: New test, still xfailing. It
exposes automake bug#7800 -- "automake fails to honor `-d' in
AM_YFLAGS when variable expansions are involved".
* tests/yflags-d-false-positive.test: New test, checking that
automake do not spuriously see `-d' in *YFLAGS when that isn't
really there.
* tests/yflags-force-override.test: New test, checking that
automake can cope with definition of the YFLAGS variable in
Makefile.am (even if that is an extremely bad practice, as that
variable is user-reserved).
* tests/yflags-cmdline-override.test: New test, checking that
automake can cope with user-redefinition of YFLAGS at configure
time and/or at make time.
* tests/yflags-conditional.test: New test, checks that automake
warns on conditionally-defined *YFLAGS variables.
* tests/Makefile.am (TESTS, XFAIL_TESTS): Update.
* tests/yacc-basic.test: Also check that the intermediate C file
is mentioned in the generated Makefile.in, and that it is created
by the first make invocation.
* tests/yacc3.test: Test removed, superseded by ...
* tests/yacc-d-basic.test: ... this new test.
* tests/yacc2.test: Add reference to that new test in the heading
comments.
* tests/yacc-d-vpath.test: New test.
* tests/yaccvpath.test: Updated heading comments. Do not require
gcc anymore, as any working C compiler should be enough. Remove
redundant comments.
* tests/yacc-nodist.test: New test.
* tests/yacc-dist-nobuild.test: New test.
* tests/Makefile.am (TESTS): Update.
yacc: "make clean" removes .c and .h files from non-distributed .y
Previously, while automake did *not* distribute C source and header
files derived from non-distributed Yacc sources, it still caused
them to be removed only by "make maintainer-clean" only, and not by
simply "make clean" or "make distclean".
This caused "make distcheck" to fail, unless the developer put
those generated .c and .h files in CLEANFILES or in DISTCLEANFILES
by hand.
This change fixes this issue, by making non-distributed `.c' and
`.h' files generated by non-distributed Yacc sources cleaned by
"make clean".
* tests/automake.in (lang_yacc_target_hook): Make C source and
header files derived from non-distributed Yacc files cleaned by
"make clean", not only by "make maintainer-clean".
* tests/yacc-clean.test: New test.
* tests/Makefile.am (TESTS): Update.
* NEWS: Update.
docs: how to work around checks on invalid primary/directory couples
* doc/automake.texi (Uniform): Document the blessed idiom which can
be used to work around automake checks on invalid primary/directory
couples (such as `lib_PROGRAMS' or `doc_LIBRARIES').
Work around a bug in file-inclusion mechanism of Solaris make.
* automake.in (handle_single_transform): In the name of the
dependency file: collapse multiple slash characters into a single
one.
* tests/subobj11a.test: New test.
* tests/subobj11b.test: Likewise.
* tests/subobj11c.test: Likewise.
* tests/depcomp8a.test: Likewise.
* tests/depcomp8b.test: Likewise.
* tests/Makefile.am (TESTS): Updated.
* NEWS: Updated.
Report by Stefano Lattarini, quick fix by Ralf Wildenhues, final
patch and tests by Stefano Lattarini.
* tests/suffix13.test (Makefile.am): Account for VPATH issues on
weaker make implementations (e.g. IRIX 6.5).
* tests/parallel-tests8.test: Likewise, plus a required related
change.
Reported by Ralf Wildenhues. The bugs have been there from the
first versions of the affected test scripts.
* doc/automake.texi (Cygnus): Mode 'cygnus' does not require
the AM_CYGWIN32 macro (and indeed hasn't required it since at
least commit Release-1-2-31-g3038064 "merged changes from
Cygnus" of 1997-08-25).
* tests/distlinksbrk.test: Run "make" multiple times and grep
its output each time for a single error message, rather than
running "make -k" one single time and grepping its output for
all the expected error messages. This should work around make
implementations with limited (broken?) `-k' support; for more
information, see these subthreads on the automake-patches list:
- 2010-11-15, "Testsuite failures on HP-UX 11.23",
<http://lists.gnu.org/archive/html/automake-patches/2010-11/msg00162.html>
- 2010-11-15, "Testsuite failures on IRIX 6.5",
<http://lists.gnu.org/archive/html/automake-patches/2010-11/msg00166.html>
docs: fix blunder in example about python extension modules
* doc/automake.texi (Python): Use `quaternion_la_SOURCES',
not `quaternion_SOURCES', to declare the sources of python
extension module `quaternion.la'.
Extend, fix and improve tests on Lex and Yacc support.
* tests/lexcpp.test: New test script, on support for Lex + C++.
* tests/lexvpath.test: New test script, test build and rebuild
rules for lexers in VPATH setup.
* tests/yacc-basic.test: New test script, run simple "semantic"
checks on basic Yacc support (similarly to what lex3.test does
for Lex support).
* tests/lex.test: Don't create useless dummy source file joe.l.
Remove extra blank lines.
* tests/lex4.test: Add trailing `:' command. Do not create dummy
useless lex source file.
* tests/lex2.test: Likewise. Call automake with the `-a' option,
so that it doesn't fail for the absence of `ylwrap' script. Make
grepping of automake stderr stricter.
* tests/yacc7.test: Add trailing `:' command. Enable `errexit'
shell flag earlier (just after having sourced ./defs).
* tests/yacc4.test: Likewise. Also ...
(configure.in): Use pre-populated skeleton set up by ./defs,
instead of writing one from scratch.
Other minor cosmetic changes.
* tests/yacc5.test: Likewise.
* tests/yaccvpath.test: Likewise. Also ...
($distdir): New variable.
Use it throughout.
* tests/lex5.test: Likewise.
* tests/lex3.test: Likewise. Check the distdir, rather than
grepping the distribution tarball. Extend the test on the
created binary, and be sure to avoid hangs. Add some comments.
* tests/yacc.test: Use stricter grepping. Add trailing `:'.
* tests/yacc6.test: Likewise.
* tests/yacc3.test: Likewise. Do not create the unused file
`Makefile.sed'. Remove useless rules from Makefile.am. Other
minor cosmetic changes.
* tests/yacc2.test: Make grepping of generated `Makefile.in' and
of automake error messages stricter. Do not redirect output of
grep to /dev/null. Move call to aclocal earlier. Reduce the
number of empty blank lines. Fix a typo in comments.
* tests/yacc8.test: Fixed bugs that reduced the completeness of
the tests. Added trailing `:' command.
(configure.in): Use pre-populated skeleton set up by ./defs,
instead of writing one from scratch.
* tests/yaccpp.test: Test also extensions `.y++', `.ypp', and
`.yxx', rather than only `.yy'.
* tests/Makefile.am (TESTS): Update.
Improve tests on generated portions of configure help screen.
* tests/help-depend.test: Grepping of configure help screen
relaxed to cater for possible line wrapping, and tightened in
other respects.
* tests/help-depend2.test: Likewise.
* tests/help-dmalloc.test: Likewise.
* tests/help-lispdir.test: Likewise.
* tests/help-maintainer.test: Likewise.
* tests/help-multilib.test: Likewise.
* tests/help-silent.test: Likewise.
* tests/help-upc.test: Likewise.
* tests/help-init.test: Grepping of configure help screen
tightened.
In some tests on automake-produced silent rules, we forced the
use of gcc depmode to improve testsuite coverage; but this has
unsurprisingly led to spurious failures when some non-GNU C
compilers were used. So we are now careful to require GCC in
tests that force gcc depmode.
From reports by Ralf Wildenhues.
* silent5.test: Test removed, its content split into ...
* silent-many-generic.test, silent-many-gcc.test: ... these new
sister tests, the latter of which forces gcc depmode and lists
"gcc" in $required.
* silentlex.test: Test removed, its content split into ...
* silent-lex-generic.test, silent-lex-gcc.test: ... these new
sister tests, the latter of which forces gcc depmode and lists
"gcc" in $required.
* silentyacc.test: Test removed, its content split into ...
* silent-yacc-generic.test, silent-yacc-gcc.test: ... these new
sister tests, the latter of which forces gcc depmode and lists
"gcc" in $required.
* tests/Makefile.am (TESTS): Updated.
Fix spurious failures of silent5.test with Sun Fortran.
* tests/silent5.test: Strip from the make output some verbose
messages possibly printed by the SunStudio fortran compilers,
to avoid spurious failures. This bug has been there from the
very first version of this test script.
Fix spurious failures of silent-rules tests with Sun Fortran.
* tests/silentf77.test: Strip from the make output some verbose
messages possibly printed by the SunStudio fortran compilers, to
avoid spurious failures. Add a trailing `:' command.
* tests/silentf90.test: Likewise.
Fix regression in colon{5,6}.test (failures on AIX 5.3).
* tests/colon5.test: Also substitute `@SHELL@' with `$SHELL' when
post-processing the generated Makefile.in, to work around a bug
of AIX 5.3 make which doesn't allow setting the `$(SHELL)' macro
on the commend line. Calls to `$MAKE' adjusted accordingly.
* tests/colon6.test: Likewise.
Regression introduced in commit v1.11-175-gf9fe878 "Modernize,
improve and/or extend tests `colon*.test", and reported by Ralf
Wildenhues.
* tests/ansi.test: Remove redundant hackish check done using a
hand-postprocessed Makefile.in. This checs worked by setting
the `$(SHELL)' macro on the command line of make, but this is
not supported by the AIX 5.3 make implementation.
This bug has been lurking for a long time, and was activated by
commit v1.11-125-gc1f6cdb "Enable `errexit' shell flag in various
tests". Report by Ralf Wildenhues.
Ralf Wildenhues [Sun, 14 Nov 2010 16:53:49 +0000 (17:53 +0100)]
Fix install-strip when $(STRIP) contains several words.
* lib/am/install.am (install-strip): Update comment. Use
separate sub-make invocations for empty and nonempty $(STRIP),
to fix quoting issues.
* tests/strip2.test, tests/strip3.test: New tests.
* tests/Makefile.am (TESTS): Adjust.
* lib/Automake/VarDef.pm (append): Remove extra backslash-escaped
newlines from the end of the variable's content, before appending
to it.
* tests/pluseq11.test: New test, exposing the bug.
* tests/Makefile.am (TESTS): Update.
Fix bug in rules for creating vala vapi/header files.
* automake.in (lang_vala_finish_target): Add forgotten "fi" in an
if control structure in a generated make rules. Bug introduced
by previous commit `v1.11-221-gd7c1679', and revealed by failure
of test `vala2.test'.
Ralf Wildenhues [Sun, 3 Oct 2010 10:29:40 +0000 (12:29 +0200)]
Fix and document rules to not touch the tree with `make -n'.
* doc/automake.texi (Multiple Outputs): Document the problem of
modifications during dry-run execution, propose solution.
* NEWS: Update.
* automake.in (lang_vala_finish_target): Split recipe so the
stamp file is not removed with GNU `make -n'.
(lang_yacc_target_hook): Separate removal of parser output file
and header remaking.
* lib/am/lisp.am ($(am__ELCFILES)): Determine whether -n was
passed to make, take care not to remove any files in that case.
* lib/am/remake-hdr.am (%CONFIG_H%): Separate removal of
%STAMP% file from induced remaking of config header.
* tests/autohdrdry.test, tests/lispdry.test, tests/yaccdry.test:
New tests.
* tests/Makefile.am (TESTS): Update.
* m4/python.m4 (AM_PATH_PYTHON): Add python2.7 and python3.2 to
_AM_PYTHON_INTERPRETER_LIST. Since we are at it, break a long
line and fix indentation.
* THANKS: Updated.
* tests/help4.test: Fix broken sed commands used to strip `-W...'
flags away from "$AUTOMAKE" and "$ACLOCAL".
* tests/help3.test: Likewise, and fix a botched comment.
* tests/help.test: Likewise. Also, use "AUTOMAKE_fails ..."
instead of "$AUTOMAKE ... && Exit 1", for consistency and to
please maintainet-check.
* tests/help2.test: Likewise.
* tests/help.test: To run automake, use `$AUTOMAKE' with all `-W'
flags stripped away rather than hard-coded `automake-$APIVERSION',
to better honour user-overrides. Similarly for aclocal.
* tests/help2.test: Likewise.
* tests/help3.test: Likewise.
* tests/help4.test: Likewise.
Ralf Wildenhues [Sun, 3 Oct 2010 09:42:12 +0000 (11:42 +0200)]
Document and fix expansion of variables before rules.
* doc/automake.texi (General Operation): Document that variables
are expanded before rules.
* lib/am/check.am (am__check_post): Reword a bit so it does not
get matched as a rule.
Suggestion by Ben Pfaff.
parallel-tests: avoid command-line length limit issue.
* automake.in (handle_tests): New argument $makefile, new
substitution %MAKEFILE%.
(generate_makefile): Adjust.
* lib/am/check.am [%?PARALLEL_TESTS%] (check-TESTS): Pass
sanitized TEST_LOGS value as makefile snippet on standard
input to $(MAKE), to avoid exceeding the command line limit on
w32 (MSYS).
* NEWS: Update.
Report by Bob Friesenhahn.
* tests/help.test: Create a new empty directory and chdir into
it, rather than removing already present files. Run the aclocal
and automake wrapper scripts directly, instead of relying on
$AUTOMAKE and $ACLOCAL. Be sure to correctly match literal dots
in aclocal's and automake's stderr. Add a trailing `:' command.
* tests/help2.test: New test, checking that options `--help' and
`--version' works in directories with broken `configure.in'.
* tests/help3.test: New test, checking that options `--help' and
`--version' take precedence on the other options.
* tests/help4.test: New test, checking that the first among the
`--help' and `--version' options to be specified on the command
line wins.
* tests/Makefile.am (TESTS): Updated.
Manual: be more agnostic w.r.t. version control system used.
* doc/automake.texi (Basics of Distribution): Also refer to `.svn'
directories as a type of probably-unwanted files that are copied
regardless when adding directories to EXTRA_DIST.
(The dist Hook): Show a dist-hook example which removes Subversion
`.svn' private directories from distdir, rather than CVS private
directories.
(missing and AM_MAINTAINER_MODE): Try to be more agnostic w.r.t.
the version control system used.
Perl modules: remove references to "Automake CVS repository".
* lib/Automake/Channels.pm: Update comments to refer to "Automke's
git repository" rather than to "Automake's CVS repository".
* lib/Automake/Configure_ac.pm: Likewise.
* lib/Automake/FileUtils.pm: Likewise.
* lib/Automake/Struct.pm: Likewise.
* lib/Automake/XFile.pm: Likewise.
* lib/Automake/Version.pm (=head1 DESCRIPTION): Refer to "git
branches" rather than "CVS branches".
* .cvsignore, doc/.cvsignore, lib/.cvsignore, lib/am/.cvsignore,
lib/Automake/.cvsignore, lib/Automake/tests/.cvsignore,
m4/.cvsignore, tests/.cvsignore: Files deleted. Even when using
savannah's CVS readonly mirror there's no way to commit back to
the real repository, so this files are not worth maintaining or
keeping around.
* m4/dmalloc.m4 (AM_WITH_DMALLOC): Refer only to the dmalloc site
`http://www.dmalloc.com', not to the dmalloc tarball there (which
seems to have been removed, substituted by multiple release
tarballs now).
* HACKING (Administrivia): Fixed typo `NES' for `NEWS'.
(Naming): Do not refer to a convention dating back to Feb 2001
as "very new". Related rewording.
(Working with Git): Now we require autoconf 2.67 for bootstrap,
so use that version in the examples.
* tests/colon4.test: Fix botched editing to `configure.in'
that made the test useless. Since we are at it, improve
comments and make grepping of generated Makefile.in slighty
stricter.
Regression introduced by change "Modernize, improve and/or
extend tests `colon*.test" (Stefano Lattarini, 2010-08-08).
Make some `confh*.test' tests more "semantic" (plus tweakings).
* tests/confh.test: Run "autoconf", "configure" and "make check",
instead of munging/grepping the generated `Makefile.in'.
* tests/confh4.test: Relax the grepping of Makefile.in w.r.t.
white spaces. Do not create usless dummy source file `foo.c'
and useless dummy header file `acconfig.h'.
(configure.in): Remove superfluous call to `AC_OUTPUT'.
* tests/confh6.test: Add trailing `:' command.
* tests/confh7.test: In comments, add reference to ...
* tests/confh8.test: ... this new test, "semantic" sister
of `confh7.test'.
* tests/Makefile.am (TESTS): Updated.
Prompted by a report from Ralf Wildenhues.
* automake.in (handle_tests): New argument $makefile, new
substitution %MAKEFILE%.
(generate_makefile): Adjust.
* lib/am/check.am [%?PARALLEL_TESTS%] (check-TESTS): Pass
sanitized TEST_LOGS value as makefile snippet on standard
input to $(MAKE), to avoid exceeding the command line limit on
w32 (MSYS).
* NEWS: Update.
Report by Bob Friesenhahn.
* tests/missing6.test: Fix the hack used to edit `configure.in',
to avoid producing a configure script that breaks with shells
that do not support $LINENO. Also throw in a couple of cosmetic
changes.
Ralf Wildenhues [Sat, 21 Aug 2010 05:27:12 +0000 (07:27 +0200)]
Improve robustness of mdate-sh script.
* lib/mdate-sh: Sanitize zsh behavior on startup, to ensure
$ls_command is word-split properly upon invocation.
(error): New function.
(main): Use it. Improve error checking to avoid endless loop
in case $ls_command gave bogus output. Fix eval quotation.
* tests/mdate6.test: New test, to expose eval quotation error.
* tests/Makefile.am: Update.
* tests/depcomp3.test: Do not uselessly escape the character `$'
in makefile rules, when it's used to expand a make macro.
* tests/depcomp5.test: Likewise.
Docs: clarify how to avoid automatic dependencies tracking.
* doc/automake.texi (Automatic dependency tracking): Mention that
automatic dependencies tracking is enabled by default, but that
the package developer can disable it altogether. Add a reference
to the proper section for a more in-depth explanation.