summaryrefslogtreecommitdiff
path: root/eclass
diff options
context:
space:
mode:
authorEli Schwartz <eschwartz@gentoo.org>2024-09-25 13:51:52 -0400
committerEli Schwartz <eschwartz@gentoo.org>2024-09-25 14:22:23 -0400
commit58128e2701881192e5d551d6b1d27bac3f6cde58 (patch)
tree172dace7b243dd7d5ab31e136645032c9aa86a76 /eclass
parentdev-cpp/xsimd: fix python version for doc (diff)
downloadgentoo-58128e2701881192e5d551d6b1d27bac3f6cde58.tar.gz
gentoo-58128e2701881192e5d551d6b1d27bac3f6cde58.tar.bz2
gentoo-58128e2701881192e5d551d6b1d27bac3f6cde58.zip
toolchain.eclass: ban the use of rlibtool
dev-build/slibtool provides an alternative implementation of libtool which is intended to hook itself into and replace the ltmain.sh-based ./libtool shell scripts installed into an autotools build system. It has some interesting quirks. In particular, it takes the idea of "packagers don't want to install libtool archives for random libraries because nobody uses them and pkg-config is better" and runs with it. It runs quite far with it, as it doesn't install them at all without a new flag passed to slibtool. This is redundant with our existing approach of deleting them in src_install when we know they are useless, and is downright broken in cases such as GCC, where the libtool archives are load-bearing and the resultant compiler is, in their absence, nonfunctional. slibtool supports a variety of wrappers to enable reasonable functionality which it by default disabled. The official recommendation is you are supposed to use "rlibtool" to replace ./libtool as it performs heuristics based on the generated config. But we actually need "rclibtool", which both respects the generated config and also generates the *.la archives and leaves it up to ebuilds to decide whether they should be removed. Raise a fatal error if the user has misconfigured slibtool. This prevents the user from building a broken and malformed GCC. Closes: https://bugs.gentoo.org/932245 Closes: https://bugs.gentoo.org/924150 Closes: https://bugs.gentoo.org/931268 Closes: https://bugs.gentoo.org/931279 Signed-off-by: Eli Schwartz <eschwartz@gentoo.org> Reviewed-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'eclass')
-rw-r--r--eclass/toolchain.eclass3
1 files changed, 3 insertions, 0 deletions
diff --git a/eclass/toolchain.eclass b/eclass/toolchain.eclass
index 0557db974035..53b64a470e37 100644
--- a/eclass/toolchain.eclass
+++ b/eclass/toolchain.eclass
@@ -574,6 +574,9 @@ toolchain_pkg_setup() {
# bug #265283
unset LANGUAGES
+ # bug #932245
+ [[ ${LIBTOOL} = rlibtool ]] && die "\$LIBTOOL is using rlibtool from dev-build/slibtool. You must not use rlibtool, only rclibtool."
+
# See https://www.gnu.org/software/make/manual/html_node/Parallel-Output.html
# Avoid really confusing logs from subconfigure spam, makes logs far
# more legible.