From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <gentoo-commits+bounces-1454892-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 E95F1158020
	for <garchives@archives.gentoo.org>; Tue,  8 Nov 2022 22:46:29 +0000 (UTC)
Received: from pigeon.gentoo.org (localhost [127.0.0.1])
	by pigeon.gentoo.org (Postfix) with SMTP id 0D14EE09FD;
	Tue,  8 Nov 2022 22:46:29 +0000 (UTC)
Received: from smtp.gentoo.org (dev.gentoo.org [IPv6:2001:470:ea4a:1:5054:ff:fec7:86e4])
	(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 pigeon.gentoo.org (Postfix) with ESMTPS id DE2BAE09FD
	for <gentoo-commits@lists.gentoo.org>; Tue,  8 Nov 2022 22:46:28 +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 EEFB8340AED
	for <gentoo-commits@lists.gentoo.org>; Tue,  8 Nov 2022 22:46:27 +0000 (UTC)
Received: from localhost.localdomain (localhost [IPv6:::1])
	by oystercatcher.gentoo.org (Postfix) with ESMTP id 80A386DF
	for <gentoo-commits@lists.gentoo.org>; Tue,  8 Nov 2022 22:46:26 +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: <1667947579.7acd5f570128aedd2b027bda84b3838539eba49e.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-15.0.4-r1.ebuild sys-devel/clang-common/clang-common-15.0.4.9999.ebuild sys-devel/clang-common/clang-common-15.0.4.ebuild sys-devel/clang-common/clang-common-16.0.0.9999.ebuild sys-devel/clang-common/clang-common-16.0.0_pre20221023-r1.ebuild sys-devel/clang-common/clang-common-16.0.0_pre20221023-r2.ebuild sys-devel/clang-common/clang-common-16.0.0_pre20221104-r1.ebuild sys-devel/clang-common/clang-common-16.0.0_pre20221104.ebuild
X-VCS-Directories: sys-devel/clang-common/
X-VCS-Committer: sam
X-VCS-Committer-Name: Sam James
X-VCS-Revision: 7acd5f570128aedd2b027bda84b3838539eba49e
X-VCS-Branch: master
Date: Tue,  8 Nov 2022 22:46:26 +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: 77fafd61-dfe6-44e4-a96e-1a0539ad8eb3
X-Archives-Hash: 52f8d02a7ef1ef0887928734e694d9d8

commit:     7acd5f570128aedd2b027bda84b3838539eba49e
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Tue Nov  8 22:42:36 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Tue Nov  8 22:46:19 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=7acd5f57

sys-devel/clang-common: drop -Werror=deprecated-non-prototype for 15.x, promote to 16.x

Clang 16.x will make -Wimplicit-int, -Wimplicit-function-declaration, and
-Wincompatible-function-pointer-type error by default.

Clang 15.x+ also warns on -Wdeprecated-non-prototype but it's not becoming
fatal yet. It'll be an error when the defaults in compilers change to C23.

There's a LOT of breakage with -Werror=deprecated-non-prototype, and we do
care about it, but the first batch of errors mentioned above are more
important for the time being. We need to be able to triage and prioritise
the bugs.

So:
* Clang 15 USE=stricter: only -Wimplict-int -Wimplicit-function-declaration
  and -Wincompatible-function-pointer-type are errors.

* Clang 16 USE=stricter: upstream defaults (which include ^ as we're
  doing for clang 15) + -Wdeprecated-non-prototype as an error, because presumably
  if you set USE=stricter on *16*, you want something harsher than already
  will ship upstream.

This more accurately lets developers in Gentoo set USE=stricter on clang-common
for 15.x and get Clang 16.x behaviour rather than scaring the life out of them.

Thanks to Ionen for talking this out with me.

Bug: https://bugs.gentoo.org/876985
See: 930fe2268cbedda61e37fada65e57352d25d8761
Signed-off-by: Sam James <sam <AT> gentoo.org>

 ...15.0.4.ebuild => clang-common-15.0.4-r1.ebuild} |   3 -
 .../clang-common/clang-common-15.0.4.9999.ebuild   |   3 -
 .../clang-common/clang-common-16.0.0.9999.ebuild   |   6 +
 ...d => clang-common-16.0.0_pre20221023-r2.ebuild} |   6 +
 ...d => clang-common-16.0.0_pre20221104-r1.ebuild} |   3 +
 .../clang-common-16.0.0_pre20221104.ebuild         | 126 ---------------------
 6 files changed, 15 insertions(+), 132 deletions(-)

