commit:     ff754ddf643973da9cabf7778504572e6451b2e8
Author:     Matthew Smith <matthew <AT> gentoo <DOT> org>
AuthorDate: Sat Aug 20 06:35:44 2022 +0000
Commit:     Matthew Smith <matthew <AT> gentoo <DOT> org>
CommitDate: Sat Aug 20 06:37:32 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ff754ddf

sys-devel/mold: fix build with gcc-12

Prevent overeager stripping of compiler flags by vendored
tbb CMake scripts.

No revbump as installed files are the same.

Closes: https://bugs.gentoo.org/865837
Signed-off-by: Matthew Smith <matthew <AT> gentoo.org>

 .../files/mold-1.4.1-tbb-flags-stripping.patch     | 28 ++++++++++++++++++++++
 sys-devel/mold/mold-1.4.1.ebuild                   |  2 ++
 sys-devel/mold/mold-9999.ebuild                    |  5 ++++
 3 files changed, 35 insertions(+)

diff --git a/sys-devel/mold/files/mold-1.4.1-tbb-flags-stripping.patch 
b/sys-devel/mold/files/mold-1.4.1-tbb-flags-stripping.patch
new file mode 100644
index 000000000000..58cfca04132e
--- /dev/null
+++ b/sys-devel/mold/files/mold-1.4.1-tbb-flags-stripping.patch
@@ -0,0 +1,28 @@
+https://github.com/oneapi-src/oneTBB/pull/716
+https://bugs.gentoo.org/865837
+
+From 9595b9699ae6863d1e0cf770a89728eafcaf8845 Mon Sep 17 00:00:00 2001
+From: Christoph Erhardt <[email protected]>
+Date: Wed, 5 Jan 2022 15:13:32 +0100
+Subject: [PATCH] Fix overeager stripping of compile flag
+
+The existing regex strips all occurrences of the given string from
+`${CMAKE_CXX_FLAGS}`, regardless of whether it is just a substring of a
+flag. For instance, `-Werror=format-security` gets truncated to
+`=format-security`.
+
+The new regex makes sure that only whole words get replaced.
+
+Signed-off-by: Christoph Erhardt <[email protected]>
+--- a/third-party/tbb/cmake/utils.cmake
++++ b/third-party/tbb/cmake/utils.cmake
+@@ -18,7 +18,7 @@ macro(tbb_remove_compile_flag flag)
+     set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY 
COMPILE_OPTIONS ${_tbb_compile_options})
+     unset(_tbb_compile_options)
+     if (CMAKE_CXX_FLAGS)
+-        string(REGEX REPLACE ${flag} "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
++        string(REGEX REPLACE "(^|[ \t\r\n]+)${flag}($|[ \t\r\n]+)" " " 
CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
+     endif()
+ endmacro()
+ 
+

diff --git a/sys-devel/mold/mold-1.4.1.ebuild b/sys-devel/mold/mold-1.4.1.ebuild
index 1aac8ca1098e..804483084d56 100644
--- a/sys-devel/mold/mold-1.4.1.ebuild
+++ b/sys-devel/mold/mold-1.4.1.ebuild
@@ -36,6 +36,8 @@ PATCHES=(
        # Allows us to rm the tests as before. Will be included in next
        # release.
        "${FILESDIR}"/mold-1.4.1-glob-tests.patch
+       # https://bugs.gentoo.org/865837
+       "${FILESDIR}"/mold-1.4.1-tbb-flags-stripping.patch
 )
 
 pkg_pretend() {

diff --git a/sys-devel/mold/mold-9999.ebuild b/sys-devel/mold/mold-9999.ebuild
index b170b570b827..735bfbb79a24 100644
--- a/sys-devel/mold/mold-9999.ebuild
+++ b/sys-devel/mold/mold-9999.ebuild
@@ -32,6 +32,11 @@ RDEPEND="
 "
 DEPEND="${RDEPEND}"
 
+PATCHES=(
+       # https://bugs.gentoo.org/865837
+       "${FILESDIR}"/mold-1.4.1-tbb-flags-stripping.patch
+)
+
 pkg_pretend() {
        # Requires a c++20 compiler, see #831473
        if [[ ${MERGE_TYPE} != binary ]]; then

Reply via email to