Karl Berry [Fri, 5 Nov 2021 01:17:39 +0000 (18:17 -0700)]
doc: rearrange Multiple Outputs node.
This change fixes https://bugs.gnu.org/48188.
* doc/automake.texi (Multiple Outputs): move GNU pattern rule
approach to the front, since it is probably best if GNU make
can be assumed. Suggestion from Frank Heckenbach.
Also, remove one of the examples that did not work, per Paul Smith.
Jim Meyering [Mon, 4 Oct 2021 02:47:14 +0000 (19:47 -0700)]
version 1.16.5
* configure.ac (AC_INIT): Bump version number to 1.16.5.
* m4/amversion.m4: Likewise (auto-updated by "make bootstrap").
* NEWS: Record release version.
Karl Berry [Wed, 29 Sep 2021 01:27:57 +0000 (18:27 -0700)]
doc: show "RUNNING: <testname>" example using [AM_]TESTS_ENVIRONMENT.
This change addresses https://bugs.gnu.org/49309.
* doc/automake.texi (Testsuite Environment Overrides): new
subsubsection, separating out [AM_]TESTS_ENVIRONMENT description.
Add example to get "RUNNING: <testname>" when a test starts.
Karl Berry [Sun, 19 Sep 2021 22:12:27 +0000 (15:12 -0700)]
python: only use Python's sys.* values if the new option
--with-python-sys-prefix is specified; otherwise, return to
previous behavior of using the GNU ${prefix} and ${exec_prefix}.
* doc/automake.texi (Python): document the new behavior.
* m4/python.m4 (AM_PATH_PYTHON): conditionalize use of Python's
sys.* values on the new option --with-python-sys-prefix.
* t/python-prefix.sh: doc update.
* t/python-vars.sh: test both GNU and Python prefix values.
* NEWS: mention this.
tests: let yacc's yyerror take its argument as a const string
Some of yacc error messages are const strings; it makes no sense for
yyerror to take a 'char *', it should be a 'const char *' as POSIX now
requires.
Fixes all the failures reported by Kiyoshi Kanazawa.
<https://lists.gnu.org/r/bug-bison/2021-09/msg00005.html>
See bug#50469 <https://debbugs.gnu.org/50469>.
Jan Engelhardt [Fri, 10 Sep 2021 22:45:29 +0000 (15:45 -0700)]
automake: consistently depend on install-libLTLIBRARIES.
Report and patch:
https://lists.gnu.org/archive/html/automake/2021-08/msg00016.html
* bin/automake.in (generate_makefile): depend on
install-libLTLIBRARIES for all PROGRAMS and LTLIBRARIES,
such as install-pkglibLTLIBRARIES.
* NEWS: mention this.
Jim Meyering [Mon, 26 Jul 2021 04:59:59 +0000 (21:59 -0700)]
version 1.16.4
* configure.ac (AC_INIT): Bump version number to 1.16.4.
* m4/amversion.m4: Likewise (auto-updated by "make bootstrap").
* NEWS: Record release version.
* t/check12.sh: Consistently use the directory name, testsuite/,
for all DejaGnu tests, and always use recursive make to run
DejaGnu, for backward and forward compatibility.
* t/dejagnu3.sh: Likewise.
* t/dejagnu4.sh: Likewise.
* t/dejagnu5.sh: Likewise.
* t/dejagnu6.sh: Likewise.
* t/dejagnu7.sh: Likewise.
* t/dejagnu-absolute-builddir.sh: Likewise.
* t/dejagnu-relative-srcdir.sh: Likewise.
* t/dejagnu-siteexp-extend.sh: Likewise.
* t/dejagnu-siteexp-useredit.sh: Likewise.
* NEWS: mention this.
* THANKS: new contributor.
* bin/automake.in (define_per_target_linker_variable): Use
AM_V_${target}_LINK if defined as the verbose variable name for
custom link commands.
* doc/automake.texi (Program and Library Variables): Document the new
variable.
* t/link_override.sh: Add extra checks for silent make rules.
* NEWS: Mention this.
* THANKS: new contributor.
* maintainer/syntax-checks.mk (toupper): Tighten the regexp
to avoid a new false-match in t/python-prefix.sh.
* t/instmany-python.sh: Use run_make in place of some $MAKE uses.
* t/python-prefix.sh: Likewise.
* t/python-vars.sh: Likewise.
Jim Meyering [Mon, 12 Jul 2021 01:34:22 +0000 (18:34 -0700)]
no-dist-built-sources: fix-up
* bin/automake.in (preprocess_file): Process new option here,
(handle_dist): ... not here.
* lib/Automake/Options.pm (_is_valid_easy_option):
Remove pure-dist.
* lib/am/distdir.am: Don't factor out the duplicate-looking
$(MAKE)... command. Otherwise, many dist-using tests would fail
for me, e.g., t/aclocal-amflags.sh.
Jim Meyering [Sun, 11 Jul 2021 20:42:16 +0000 (13:42 -0700)]
test: disable use of ksh in a test that would otherwise hang
* t/tests-environment-fd-redirect.sh: This test would hang when
using ksh93 from Fedora 34 and CentOS 8. Comments demonstrate
the issue reported as https://github.com/ksh93/ksh/issues/316
dist: add new "dist-no-built-sources" automake option.
Fixes automake bug https://debbugs.gnu.org/49317.
* bin/automake.in: implement new option "no-dist-built-sources" to
omit the dependency of distdir on $(BUILT_SOURCES). (Allison's
original patch used the option name dist-pure; trivially renamed.)
* lib/am/distdir.am (distdir) [DIST_BUILT_SOURCES]: conditionalize
the dependency.
* lib/Automake/Options.pm (_is_valid_easy_option): list it.
* doc/automake.texi (List of Automake options): document it.
* NEWS: mention it.
* t/dist-no-built-sources.sh: test it.
* t/list-of-tests.mk (handwritten_TESTS): add it.
Karl Berry [Fri, 2 Jul 2021 01:21:51 +0000 (18:21 -0700)]
dist: accept .md versions for README et al.
This change was suggested by madmurphy; some ideas were taken
from the patch he provided.
https://lists.gnu.org/archive/html/automake-patches/2021-06/msg00005.html
* bin/automake.in (@toplevelmd_ok): new global, listing the files
for which we will accept .md versions.
(@common_files): remove those files from there.
(handle_dist): check for .md if non-.md is absent.
(handle_minor_options): check for README-alpha.md.
(check_gnu_standards): accept .md version if present.
(check_gnits_standards): likewise.
(usage): output list of .md-accepted files.
* doc/automake.texi (Basics of Distribution): document.
* t/toplevelmd.sh: new test.
* t/list-of-tests.mk (handwritten_tests): add it.
* NEWS: mention new feature.
Karl Berry [Tue, 8 Jun 2021 01:09:25 +0000 (18:09 -0700)]
doc: --always-make doesn't work.
* doc/automake.texi (Rebuilding): the GNU Make option
--always-make does not work with Automake.
Report from Johan Persson,
https://lists.gnu.org/archive/html/automake/2021-06/msg00002.html.
Also, use "GNU Make" (capital M) more consistently.
Joshua Root [Tue, 18 May 2021 22:11:59 +0000 (15:11 -0700)]
python: use Python's sys.prefix and sys.exec_prefix
for PYTHON_PREFIX and PYTHON_EXEC_PREFIX; new configure options
--with-python_prefix and --with-python_exec_prefix to set explicitly.
This change fixes https://bugs.gnu.org/35322.
* m4/python.m4 (AM_PATH_PYTHON): use Python's sys.prefix and
sys.exec_prefix for PYTHON_PREFIX and PYTHON_EXEC_PREFIX,
instead of $prefix and $exec_prefix. But use a variable
reference to ${prefix} if it is contained within sys.prefix;
similarly for exec_prefix. Also support new configure options
to set explicitly.
(PYTHON_PREFIX, PYTHON_EXEC_PREFIX): AC_SUBST these.
(am_cv_python_pythondir): use our new $am_cv_python_prefix,
substituting ${PYTHON_PREFIX}.
(am_cv_python_pyexecdir): likewise.
* doc/automake.texi (Python): PYTHON_PREFIX, PYTHON_EXEC_PREFIX,
document new approach.
* t/instmany-python.sh: set PYTHON_PREFIX as needed.
* t/python-vars.sh (PYTHON_EXEC_PREFIX, PYTHON_PREFIX): also set from
Python's sys.{exec_,}prefix; use ${PYTHON_{EXEC,}PREFIX} instead
of ${exec_,}prefix.
Karl Berry [Tue, 23 Feb 2021 02:23:16 +0000 (18:23 -0800)]
doc: a_LDFLAGS always overrides AM_LDFLAGS.
This change addresses https://bugs.gnu.org/34925.
* doc/automake.texi (Program and Library Variables): document
that using a_LDFLAGS at all, even in the false branch of a
conditional, means that AM_LDFLAGS is ignored.
Karl Berry [Thu, 7 Jan 2021 01:57:08 +0000 (17:57 -0800)]
doc: discuss AC_* ordering a little.
* doc/automake.texi (Optional): mention that AC_CONFIG_AUX_DIR
must be called before AM_INIT_AUTOMAKE, and recommend that other
AC_CONFIG_* macros be called after. This seems to be the most
common practice. Autoconf does not currently impose ordering:
https://savannah.gnu.org/support/?110416
Zack Weinberg [Mon, 14 Dec 2020 19:50:47 +0000 (14:50 -0500)]
Fix some build and test failures with Autoconf 2.70.
Autoconf 2.70 (released last week) makes a few changes that broke Automake’s
expectations, mostly in the test suite. This patch addresses two of the
problems:
- autoconf now issues a warning if fed a configure script that doesn’t invoke
both AC_INIT and AC_OUTPUT; this, plus a problem with system-provided
tools (still under investigation) broke the *build* on macOS; it also
causes a couple of spurious testsuite failures.
- AC_PACKAGE_NAME and AC_PACKAGE_VERSION are now defined unconditionally.
AM_INIT_AUTOMAKE needs to use m4_ifset instead of m4_ifdef to diagnose
the obsolete use of AC_INIT with fewer than two arguments. (This change
is compatible with autoconf 2.69; m4_ifset is much older, and it means
‘defined with a non-empty value’.)
* configure.ac: Use both AC_INIT and AC_OUTPUT in test configure scripts.
* t/deprecated-acinit.sh, t/init.sh: Likewise.
* m4/init.m4 (AM_INIT_AUTOMAKE): Use m4_ifset, not m4_ifdef, to detect
AC_PACKAGE_NAME and/or AC_PACKAGE_VERSION not having a value.
Karl Berry [Tue, 8 Dec 2020 23:01:00 +0000 (15:01 -0800)]
tests: more .NOTPARALLEL tests.
* contrib/t/multilib.sh: yet more .NOTPARALLEL for AM_TESTSUITE_MAKE,
found by Jim on heavier machines.
* t/autodist-stamp-vti.sh: likewise.
* t/java-compile-run-nested.sh: likewise.
* t/transform2.sh: likewise.
Karl Berry [Mon, 7 Dec 2020 23:53:01 +0000 (15:53 -0800)]
tests: more .NOTPARALLEL tests.
* contrib/t/multilib.sh: use .NOTPARALLEL to avoid unreproducible
(and undebuggable, by me) test failures when running
make -j$njobs AM_TESTSUITE_MAKE="make -j$njobs"
for some arbitrary but rather large value of $njobs.
The failures don't occur with just make -j; have to run the makes
inside the tests in parallel also.
* t/java-compile-install.sh: likewise.
* t/java-compile-run-flat.sh: likewise.
* t/java-uninstall.sh: likewise.
* t/vala-headers.sh: likewise.
Karl Berry [Sun, 6 Dec 2020 02:19:18 +0000 (18:19 -0800)]
doc: comment Vala -newer test.
This change updates https://bugs.gnu.org/44772.
* bin/automake.in (lang_vala_finish_target): comment that
we're checking "C file not older than Vala file", and the
log message misleadingly says "reversed".
Reuben Thomas [Sun, 6 Dec 2020 02:11:55 +0000 (18:11 -0800)]
tags: support setting CTAGS, ETAGS, CSCOPE vars via ./configure.
This change fixes https://bugs.gnu.org/45013.
* m4/init.m4: add default settings and AC_SUBST calls for the variables
`CTAGS', `ETAGS' and `CSCOPE'.
* lib/am/tags.am: remove default settings of the above variables.
* doc/automake.texi (Tags): mention and index.
* NEWS: mention.
Karl Berry [Thu, 3 Dec 2020 19:00:53 +0000 (11:00 -0800)]
warnings: be less forceful about a missing subdir-objects option.
This change somewhat ameliorates https://bugs.gnu.org/20699.
* bin/automake.in (handle_single_transform): change
forward-incompatibility message for subdir-objects to be
less draconian and less certain that the change will ever be made.
* t/subobj.sh: message text has changed.
* doc/automake.texi (Program and Library Variables): mention
the unfortunate fact that one directory can clean in a sibling,
subdir-objects notwithstanding.
Karl Berry [Sat, 28 Nov 2020 02:07:10 +0000 (18:07 -0800)]
tests: .NOTPARALLEL test-driver-create-log-dir.
* t/test-driver-create-log-dir.sh (.NOTPARALLEL): add target,
since the two tests under sub/ seem to have a race condition.
No evident way to debug or reliably reproduce. Reported by Jim.
Jim Meyering [Thu, 19 Nov 2020 02:08:41 +0000 (18:08 -0800)]
version 1.16.3
* configure.ac (AC_INIT): Bump version number to 1.16.3.
* m4/amversion.m4: Likewise (auto-updated by "make bootstrap").
* NEWS: Record release version.
Jim Meyering [Mon, 16 Nov 2020 17:34:23 +0000 (09:34 -0800)]
tests: auxdir-pr19311.sh no longer fails with latest autoconf
* t/list-of-tests.mk (XFAIL_TESTS): Remove from this list.
* t/auxdir-pr19311.sh: Instead, run this test only when autoconf
is 2.69d or newer. Otherwise, skip it.
Jim Meyering [Mon, 16 Nov 2020 05:14:24 +0000 (21:14 -0800)]
tests: avoid missing .dvi failure with parallel tests
* t/txinfo-no-clutter.sh: Tests of texinfo-related rules
had overlap that made them fail often when some rules were
run in parallel, so inhibit parallelism in that one directory.
See discussion starting at
https://lists.gnu.org/r/automake-patches/2020-11/msg00011.html
Jim Meyering [Sun, 15 Nov 2020 17:00:37 +0000 (09:00 -0800)]
tests: protect against parallel false failure
* t/parallel-tests-console-output.sh: Do not depend on the order
of items in test summary. With a parallel test run, they may
appear in a different order, e.g., when running tests like this:
make check AM_TESTSUITE_MAKE='make -j14'
Sort the expected output and the actual output before comparing.
Karl Berry [Fri, 13 Nov 2020 01:49:31 +0000 (17:49 -0800)]
install-sh: new option -S SUFFIX for simple file backups.
* lib/install-sh: implement and document -S.
Patch sent by Julien Elie:
https://lists.gnu.org/archive/html/automake-patches/2018-03/msg00004.html
(scriptversion): 2020-11-13.01
* t/install-sh-option-S.sh: new test.
* t/list-of-tests.mk (handwritten_tests): add it.
* NEWS: mention it.
Karl Berry [Wed, 11 Nov 2020 02:03:47 +0000 (18:03 -0800)]
install-sh: new option -p to preserve mtime.
* lib/install-sh: new option -p to call cp -p.
Idea from patch sent by Julien Elie:
https://lists.gnu.org/archive/html/automake-patches/2018-03/msg00002.html
(scriptversion): 2020-11-11.02
* NEWS: mention this.
Karl Berry [Wed, 11 Nov 2020 01:58:41 +0000 (17:58 -0800)]
vala: forgot to update lists-of-tests.mk.
* t/list-of-tests.mk (handwritten_tests): include
t/vala-libs-distcheck.sh and t/vala-libs-vpath.sh.
Should have been committed with 2020-10-29 vala change,
but somehow missed.
Karl Berry [Wed, 11 Nov 2020 01:54:06 +0000 (17:54 -0800)]
install-sh: do not chown existing directories.
* lib/install-sh: do not chown existing directories.
Original patch sent by Julien Elie:
https://lists.gnu.org/archive/html/automake-patches/2018-03/msg00003.html
(scriptversion): 2020-11-11.01
* NEWS: mention this.
Karl Berry [Wed, 11 Nov 2020 01:48:35 +0000 (17:48 -0800)]
install-sh: do not redundantly specify -f to rm.
* lib/install-sh: do not redundantly specify -f to rm.
Mention implication for RMPROG in the --help message.
Original patch sent by Julien Elie:
https://lists.gnu.org/archive/html/automake-patches/2018-03/msg00005.html
* NEWS: mention this.
Reuben Thomas [Sun, 8 Nov 2020 02:44:56 +0000 (18:44 -0800)]
vala: improve support, especially builddir vs. srcdir.
This change fixes https://bugs.gnu.org/13002.
* NEWS: mention these changes.
* bin/automake.in: generated C files go in builddir, not srcdir.
Distribute the header files generated from VAPI files.
* t/vala-libs-distcheck.sh: new test for `make distcheck' of a
Vala library.
* t/vala-libs-vpath.sh: new test for a VPATH build of a Vala library.
* t/vala-libs.sh: add local VAPIs used as external --package to test.
* t/vala-recursive-setup.sh: we need to make
maintainer-clean at one point to remove stamp files to avoid
confusing a VPATH build performed after a non-VPATH build.
* t/vala-non-recursive-setup.sh: likewise.
* t/vala-parallel.sh: some test paths need changing to take into
account that generated C files now go in builddir.
* t/vala-per-target-flags.sh: likewise.
* t/vala-recursive-setup.sh: likewise.
* t/vala-vpath.sh: likewise.
Karl Berry [Sun, 8 Nov 2020 02:11:03 +0000 (18:11 -0800)]
tests: recompute dependencies when lists-of-tests.mk changes.
This change fixes https://bugs.gnu.org/44458
and updates https://bugs.gnu.org/11347.
* t/local.mk ($(srcdir)/%D/testsuite-part.am): restore
dependency on '%D/list-of-tests.mk' (i.e., t/list-of-tests.mk),
partially reverting the change of 26 Apr 2012 for bug#11347.
Otherwise, new tests that have dependencies will not cause an
update of testsuite-part.am, leading to strange failures
(bug#44458). The original problem being fixed in #11347 was
unnecessary rebuilding when modifying tests; that should not be
affected here, but when new tests are added, it seems reasonable,
as well as necessary, to ensure dependencies are updated.
Miro Hron\v{c}ok [Tue, 27 Oct 2020 21:33:46 +0000 (14:33 -0700)]
python: determine Python (3.10) version number correctly.
This change fixes https://bugs.gnu.org/44239
(and https://bugzilla.redhat.com/show_bug.cgi?id=1889732).
* m4/python.m4: use print('%u.%u' % sys.version_info[:2]) for
the version number instead of merely sys.version[:3], so the
numbers are treated as numbers.
* t/python-vars.sh (PYTHON_VERSION): Likewise.
* doc/automake.texi: Document it.
* NEWS: mention it. (Minor tweaks from Karl Berry.)
Zack Weinberg [Wed, 7 Oct 2020 13:19:06 +0000 (09:19 -0400)]
Use complete configure.ac’s in testsuite.
Autoconf 2.70 will issue warnings if it encounters a configure.ac that doesn’t
call both AC_INIT and AC_OUTPUT.
Automake already issues warnings if it encounters a configure.ac that uses an
AM_ macro but doesn’t call AM_INIT_AUTOMAKE or AC_CONFIG_FILES([Makefile]).
In two places, the testsuite was tripping these warnings, leading to spurious
failures with Autoconf 2.70 betas.
* t/aminit-moreargs-deprecation.sh: Add AC_OUTPUT to test configure.ac.
* t/mkdirp-deprecation.sh: Use a complete test configure.ac, not a stub
containing only a use of AM_PROG_MKDIR_P.
Update documentation of warnings options and strictness levels.
The warning categories ‘cross’ and ‘portability-recursive’ were not mentioned
in the manual.
Also clarify the relationship between warnings categories and strictness
levels, and streamline the description of strictness levels by merging the
“Gnits” section into the “Strictness” section.
* doc/automake.texi (Gnits, Strictness): Combine these sections.
Minor revisions to explanation of strictness levels.
(automake Invocation): Add documentation of all the warnings
categories that have been added since the last time this section
was updated. Minor clarifications.
Use WARNINGS=none to suppress warnings from autom4te runs.
aclocal uses autom4te in trace mode to scan configure.ac for macros whose
definition is not yet available. It has a kludge to prevent this from
producing spurious warnings, but a cleaner, fully backward compatible, way to
get the same effect is to set WARNINGS=none in the environment and not pass
down any -W options. (This is better than passing -Wnone on the command line
because it automatically inherits to any subprocesses started by autom4te.)
Perl’s ‘local’ feature can be used to make the enviironment variable setting
temporary, reverting to the previous value when we exit the function.
automake also runs autom4te (technically autoconf) in trace mode; warnings
from this invocation will not be *spurious*, but in the common case where
the person running automake is going to run autoconf next, they will be
duplicated. Therefore, make the same change to automake.
* bin/aclocal.in (trace_used_macros)
* bin/automake.in (scan_autoconf_traces):
Use “local $ENV{WARNINGS}='none'” to suppress warnings from autom4te.
New utility function Automake::ChannelDefs::merge_WARNINGS.
This function merges a list of warnings categories into the environment
variable WARNINGS, returning a new value to set it to. The intended use
is in code of the form
{
local $ENV{WARNINGS} = merge_WARNINGS ("this", "that");
# run a command here with WARNINGS=this,that,etc
}
This is not actually used in automake, but will be in autoconf.
* lib/Automake/ChannelDefs.pm (merge_WARNINGS): New function.
t/python-virtualenv.sh: Skip when versions don’t match
On some operating systems ‘python’ is Python 2.x but ‘virtualenv -ppython’
will create a virtualenv that uses Python 3.x. This is a bug, but it’s
not *automake’s* bug, and should not cause t/python-virtualenv.sh to fail.
Skip the test, instead of failing it, when the inner=outer version check
fails.
(This also has nothing to do with the main goal of this patchset, it just
annoyed me while I was testing.)
* t/python-virtualenv.sh: Skip test, rather than failing it, when
$py_version_pre != $py_version_post.
At file scope of a file containing at most one ‘package’ declaration,
‘use vars’ is exactly equivalent to ‘our’, and the latter is preferred
starting with Perl 5.6.0, which happens to be the oldest version we
support.
(This change has nothing to do with the previous two, but I want to make the
same change in Autoconf and that means doing it here for all the files synced
from Automake.)
(I don’t know why, but this change exposed a latent bug in FileUtils.pm where
the last pod block in the file didn’t have a ‘=cut’ delimiter, so the code
after it was considered documentation, causing ‘require FileUtils’ to fail.)
Consistently process -W(no-)error after all other warning options.
automake and aclocal were processing ‘-W(no-)error’ whenever it
appeared on the command line, which means that
‘-Werror,something-strange’ would issue a hard error, but
‘-Wsomething-strange,error’ would only issue a warning.
It is not desirable for warnings about unknown warning categories ever to be
treated as a hard error; that leads to problems for driver scripts like
autoreconf, which would like to pass whatever -W options it got on its own
command line down to all the tools and not worry about which tools understand
which warning categories. Also, this sort of order dependence is confusing
for humans.
Change parse_warnings to take just one option, the _complete_ list of warning
categories seen on the command line, and to process -Werror / -Wno-error after
processing all other warnings options. Thus, unknown warnings categories will
always just be a plain warning. This does mean aclocal has to stop using
parse_warnings as a Getopt::Long callback, but that’s not a big deal.
Similarly, change parse_WARNINGS to record whether ‘error’ appeared in the
environment variable, but not activate warnings-are-errors mode itself.
parse_warnings picks up the record and honors it, unless it’s overridden by
the command line.
* lib/Automake/ChannelDefs.pm ($werror): New package global (not exported).
(parse_WARNINGS): Do not call switch_warning for ‘error’ / ‘no-error’;
just toggle the value of $werror.
(parse_warnings): Do not call switch_warning immediately for
‘error’ / ‘no-error’; toggle $werror instead. Call switch_warning ‘error’
at the very end if $werror is true. Remove unused $OPTION argument.
* bin/automake.in: parse_warnings now takes only one argument.
* bin/aclocal.in: Call parse_warnings after parse_options instead of
using it as a parse_options callback.