Open etiennebonnafoux opened 1 year ago
Hi @etiennebonnafoux
Thanks for reporting this! Let me transfer this issue to Conan-center-index repository because it sounds like a problem in the recipe and not in the Conan client per se.
The first step would be to try to isolate the issue. Please try to reproduce with conan install --requires=pulseaudio/14.2 --build=missing
, and report the results here.
Hello,
Following your instruction I get the same kind of bug, it has something to do with undefined reference to __exp2_finite
Here is the pastebin of the logs.
Related:
After doing some digging, it's clear this issue is caused by an ABI change introduced in glibc 2.31, which removed __*_finite
math functions. The reason for the change can be found in the glibc mailing list:
For some of the functions in this file; pow, powf, log, logf, log2, log2f, exp, expf, exp2, and exp2f; the default implementations have been improved to handle the special cases and the *_finite names are just aliases of the normal name and so the asm attribute isn't accomplishing anything.
This itself should not have been a problem due to the functions not actually being a part of the public glibc API. However, both GCC and Clang apparently incorrectly relied on the private functions (https://reviews.llvm.org/D74712). This bug has been fixed in Clang since v10.0.0, but is still present in GCC.
They were only ever an ABI (selected by use of -ffinite-math-only or options implying it, which resulted in the headers using "asm" to redirect calls to some libm functions), not an API. The change means that ABI has turned into compat symbols (only available for existing binaries, not for anything newly linked, not included in static libm at all, not included in shared libm for future glibc ports such as RV32), so, yes, in any case where tools generate direct calls to those functions (rather than just following the "asm" annotations on function declarations in the headers), they need to stop doing so.
This issue only affects libraries that have -ffast-math
and in turn -ffinite-math-only
set, so the fix should be very simple: add -fno-finite-math-only
to the compiler flags (as done here and suggested in this helpful blog post).
Of course, the root cause of this problem is the timeless issue of handling libc compatibility correctly in distributed binaries: https://github.com/conan-io/conan/issues/3972
Sorry for the late answer.
It seems to be a solution but as I am a beginner with Conan and more generally in C++, I am not sure to understand how to fix it. Should I had -fno-finite-math-only
somewhere in my conanfile.txt ? Thanks again for your precious help.
Sorry for the late answer. It seems to be a solution but as I am a beginner with Conan and more generally in C++, I am not sure to understand how to fix it. Should I had
-fno-finite-math-only
somewhere in my conanfile.txt ? Thanks again for your precious help.
The simplest workaround as a consumer should be to add --build=mpg123
to the conan install
or conan create
command. As long as you build the problematic packages locally, instead of relying on the binaries provided by the repo, you should be fine.
Sorry to bother you again but with the same configuration as detail above and with the command conan install . --output-folder=build --build=mpg123 --build=missing
I get the same error. What I am missing ? Thank you for your help.
Environment details
Steps to reproduce
I try to install sdl 2 so my conanfile.txt is
Then I do the command
conan install . --output-folder=build --build=missing
.Sdl depends on Pulseaudio and when it comes to this library the installation bugs.
Logs
here is the end of the log where the bug seems to be. The full log is here