We need to rename the existing LLVM profiles to stop people using them when they "just" want to use an LLVM toolchain, not realising they're losing ABI compatibility (see bug 944478). Such profiles will require gcc as they will use libstdc++. Do we want to even have such profiles? Is there a point? How do we justify having such profiles (we wouldn't have a profile for different non-ABI breaking CFLAGS, for example)? I suppose there's value in having LLVM profiles which allow people to enable using clang, or maybe there isn't and we should just tell people to set it manually instead. The issue being that if we're using libstdc++, people can't depclean gcc, so the value of it is questionable (not useless, but it's not definitely valuable either). Thoughts?
The bug has been referenced in the following commit(s): https://gitweb.gentoo.org/sites/www.git/commit/?id=20f7b720b707e1c057c72c94a224ce53c7559572 commit 20f7b720b707e1c057c72c94a224ce53c7559572 Author: Sam James <sam@gentoo.org> AuthorDate: 2025-02-11 06:22:45 +0000 Commit: Sam James <sam@gentoo.org> CommitDate: 2025-02-11 06:22:45 +0000 downloads: add warning for LLVM stages The "LLVM stages" right now are really "pure LLVM" stages which means they're not ABI compatible with the regular ones (which use libstdc++ rather than libc++/libcxx) and you cannot use GCC as a fallback if something fails to build. This can be reworked if/when we have libstdc++-based LLVM stages (see bug #944482 and the related bug #944478). Bug: https://bugs.gentoo.org/944478 Bug: https://bugs.gentoo.org/944482 Closes: https://bugs.gentoo.org/944483 Signed-off-by: Sam James <sam@gentoo.org> _includes/downloads/amd64-advanced.html | 10 ++++++++++ _includes/downloads/arm64-advanced.html | 10 ++++++++++ 2 files changed, 20 insertions(+)
I see value in having explicit libc++ profiles as I've hacked them together myself for various reasons over the years. Any use case I have for an LLVM profile is 90% about libc++ and 10% about using clang/clang++ as a system compiler. Specifically when trying to debug applications with thread sanitizer you need an environment where everything linked to the application, including the standard library, is instrumented. In cases where I need that I will use Portage's prefix feature to build a minimal system in a directory I can chroot into which is based on libc++ and where everything is compiled with the sanitizers I want to use.