Mathieu Lirzin [Sun, 25 Feb 2018 19:47:15 +0000 (20:47 +0100)]
version 1.16
* configure.ac (AC_INIT, APIVERSION): Bump version number to 1.16.
* m4/amversion.m4: Likewise (auto-updated by "make bootstrap").
* NEWS: Record release version.
Mathieu Lirzin [Sat, 3 Feb 2018 23:09:31 +0000 (00:09 +0100)]
python: Avoid exceeding command-line length limit
With Python implementations following PEP-3174, a large number of files
are installed in the ‘__pycache__’ directory. As a consequence
“t/instmany-python.sh” test was failing due to the
‘uninstall-pythonPYTHON’ target deleting installed files in a single
‘rm’ command. Doing that in multiple steps avoids exceeding the
command-line length limit. This fixes bug#30335.
* lib/am/python.am (uninstall-%DIR%PYTHON): For byte-compiled files
installed in '__pycache__' directory, uninstall them by batch of 40.
[?FIRST?] (am__pep3147_tweak): Adapt.
Mathieu Lirzin [Thu, 18 Jan 2018 10:19:13 +0000 (11:19 +0100)]
tests: Don't check 'Getopt::Long' corner cases
Depending on the installed 'Getopt::Long' perl module, command-line
handling may vary a bit. As a consequence we prefer not to check
command-line corners cases. This change fixes automake bug#29638.
* t/aclocal.sh (am_create_testdir): Don't expect "--versi" to be
interpreted as "--version".
* t/automake-cmdline.tap: Don't expect "--vers" to be interpreted as
"--version" and things after "--" to be interpreted as file arguments.
(do_check): Display the actual command output.
* t/maken3.sh (check_targets): "--force" is not a documented option, so
don't use it.
Mathieu Lirzin [Thu, 1 Feb 2018 12:51:03 +0000 (13:51 +0100)]
python: Generate python interpreter list
_AM_PYTHON_INTERPRETER_LIST is used by AM_PYTHON_PATH to autodetect
Python programs whose names correspond to a specific Python
version (e.g. python3.6). Previously this list was updated manually.
The automatic support of newer versions (up to 4.0 excluded) fixes
bug#28160.
* m4/python.m4 (am_py_min_ver, am_py_max_ver): New macros.
(_AM_PYTHON_INTERPRETER_LIST): Generate this list instead of hard-coding
it. Implementation is taken from GNU Pyconfigure.
Mathieu Lirzin [Thu, 18 Jan 2018 23:41:31 +0000 (00:41 +0100)]
tests: Distribute DEJATOOL files manually
"t/check12.sh" was failing because files declared in DEJATOOL are not
automatically distributed. The test running 'make distcheck' couldn't succeed
since some scripts were not distributed. This fixes automake bug#26738.
* t/check12.sh (Makefile.am): Distribute files from DEJATOOL.
Mathieu Lirzin [Thu, 18 Jan 2018 22:51:49 +0000 (23:51 +0100)]
tests: Fix various 'flex' compilation issues
* t/lex-clean-cxx.sh (parsefoo.lxx): Declare 'yylex':
(mainfoo.cc): Make declaration compatible with C++.
* t/lex-depend-cxx.sh (joe.ll): Declare 'yylex'.
* t/silent-many-languages.sh (Makefile.am, sub/Makefile.am): Link -lfl only
with 'fo2' and 'sub/ba2' which are the only program needing it.
(foo5.l): Define 'isatty'.
(foo6.y): Declare 'yylex'.
Jim Meyering [Thu, 23 Nov 2017 05:07:29 +0000 (21:07 -0800)]
port elisp-compilation support to emacs-23.1 and newer
In May of 2017, emacs.master support for using the long-deprecated
byte-compile-dest-file function was removed, and that removal broke
automake's elisp-compiling rule for any .el file not in the current
directory. In emacs-23.1 (July 2009) byte-compile-dest-file-function
became the recommended way to adjust the byte-compiler's destination.
The removed functionality has been restored for Emacs-26, albeit with
dissuasive diagnostics warning about the imminent removal of this
functionality. It will be removed in Emacs-27.
* lib/am/lisp.am (.el.elc): Use byte-compile-dest-file-function, rather
than byte-compile-dest-file. Also, use "-f batch-byte-compile '$<'"
rather than open-coding it, as suggested by Glenn Morris.
* t/lisp-readonly-srcdir.sh: New file, to test for the above.
* t/list-of-tests.mk (handwritten_TESTS): Add it.
* NEWS (Bugs fixed): Mention this problem.
Jim Meyering [Thu, 20 Mar 2014 19:31:32 +0000 (12:31 -0700)]
"make dist" did not depend on $(BUILT_SOURCES)
* lib/am/distdir.am (distdir-am): New intermediate target.
Interpose this target between $(distdir) and its dependency
on $(DISTFILES), so that we can ensure $(BUILT_SOURCES) are
all created before we begin creating $(DISTFILES).
* t/dist-vs-built-sources.sh: Test for this.
* t/list-of-tests.mk (handwritten_TESTS): Add it.
* NEWS (Bugs fixed): Mention it.
Assaf Gordon reported that "make dist" (after ./configure
from a pristine clone of GNU hello) would fail due to the
absence of configmake.h while compiling lib/localcharset.c.
https://lists.gnu.org/r/bug-hello/2014-03/msg00016.html
Paul Eggert [Sat, 23 Sep 2017 18:03:34 +0000 (11:03 -0700)]
install-sh: do not assume / = //
* lib/install-sh: Do not append / to destination
directory if it already ends in /. This supports
a destination directory of // on hosts where / and //
are distinct directories, as POSIX allows.
Paul Eggert [Sat, 16 Sep 2017 20:03:36 +0000 (13:03 -0700)]
Prefer https: URLs
In Gnulib, Emacs, etc. we are changing ftp: and http: URLs to use
https:, to discourage man-in-the-middle attacks when downloading
software. The attached patch propagates these changes upstream to
Automake. This patch does not affect files that Automake is
downstream of, which I'll patch separately.
Althouth the resources are not secret, plain HTTP is vulnerable to
malicious routers that tamper with responses from GNU servers,
and this sort of thing is all too common when people in some other
countries browse US-based websites. See, for example:
Aceto G, Botta A, Pescapé A, Awan MF, Ahmad T, Qaisar
S. Analyzing internet censorship in Pakistan. RTSI
2016. https://dx.doi.org/10.1109/RTSI.2016.7740626
HTTPS is not a complete solution here, but it can be a significant
help. The GNU project regularly serves up code to users, so we should
take some care here.
Paul Eggert [Sat, 16 Sep 2017 20:03:36 +0000 (13:03 -0700)]
Prefer https: URLs
In Gnulib, Emacs, etc. we are changing ftp: and http: URLs to use
https:, to discourage man-in-the-middle attacks when downloading
software. The attached patch propagates these changes upstream to
Automake. This patch does not affect files that Automake is
downstream of, which I'll patch separately.
Althouth the resources are not secret, plain HTTP is vulnerable to
malicious routers that tamper with responses from GNU servers,
and this sort of thing is all too common when people in some other
countries browse US-based websites. See, for example:
Aceto G, Botta A, Pescapé A, Awan MF, Ahmad T, Qaisar
S. Analyzing internet censorship in Pakistan. RTSI
2016. https://dx.doi.org/10.1109/RTSI.2016.7740626
HTTPS is not a complete solution here, but it can be a significant
help. The GNU project regularly serves up code to users, so we should
take some care here.
'mdate-sh' pretty-prints the modification time of a file. But it's
output can vary depending on the timezone of the caller. Someone in
timezone GMT-12 will get a different result (day) than someone in
timezone GMT+12. As this output is also used to create/update stamp
files, which influence the further build process, the build result can
vary.
* lib/mdate-sh: Set 'TZ' to UTC which ensures reproducible output.
* NEWS: Announce bug fix.
Prototypes allows us to avoid using the '&foo' invocation form when
invoking a subroutine before its definition. Previously those
prototypes were generated to prevent them from falling out-of-sync
with actual definitions. Now we provide a 'check-perl-protos' lint
script to ensure that this is not the case. This has the same
benefits as generating prototypes while simplifying the
bootstrap/build process.
* bin/gen-perl-protos: Remove.
* bin/Makefile.inc: Adapt.
* bootstrap: Likewise.
* bin/aclocal.in: Inline prototypes.
* bin/automake.in: Likewise.
* maintainer/check-perl-protos: New lint script.
* maintainer/syntax-checks.mk (sc_perl_protos): New target.
(syntax_check_rules): Add it.
Mathieu Lirzin [Sun, 27 Aug 2017 15:41:50 +0000 (17:41 +0200)]
build: Add 'pre-inst-env' wrapper script
This script allows someone building Automake from source to easily run
'automake' and 'aclocal' without having to install it or knowing the
existence of "wrapped" scripts in "bin" directory.
* pre-inst-env.in: New script.
* configure.ac: Generate 'pre-inst-env' at configure time.
* Makefile.am (nodist_noinst_SCRIPTS, CLEANFILES): Add it.
automake: Ensure that LIBOBJ_DIR builddir is created
* t/libobj-no-dependency-tracking.sh: New test reproducing the issue
described in automake bug#27781.
* t/list-of-tests.mk (handwritten_TESTS, XFAIL_TESTS): Add it.
check: Make 'check-TESTS' target depend on test dependencies
The 'check' and 'recheck' targets are already depending on the progams
and scripts required to run the test suite. The 'check-TESTS' target
while not in the public API might be used by uninformed users, so it
makes sense to add the same dependency to it. This fixes bug#27186.
Thomas Martitz [Mon, 13 Mar 2017 11:41:59 +0000 (12:41 +0100)]
automake: Shorter object file names under subdir-objects
Combining the 'subdir-objects' option with target-specific flags had
the consequence of producing long object file names. This was done to
preventively ensure the uniqueness of object file names. We are now
using shorter names by default, and handle long names when an actual
conflict is detected. This will hopefully reduce the necessity of
using the 'prog_SHORTNAME' facility.
Mathieu Lirzin [Sun, 18 Jun 2017 17:11:08 +0000 (19:11 +0200)]
maint: Post-release administrivia
* NEWS: Add header line for next release.
* configure.ac (AC_INIT): Bump version number to 1.15.1a.
* m4/amversion.m4: Likewise (auto-updated by "make bootstrap").
This is workaround to a regression introduced by 48107579abadbe857c8299c38d2ca0a3f8f354c8. With current
"lib/texinfo.tex", 'texi2dvi' is not able to produce a valid output
for a Texinfo document containing a @synindex command. As a
consequence the test "t/txinfo-no-clutter.sh" was failing.
* t/txinfo-no-clutter.sh: Remove use of @synindex command.
Mathieu Lirzin [Sun, 5 Mar 2017 09:57:29 +0000 (10:57 +0100)]
maint: Update "lib/texinfo.tex".
This fixes a regression in 48107579abadbe857c8299c38d2ca0a3f8f354c8
where 'texi2dvi' was not able to produce a valid output for a Texinfo
document without text. As a consequence the test "t/silent-texi.sh"
was failing.
Mathieu Lirzin [Thu, 2 Mar 2017 16:50:02 +0000 (17:50 +0100)]
maint: Update fetch URLs.
* maintainer/maint.mk (SV_CVS, SV_GIT_AC): Remove.
(SV_GIT_CF, SV_GIT_GL): Use https for Savannah Git repositories.
(FETCHFILES): Use Gnulib repository as the source of "texinfo.tex",
"gendocs.sh", and "gendocs_template" files.
Jim Meyering [Sun, 1 Jan 2017 16:34:49 +0000 (08:34 -0800)]
maint: update copyright dates for 2017
* all files: Run this command, using update-copyright from gnulib:
UPDATE_COPYRIGHT_FORCE=1 \
UPDATE_COPYRIGHT_USE_INTERVALS=2 \
UPDATE_COPYRIGHT_MAX_LINE_LENGTH=79 \
update-copyright $(git ls-files)
Jim Meyering [Fri, 9 Sep 2016 01:58:43 +0000 (18:58 -0700)]
automake: do not emit rule with two dependents
On a system using our replacement alloca, make would emit
this warning:
target '.deps/alloca.Po' given more than once in the same rule
That arose because automake would emit a rule depending on both
./.deps/alloca.Po and .deps/alloca.Po. Normally, duplicate
dependents are avoided by virtue of their names being keys in
the %dep_files hash, but in this case, that particular file
was specified in two different ways.
* bin/automake.in (handle_ALLOCA): When the $dir prefix is empty,
make it './', to ensure that when we add ./.deps/alloca.Po
it is deduped.
See: http://bugs/gnu/org/22702
Jim Meyering [Tue, 31 May 2016 00:07:52 +0000 (17:07 -0700)]
compile: remove .Tpo file upon failure
When generating a .deps/base.Po file, our emitted rule first writes
to a temporary .Tpo file, so the final creation can be atomic, via
mv's rename. However, when generation of the .Tpo fails, it stop the
process and does not remove that temporary file. And nothing else
ever deletes it, either. Hence, in the unusual case in which one
expects a compilation to fail during a successful build (gnulib's
test-verify.sh does precisely this), a .deps/test-verify.Tpo file
would be left behind, and that would in turn cause a "make distcheck"
failure because that file would exist in one build+distclean hierarchy
but not in the distribution tarball.
* lib/am/depend2.am: Ensure that the temporary file is removed
upon failure.
* t/distcheck-Tpo.sh: New file.
* t/list-of-tests.mk (handwritten_TESTS): Add it.
This addresses bug#23661.
Paul Eggert [Thu, 31 Mar 2016 23:35:29 +0000 (16:35 -0700)]
automake: port to Perl 5.22 and later
Without this change, Perl 5.22 complains "Unescaped left brace in
regex is deprecated" and this is planned to become a hard error in
Perl 5.26. See:
http://search.cpan.org/dist/perl-5.22.0/pod/perldelta.pod#A_literal_%22{%22_should_now_be_escaped_in_a_pattern
* bin/automake.in (substitute_ac_subst_variables): Escape left brace.
Paul Eggert [Tue, 29 Mar 2016 02:44:19 +0000 (19:44 -0700)]
automake: port better to future gzip
* lib/am/distdir.am (dist-gzip, dist-shar, distcheck):
Port better to future versions of gzip, which are planned to
deprecate the GZIP environment variable (Bug#20132).
* lib/compile: Have icl be treated similarly to cl
(scriptversion): Update.
* t/ax/am-test-lib.sh (require_tool): Handle icl.
* t/compile7.sh: Add new test file for icl...
* t/list-of-tests.mk (handwritten_TESTS): ...and use it.
* NEWS: Update.
* THANKS: Update.
Copyright-paperwork-exempt: yes Signed-off-by: Peter Rosin <peda@lysator.liu.se>
* minor:
deps: fix corner-case "make distclean" bug
compile: don't place built object files in $(srcdir), ever ...
tests: fix some bugs in an XFAILing test
deps: 'subdir-object' option now works when foo_SOURCES contains $(var)
NEWS: fix a typo
* deps-pr13928:
deps: fix corner-case "make distclean" bug
compile: don't place built object files in $(srcdir), ever ...
tests: fix some bugs in an XFAILing test
deps: 'subdir-object' option now works when foo_SOURCES contains $(var)