commit:     1109347a0b07161d08e96bf82608361d24a18a3f
Author:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
AuthorDate: Tue Jul  2 04:48:07 2024 +0000
Commit:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
CommitDate: Tue Jul  2 05:17:04 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1109347a

games-emulation/pcsx2: fix build with musl

Originally thought would only need _GNU_SOURCE, but there is a bit
more to the fix 7zip upstream did in bug #928730. Could still patch
but can go for the easy solution which will use neither cpu_set_t
nor (more importantly) pthread_attr_setaffinity_np that musl lacks.

Also fix a different musl issue only affecting >=pcsx2-1.7.5913,
workaround imported from Chimera Linux.

Closes: https://bugs.gentoo.org/935298
Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org>

 .../pcsx2/files/pcsx2-1.7.5913-musl-cache.patch      | 20 ++++++++++++++++++++
 games-emulation/pcsx2/pcsx2-1.7.5835.ebuild          |  4 ++++
 games-emulation/pcsx2/pcsx2-1.7.5913.ebuild          |  5 +++++
 games-emulation/pcsx2/pcsx2-9999.ebuild              |  5 +++++
 4 files changed, 34 insertions(+)

diff --git a/games-emulation/pcsx2/files/pcsx2-1.7.5913-musl-cache.patch 
b/games-emulation/pcsx2/files/pcsx2-1.7.5913-musl-cache.patch
new file mode 100644
index 000000000000..3383904fee48
--- /dev/null
+++ b/games-emulation/pcsx2/files/pcsx2-1.7.5913-musl-cache.patch
@@ -0,0 +1,20 @@
+Patch adapted from [1]:
+
+       musl doesn't expose these sysconf values, so just use the loop
+       below that reads them out of sysfs coherency_line_size only
+
+[1] 
https://github.com/chimera-linux/cports/blob/114b576aee3ebc25b48ac120da1a1093dcc4365f/user/pcsx2/patches/cache.patch
+--- a/common/Linux/LnxHostSys.cpp
++++ b/common/Linux/LnxHostSys.cpp
+@@ -143,7 +143,11 @@
+ size_t HostSys::GetRuntimeCacheLineSize()
+ {
++      #if defined(__GLIBC__)
+       int l1i = sysconf(_SC_LEVEL1_DCACHE_LINESIZE);
+       int l1d = sysconf(_SC_LEVEL1_ICACHE_LINESIZE);
+       int res = (l1i > l1d) ? l1i : l1d;
++      #else
++      int res = 0;
++      #endif
+       for (int index = 0; index < 16; index++)
+       {

diff --git a/games-emulation/pcsx2/pcsx2-1.7.5835.ebuild 
b/games-emulation/pcsx2/pcsx2-1.7.5835.ebuild
index 87e19f866161..ece5dfc93cc5 100644
--- a/games-emulation/pcsx2/pcsx2-1.7.5835.ebuild
+++ b/games-emulation/pcsx2/pcsx2-1.7.5835.ebuild
@@ -105,6 +105,10 @@ src_configure() {
                strip-unsupported-flags
        fi
 
+       # pthread_attr_setaffinity_np is not supported on musl, may be possible
+       # to remove if bundled lzma code is updated like 7zip did (bug #935298)
+       use elibc_musl && append-cppflags -DZ7_AFFINITY_DISABLE
+
        local mycmakeargs=(
                -DBUILD_SHARED_LIBS=no
                -DDISABLE_ADVANCE_SIMD=yes

diff --git a/games-emulation/pcsx2/pcsx2-1.7.5913.ebuild 
b/games-emulation/pcsx2/pcsx2-1.7.5913.ebuild
index f8d4b9f5a3aa..deabb28cc4af 100644
--- a/games-emulation/pcsx2/pcsx2-1.7.5913.ebuild
+++ b/games-emulation/pcsx2/pcsx2-1.7.5913.ebuild
@@ -81,6 +81,7 @@ PATCHES=(
        "${FILESDIR}"/${PN}-1.7.5232-cubeb-automagic.patch
        "${FILESDIR}"/${PN}-1.7.5835-vanilla-shaderc.patch
        "${FILESDIR}"/${PN}-1.7.5855-no-libbacktrace.patch
+       "${FILESDIR}"/${PN}-1.7.5913-musl-cache.patch
 )
 
 src_prepare() {
@@ -107,6 +108,10 @@ src_configure() {
                strip-unsupported-flags
        fi
 
+       # pthread_attr_setaffinity_np is not supported on musl, may be possible
+       # to remove if bundled lzma code is updated like 7zip did (bug #935298)
+       use elibc_musl && append-cppflags -DZ7_AFFINITY_DISABLE
+
        local mycmakeargs=(
                -DBUILD_SHARED_LIBS=no
                -DDISABLE_ADVANCE_SIMD=yes

diff --git a/games-emulation/pcsx2/pcsx2-9999.ebuild 
b/games-emulation/pcsx2/pcsx2-9999.ebuild
index f8d4b9f5a3aa..deabb28cc4af 100644
--- a/games-emulation/pcsx2/pcsx2-9999.ebuild
+++ b/games-emulation/pcsx2/pcsx2-9999.ebuild
@@ -81,6 +81,7 @@ PATCHES=(
        "${FILESDIR}"/${PN}-1.7.5232-cubeb-automagic.patch
        "${FILESDIR}"/${PN}-1.7.5835-vanilla-shaderc.patch
        "${FILESDIR}"/${PN}-1.7.5855-no-libbacktrace.patch
+       "${FILESDIR}"/${PN}-1.7.5913-musl-cache.patch
 )
 
 src_prepare() {
@@ -107,6 +108,10 @@ src_configure() {
                strip-unsupported-flags
        fi
 
+       # pthread_attr_setaffinity_np is not supported on musl, may be possible
+       # to remove if bundled lzma code is updated like 7zip did (bug #935298)
+       use elibc_musl && append-cppflags -DZ7_AFFINITY_DISABLE
+
        local mycmakeargs=(
                -DBUILD_SHARED_LIBS=no
                -DDISABLE_ADVANCE_SIMD=yes

Reply via email to