With multilib systems, the 2nd arch run will return false when tc-is-lto is called since filter-lto was called in the previous one. On my system it builds x86 first, which skips LTO due to previous bugs, but still calls filter-lto which means when it gets to build amd64 tc-is-lto will return false and skip LTO. I did check an object file with readelf -S when it should have compiled with LTO and it did not. I did try moving the LTO stuff to src_prepare (anything only called once before src_configure will work, but I thought it made sense to do it there)
Created attachment 883955 [details] Fixed ffmpeg ebuild This is what I ended up doing which works out fine (verified with checking object files with readelf -S)
Created attachment 883956 [details] Min-repo ebuild demonstrating issue
Created attachment 883957 [details] Min-repo ebuild eclass-debug.log
I couldn't find any other multilib packages in the tree that has this issue, but media-libs/x264 would if LTO support was added (they support LTO as a config flag) which does make me wonder if pkg_setup would be a better place to do a fix like this.
Splitting the logic across multiple phases here feels kind of awkward. I sort of feel like a better approach would be to handle the LTO in a subshell, possibly a subshell for the whole src_configure. Similar handling exists for meson.eclass, which calculates arguments including -Db_lto=true inside a subshell since commit e9189344b971f7ee0e2bec36650c57dbade4f122.
Created attachment 895028 [details] diff of the changes to the ebuild
The bug has been closed via the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=d9a701f0e4dfecb71ff54d4c8dba1a4494a2f3ea commit d9a701f0e4dfecb71ff54d4c8dba1a4494a2f3ea Author: Sam James <sam@gentoo.org> AuthorDate: 2024-06-04 03:23:30 +0000 Commit: Sam James <sam@gentoo.org> CommitDate: 2024-06-04 03:25:05 +0000 media-video/ffmpeg: fix LTO handling with multilib Checking ABI and filtering based on that doesn't work in multilib_src_configure because of contamination & the order the phases / ABIs run in. Closes: https://bugs.gentoo.org/923491 Thanks-to: Michael Cook <mackal.cook@gmail.com> Signed-off-by: Sam James <sam@gentoo.org> media-video/ffmpeg/ffmpeg-6.1.1-r6.ebuild | 15 ++++++++++----- media-video/ffmpeg/ffmpeg-9999.ebuild | 15 ++++++++++----- 2 files changed, 20 insertions(+), 10 deletions(-)