summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* py-compile: fix optimized compiling for Python 3.5+Mike Frysinger2022-02-233-2/+61
| | | | | | | | | | | | | | | Fixes automake bug https://bugs.gnu.org/38043. Split the optimized compilation logic into a new section. This avoids trying to support multiple versions of major versions in a single script as it gets harder to verify new changes don't break old versions as time goes on. Now for Python 3.5+, compile with -O0 (which is "higher" than -O). * NEWS: Mention fix. * THANKS: Add Michal Górny. * lib/py-compile: Add new section for compiling Python 3.5+.
* manual: mention LT_INITMike Frysinger2022-02-231-0/+1
| | | | | | | The AC_PROG_LIBTOOL macro name is the old/deprecated one, so include LT_INIT here too to avoid confusing people who have switched. * doc/automake.texi: Add LT_INIT after AC_PROG_LIBTOOL.
* automake: allow required files to be in subdirsMike Frysinger2022-02-233-0/+48
| | | | | | | | | | | | | | | | | | Fixes automake bug https://bugs.gnu.org/20300. The internal method for caching path lookups expects the $filename to only be a filename. If it's actually a subdir/file itself, then the cache logic gets confused, and it never matches. This manifests as AC_REQUIRE_AUX_FILE([subdir/file]) claiming that the subdir/file path doesn't exist even when it does. Before we process any required files, since we already construct the full path locally, reset the dir & file inputs to the final values. * bin/automake.in: Split dir & file name back out from the constructed required file path. * t/auxdir-subsubdir.sh: New test. * t/list-of-tests.mk: Add t/auxdir-subsubdir.sh.
* tests: fix yacc C++ tests with some C++ compilersMike Frysinger2022-02-233-0/+10
| | | | | | | | | | | | | | | | | | | | Fixes automake bug https://bugs.gnu.org/20031. The C++ standard does not require symbols be placed into the global namespace, just in the std namespace. The GNU implementation will place symbols in both. For our specific code, we don't care either. Unfortunately, it looks like generated flex code assumes that some stdlib.h symbols (free, malloc, exit) are in the global namespace, even when compiling for C++. So when we include <cstdlib> but not <stdlib.h>, we might not get the symbols in the global namespace. We can workaround this by including stdlib.h in these tests without invalidating the point of the tests in general. * t/yacc-cxx.sh: Include stdlib.h. * t/yacc-d-cxx.sh: Likewise. * t/yacc-mix-c-cxx.sh: Likewise.
* tests: log autoconf & libtool versionMike Frysinger2022-02-231-0/+5
| | | | | | | Having these in the sysconf log can be helpful when triaging test failures from users. * t/get-sysconf.sh: Log autoconf & libtoolize version.
* automake: support embedded \# in variable appendsMike Frysinger2022-02-236-1/+100
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes automake bug https://bugs.gnu.org/7610. Use of \# is not portable. POSIX does not provide any way of retaining the # marker in variables. There is wide spread support for \# though in GNU & BSD Make implementations. Today, with plain variable assignments, Automake leaves the line alone: foo = blah\#blah This will leave it to the implementation to decide what to do. But if you try to append to it, Automake follows POSIX and strips it: foo = blah\#blah foo += what -> foo = blah\ what Instead, let's issue a portability warning whenever \# is used, even if it isn't being appended, and do not strip the \# when appending. Now: foo = blah\#blah foo += what -> warning: escaping \# comment markers is not portable -> foo = blah\#blah what * NEWS: Mention change in \# handling. * lib/Automake/VarDef.pm: Do not strip # if escaped. * lib/Automake/Variable.pm: Warn if \# is used. * t/comment12.sh: New test. * t/comments-escaped-in-var.sh: New test. * t/list-of-tests.mk: Add comment12.sh & comments-escaped-in-var.sh.
* python: use xargs -n when uninstalling filesMike Frysinger2022-02-204-7/+24
| | | | | | | | | | | | | | | | Fixes automake bug https://bugs.gnu.org/53340. If the system has xargs, then utilize it to uninstall files to stay within long command line limits. If the system doesn't have xargs, fall back to running the remove command one at a time. Since every reasonable system should have `xargs -n`, and POSIX requires it, the fallback probably rarely gets used, so don't bother optimizing. * lib/am/inst-vars.am: Use am__xargs_n to call rm -f on the files. * lib/am/python.am: Drop am__base_list and for loop and let the am__uninstall_files_from_dir break up the long command lines. * m4/init.m4: Call _AM_PROG_XARGS_N. * m4/xargsn.m4: New test for `xargs -n`.
* rm: handle -f w/no arguments gracefullyMike Frysinger2022-02-2013-118/+55
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes automake bug https://bugs.gnu.org/10828. Delete the configure check that would abort if `rm -f` does not work, and delete the plans to make this a hard requirement in the future. Instead, test to see if `rm -f` fails w/out arguments. If it does, define am__rm_f such that it always passes at least the "" argument when deleting files. If it doesn't fail, then we can omit the "". Then go through lib/am/ and update places where we use the pattern `test -z ... || rm -f ...` and replace with $(am__rm_f). * NEWS: Mention support for `rm -f` w/out arguments. * PLANS/rm-f-without-args.txt: Remove. * lib/am/check.am: Use new $(am__rm_f) helper. * lib/am/clean.am: Likewise. * lib/am/header-vars.am: Likewise. * lib/am/inst-vars.am: Likewise. * lib/am/libs.am: Likewise. * lib/am/ltlib.am: Likewise. * lib/am/progs.am: Likewise. * lib/am/texinfos.am: Likewise. * m4/init.m4: Delete `rm -f` checks and call _AM_PROG_RM_F. * m4/rmf.m4: Define new _AM_PROG_RM_F macro. * t/rm-f-probe.sh: Update test.
* NEWS: fix typo in fix-timestamp.sh script nameMike Frysinger2022-02-201-1/+1
| | | | | | As pointed out by Eric Blake. * NEWS: Fix typo.
* python: fix exit status handling with uninstallMike Frysinger2022-02-151-3/+5
| | | | | | | | | | | The st variable is set at the top of this shell script, and then here is a pipeline where it tries to update it in the subshell. But since setting variables in a subshell doesn't propagate back up, it doesn't actually work. Have the final subshell in the pipeline manage its own exit status and exit with that so that the final status of the pipeline is the right value. * lib/am/python.am: Fix final subshell exit status passing.
* m4: speed up filesystem modification checksMike Frysinger2022-02-132-3/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The current code sleeps at least 1 second to make sure the generated files are strictly newer than the source files. It does this for a few reasons: POSIX only guarantees that `sleep` accept integers, and filesystems have a history (c.f. Windows) of bad timestamp resolution. For the first part, we can easily probe sleep to see if it accepts a decimal number with a fractional part -- just run `sleep 0.001`. For the second part, we can create two files and then run sleep in a loop to see when one is considered newer than the other. For many projects, this 1 second delay is largely amortized by the rest of the configure script. Autoconf lends itself to being both large & slow. But in projects with many smallish configure scripts with many cached vars, the time to rerun is dominated by this single sleep call. For example, building libgloss against a compiler with many (60+) multilib configurations, we see: [Using sleep 1] $ time ./config.status real 2m28.164s user 0m33.651s sys 0m9.083s [Using sleep 0.1] $ time ./config.status real 0m39.569s user 0m33.517s sys 0m8.969s And in case anyone wonders, going below 0.1s doesn't seem to make a statistically significant difference, at least in this configuration. It appears to be within "noise" limits. [Using sleep 0.001] $ time ./config.status real 0m39.760s user 0m33.342s sys 0m9.080s * NEWS: Mention updated timestamp checking. * m4/sanity.m4: Determine whether `sleep` accepts fractional seconds. Determine (roughly) the filesystem timestamp resolution. Use this to sleep less when waiting for generated file timestamps to update.
* m4: cache build env sanity checksMike Frysinger2022-02-121-5/+6
| | | | | | | | When rerunning configure in an existing build dir, cache the previous results about environment settings. There should be no need to retest these in a dir that has already been configured. * m4/sanity.m4: Cache sanity results.
* elisp: run emacs with --no-site-fileMike Frysinger2022-02-084-3/+8
| | | | | | | | | | | | | Fixes automake bug https://bugs.gnu.org/21547. If users have interactive site file logic, the lispdir probing can hang, as can the compilation of elisp files. Use --no-site-file to disable loading any of that possible user logic. * NEWS: Note emacs --no-site-file change. * doc/automake.texi: Run emacs with --no-site-file. * lib/am/lisp.am: Likewise. * m4/lispdir.m4: Likewise.
* ar-lib: ignore -nologo optionMike Frysinger2022-02-081-0/+4
| | | | | | | We already invoke $AR with -NOLOGO all the time, so we can ignore the option entirely if the user specifies it. * lib/ar-lib: Ignore -NOLOGO.
* tests: do not assume AM_MAKEINFOHTMLFLAGS is used in non-html targetsMathieu Lirzin2022-02-083-4/+15
| | | | | | | | | | | | | | | Fixes automake bug https://bugs.gnu.org/30172. Since AM_MAKEINFOHTMLFLAGS overrides AM_MAKEINFOFLAGS only for html targets, make sure we restore the hacked up makefile before testing the non-html formats. This normally doesn't cause a problem for most people, but if their tex install doesn't work correctly, texi2dvi will fallback to running $MAKEINFO and using invalid flags in the process. * THANKS: Add Mathieu Lirzin. * t/txinfo-many-output-formats.sh: Restore Makefile.am after testing html targets. * t/txinfo-many-output-formats-vpath.sh: Likewise.
* py-compile: fix display when compiling multiple filesMike Frysinger2022-02-061-3/+3
| | | | | | | | | | The compilation steps print the filename as it runs, but forgets to add a space after it, so they all get squashed together: $ ./py-compile 1.py 2.py 3.py Byte-compiling python modules... 1.py2.py.3.py * lib/py-compile: Add missing write.
* manual: document Python version support statusMike Frysinger2022-02-061-0/+53
| | | | | | | Clarify to users what versions of Python are supported and until when. This will make it easier for us to decide what versions to support. * doc/automake.texi: Add Supported Python versions section.
* py-compile: drop support for Python 0.x & 1.xMike Frysinger2022-02-063-26/+20
| | | | | | | | | Python 2.0 was released in 2000. There's really no way for us to check those old versions, so let's just drop them. No one will miss them. * NEWS: Note Python version support removal. * lib/py-compile: Abort if major version 0 or 1 is found. * t/py-compile-env.sh: Rework slightly to handle new version probing.
* py-compile: handle filenames with whitespaceMike Frysinger2022-02-052-10/+42
| | | | | | | | The list of files is put into a string and then split on whitespace. Fix the way the list of files are passed to the compile script. * lib/py-compile: Pass files as arguments, not as a string. * t/py-compile-files.sh: New test.
* py-compile: clean up usage infoMike Frysinger2022-02-052-4/+10
| | | | | | | Include the full summary of options in the output. * lib/py-compile: Update usage output. * t/py-compile-usage.sh: Update test to match new output.
* maint: include versioned manual in updateMike Frysinger2022-01-311-1/+12
| | | | | | | | When publishing the updated manual, include the versioned copy too, and have their index.html link to the full version index. * maintainer/maint.mk: Copy manual to manual/$(VERSION)/, and insert index-full.html link into index.html.
* AM_PROG_AR: require before AC_PROG_ARMike Frysinger2022-01-311-0/+1
| | | | | | | | The new autoconf AC_PROG_AR macro has similar logic to what we have in AM_PROG_AR, but less than what we need (since autoconf doesn't support the MS archiver), so make sure we are run before AC_PROG_AR. * m4/ar-lib.m4: Call AC_BEFORE for AC_PROG_AR.
* maint: Update files from upstream with 'make fetch'Mike Frysinger2022-01-308-54/+46
| | | | | | | | | | | * lib/config.guess: Update. * lib/config.sub: Likewise. * lib/gendocs.sh: Likewise. * lib/gendocs_template: Likewise. * lib/gitlog-to-changelog: Likewise. * lib/gnupload: Likewise. * lib/texinfo.tex: Likewise. * lib/update-copyright: Likewise.
* maint: only sync the manual subdirMike Frysinger2022-01-281-1/+1
| | | | | | | This code only updates files under manual/, so no need to checkout the entire site first. * maintainer/maint.mk: Only checkout $(PACKAGE)/manual tree.
* texi: define new AM_TEXI2FLAGS variableMike Frysinger2022-01-284-4/+12
| | | | | | | | | | | To provide a bit more flexibility when invoking TEXI2DVI & TEXI2PDF, and provide a bit of symmetry with .info & .html generation, provide a AM_TEXI2FLAGS setting that is passed to all TEXI2xxx invocations. * doc/automake.texi: Mention new AM_TEXI2FLAGS setting. * lib/am/texibuild.am: Pass $(AM_TEXI2FLAGS) to TEXI2DVI & TEXI2PDF. * NEWS: Mention AM_TEXI2FLAGS. * t/txinfo-many-output-formats.sh: Check for AM_TEXI2FLAGS.
* texi: pass automatic -I to dvi & pdf generationMike Frysinger2022-01-284-6/+24
| | | | | | | | | | | | | | | | | | | | | | Fixes automake bug https://bugs.gnu.org/23599. When generating info/html pages, automake adds -I flags to source dirs that contain the texi files, but it doesn't do this for dvi or pdf formats. Instead, automake has been relying on texi2dvi to use makeinfo for expanding macros, and it hasn't done that by default in a long time. Since adding --expand to the texi2dvi call is undesirable (due to bad and unpredictable BEHAVIOR), pass those automatic -I flags directly to TEXI2DVI & TEXI2PDF so they work regardless of --expand behavior. We have to keep the MAKEINFO= setting around as texi2dvi might itself fall back to it if the version of tex is old or broken. * bin/automake.in: Add comment about $makeinfoflags usage. * doc/automake.texi: Mention automatic -I subdir flags. * lib/am/texibuild.am: Pass %MAKEINFOFLAGS% to TEXI2DVI & TEXI2PDF. * t/txinfo-subdir-pr343.sh: Check for -I subdir usage.
* tests: remove spurious +x bitsMike Frysinger2022-01-2810-0/+0
| | | | | | | | | | | | | | | | None of these files are (or can be) executed directly, so drop the spurious +x permission bit. None of the other tests do this either. * t/built-sources-install-exec.sh: Remove +x bit. * t/ccnoco-deps.sh: Likewise. * t/ccnoco-lib.sh: Likewise. * t/ccnoco-lt.sh: Likewise. * t/perf/cond.sh: Likewise. * t/perf/testsuite-recheck.sh: Likewise. * t/perf/testsuite-summary.sh: Likewise. * t/python-prefix.sh: Likewise. * t/tags-lisp-space.sh: Likewise. * t/test-extensions-empty.sh: Likewise.
* tests: add coverage for nobase_ and dist_ prefixesMike Frysinger2022-01-272-0/+68
| | | | | | | | | | | | | | From automake bug https://bugs.gnu.org/14245. We have tests that check nobase_ and nodist_ interaction, but not nobase_ and dist_. We had a report against automake 1.12 that this combo did not work. It seems to work now, but lets include a test to make sure we don't regress. Based on Daiki Ueno's example, but fixed up to pass against master. * t/list-of-tests.mk: Add t/nobase-dist.sh. * t/nobase-dist.sh: New test.
* python: add 3.10 - 3.15 to the version search listMike Frysinger2022-01-262-0/+4
| | | | | | | | | | | | | Fixes automake bug https://bugs.gnu.org/53530. Based on the cadence of Automake releases, add the current Python release (3.10), the current Python development (3.11), and then 4 more versions on top of that. It doesn't hurt to check for a few extra versions here since this is the fallback logic when the main `python` and `python3` programs aren't found. * m4/python.m4: Add python3.10 - python3.15. * NEWS: Mention new Python versions.
* progs, libs: support _RANLIB overridesMike Frysinger2022-01-246-2/+69
| | | | | | | | | | | | | Much like we have per-target support for _AR and _LINK, add an _RANLIB override too. This allows selection of specific ranlib tools in case a non-standard archiver tool was forced. * bin/automake.in: Check for _RANLIB per-target settings. * doc/automake.texi: Document _RANLIB override. * lib/am/library.am: Change $(RANLIB) to $(%XLIBRARY%_RANLIB). * t/list-of-tests.mk: Add ranlib_override.sh. * t/ranlib_override.sh: New test. * NEWS: Mention new feature.
* tests: add _AR override coverageMike Frysinger2022-01-242-0/+51
| | | | | | | There were no tests for per-target _AR settings, so add some. * t/ar_override.sh: New test. * t/list-of-tests.mk: Add ar_override.sh.
* tests: clear autotools env varsMike Frysinger2022-01-242-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes automake bug https://bugs.gnu.org/16714. The testsuite will try and retain these env vars when recursively running itself, but doesn't distinguish between vars coming from the env where the tests were launched. This breaks if the user happens to `export ACLOCAL=alocal` before `make check`. This gets a little more confusing in that the Makefile appears to export these already: ACLOCAL = ".../automake/pre-inst-env" aclocal-1.16 In reality, while those are set in the make execution environment, they aren't exported into the process environment, so children (i.e. shell processes in make rules) don't have them set. That's why tests work for most people today. However, if the user has first exported "ACLOCAL" in the parent make environment (regardless of value), then make's value will reset the process environment, and then that will leak into the children. That's why we see errors that look like the makefile env vars are leaking for these people. At any rate, the fix is to update the test harness to clear these vars that the test suite relies upon, especially the ones that are also set in the Makefiles. That includes AUTOUPDATE even though it currently isn't used inside any of the tests. * t/local.mk: Add ACLOCAL, AUTOCONF, AUTOHEADER, AUTOMAKE, and AUTOUPDATE to the env unset list. * t/ax/runtest.in: Likewise.
* aclocal: add m4 search path info to --helpMike Frysinger2022-01-242-3/+21
| | | | | | | | | | Add a short summary to --help of the current paths that will be searched. Make sure to omit this from the man page when running help2man since pre-inst-env specifically clears some and others to the current build directory. * bin/aclocal.in: Include m4 search paths in usage. * doc/local.mk: Run help2man with AUTOMAKE_HELP2MAN=true.
* tests: fix quoting in evalMike Frysinger2022-01-241-1/+1
| | | | | | | We need to escape the quotes so eval sees them when expanding the variable value, not when quoting the variable name itself. * t/local.mk: Escape quotes to eval.
* doc: singular/plural agreement, since it's easy.Karl Berry2022-01-232-3/+4
| | | | | * HACKING: singular/plural agreement. * t/README: likewise.
* THANKS: fix sortingMike Frysinger2022-01-221-8/+7
| | | | * THANKS: Sort a bunch of names.
* build: fix ChangeLog generation in external build directoryZack Weinberg2022-01-211-3/+5
| | | | | | | | | | | | | | | | | | | | | | When gitlog-to-changelog is run in a build directory that is neither the same as, nor a subdirectory of, the source directory, it needs a --srcdir option or it will fail to generate the changelog. For instance $ git clone https://git.savannah.gnu.org/git/automake.git … $ (cd automake && ./bootstrap) $ mkdir b-automake $ cd b-automake $ ../automake/configure … $ make dist … GEN ChangeLog gitlog-to-changelog:../s-automake/.git-log-fix: unused entry: 22729165f6bb902daeb8a4d8e7cb06982390f327 gitlog-to-changelog:../s-automake/.git-log-fix: unused entry: 3b369e6bbe0fb6d7359398935706c87dd9375cb6 make[2]: *** [../automake/maintainer/maint.mk:48: ChangeLog] Error 1 * maintainer/maint.mk (gitlog_to_changelog_options): Add --srcdir option.
* build: fix race in parallel buildsMike Frysinger2022-01-192-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | As reported by Hongxu Jia: > The automake-$(APIVERSION) is a hardlink of automake, if it is > created later than update_mans executing, there is a failure > [snip] > |: && mkdir -p doc && ./pre-inst-env /usr/bin/env perl ../automake-1.16.1/doc/help2man --output=doc/aclocal-1.16.1 aclocal-1.16 > |help2man: can't get `--help' info from aclocal-1.16 > |Try `--no-discard-stderr' if option outputs to stderr > Makefile:3693: recipe for target 'doc/aclocal-1.16.1' failed > [snip] > > The automake_script is required by update_mans and update_mans > invokes automake-$(APIVERSION) rather than automake to generate > doc, so we should assign `automake-$(APIVERSION)' to automake_script. > > The same reason to tweak aclocal_script. However, rather than update the _script variables to point to the hardlinked copies of the programs, we can have the help2man steps run the existing scripts directly. This makes the relationship a bit more explicit and avoids implicit dependencies on names. * doc/local.mk: Pass $(aclocal_script) and $(automake_script) to $(update_mans). * THANKS: Add Hongxu Jia.
* lib: drop unused shell variablesPavel Raiskup2022-01-182-5/+0
| | | | | | | | Detected by ShellCheck. * lib/depcomp: Drop never used $digits. * lib/ylwrap: Drop --basedir and $basedir, seems like that was old C&P error from 210797967a.
* gitignore: drop redundant config.h.in~ ruleMike Frysinger2022-01-181-1/+0
| | | | | | Since we're ignoring all *~ files, we don't need this explicit one. * .gitignore: Delete config.h.in~ rule.
* doc: use gender-neutral pronouns in t/READMEMatthew Leeds2022-01-181-1/+1
| | | | * t/README: s/him/them/
* tests: fix py-compile-basedir.sh: missing "test"Jim Meyering2022-01-181-1/+1
| | | | | | | | | | Prompted by a patch from Thomas Deutschmann <whissi@gentoo.org>, via https://lists.gnu.org/r/automake-patches/2022-01/msg00001.html: commit v1.16.1-26-gb279a0d46 ("tests: in python tests, do not require .pyo files (for python3)") was missing a `test` call. Reported to Gentoo at https://bugs.gentoo.org/715040. * t/py-compile-basedir.sh: Rather than just adding the missing "test", rewrite using a case statement, to avoid some duplication.
* maint: make update-copyrightJim Meyering2022-01-121455-1459/+1457
|
* doc: %reldir% and %canon_reldir% do not expand to the empty string.Bruno Haible2021-12-181-10/+18
| | | | | | | This change fixes https://bugs.gnu.org/52500. * doc/automake.texi (Include): correct wrong text. (Along the way, correct plain-text "Makefile" to "@file{Makefile}".)
* configure: skip kcc on case-insensitive filesystems; add clang++.Mike Frysinger2021-12-121-3/+5
| | | | | | | | This change fixes https://bugs.gnu.org/21336. * configure.ac: Skip KCC check on case-insensitive filesystems; on macOS 10.10 and later, a kerberos tool named "kcc" is installed. Add clang++ to the C++ search list, as with current autoconf.
* maint: update .gitignore.Mike Frysinger2021-12-121-0/+4
| | | | | | | * .gitignore: ignore *~ .# and (from Zack Weinberg, autosave files) .*.sw[op] \#*#, closer to matching Autoconf. https://lists.gnu.org/archive/html/automake-patches/2021-12/msg00005.html https://lists.gnu.org/archive/html/automake-patches/2021-12/msg00010.html
* m4: replace AC_DIAGNOSE with m4_warnMike Frysinger2021-12-121-2/+2
| | | | | | AC_DIAGNOSE was marked obsolete with autoconf-2.62 in 2008. * m4/obsolete.m4: Change AC_DIAGNOSE to m4_warn.
* dejagnu: add support for silent builds with site.exp.Mike Frysinger2021-11-271-25/+26
| | | | | * lib/am/dejagnu.am (site.exp): Use $(AM_V_GEN) and merge all independent shell calls into one.
* doc: rearrange Multiple Outputs node.Karl Berry2021-11-041-44/+24
| | | | | | | | | 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.
* config headers: add support for silent buildsMike Frysinger2021-11-021-5/+5
| | | | | * lib/am/remake-hdr.am (%STAMP%): Use $(AM_V_at) and $(AM_V_GEN). (%CONFIG_HIN%): Likewise.