commit:     d4d7c559ae6598261d115f4db6b955d50c4a184c
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Mon Feb  7 04:00:01 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Feb  7 04:01:01 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=d4d7c559

dev-cpp/tbb: fix underlinking on musl

Avoid *context APIs.

In theory, may not be needed (shouldn't be) given we've fixed our packaging
of libucontext, but let's do this anyway as the fix is upstream, and it
avoids possible otehr issues.

Bug: https://github.com/rui314/mold/issues/281
Closes: https://bugs.gentoo.org/832700
Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../tbb/files/tbb-2021.5.0-musl-setcontext.patch   | 30 ++++++++++++++++++++++
 ...{tbb-2021.5.0.ebuild => tbb-2021.5.0-r1.ebuild} |  2 ++
 2 files changed, 32 insertions(+)

diff --git a/dev-cpp/tbb/files/tbb-2021.5.0-musl-setcontext.patch 
b/dev-cpp/tbb/files/tbb-2021.5.0-musl-setcontext.patch
new file mode 100644
index 000000000000..111bbf123d9a
--- /dev/null
+++ b/dev-cpp/tbb/files/tbb-2021.5.0-musl-setcontext.patch
@@ -0,0 +1,30 @@
+https://bugs.gentoo.org/832700
+https://github.com/oneapi-src/oneTBB/commit/6a15b64093c51ddc00bdf4a6b49d4bbec1574a12
+
+From: Rui Ueyama <[email protected]>
+Date: Fri, 4 Feb 2022 19:32:11 +0900
+Subject: [PATCH] Make tbb compile with musl libc (#748)
+
+TBB resumable tasks are implemented using getcontext() and setcontext()
+on Unix-like systems. These functions are deprecated in the recent
+versions of POSIX and may not exist. musl libc does not provide these
+functions.
+
+There's unfortunately no way to detect musl (musl intentionally do not
+define macros like `__MUSL__`), so __TBB_RESUMABLE_TASKS is defined if
+`__GLIBC__`. glibc-compatible libc's such as uClibc defines `__GLIBC__`,
+so it should work as a catch-all condition.
+
+Signed-off-by: Rui Ueyama <[email protected]>
+--- a/include/oneapi/tbb/detail/_config.h
++++ b/include/oneapi/tbb/detail/_config.h
+@@ -268,7 +268,7 @@
+     #define __TBB_CPP20_COMPARISONS_PRESENT __TBB_CPP20_PRESENT
+ #endif
+ 
+-#define __TBB_RESUMABLE_TASKS                           
(!__TBB_WIN8UI_SUPPORT && !__ANDROID__ && !__QNXNTO__)
++#define __TBB_RESUMABLE_TASKS                           
(!__TBB_WIN8UI_SUPPORT && !__ANDROID__ && !__QNXNTO__ && (!__linux__ || 
__GLIBC__))
+ 
+ /* This macro marks incomplete code or comments describing ideas which are 
considered for the future.
+  * See also for plain comment with TODO and FIXME marks for small improvement 
opportunities.
+

diff --git a/dev-cpp/tbb/tbb-2021.5.0.ebuild 
b/dev-cpp/tbb/tbb-2021.5.0-r1.ebuild
similarity index 93%
rename from dev-cpp/tbb/tbb-2021.5.0.ebuild
rename to dev-cpp/tbb/tbb-2021.5.0-r1.ebuild
index 6b2ff50c7c4a..22d714102105 100644
--- a/dev-cpp/tbb/tbb-2021.5.0.ebuild
+++ b/dev-cpp/tbb/tbb-2021.5.0-r1.ebuild
@@ -30,6 +30,8 @@ PATCHES=(
        "${FILESDIR}"/${PN}-2021.4.0-missing-TBB_machine_fetchadd4.patch
        # need to verify this is in master
        "${FILESDIR}"/${PN}-2021.5.0-musl-mallinfo.patch
+       # musl again, should be in.. 2022?
+       "${FILESDIR}"/${PN}-2021.5.0-musl-setcontext.patch
 )
 
 src_configure() {

Reply via email to