Summary: | media-libs/kvazaar-2.2.0 fails compilation with LTO | ||
---|---|---|---|
Product: | Gentoo Linux | Reporter: | Paolo Pedroni <paolo.pedroni> |
Component: | Current packages | Assignee: | Gentoo Media-video project <media-video> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | eschwartz93, jstein, paolo.pedroni |
Priority: | Normal | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
See Also: | https://bugs.gentoo.org/show_bug.cgi?id=907263 | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Bug Depends on: | |||
Bug Blocks: | 618550 | ||
Attachments: | kvazaar-2.2.0:20240211-124935.log.gz |
Description
Paolo Pedroni
2024-02-11 14:27:08 UTC
This is a -Wstringop-overflow, not really an LTO issue. I cannot even reproduce it at all, but I think that what happened here is: the configure.ac sets -Werror, and we append-flags -Wno-error. libtool drops only -Wno-error at link time, and LTO reruns various passes, triggering this warning which is escalated to -Werror. Recent versions of libtool / eltpatch somehow allow both through? Really, if you think about it this is just bug 907263. The bug has been closed via the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e6308710dff6e3e7469e536d5e947494ca080fd4 commit e6308710dff6e3e7469e536d5e947494ca080fd4 Author: Eli Schwartz <eschwartz93@gmail.com> AuthorDate: 2024-04-07 22:24:11 +0000 Commit: Sam James <sam@gentoo.org> CommitDate: 2024-04-07 23:33:45 +0000 media-libs/kvazaar: don't manually enable -Werror autotools is genius software. When you add a flag called --disable-werror, it isn't actually a flag called --disable-werror. It's a flag called AC_ARG_ENABLE(werror), which expands "code if argument was passed on the command line" and "code if argument was not passed on the command line" blocks. When you say "--disable-werror" all you actually do is add a formatted help text, which is otherwise totally ignored by autoconf. kvazaar had an AC_ARG_ENABLE that defined an action-if-argument-was-defined-on-the-command-line of nothing, and an action-if-argument-was-excluded-on-the-command-line of adding -Werror to CFLAGS. Back in commit 019c44a86ad017ea54703b7594b076cb0b840707, this was then used to work around the default addition of -Werror. Logical. In the very next release, upstream changed the help text to advertise the --enable-* form, and switched it to action-if-argument-was-defined-on-the-command-line of adding -Werror, action-if-argument-was-excluded-on-the-command-line of nothing. See: https://github.com/ultravideo/kvazaar/commit/033bc6bc45b0c6b200a4227208d2fa6263e09166 This naturally meant that passing --disable-werror would add -Werror, in addition to setting the ignored shell variable enable_werror=no. So for seven years, we've been building with -Werror. Yay! During that very version bump, --disable-werror was never removed. Instead, append-flags was used to add an additional gcc switch back off, per the redundancy requirements of the Department of Redundancy Department's required approach to redundantly specifying redundant flags. This also appears to tickle edge cases in LTO due to libtool dropping some, but not all flags... sometimes. Leading to LTO being performed with global -Werror. Bug: https://bugs.gentoo.org/618434 Closes: https://bugs.gentoo.org/907263 Closes: https://bugs.gentoo.org/924296 Signed-off-by: Eli Schwartz <eschwartz93@gmail.com> Signed-off-by: Sam James <sam@gentoo.org> media-libs/kvazaar/kvazaar-2.1.0.ebuild | 5 +---- media-libs/kvazaar/kvazaar-2.2.0.ebuild | 5 +---- media-libs/kvazaar/kvazaar-2.3.0-r1.ebuild | 3 --- media-libs/kvazaar/kvazaar-9999.ebuild | 3 --- 4 files changed, 2 insertions(+), 14 deletions(-) |