FYI
On 20/09/2026 18:31, Simon McVittie wrote:
On Wed, 22 Oct 2025 at 01:51:44 +1300, Amos Jeffries wrote:
On Tue, 21 Oct 2025 00:00:05 +0200 Santiago Vila wrote:
automake="automake (>= ${AM_VERSION})"
In fact automake's version number has an epoch, so to be a meaningful
version constraint this would have to be automake (>=
1:${AM_VERSION}), which at the time of writing should generate a
dependency on:
automake (>= 1:1.19)
I believe that should be:
automake="automake (= ${AM_VERSION})"
Unfortunately that won't work, because that would only match a version
of automake versioned *exactly* 1.19, and a complete Debian package
version like 1:1.19-2 isn't an exact match for that. The (= )
dependency syntax is usually only usable within a single source
package, not between source packages.
Otherwise the same issues will reappear with [automake 1.20] saying
"missing [aclocal-1.19]"
Yes, it seems that libltdl-dev does hard-code a specific version at
build-time: for example /usr/share/libtool/configure mentions
am__api_version='1.19' and looks for automake-${am__api_version} and
aclocal-${am__api_version}). At the moment, this works, but as soon as
automake is updated to 1.20, it will fail.
Do other packages depend on libltdl-dev shipping a pre-generated
Makefile.in, configure and aclocal.m4 for itself, or are the packages
that regressed with the new Automake version just picking up m4 macros
from libltdl-dev's aclocal.m4 accidentally?
Having libltdl-dev ship these generated files seems really fragile:
they contain a lot of implementation details that are going to change
over time. If other packages don't actually need these files, then
dropping them from libltdl-dev would bypass this whole class of issue.
Or, if it's necessary to have files in libltdl-dev that hard-code a
specific automake API version, then I think it would have to generate
a dependency on something like
automake (>= 1:${AM_VERSION}), automake (<< 1:${AM_NEXT_VERSION})
where AM_VERSION would be 1.19 at the time of writing, and
AM_NEXT_VERSION would currently be 1.20. And then libtool would need a
binNMU every time there is a transition to a new new Automake API
version, to update these dependencies to the new version range.
Luckily, all the files that hard-code Automake API version 1.19 seem
to be in libltdl-dev (which is Architecture: any and therefore can be
binNMU'd), not in the libtool binary package (which is Architecture:
all and can't be updated without a sourceful upload).
It might be better if automake still had a versioned Provides for
automake-${AM_VERSION}, preferably autogenerated at automake's own
build-time instead of being hard-coded - and then libltdl-dev could
return to having a dependency on automake-${AM_VERSION} if it needs
to. The semantics could be, for example:
* depend on "automake" if you will run automake, aclocal, etc.
* depend on "automake (>= 1:x.y)" if you need functionality that was
new in
automake x.y but is also expected to be provided in all newer versions
* depend on "automake-x.y" if you will run automake-x.y, aclocal-x.y,
etc.
(best avoided, but some specific packages might need it)
smcv
See the parallel discussion on the auto* mailing list:
https://lists.gnu.org/archive/html/autoconf/2026-09/msg00006.html
Alastair
--
Alastair McKinstry,
GPG: 82383CE9165B347C787081A2CBE6BB4E5D9AD3A5
e: [email protected], im: @alastair:mckinstry.ie
https://mastodon.ie/@amckinstry