[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#72267: automake 1.17 issue with new AM_SILENT_RULES
From: |
Nick Bowler |
Subject: |
bug#72267: automake 1.17 issue with new AM_SILENT_RULES |
Date: |
Wed, 24 Jul 2024 22:36:54 -0400 |
User-agent: |
Mozilla Thunderbird |
On 2024-07-23 13:23, Francis Dupont wrote:
> I use homebrew on macOS Sonoma 14.5. This package system
> installed the version 1.17 automake (I use a binary package
> but the source one refers to this metadata:
> desc "Tool for generating GNU Standards-compliant Makefiles"
> homepage "https://www.gnu.org/software/automake/"
> url "https://ftp.gnu.org/gnu/automake/automake-1.17.tar.xz"
> mirror "https://ftpmirror.gnu.org/automake/automake-1.17.tar.xz"
> sha256 "8920c1fc411e13b90bf704ef9db6f29d540e76d232cb3b2c9f4dc4cc599bd990"
> license "GPL-2.0-or-later"
>
> My problem is simple: configure generated by autoreconf includes
> this line:
> AM_DEFAULT_VERBOSITY=0ac_config_headers="$ac_config_headers config.h"
>
> i.e. the last macro generating AM_DEFAULT_VERBOSITY setting
> misses to add a newline after its expansion.
>
> I can propose an easy patch which fixes the problem for me:
> at the end of the silent.m4 file (m4 directory in sources
> but installed at another location my homebrew add a newline
> in the AM_SILENT_RULES macro setting AM_DEFAULT_VERBOSITY:
>
> --- /usr/local/Cellar/automake/1.17/share/aclocal-1.17/silent.m4-orig-nl
> 2024-07-12 07:21:44
> +++ /usr/local/Cellar/automake/1.17/share/aclocal-1.17/silent.m4
> 2024-07-23 07:40:50
> @@ -68,4 +68,5 @@
> # empty being verbose).
> AC_DEFUN([AM_SILENT_RULES],
> [AC_REQUIRE([_AM_SILENT_RULES])
> -AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1])])
> +AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1])
> +])
As far as I can see nothing in Automake expands AM_SILENT_RULES so
there must be an expansion written somewhere in configure.ac which is
producing the problematic construct.
The usual convention for an autoconf macro that ends in a shell command
is not to include a newline. The newline present where a macro is
expanded serves to terminate the command. Otherwise we'd have to write
dnl after basiclaly everything just to avoid unneeded newlines.
However, it is true that this is a change in behaviour. Automake 1.16.5
didn't follow this convention and it does produce a newline at the end
of the AM_SILENT_RULES expansion.
So before, if you wrote something like:
AM_SILENT_RULES([no])something else without intervening newline
it would work before (and avoid an extra newline) but now indeed it
probably will not work.
If possible, it is probably a good idea to change whatever package was
broken by this. But at the same time, it is probably not a big deal to
restore the extra newline in Automake. But maybe use m4_newline() to
make it extremely obvious that it was put there on purpose.
Cheers,
Nick