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