From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <gentoo-commits+bounces-1546827-garchives=archives.gentoo.org@lists.gentoo.org>
Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80])
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
	 key-exchange X25519 server-signature RSA-PSS (2048 bits))
	(No client certificate requested)
	by finch.gentoo.org (Postfix) with ESMTPS id EB27115800A
	for <garchives@archives.gentoo.org>; Fri, 18 Aug 2023 09:30:03 +0000 (UTC)
Received: from pigeon.gentoo.org (localhost [127.0.0.1])
	by pigeon.gentoo.org (Postfix) with SMTP id DFD852BC019;
	Fri, 18 Aug 2023 09:30:02 +0000 (UTC)
Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183])
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
	 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
	(No client certificate requested)
	by pigeon.gentoo.org (Postfix) with ESMTPS id F01102BC019
	for <gentoo-commits@lists.gentoo.org>; Fri, 18 Aug 2023 09:30:01 +0000 (UTC)
Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52])
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
	 key-exchange X25519 server-signature RSA-PSS (4096 bits))
	(No client certificate requested)
	by smtp.gentoo.org (Postfix) with ESMTPS id 3DE05335D5D
	for <gentoo-commits@lists.gentoo.org>; Fri, 18 Aug 2023 09:23:00 +0000 (UTC)
Received: from localhost.localdomain (localhost [IPv6:::1])
	by oystercatcher.gentoo.org (Postfix) with ESMTP id A4C6AE93
	for <gentoo-commits@lists.gentoo.org>; Fri, 18 Aug 2023 09:22:58 +0000 (UTC)
From: "Sam James" <sam@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Content-Transfer-Encoding: 8bit
Content-type: text/plain; charset=UTF-8
Reply-To: gentoo-dev@lists.gentoo.org, "Sam James" <sam@gentoo.org>
Message-ID: <1692350552.43a24d68531ab4ca9ad83d686a620cd2937dbf4f.sam@gentoo>
Subject: [gentoo-commits] repo/gentoo:master commit in: sys-devel/clang-common/
X-VCS-Repository: repo/gentoo
X-VCS-Files: sys-devel/clang-common/clang-common-17.0.0.9999.ebuild sys-devel/clang-common/clang-common-17.0.0_rc2-r1.ebuild sys-devel/clang-common/clang-common-18.0.0.9999.ebuild sys-devel/clang-common/clang-common-18.0.0_pre20230803.ebuild sys-devel/clang-common/clang-common-18.0.0_pre20230810-r1.ebuild sys-devel/clang-common/clang-common-18.0.0_pre20230810.ebuild
X-VCS-Directories: sys-devel/clang-common/
X-VCS-Committer: sam
X-VCS-Committer-Name: Sam James
X-VCS-Revision: 43a24d68531ab4ca9ad83d686a620cd2937dbf4f
X-VCS-Branch: master
Date: Fri, 18 Aug 2023 09:22:58 +0000 (UTC)
Precedence: bulk
List-Post: <mailto:gentoo-commits@lists.gentoo.org>
List-Help: <mailto:gentoo-commits+help@lists.gentoo.org>
List-Unsubscribe: <mailto:gentoo-commits+unsubscribe@lists.gentoo.org>
List-Subscribe: <mailto:gentoo-commits+subscribe@lists.gentoo.org>
List-Id: Gentoo Linux mail <gentoo-commits.gentoo.org>
X-BeenThere: gentoo-commits@lists.gentoo.org
X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply
X-Archives-Salt: 4b60ead0-15eb-4e0b-a8dc-a929c79ea6fc
X-Archives-Hash: 1178caea268502b786bb89ebb296d215

commit:     43a24d68531ab4ca9ad83d686a620cd2937dbf4f
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Fri Aug 18 02:06:05 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Fri Aug 18 09:22:32 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=43a24d68

sys-devel/clang-common: only add default configs (e.g. -fPIE) for native tools

We don't want to add our configs to 'clang', 'clang++', etc because that might
be used for crosscompilation.

Use the prefixed CHOST versions instead.

