[PATCH] Use AC_SUBST_FILE to replace @DEPEND@ with contents of .depend

Michael Forney mforney at mforney.org
Mon Apr 19 13:26:46 AEST 2021

AC_SUBST_FILE[0] is similar to AC_SUBST, but instead of replacing
a variable with its value, it replaces a variable with the contents
of the file named by the value. This is exactly what we want in
order to insert the contents of .depend at the end of the Makefile.

Using AC_SUBST for this purpose poses some problems if $as_echo
involves running an external command (i.e. printf is not built-in),
in which case the size of .depend may exceed the operating system's
argument size limit. In particular, since autoconf 2.70, $as_echo
no longer uses `print -r` on ksh shells[1], causing the following
message when creating config.log on Linux with oksh:

  ./configure: printf: Argument list too long

AC_SUBST_FILE requires the substitution string to be on its own
line, so drop the unneeded leading comment (the first line of .depend
has a '#' of its own).

[0] https://www.gnu.org/software/autoconf/manual/html_node/Setting-Output-Variables.html
[1] http://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=commitdiff;h=2b59b6f8a79b8bf77e178ff4e5aa0ede433d39cf;hp=bea5177adc0c924fe7483509a5e38a6d49319fcb
Note that I only get this error if I manually generate configure
from a git clone since the distributed tarballs used autoconf-2.69.
It also seems that the error only affects the contents of config.log,
not the Makefile (which is processed with an awk script).

 Makefile.in  | 2 +-
 configure.ac | 3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/Makefile.in b/Makefile.in
index b749206d..4710c2fe 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -772,4 +772,4 @@ package: $(CONFIGFILES) $(MANPAGES) $(TARGETS)
 		sh buildpkg.sh; \
+ at DEPEND@
diff --git a/configure.ac b/configure.ac
index 1c2757ca..af2379df 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5442,7 +5442,8 @@ AC_SUBST([TEST_SSH_IPV6], [$TEST_SSH_IPV6])
 AC_SUBST([UNSUPPORTED_ALGORITHMS], [$unsupported_algorithms])
-AC_SUBST([DEPEND], [$(cat $srcdir/.depend)])

More information about the openssh-unix-dev mailing list