commit:     95cae20e05d591fbb744f6e4921e46f996811b40
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Wed Jun  8 05:05:57 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Jun  8 05:06:05 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=95cae20e

sci-libs/symengine: fix pthread detection

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

 .../files/symengine-0.9.0-pthread-cmake.patch      | 63 ++++++++++++++++++++++
 ...gine-0.9.0.ebuild => symengine-0.9.0-r1.ebuild} |  3 +-
 sci-libs/symengine/symengine-0.9.0.ebuild          |  1 +
 3 files changed, 66 insertions(+), 1 deletion(-)

diff --git a/sci-libs/symengine/files/symengine-0.9.0-pthread-cmake.patch 
b/sci-libs/symengine/files/symengine-0.9.0-pthread-cmake.patch
new file mode 100644
index 000000000000..0fa049dbf218
--- /dev/null
+++ b/sci-libs/symengine/files/symengine-0.9.0-pthread-cmake.patch
@@ -0,0 +1,63 @@
+From 6ad9620ffc578abdb920b84ea5e393c726389ac0 Mon Sep 17 00:00:00 2001
+From: Sam James <[email protected]>
+Date: Wed, 8 Jun 2022 06:02:25 +0100
+Subject: [PATCH] cmake: fix pthread detection
+
+The homebrew FindPTHREAD.cmake module was hardcoding the path to libpthread
+in the installed CMake config file which broke consumers when upgrading from
+< glibc-2.34 (e.g. glibc-2.33 -> glibc-2.34).
+
+CMake provides FindThreads which does the job fine for us. Tested with both
+glibc-2.33 (with a previously bad generated file, and then fixed) and 
glibc-2.35.
+
+This should be fine on musl and friends too. This brings symengine in line
+with most CMake packages.
+
+Bug: https://bugs.gentoo.org/849803
+Fixes: https://github.com/symengine/symengine/issues/1910
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -335,11 +335,10 @@ if (WITH_PIRANHA)
+ endif()
+ 
+ if (WITH_PTHREAD)
+-    find_package(PTHREAD REQUIRED)
+-    include_directories(SYSTEM ${PTHREAD_INCLUDE_DIRS})
+-    set(LIBS ${LIBS} ${PTHREAD_TARGETS})
++    find_package(Threads)
++    set(THREADS_PREFER_PTHREAD_FLAG ON)
++    set(LIBS ${LIBS} ${CMAKE_THREAD_LIBS_INIT})
+     set(HAVE_SYMENGINE_PTHREAD yes)
+-    set(PKGS ${PKGS} "PTHREAD")
+ endif()
+ 
+ if (WITH_MPFR)
+@@ -761,10 +760,6 @@ if (WITH_BOOST)
+ endif()
+ 
+ message("WITH_PTHREAD: ${WITH_PTHREAD}")
+-if (WITH_PTHREAD)
+-    message("PTHREAD_INCLUDE_DIRS: ${PTHREAD_INCLUDE_DIRS}")
+-    message("PTHREAD_LIBRARIES: ${PTHREAD_LIBRARIES}")
+-endif()
+ 
+ message("WITH_MPC: ${WITH_MPC}")
+ if (WITH_MPC)
+--- a/cmake/FindPTHREAD.cmake
++++ /dev/null
+@@ -1,14 +0,0 @@
+-include(LibFindMacros)
+-
+-libfind_include(pthread.h pthread)
+-libfind_library(pthread pthread)
+-
+-set(PTHREAD_LIBRARIES ${PTHREAD_LIBRARY})
+-set(PTHREAD_INCLUDE_DIRS ${PTHREAD_INCLUDE_DIR})
+-set(PTHREAD_TARGETS pthread)
+-
+-include(FindPackageHandleStandardArgs)
+-find_package_handle_standard_args(PTHREAD DEFAULT_MSG PTHREAD_LIBRARIES
+-    PTHREAD_INCLUDE_DIRS)
+-
+-mark_as_advanced(PTHREAD_INCLUDE_DIR PTHEARD_LIBRARY)
+

diff --git a/sci-libs/symengine/symengine-0.9.0.ebuild 
b/sci-libs/symengine/symengine-0.9.0-r1.ebuild
similarity index 96%
copy from sci-libs/symengine/symengine-0.9.0.ebuild
copy to sci-libs/symengine/symengine-0.9.0-r1.ebuild
index bf374c6ddaca..d0cb975cca8a 100644
--- a/sci-libs/symengine/symengine-0.9.0.ebuild
+++ b/sci-libs/symengine/symengine-0.9.0-r1.ebuild
@@ -31,7 +31,8 @@ DEPEND="${RDEPEND}
 BDEPEND="doc? ( app-doc/doxygen[dot] )"
 
 PATCHES=(
-       "${FILESDIR}/${PN}-0.7.0-cmake-build-type.patch"
+       "${FILESDIR}"/${PN}-0.7.0-cmake-build-type.patch
+       "${FILESDIR}"/${PN}-0.9.0-pthread-cmake.patch
 )
 
 pkg_pretend() {

diff --git a/sci-libs/symengine/symengine-0.9.0.ebuild 
b/sci-libs/symengine/symengine-0.9.0.ebuild
index bf374c6ddaca..98e672759860 100644
--- a/sci-libs/symengine/symengine-0.9.0.ebuild
+++ b/sci-libs/symengine/symengine-0.9.0.ebuild
@@ -32,6 +32,7 @@ BDEPEND="doc? ( app-doc/doxygen[dot] )"
 
 PATCHES=(
        "${FILESDIR}/${PN}-0.7.0-cmake-build-type.patch"
+       "${FILESDIR}"/symengine-0.9.0-pthread-cmake.patch
 )
 
 pkg_pretend() {

Reply via email to