[I suspect I didn't do this before because the old config logic, before we improved
it upstream, didn't have the fallback behaviour for clang->${CHOST}-clang or similar.]

Closes: https://bugs.gentoo.org/901247
Closes: https://bugs.gentoo.org/912237
Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../clang-common/clang-common-17.0.0.9999.ebuild   |   5 +-
 .../clang-common/clang-common-17.0.0_rc2-r1.ebuild |   5 +-
 .../clang-common/clang-common-18.0.0.9999.ebuild   |   5 +-
 .../clang-common-18.0.0_pre20230803.ebuild         |   5 +-
 ...d => clang-common-18.0.0_pre20230810-r1.ebuild} |   5 +-
 .../clang-common-18.0.0_pre20230810.ebuild         | 191 ---------------------
 6 files changed, 20 insertions(+), 196 deletions(-)

diff --git a/sys-devel/clang-common/clang-common-17.0.0.9999.ebuild b/sys-devel/clang-common/clang-common-17.0.0.9999.ebuild
index a64e6b0f2602..aed6e024eff7 100644
--- a/sys-devel/clang-common/clang-common-17.0.0.9999.ebuild
+++ b/sys-devel/clang-common/clang-common-17.0.0.9999.ebuild
@@ -169,8 +169,11 @@ src_install() {
 		EOF
 	fi
 
+	# We only install config files for ${CHOST} because unprefixed tools
+	# might be used for crosscompilation where e.g. PIE may not be supported.
+	# See bug #912237 and bug #901247.
 	local tool
-	for tool in clang{,++,-cpp}; do
+	for tool in ${CHOST}-clang{,++,-cpp}; do
 		newins - "${tool}.cfg" <<-EOF
 			# This configuration file is used by ${tool} driver.
 			@gentoo-common.cfg

diff --git a/sys-devel/clang-common/clang-common-17.0.0_rc2-r1.ebuild b/sys-devel/clang-common/clang-common-17.0.0_rc2-r1.ebuild
index a64e6b0f2602..aed6e024eff7 100644
--- a/sys-devel/clang-common/clang-common-17.0.0_rc2-r1.ebuild
+++ b/sys-devel/clang-common/clang-common-17.0.0_rc2-r1.ebuild
@@ -169,8 +169,11 @@ src_install() {
 		EOF
 	fi
 
+	# We only install config files for ${CHOST} because unprefixed tools
+	# might be used for crosscompilation where e.g. PIE may not be supported.
+	# See bug #912237 and bug #901247.
 	local tool
-	for tool in clang{,++,-cpp}; do
+	for tool in ${CHOST}-clang{,++,-cpp}; do
 		newins - "${tool}.cfg" <<-EOF
 			# This configuration file is used by ${tool} driver.
 			@gentoo-common.cfg

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 a64e6b0f2602..aed6e024eff7 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
@@ -169,8 +169,11 @@ src_install() {
 		EOF
 	fi
 
+	# We only install config files for ${CHOST} because unprefixed tools
+	# might be used for crosscompilation where e.g. PIE may not be supported.
+	# See bug #912237 and bug #901247.
 	local tool
-	for tool in clang{,++,-cpp}; do
+	for tool in ${CHOST}-clang{,++,-cpp}; do
 		newins - "${tool}.cfg" <<-EOF
 			# This configuration file is used by ${tool} driver.
 			@gentoo-common.cfg

diff --git a/sys-devel/clang-common/clang-common-18.0.0_pre20230803.ebuild b/sys-devel/clang-common/clang-common-18.0.0_pre20230803.ebuild
index a64e6b0f2602..aed6e024eff7 100644
--- a/sys-devel/clang-common/clang-common-18.0.0_pre20230803.ebuild
+++ b/sys-devel/clang-common/clang-common-18.0.0_pre20230803.ebuild
@@ -169,8 +169,11 @@ src_install() {
 		EOF
 	fi
 
+	# We only install config files for ${CHOST} because unprefixed tools
+	# might be used for crosscompilation where e.g. PIE may not be supported.
+	# See bug #912237 and bug #901247.
 	local tool
-	for tool in clang{,++,-cpp}; do
+	for tool in ${CHOST}-clang{,++,-cpp}; do
 		newins - "${tool}.cfg" <<-EOF
 			# This configuration file is used by ${tool} driver.
 			@gentoo-common.cfg

diff --git a/sys-devel/clang-common/clang-common-17.0.0.9999.ebuild b/sys-devel/clang-common/clang-common-18.0.0_pre20230810-r1.ebuild
similarity index 96%
copy from sys-devel/clang-common/clang-common-17.0.0.9999.ebuild
copy to sys-devel/clang-common/clang-common-18.0.0_pre20230810-r1.ebuild
index a64e6b0f2602..aed6e024eff7 100644
--- a/sys-devel/clang-common/clang-common-17.0.0.9999.ebuild
+++ b/sys-devel/clang-common/clang-common-18.0.0_pre20230810-r1.ebuild
@@ -169,8 +169,11 @@ src_install() {
 		EOF
 	fi
 
+	# We only install config files for ${CHOST} because unprefixed tools
+	# might be used for crosscompilation where e.g. PIE may not be supported.
+	# See bug #912237 and bug #901247.
 	local tool
-	for tool in clang{,++,-cpp}; do
+	for tool in ${CHOST}-clang{,++,-cpp}; do
 		newins - "${tool}.cfg" <<-EOF
 			# This configuration file is used by ${tool} driver.
 			@gentoo-common.cfg

diff --git a/sys-devel/clang-common/clang-common-18.0.0_pre20230810.ebuild b/sys-devel/clang-common/clang-common-18.0.0_pre20230810.ebuild
deleted file mode 100644
index a64e6b0f2602..000000000000
--- a/sys-devel/clang-common/clang-common-18.0.0_pre20230810.ebuild
+++ /dev/null
@@ -1,191 +0,0 @@
-# Copyright 1999-2023 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-inherit bash-completion-r1 llvm.org
-
-DESCRIPTION="Common files shared between multiple slots of clang"
-HOMEPAGE="https://llvm.org/"
-
-LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA"
-SLOT="0"
-KEYWORDS=""
-IUSE="
-	default-compiler-rt default-libcxx default-lld llvm-libunwind
-	hardened stricter
-"
-
-PDEPEND="
-	sys-devel/clang:*
-	default-compiler-rt? (
-		sys-devel/clang-runtime[compiler-rt]
-		llvm-libunwind? ( sys-libs/llvm-libunwind[static-libs] )
-		!llvm-libunwind? ( sys-libs/libunwind[static-libs] )
-	)
-	!default-compiler-rt? ( sys-devel/gcc )
-	default-libcxx? ( >=sys-libs/libcxx-${PV}[static-libs] )
-	!default-libcxx? ( sys-devel/gcc )
-	default-lld? ( sys-devel/lld )
-	!default-lld? ( sys-devel/binutils )
-"
-IDEPEND="
-	!default-compiler-rt? ( sys-devel/gcc-config )
-	!default-libcxx? ( sys-devel/gcc-config )
-"
-
-LLVM_COMPONENTS=( clang/utils )
-llvm.org_set_globals
-
-pkg_pretend() {
-	[[ ${CLANG_IGNORE_DEFAULT_RUNTIMES} ]] && return
-
-	local flag missing_flags=()
-	for flag in default-{compiler-rt,libcxx,lld}; do
-		if ! use "${flag}" && has_version "sys-devel/clang[${flag}]"; then
-			missing_flags+=( "${flag}" )
-		fi
-	done
-
-	if [[ ${missing_flags[@]} ]]; then
-		eerror "It seems that you have the following flags set on sys-devel/clang:"
-		eerror
-		eerror "  ${missing_flags[*]}"
-		eerror
-		eerror "The default runtimes are now set via flags on sys-devel/clang-common."
-		eerror "The build is being aborted to prevent breakage.  Please either set"
-		eerror "the respective flags on this ebuild, e.g.:"
-		eerror
-		eerror "  sys-devel/clang-common ${missing_flags[*]}"
-		eerror
-		eerror "or build with CLANG_IGNORE_DEFAULT_RUNTIMES=1."
-		die "Mismatched defaults detected between sys-devel/clang and sys-devel/clang-common"
-	fi
-}
-
-src_install() {
-	newbashcomp bash-autocomplete.sh clang
-
-	insinto /etc/clang
-	newins - gentoo-runtimes.cfg <<-EOF
-		# This file is initially generated by sys-devel/clang-runtime.
-		# It is used to control the default runtimes using by clang.
-
-		--rtlib=$(usex default-compiler-rt compiler-rt libgcc)
-		--unwindlib=$(usex default-compiler-rt libunwind libgcc)
-		--stdlib=$(usex default-libcxx libc++ libstdc++)
-		-fuse-ld=$(usex default-lld lld bfd)
-	EOF
-
-	newins - gentoo-gcc-install.cfg <<-EOF
-		# This file is maintained by gcc-config.
-		# It is used to specify the selected GCC installation.
-	EOF
-
-	newins - gentoo-common.cfg <<-EOF
-		# This file contains flags common to clang, clang++ and clang-cpp.
-		@gentoo-runtimes.cfg
-		@gentoo-gcc-install.cfg
-		@gentoo-hardened.cfg
-		# bug #870001
-		-include "${EPREFIX}/usr/include/gentoo/maybe-stddefs.h"
-	EOF
-
-	# Baseline hardening (bug #851111)
-	newins - gentoo-hardened.cfg <<-EOF
-		# Some of these options are added unconditionally, regardless of
-		# USE=hardened, for parity with sys-devel/gcc.
-		-fstack-clash-protection
-		-fstack-protector-strong
-		-fPIE
-		-include "${EPREFIX}/usr/include/gentoo/fortify.h"
-	EOF
-
-	dodir /usr/include/gentoo
-
-	cat >> "${ED}/usr/include/gentoo/maybe-stddefs.h" <<-EOF || die
-	/* __has_include is an extension, but it's fine, because this is only
-	for Clang anyway. */
-	#if defined __has_include && __has_include (<stdc-predef.h>) && !defined(__GLIBC__)
-	# include <stdc-predef.h>
-	#endif
-	EOF
-
-	local fortify_level=$(usex hardened 3 2)
-	# We have to do this because glibc's headers warn if F_S is set
-	# without optimization and that would at the very least be very noisy
-	# during builds and at worst trigger many -Werror builds.
-	cat >> "${ED}/usr/include/gentoo/fortify.h" <<- EOF || die
-	#ifdef __clang__
-	# pragma clang system_header
-	#endif
-	#ifndef _FORTIFY_SOURCE
-	# if defined(__has_feature)
-	#  define __GENTOO_HAS_FEATURE(x) __has_feature(x)
-	# else
-	#  define __GENTOO_HAS_FEATURE(x) 0
-	# endif
-	#
-	# if defined(__OPTIMIZE__) && __OPTIMIZE__ > 0
-	#  if !defined(__SANITIZE_ADDRESS__) && !__GENTOO_HAS_FEATURE(address_sanitizer) && !__GENTOO_HAS_FEATURE(memory_sanitizer)
-	#   define _FORTIFY_SOURCE ${fortify_level}
-	#  endif
-	# endif
-	# undef __GENTOO_HAS_FEATURE
-	#endif
-	EOF
-
-	if use hardened ; then
-		cat >> "${ED}/etc/clang/gentoo-hardened.cfg" <<-EOF || die
-			# Options below are conditional on USE=hardened.
-			-D_GLIBCXX_ASSERTIONS
-
-			# Analogue to GLIBCXX_ASSERTIONS
-			# https://libcxx.llvm.org/UsingLibcxx.html#assertions-mode
-			# https://libcxx.llvm.org/Hardening.html#using-hardened-mode
-			-D_LIBCPP_ENABLE_HARDENED_MODE=1
-		EOF
-	fi
-
-	if use stricter; then
-		newins - gentoo-stricter.cfg <<-EOF
-			# This file increases the strictness of older clang versions
-			# to match the newest upstream version.
-
-			# clang-16 defaults
-			-Werror=implicit-function-declaration
-			-Werror=implicit-int
-			-Werror=incompatible-function-pointer-types
-
-			# constructs banned by C2x
-			-Werror=deprecated-non-prototype
-
-			# deprecated but large blast radius
-			#-Werror=strict-prototypes
-		EOF
-
-		cat >> "${ED}/etc/clang/gentoo-common.cfg" <<-EOF || die
-			@gentoo-stricter.cfg
-		EOF
-	fi
-
-	local tool
-	for tool in clang{,++,-cpp}; do
-		newins - "${tool}.cfg" <<-EOF
-			# This configuration file is used by ${tool} driver.
-			@gentoo-common.cfg
-		EOF
-	done
-}
-
-pkg_preinst() {
-	if has_version -b sys-devel/gcc-config && has_version sys-devel/gcc
-	then
-		local gcc_path=$(gcc-config --get-lib-path 2>/dev/null)
-		if [[ -n ${gcc_path} ]]; then
-			cat >> "${ED}/etc/clang/gentoo-gcc-install.cfg" <<-EOF
-				--gcc-install-dir="${gcc_path%%:*}"
-			EOF
-		fi
-	fi
-}