Outdated libtool

From Gentoo Wiki
Jump to:navigation Jump to:search

Update: All blockers in the tracker bug #668736 were solved in Mar 2021.

The problem

An error occurs when building and linking a package which hasn't had 'libtool' files updated for a long time. When linking, libtool throws away the flag '-flto', which apparently does not know, because 'libtool' generated by autoreconf + ./configure somewhen has become ancient and obsolete.

How to find affected packages

Try to propagate the flag '-flto' by supplementing CFLAGS, or/and CXXFLAGS, and LDFLAGS with it. If linking fails with the message 'not an object or archive', or 'file not recognized: File format not recognized' or something similar this is likely the case. It is highly likely that 'libtool' needs to be updated according to recent autotools

Packages required to get rid of the problem

  • >=sys-devel/autoconf-2.69-r4
  • >=sys-devel/automake-1.15.1-r2
  • >=sys-devel/libtool-2.4.6-r3

How to fix it

First of all, update automake, autoconf and libtool in the system. Refer to the clause

Then, different packages require different approaches to do away with the issue. The solution depends on how autotools-related files have been generated, and this is project-specific thing

Here below the list of some packages and solutions are shown:

dev-libs/libdaemon

From the root of the project, execute:

user $rm -rf m4/*
user $autoreconf --install --force

media-libs/libuninameslist

From the root of the project, execute:

user $autoreconf --install --force

net-libs/libasyncns

From the root of the project, execute:

user $autoreconf --install --force

sys-fs/inotify-tools

From the root of the project, execute:

user $autoreconf --install --force

dev-libs/chmlib

From the root of the project, execute:

user $autoreconf --install --force

media-libs/libid3tag

From the root of the project, execute:

user $autoconf --force configure.ac > configure

app-crypt/mhash

From the root of the project, execute:

user $autoreconf --install --force

dev-libs/libIDL

From the root of the project, execute:

user $autoreconf --install --force

References

  • Tracker bug #668736
  • initial report with some explanation bug #668404 (should be copied to the wiki and improved here)