From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <gentoo-commits+bounces-1576383-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 347A1158013
	for <garchives@archives.gentoo.org>; Mon,  4 Dec 2023 08:33:16 +0000 (UTC)
Received: from pigeon.gentoo.org (localhost [127.0.0.1])
	by pigeon.gentoo.org (Postfix) with SMTP id 69E1A2BC014;
	Mon,  4 Dec 2023 08:33:15 +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 529C32BC014
	for <gentoo-commits@lists.gentoo.org>; Mon,  4 Dec 2023 08:33:15 +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 92F64335DEC
	for <gentoo-commits@lists.gentoo.org>; Mon,  4 Dec 2023 08:33:14 +0000 (UTC)
Received: from localhost.localdomain (localhost [IPv6:::1])
	by oystercatcher.gentoo.org (Postfix) with ESMTP id 04E75AE2
	for <gentoo-commits@lists.gentoo.org>; Mon,  4 Dec 2023 08:33:13 +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: <1701678780.619727ef09e9464f656c4d95d4fd9f6fb966fc38.sam@gentoo>
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-lang/mono/
X-VCS-Repository: repo/gentoo
X-VCS-Files: dev-lang/mono/mono-6.12.0.199-r1.ebuild
X-VCS-Directories: dev-lang/mono/
X-VCS-Committer: sam
X-VCS-Committer-Name: Sam James
X-VCS-Revision: 619727ef09e9464f656c4d95d4fd9f6fb966fc38
X-VCS-Branch: master
Date: Mon,  4 Dec 2023 08:33:13 +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: db1c5469-cc5b-469a-8a70-82f054f984a4
X-Archives-Hash: 87d0b4a524c67ec7d51d0f2ca5d23995

commit:     619727ef09e9464f656c4d95d4fd9f6fb966fc38
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Mon Dec  4 08:11:09 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Dec  4 08:33:00 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=619727ef

dev-lang/mono: filter LTO unconditionally, force -O2, no strict aliasing

It's somewhat of a miracle mono works at all nowadays, especially given
all the scary warnings, so force a conservative build.

Bug: https://bugs.gentoo.org/915985
Signed-off-by: Sam James <sam <AT> gentoo.org>

 dev-lang/mono/mono-6.12.0.199-r1.ebuild | 129 ++++++++++++++++++++++++++++++++
 1 file changed, 129 insertions(+)

diff --git a/dev-lang/mono/mono-6.12.0.199-r1.ebuild b/dev-lang/mono/mono-6.12.0.199-r1.ebuild
new file mode 100644
index 000000000000..204593665083
--- /dev/null
+++ b/dev-lang/mono/mono-6.12.0.199-r1.ebuild
@@ -0,0 +1,129 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CHECKREQS_DISK_BUILD="4500M"
+inherit autotools check-reqs flag-o-matic linux-info mono-env pax-utils multilib-minimal
+
+DESCRIPTION="Mono runtime and class libraries, a C# compiler/interpreter"
+HOMEPAGE="https://mono-project.com"
+SRC_URI="https://download.mono-project.com/sources/mono/${P}.tar.xz"
+
+LICENSE="MIT LGPL-2.1 GPL-2 BSD-4 NPL-1.1 Ms-PL GPL-2-with-linking-exception IDPL"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 -riscv ~x86 ~amd64-linux"
+IUSE="doc minimal nls pax-kernel selinux xen"
+
+# Note: mono works incorrect with older versions of libgdiplus
+# Details on dotnet overlay issue: https://github.com/gentoo/dotnet/issues/429
+DEPEND="
+	app-crypt/mit-krb5[${MULTILIB_USEDEP}]
+	sys-libs/zlib[${MULTILIB_USEDEP}]
+	ia64? ( sys-libs/libunwind )
+	!minimal? ( >=dev-dotnet/libgdiplus-6.0.2 )
+	nls? ( sys-devel/gettext )
+"
+RDEPEND="
+	${DEPEND}
+	app-misc/ca-certificates
+	selinux? ( sec-policy/selinux-mono )
+"
+# CMake is used for bundled deps
+BDEPEND="
+	dev-util/cmake
+	sys-devel/bc
+	app-alternatives/yacc
+	pax-kernel? ( sys-apps/elfix )
+"
+
+PATCHES=(
+	"${FILESDIR}"/${PN}-5.12-try-catch.patch
+	"${FILESDIR}"/${PN}-6.12.0.122-disable-automagic-ccache.patch
+)
+
+pkg_pretend() {
+	linux-info_pkg_setup
+
+	if use kernel_linux ; then
+		if linux_config_exists ; then
+			linux_chkconfig_builtin SYSVIPC || die "SYSVIPC not enabled in the kernel"
+		else
+			# https://github.com/gentoo/gentoo/blob/f200e625bda8de696a28338318c9005b69e34710/eclass/linux-info.eclass#L686
+			ewarn "kernel config not found"
+			ewarn "If CONFIG_SYSVIPC is not set in your kernel .config, mono will hang while compiling."
+			ewarn "See https://bugs.gentoo.org/261869 for more info."
+		fi
+	fi
+
+	# bug #687892
+	check-reqs_pkg_pretend
+}
+
+pkg_setup() {
+	mono-env_pkg_setup
+	check-reqs_pkg_setup
+}
+
+src_prepare() {
+	# We need to sed in the paxctl-ng -mr in the runtime/mono-wrapper.in so it don't
+	# get killed in the build proces when MPROTECT is enabled, bug #286280
+	# RANDMMAP kills the build process too, bug #347365
+	# We use paxmark.sh to get PT/XT logic, bug #532244
+	if use pax-kernel ; then
+		ewarn "We are disabling MPROTECT on the mono binary."
+
+		# issue 9 : https://github.com/Heather/gentoo-dotnet/issues/9
+		sed '/exec "/ i\paxmark.sh -mr "$r/@mono_runtime@"' -i "${S}"/runtime/mono-wrapper.in || die "Failed to sed mono-wrapper.in"
+	fi
+
+	default
+
+	# PATCHES contains configure.ac patch
+	eautoreconf
+	multilib_copy_sources
+}
+
+multilib_src_configure() {
+	# Many, many unsafe warnings. Miscompiled with -O3 too: bug #915985.
+	append-flags -O2 -fno-strict-aliasing
+	filter-lto
+
+	local myeconfargs=(
+		$(use_with xen xen_opt)
+		--without-ikvm-native
+		--disable-dtrace
+		--enable-system-aot
+		$(multilib_native_use_with doc mcs-docs)
+		$(use_enable nls)
+	)
+
+	# Workaround(?) for bug #779025
+	# May be able to do a real fix by adjusting path used?
+	if multilib_is_native_abi ; then
+		myeconfargs+=( --enable-system-aot )
+	else
+		myeconfargs+=( --disable-system-aot )
+	fi
+
+	econf "${myeconfargs[@]}"
+}
+
+multilib_src_test() {
+	emake -C mcs/tests check
+}
+
+multilib_src_install() {
+	default
+
+	# Remove files not respecting LDFLAGS and that we are not supposed to provide, see Fedora
+	# mono.spec and http://www.mail-archive.com/mono-devel-list@lists.ximian.com/msg24870.html
+	# for reference.
+	rm -f "${ED}"/usr/lib/mono/{2.0,4.5}/mscorlib.dll.so || die
+	rm -f "${ED}"/usr/lib/mono/{2.0,4.5}/mcs.exe.so || die
+}
+
+pkg_postinst() {
+	# bug #762265
+	cert-sync "${EROOT}"/etc/ssl/certs/ca-certificates.crt
+}