diff --git a/sys-devel/clang-common/clang-common-15.0.4.ebuild b/sys-devel/clang-common/clang-common-15.0.4-r1.ebuild
similarity index 98%
rename from sys-devel/clang-common/clang-common-15.0.4.ebuild
rename to sys-devel/clang-common/clang-common-15.0.4-r1.ebuild
index 819076f87723..f7293fd3cb2b 100644
--- a/sys-devel/clang-common/clang-common-15.0.4.ebuild
+++ b/sys-devel/clang-common/clang-common-15.0.4-r1.ebuild
@@ -97,9 +97,6 @@ src_install() {
 			-Werror=implicit-function-declaration
 			-Werror=implicit-int
 			-Werror=incompatible-function-pointer-types
-
-			# constructs banned by C2x
-			-Werror=deprecated-non-prototype
 		EOF
 
 		cat >> "${ED}/etc/clang/gentoo-common.cfg" <<-EOF || die

diff --git a/sys-devel/clang-common/clang-common-15.0.4.9999.ebuild b/sys-devel/clang-common/clang-common-15.0.4.9999.ebuild
index d5e7941a5fc8..3e43f51a0aab 100644
--- a/sys-devel/clang-common/clang-common-15.0.4.9999.ebuild
+++ b/sys-devel/clang-common/clang-common-15.0.4.9999.ebuild
@@ -97,9 +97,6 @@ src_install() {
 			-Werror=implicit-function-declaration
 			-Werror=implicit-int
 			-Werror=incompatible-function-pointer-types
-
-			# constructs banned by C2x
-			-Werror=deprecated-non-prototype
 		EOF
 
 		cat >> "${ED}/etc/clang/gentoo-common.cfg" <<-EOF || die

diff --git a/sys-devel/clang-common/clang-common-16.0.0.9999.ebuild b/sys-devel/clang-common/clang-common-16.0.0.9999.ebuild
index 3e43f51a0aab..e9669ee1adcc 100644
--- a/sys-devel/clang-common/clang-common-16.0.0.9999.ebuild
+++ b/sys-devel/clang-common/clang-common-16.0.0.9999.ebuild
@@ -97,6 +97,12 @@ src_install() {
 			-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

diff --git a/sys-devel/clang-common/clang-common-16.0.0_pre20221023-r1.ebuild b/sys-devel/clang-common/clang-common-16.0.0_pre20221023-r2.ebuild
similarity index 96%
rename from sys-devel/clang-common/clang-common-16.0.0_pre20221023-r1.ebuild
rename to sys-devel/clang-common/clang-common-16.0.0_pre20221023-r2.ebuild
index 3e43f51a0aab..e9669ee1adcc 100644
--- a/sys-devel/clang-common/clang-common-16.0.0_pre20221023-r1.ebuild
+++ b/sys-devel/clang-common/clang-common-16.0.0_pre20221023-r2.ebuild
@@ -97,6 +97,12 @@ src_install() {
 			-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

diff --git a/sys-devel/clang-common/clang-common-15.0.4.9999.ebuild b/sys-devel/clang-common/clang-common-16.0.0_pre20221104-r1.ebuild
similarity index 98%
copy from sys-devel/clang-common/clang-common-15.0.4.9999.ebuild
copy to sys-devel/clang-common/clang-common-16.0.0_pre20221104-r1.ebuild
index d5e7941a5fc8..e9669ee1adcc 100644
--- a/sys-devel/clang-common/clang-common-15.0.4.9999.ebuild
+++ b/sys-devel/clang-common/clang-common-16.0.0_pre20221104-r1.ebuild
@@ -100,6 +100,9 @@ src_install() {
 
 			# 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

diff --git a/sys-devel/clang-common/clang-common-16.0.0_pre20221104.ebuild b/sys-devel/clang-common/clang-common-16.0.0_pre20221104.ebuild
deleted file mode 100644
index 3e43f51a0aab..000000000000
--- a/sys-devel/clang-common/clang-common-16.0.0_pre20221104.ebuild
+++ /dev/null
@@ -1,126 +0,0 @@
-# Copyright 1999-2022 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
-	stricter
-"
-
-PDEPEND="
-	sys-devel/clang:*
-	default-compiler-rt? (
-		sys-devel/clang-runtime[compiler-rt]
-		llvm-libunwind? ( sys-libs/llvm-libunwind )
-		!llvm-libunwind? ( sys-libs/libunwind )
-	)
-	!default-compiler-rt? ( sys-devel/gcc )
-	default-libcxx? ( >=sys-libs/libcxx-${PV} )
-	!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
-	EOF
-
-	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
-		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
-}