diff options
author | Alfred Wingate <parona@protonmail.com> | 2023-11-18 20:13:31 +0200 |
---|---|---|
committer | Sam James <sam@gentoo.org> | 2023-11-23 13:26:27 +0000 |
commit | 6956bbfbf02b6c9d75143454eb93779b42a21c24 (patch) | |
tree | 0f2e3b98f286bf76c1bccd7d93af399040e838ed /sys-devel | |
parent | dev-util/crash: fix un-resolvable "sys_open" symbol issue (diff) | |
download | gentoo-6956bbfbf02b6c9d75143454eb93779b42a21c24.tar.gz gentoo-6956bbfbf02b6c9d75143454eb93779b42a21c24.tar.bz2 gentoo-6956bbfbf02b6c9d75143454eb93779b42a21c24.zip |
sys-devel/clang-common: install config files for llvm internal triples
* Also drop a redundant doclang_cfg invocation.
* This change is to ensure that invoking clang instead of ${TARGET}-clang
also uses the installed config files. Problem being that llvm sees its
target triple differently from what Gentoo uses and therefore may lead
to it ignoring the installed config files. For example x86 Gentoo uses
i686-pc-linux-gnu as its CHOST and this leads to
i686-{pc,unknown,gentoo}-linux-gnu config files to be installed, this is
while llvm internally prefers to use i386-pc-linux-gnu as its target when
not invoked explicitly with a target in the executable name or with --target=
leading it to ingore them when invoked with just "clang". This also affects
multilib so on amd64 clang -m32 exhibits the same issue.
* This doesn't address irregularities with prefix installs where the os version
and the lack of vendor field may lead to this same issue.
Signed-off-by: Alfred Wingate <parona@protonmail.com>
Closes: https://github.com/gentoo/gentoo/pull/33893
Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'sys-devel')
-rw-r--r-- | sys-devel/clang-common/clang-common-17.0.4-r1.ebuild (renamed from sys-devel/clang-common/clang-common-17.0.4.ebuild) | 38 | ||||
-rw-r--r-- | sys-devel/clang-common/clang-common-17.0.5-r1.ebuild (renamed from sys-devel/clang-common/clang-common-17.0.5.ebuild) | 38 | ||||
-rw-r--r-- | sys-devel/clang-common/clang-common-18.0.0.9999.ebuild | 38 | ||||
-rw-r--r-- | sys-devel/clang-common/clang-common-18.0.0_pre20231104-r1.ebuild (renamed from sys-devel/clang-common/clang-common-18.0.0_pre20231104.ebuild) | 38 | ||||
-rw-r--r-- | sys-devel/clang-common/clang-common-18.0.0_pre20231111-r1.ebuild (renamed from sys-devel/clang-common/clang-common-18.0.0_pre20231111.ebuild) | 38 |
5 files changed, 165 insertions, 25 deletions
diff --git a/sys-devel/clang-common/clang-common-17.0.4.ebuild b/sys-devel/clang-common/clang-common-17.0.4-r1.ebuild index 696ae8ee4996..99047721833e 100644 --- a/sys-devel/clang-common/clang-common-17.0.4.ebuild +++ b/sys-devel/clang-common/clang-common-17.0.4-r1.ebuild @@ -63,7 +63,7 @@ pkg_pretend() { fi } -doclang_cfg() { +_doclang_cfg() { local triple="${1}" local tool @@ -93,6 +93,37 @@ doclang_cfg() { done } +doclang_cfg() { + local triple="${1}" + + _doclang_cfg ${triple} + + # LLVM may have different arch names in some cases. For example in x86 + # profiles the triple uses i686, but llvm will prefer i386 if invoked + # with "clang" on x86 or "clang -m32" on x86_64. The gentoo triple will + # be used if invoked through ${CHOST}-clang{,++,-cpp} though. + # + # To make sure the correct triples are installed, + # see Triple::getArchTypeName() in llvm/lib/TargetParser/Triple.cpp + # and compare with CHOST values in profiles. + + local abi=${triple%%-*} + case ${abi} in + armv4l|armv4t|armv5tel|armv6j|armv7a) + _doclang_cfg ${triple/${abi}/arm} + ;; + i686) + _doclang_cfg ${triple/${abi}/i386} + ;; + sparc) + _doclang_cfg ${triple/${abi}/sparcel} + ;; + sparc64) + _doclang_cfg ${triple/${abi}/sparcv9} + ;; + esac +} + src_install() { newbashcomp bash-autocomplete.sh clang @@ -204,10 +235,7 @@ src_install() { # We only install config files for supported ABIs because unprefixed tools # might be used for crosscompilation where e.g. PIE may not be supported. - # See bug #912237 and bug #901247. - doclang_cfg "${CHOST}" - - # Just ${CHOST} won't do due to bug #912685. + # See bug #912237 and bug #901247. Just ${CHOST} won't do due to bug #912685. local abi for abi in $(get_all_abis); do local abi_chost=$(get_abi_CHOST "${abi}") diff --git a/sys-devel/clang-common/clang-common-17.0.5.ebuild b/sys-devel/clang-common/clang-common-17.0.5-r1.ebuild index 696ae8ee4996..99047721833e 100644 --- a/sys-devel/clang-common/clang-common-17.0.5.ebuild +++ b/sys-devel/clang-common/clang-common-17.0.5-r1.ebuild @@ -63,7 +63,7 @@ pkg_pretend() { fi } -doclang_cfg() { +_doclang_cfg() { local triple="${1}" local tool @@ -93,6 +93,37 @@ doclang_cfg() { done } +doclang_cfg() { + local triple="${1}" + + _doclang_cfg ${triple} + + # LLVM may have different arch names in some cases. For example in x86 + # profiles the triple uses i686, but llvm will prefer i386 if invoked + # with "clang" on x86 or "clang -m32" on x86_64. The gentoo triple will + # be used if invoked through ${CHOST}-clang{,++,-cpp} though. + # + # To make sure the correct triples are installed, + # see Triple::getArchTypeName() in llvm/lib/TargetParser/Triple.cpp + # and compare with CHOST values in profiles. + + local abi=${triple%%-*} + case ${abi} in + armv4l|armv4t|armv5tel|armv6j|armv7a) + _doclang_cfg ${triple/${abi}/arm} + ;; + i686) + _doclang_cfg ${triple/${abi}/i386} + ;; + sparc) + _doclang_cfg ${triple/${abi}/sparcel} + ;; + sparc64) + _doclang_cfg ${triple/${abi}/sparcv9} + ;; + esac +} + src_install() { newbashcomp bash-autocomplete.sh clang @@ -204,10 +235,7 @@ src_install() { # We only install config files for supported ABIs because unprefixed tools # might be used for crosscompilation where e.g. PIE may not be supported. - # See bug #912237 and bug #901247. - doclang_cfg "${CHOST}" - - # Just ${CHOST} won't do due to bug #912685. + # See bug #912237 and bug #901247. Just ${CHOST} won't do due to bug #912685. local abi for abi in $(get_all_abis); do local abi_chost=$(get_abi_CHOST "${abi}") diff --git a/sys-devel/clang-common/clang-common-18.0.0.9999.ebuild b/sys-devel/clang-common/clang-common-18.0.0.9999.ebuild index b58ed6b486c2..c70a4d8bd045 100644 --- a/sys-devel/clang-common/clang-common-18.0.0.9999.ebuild +++ b/sys-devel/clang-common/clang-common-18.0.0.9999.ebuild @@ -62,7 +62,7 @@ pkg_pretend() { fi } -doclang_cfg() { +_doclang_cfg() { local triple="${1}" local tool @@ -92,6 +92,37 @@ doclang_cfg() { done } +doclang_cfg() { + local triple="${1}" + + _doclang_cfg ${triple} + + # LLVM may have different arch names in some cases. For example in x86 + # profiles the triple uses i686, but llvm will prefer i386 if invoked + # with "clang" on x86 or "clang -m32" on x86_64. The gentoo triple will + # be used if invoked through ${CHOST}-clang{,++,-cpp} though. + # + # To make sure the correct triples are installed, + # see Triple::getArchTypeName() in llvm/lib/TargetParser/Triple.cpp + # and compare with CHOST values in profiles. + + local abi=${triple%%-*} + case ${abi} in + armv4l|armv4t|armv5tel|armv6j|armv7a) + _doclang_cfg ${triple/${abi}/arm} + ;; + i686) + _doclang_cfg ${triple/${abi}/i386} + ;; + sparc) + _doclang_cfg ${triple/${abi}/sparcel} + ;; + sparc64) + _doclang_cfg ${triple/${abi}/sparcv9} + ;; + esac +} + src_install() { newbashcomp bash-autocomplete.sh clang @@ -203,10 +234,7 @@ src_install() { # We only install config files for supported ABIs because unprefixed tools # might be used for crosscompilation where e.g. PIE may not be supported. - # See bug #912237 and bug #901247. - doclang_cfg "${CHOST}" - - # Just ${CHOST} won't do due to bug #912685. + # See bug #912237 and bug #901247. Just ${CHOST} won't do due to bug #912685. local abi for abi in $(get_all_abis); do local abi_chost=$(get_abi_CHOST "${abi}") diff --git a/sys-devel/clang-common/clang-common-18.0.0_pre20231104.ebuild b/sys-devel/clang-common/clang-common-18.0.0_pre20231104-r1.ebuild index b58ed6b486c2..c70a4d8bd045 100644 --- a/sys-devel/clang-common/clang-common-18.0.0_pre20231104.ebuild +++ b/sys-devel/clang-common/clang-common-18.0.0_pre20231104-r1.ebuild @@ -62,7 +62,7 @@ pkg_pretend() { fi } -doclang_cfg() { +_doclang_cfg() { local triple="${1}" local tool @@ -92,6 +92,37 @@ doclang_cfg() { done } +doclang_cfg() { + local triple="${1}" + + _doclang_cfg ${triple} + + # LLVM may have different arch names in some cases. For example in x86 + # profiles the triple uses i686, but llvm will prefer i386 if invoked + # with "clang" on x86 or "clang -m32" on x86_64. The gentoo triple will + # be used if invoked through ${CHOST}-clang{,++,-cpp} though. + # + # To make sure the correct triples are installed, + # see Triple::getArchTypeName() in llvm/lib/TargetParser/Triple.cpp + # and compare with CHOST values in profiles. + + local abi=${triple%%-*} + case ${abi} in + armv4l|armv4t|armv5tel|armv6j|armv7a) + _doclang_cfg ${triple/${abi}/arm} + ;; + i686) + _doclang_cfg ${triple/${abi}/i386} + ;; + sparc) + _doclang_cfg ${triple/${abi}/sparcel} + ;; + sparc64) + _doclang_cfg ${triple/${abi}/sparcv9} + ;; + esac +} + src_install() { newbashcomp bash-autocomplete.sh clang @@ -203,10 +234,7 @@ src_install() { # We only install config files for supported ABIs because unprefixed tools # might be used for crosscompilation where e.g. PIE may not be supported. - # See bug #912237 and bug #901247. - doclang_cfg "${CHOST}" - - # Just ${CHOST} won't do due to bug #912685. + # See bug #912237 and bug #901247. Just ${CHOST} won't do due to bug #912685. local abi for abi in $(get_all_abis); do local abi_chost=$(get_abi_CHOST "${abi}") diff --git a/sys-devel/clang-common/clang-common-18.0.0_pre20231111.ebuild b/sys-devel/clang-common/clang-common-18.0.0_pre20231111-r1.ebuild index b58ed6b486c2..c70a4d8bd045 100644 --- a/sys-devel/clang-common/clang-common-18.0.0_pre20231111.ebuild +++ b/sys-devel/clang-common/clang-common-18.0.0_pre20231111-r1.ebuild @@ -62,7 +62,7 @@ pkg_pretend() { fi } -doclang_cfg() { +_doclang_cfg() { local triple="${1}" local tool @@ -92,6 +92,37 @@ doclang_cfg() { done } +doclang_cfg() { + local triple="${1}" + + _doclang_cfg ${triple} + + # LLVM may have different arch names in some cases. For example in x86 + # profiles the triple uses i686, but llvm will prefer i386 if invoked + # with "clang" on x86 or "clang -m32" on x86_64. The gentoo triple will + # be used if invoked through ${CHOST}-clang{,++,-cpp} though. + # + # To make sure the correct triples are installed, + # see Triple::getArchTypeName() in llvm/lib/TargetParser/Triple.cpp + # and compare with CHOST values in profiles. + + local abi=${triple%%-*} + case ${abi} in + armv4l|armv4t|armv5tel|armv6j|armv7a) + _doclang_cfg ${triple/${abi}/arm} + ;; + i686) + _doclang_cfg ${triple/${abi}/i386} + ;; + sparc) + _doclang_cfg ${triple/${abi}/sparcel} + ;; + sparc64) + _doclang_cfg ${triple/${abi}/sparcv9} + ;; + esac +} + src_install() { newbashcomp bash-autocomplete.sh clang @@ -203,10 +234,7 @@ src_install() { # We only install config files for supported ABIs because unprefixed tools # might be used for crosscompilation where e.g. PIE may not be supported. - # See bug #912237 and bug #901247. - doclang_cfg "${CHOST}" - - # Just ${CHOST} won't do due to bug #912685. + # See bug #912237 and bug #901247. Just ${CHOST} won't do due to bug #912685. local abi for abi in $(get_all_abis); do local abi_chost=$(get_abi_CHOST "${abi}") |