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:
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:
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)
Assume we have package satisfying the following conditions:
(1) automatic dependency tracking is enabled;
(2) the 'subdir-objects' Automake option is enabled;
(3) the package uses a recursive make setup.
Also assume that:
(a) a subdir Makefile declares a foo_SOURCES variable containing
a source file in the parent directory;
(b) that parent Makefile declare a compiled program itself.
Then BSD and Solaris make used to fail when running "make distclean",
because the 'distclean' target of the subdir Makefile removed the
whole '.deps' directory before the parent Makefile was done with the
included '.Po' makefile fragments in that directory. This issue was
revealed by failures in the 'subobj-vpath-pr13928.sh' test when those
make implementations were used.
We fix the issue by ensuring the 'distclean' target of any Makefile
only removed the '.Po' makefile fragments included by it, rather than
the whole '.deps' directory where such files resides.
This change should be the last step in fixing automake bug#13928
for good.
* bin/automake.in (handle_languages), lib/am/depend.am: Adjust
to implement the new 'distclean' logic.
* t/pr224.sh: Adjust to avoid a spurious failure.
* PLANS/subdir-objects.txt: Update.
compile: don't place built object files in $(srcdir), ever ...
... even when a source file is specified as '$(srdir)/foo.c' or
'$(top_srcdir)/bar.c'. And ditto for dependency-tracking makefile
fragments (those under '.deps' directories).
Such issues used to occur when the 'subdir-objects' option was given.
This change should fix the second and last part of automake bug#13928.
See also bug#16375 and bug#15293.
* NEWS: Update.
* bin/automake.in (handle_single_transform): Make sure object files
and dependency-tracking makefile fragments coming from source like
'$(srcdir)/foo.c' and '$(top_srcdir)/bar.c' are placed respectively
under $(builddir) and $(top_builddir).
* t/subobj-vpath-pr13928.sh: Enhance to expose even more aspects
of the bug we've just fixed.
* t/subobj-pr13928-more-langs.sh: New test, similar to the one above,
but with non-C languages as well.
* t/list-of-tests.mk (XFAIL_TESTS): Remove 'subobj-vpath-pr13928.sh',
it's now supposed to pass.
(handwritten_TESTS): Add 'subobj-pr13928-more-langs.sh'.
deps: 'subdir-object' option now works when foo_SOURCES contains $(var)
Following a suggestions of Johan Kristensen, we have config.status use
'make' invocations rather than Makefile-parsing 'sed' hacks to bootstrap
the dependency-tracking '.Po' and '.Plo' makefile fragments. To handle
the inclusion of such files that are still missing when make is first
we basically generate a temporary Makefile without these includes, and
call 'make' on that Makefile.
This fixes the serious bug bug#13928, which was an hard blocker to make the
behavior mandated by the 'subdir-object' active by default (which we want
to do in Automake 2.0).
The issue has also been reported in bug#15919.
* NEWS, THANKS: Update.
* bin/automake.in (handle_languages): Add a trailing "marking" comment
("# am--include-marker") to the generated Makefile lines issuing 'include'
directives for the dependency-tracking '.Po' and '.Plo' makefile fragments.
Also rename the generated Makefile variable 'am__depfiles_maybe' to the
clearer 'am__maybe_remake_depfiles'.
Minor unrelated refactoring.
* lib/am/configure.am: Adjust to account for the 'am__depfiles_maybe' ->
'am__maybe_remake_depfiles' renaming.
* lib/am/depend.am: Add rules to generate a dummy version of all the
dependency-tracking '.Po' and '.Plo' makefile fragments.
* m4/depout.m4: Use make invocations rather than Makefile-parsing sed hacks
to bootstrap the dependency-tracking '.Po' and '.Plo' makefile fragments.
We still use some sed trickery in order to remove the inclusion of the
still non existing .Po and .Plo files from the Makefile we invoke make
upon; this is done stripping lines that contain the magic string
"# am--include-marker".
* m4/make.m4 (AM_MAKE_INCLUDE): Given that now automake generates Makefiles
containing include statements with trailing comment, adjust the checks done
here to make sure $MAKE support that; e.g., "include foo.mk # comment"
rather than just "include foo.mk".
Also refactor and adjust to leave better debugging info in config.log.
* t/postproc.sh: Rename ...
* t/depend-postproc.sh: ... to this, and adjust and enhance.
* t/list-of-tests.mk (handwritten_TESTS): Adjust.
(XFAIL_TESTS): Remove 't/subobj-indir-pr13928.sh', which is now succeeding.
* t/subobj-indir-pr13928.sh: Simplify slightly, now that we expect it to
pass.
* t/depcomp8a.sh: Adjust grepping check to account for the changes in
the generated Makefile, and tp be somewhat more robust in light of possible
future modifications.
* t/depcomp8b.sh: Likewise.
* t/subobj11b.sh: Likewise.
* t/subobj11c.sh: Likewise.
* t/extra-sources.sh: Likewise.
* t/lex-depend-grep.sh: Likewise.
* t/lex-depend-cxx.sh: Add a command to help debugging in case of test
failure.
Helped-by: Johan Kristensen <johankristensen@gmail.com> Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* minor:
sync: update third-part files from upstream
maint: fix typo in error message of a maintainer-only rule
maint: bump version number 1.15 -> 1.15a ('minor' Git branch)
release: stable minor release 1.15
NEWS: minor improvements and fixed some typos and grammaros
* lib/config.sub: This.
* lib/INSTALL, lib/config.guess, lib/gitlog-to-changelog, lib/gnupload,
lib/update-copyright: And this (but only for copyright year update, no
real semantic change)
Merge branch 'minor' into micro after 1.15 release
And bump version number: 1.15 -> 1.15.0a
* minor:
release: stable minor release 1.15
NEWS: minor improvements and fixed some typos and grammaros
docs: "make distcheck" implementation details are not to be abused
NEWS: improve and adjust in light of the oncoming 1.15 release
Fix dumb logic error preventing $install_sh from being be overridden
Expose automake bug#19311
build: fix race in parallel builds
init: ensure $ac_aux_dir is defined before being used
plans: enabling subdir-object by default is blocked on bug#13928
maint: update copyright years
maint: sync files from upstream ("make fetch")
Typofixes in warning messages and manual
NEWS: a typofix, and better word wrapping
parallel-tests: avoid possible implicit "make all" in test-suite.log rule
Allow user to extend .PRECIOUS target
cosmetics: remove a couple of extra trailing white spaces
tests: fix a spurious failure on Mac OS X
docs: make clear the JAVA primary is frozen
install-sh: a slightly better diagnostic, and tests enhancements
install-sh: be stricter in catching invalid usages
tests: more significant names for some tests
tests: some cosmetic fixes
tests: more significant names for a test
docs: drop a few obsolescent FIXME/TODO comments, and associated text
testsuite harness: report test exit status in log file
TAP driver: no need to invoke AC_PROG_AWK directly
TAP driver: remove perl implementation (move it into contrib/)
NEWS: stop reporting "new" Automake versioning scheme
cosmetics: untabify the install-sh script
install-sh: assume that "set -f" and "set +f" work...
install-sh: assume ${var:-value} works as expected
install-sh: assume 'dirname' is available and working correctly
post-release: micro version bump (1.14a)
* minor:
docs: "make distcheck" implementation details are not to be abused
NEWS: improve and adjust in light of the oncoming 1.15 release
shell-no-trail-bslash: improve diagnostic in case of failure
docs: "make distcheck" implementation details are not to be abused
* doc/automake.texi: State explicitly and in detail that the exact location
and the exact structure of the subdirectory used by "make distcheck" is to
be considered an implementation detail, which can change at any time.
shell-no-trail-bslash: improve diagnostic in case of failure
* t/ax/shell-no-trail-bslash.in: Here, by fixing a typo in a
variable name and a logic error.
* t/self-check-shell-no-trail-bslash.sh: Enhance to catch the
issue.
tests: make script 'shell-no-trail-bslash' simpler and more robust
This solves spurious failure in the 'check-no-trailing-backslash-in-recipes'
target for Automake-NG.
This is basically a backport of Automake-NG commit v1.14.1-1010-g85aae58;
the point is to minimize the amount of spurious diffs between the mainline
Automake and the Automake-NG source trees.
* t/ax/shell-no-trail-bslash.in: Simplify and fortify.
* t/self-check-shell-no-trail-bslash.sh: Enhance.
texinfo: remove hack about info files in CLEANFILES variables
Automake used to implement an undocumented hack causing '.info' files
that appeared to be cleaned (by e.g. being listed in the CLEANFILES
variable) to also be built in the builddir rather than in the srcdir;
this was for backward compatibility with packages such as Texinfo,
which did things like:
info_TEXINFOS = texinfo.txi info-stnd.texi info.texi
DISTCLEANFILES = texinfo texinfo-* info*.info*
# Do not create info files for distribution.
dist-info:
in order not to distribute .info files.
Now that we have the 'info-in-builddir' option that explicitly causes
generated '.info' files to be placed in the builddir, this hack is no
longer necessary, and we can remove it (after having deprecated it in
the Automake 1.14 release already).
* bin/automake.in (handle_texinfo_helper): Remove the hack. Adjust
comments accordingly.
* NEWS: Update.
* t/txinfo23.sh: Delete as obsolete.
* t/txinfo25.sh: Likewise.
* t/txinfo24.sh: Likewise.
* t/txinfo28.sh: Delete as mostly obsolete, its only still relevant
parts moved ...
* t/mdate5.sh: ... into this test.
* t/txinfo-clean.sh: Remove references to deleted tests.
* t/list-of-tests.mk: Adjust.
tests: fix spurious failure in test on TEXINFO_TEX overriding
* t/txinfo-override-texinfo-tex.sh: Here. The issue was pre-existing, but
has been only recently exposed by the fix for automake bug#18286 "distcheck
fails to detect missing files" (see commit v1.14.1-4-g01a7a4a) and by the
BSD make semantics. To convince yourself this change actually makes sense
semantically, see https://sourceware.org/ml/binutils/2012-06/msg00004.html
* t/lex-noyywrap.sh: Here.
* t/instmany-mans.sh: And here.
* t/instmany-python.sh: And here.
* t/instmany.sh: And here.
* t/parallel-tests-concurrency.sh: And here.