Subject: bug#71847: Automake 1.16.90 regression mistakenly "not using Libtool"

From: Dave Hart <[email-masked]>
Date: Sat, 29 Jun 2024 17:18:15 +0000

I'm seeing a problem building ntpd from a Bitkeeper repo that doesn't occur
with a make dist tarball when using Automake 2.71 and Automake 1.16.90 or
1.16.92 that reliably does not occur with Automake 1.16.5.  To enable easy
reproduction, I've made a tarball of the source from a checkout of NTP
4.2.8p18 available at:

https://davehart.net/ntp/test/ntp-4.2.8p18-vcs.tar.xz

Most of my testing was on FreeBSD 12.1 with stock m4, perl 5.32.1 and
Automake 2.71 using Automake 1.16.5, 1.16.90, and 1.16.92 from tarball
source:

FreeBSD hart.chi1.ntfo.org 12.1-RELEASE_SI FreeBSD 12.1-RELEASE_SI TEMPLATE
 amd64

I've reproduced the failure on Ubuntu 22.04 , gm4 1.4.18, perl 5.34.0, and
both stock Autoconf 2.71 and 2.72 from tarball source, and the success with
distro Automake 1.16.5:

Linux dlh-22-04 6.5.0-1022-azure #23~22.04.1-Ubuntu SMP Thu May  9 17:59:24
UTC 2024 x86_64 x86_64 x86_64 GNU/Linux

While the FreeBSD system is building on NFS with 1s mtime resolution, the
Ubuntu is building on local ext4 with subsecond mtimes.

The error occurs during `autoreconf -v -i` like so

# tar xf ntp-4.2.8p18-vcs.tar.xz
# cd ntp-*-vcs
# ./bootstrap 2>&1 | tee bootstrap.log

I'm attaching logs showing the behavior on Ubuntu with ac 2.72 and am
1.16.5 vs 1.16.92.  The differences up to the failure are below.

The bootstrap script is modified slightly compared to the one in
ntp-4.2.8p18.tar.gz and our bk repos to sort the filenames touched early in
the script to minimize unhelpful diff clutter.

--- bootstrap-am-1.16.5.log 2024-06-29 16:54:55.290591021 +0000
+++ bootstrap-am-1.16.92.log    2024-06-29 17:00:56.366844439 +0000
@@ -19,162 +19,33 @@
 autoreconf: running: aclocal -I m4
 autoreconf: configure.ac: tracing
 autoreconf: configure.ac: creating directory build-aux
-autoreconf: running: libtoolize --copy
-libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'build-aux'.
-libtoolize: copying file 'build-aux/ltmain.sh'
-libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
-libtoolize: copying file 'm4/libtool.m4'
-libtoolize: copying file 'm4/ltoptions.m4'
-libtoolize: copying file 'm4/ltsugar.m4'
-libtoolize: copying file 'm4/ltversion.m4'
-libtoolize: copying file 'm4/lt~obsolete.m4'
+autoreconf: configure.ac: not using Libtool
 autoreconf: configure.ac: not using Intltool
 autoreconf: configure.ac: not using Gtkdoc
-autoreconf: running: aclocal -I m4
-autoreconf: running: /usr/local/bin/autoconf
-configure.ac:46: warning: The macro 'AC_PROG_GCC_TRADITIONAL' is obsolete.
-configure.ac:46: You should run autoupdate.
-../lib/autoconf/c.m4:1676: AC_PROG_GCC_TRADITIONAL is expanded from...
-configure.ac:46: the top level
-configure.ac:357: warning: The macro 'AC_HEADER_TIME' is obsolete.
+autoreconf: running: /usr/bin/autoconf
+configure.ac:357: warning: The macro `AC_HEADER_TIME' is obsolete.
 configure.ac:357: You should run autoupdate.
-../lib/autoconf/headers.m4:702: AC_HEADER_TIME is expanded from...
+./lib/autoconf/headers.m4:743: AC_HEADER_TIME is expanded from...
 configure.ac:357: the top level
-configure.ac:805: warning: The macro 'AC_TRY_LINK' is obsolete.
+configure.ac:805: warning: The macro `AC_TRY_LINK' is obsolete.
 configure.ac:805: You should run autoupdate.
-../lib/autoconf/general.m4:2918: AC_TRY_LINK is expanded from...
+./lib/autoconf/general.m4:2920: AC_TRY_LINK is expanded from...
 m4/acx_pthread.m4:86: ACX_PTHREAD is expanded from...
 configure.ac:805: the top level
 configure.ac:1012: warning: AC_OUTPUT should be used without arguments.
 configure.ac:1012: You should run autoupdate.
-autoreconf: running: /usr/local/bin/autoheader
+autoreconf: running: /usr/bin/autoheader
 autoreconf: running: automake --add-missing --copy --no-force
 configure.ac:24: installing 'build-aux/compile'
 configure.ac:26: installing 'build-aux/config.guess'
 configure.ac:26: installing 'build-aux/config.sub'
 configure.ac:14: installing 'build-aux/install-sh'
 configure.ac:14: installing 'build-aux/missing'
+Makefile.am:161: error: Libtool library used but 'LIBTOOL' is undefined
+Makefile.am:161:   The usual way to define 'LIBTOOL' is to add 'LT_INIT'
+Makefile.am:161:   to 'configure.ac' and run 'aclocal' and 'autoconf'
again.
+Makefile.am:161:   If 'LT_INIT' is in 'configure.ac', make sure
+Makefile.am:161:   its definition is in aclocal's search path.
 Makefile.am: installing 'build-aux/depcomp'
 parallel-tests: installing 'build-aux/test-driver'
-autoreconf: Leaving directory 'libevent'
-autoreconf: running: libtoolize --copy
[...]
-ls: invalid tab size: './aclocal.m4'
+autoreconf: error: automake failed with exit status: 1
-- 
Cheers,
Dave Hart