commit: 9ea5a49aa158bcc842b65e236b64241a7e49272f
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Sun Jun 11 12:13:21 2023 +0000
Commit: Anna Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
CommitDate: Sun Jun 11 12:14:34 2023 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=9ea5a49a
sci-biology/geneathome: fix build with gcc 13
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
.../geneathome/files/geneathome-1.10-include.patch | 12 ++++
.../files/geneathome-1.10-iostream.patch | 82 ++++++++++++++++++++++
...kefile.patch => geneathome-1.10-makefile.patch} | 0
...me-1.10-r3.ebuild => geneathome-1.10-r4.ebuild} | 15 ++--
4 files changed, 99 insertions(+), 10 deletions(-)
diff --git a/sci-biology/geneathome/files/geneathome-1.10-include.patch
b/sci-biology/geneathome/files/geneathome-1.10-include.patch
new file mode 100644
index 000000000..9130b88e3
--- /dev/null
+++ b/sci-biology/geneathome/files/geneathome-1.10-include.patch
@@ -0,0 +1,12 @@
+Fixes build with GCC 13.
+
+--- a/src/simd/Vector.hpp
++++ b/src/simd/Vector.hpp
+@@ -23,6 +23,7 @@
+
+ #include <type_traits>
+ #include <cassert>
++#include <cstdint>
+
+ // std::negation requires C++17, so defined own one
+ template<typename B>
diff --git a/sci-biology/geneathome/files/geneathome-1.10-iostream.patch
b/sci-biology/geneathome/files/geneathome-1.10-iostream.patch
new file mode 100644
index 000000000..24d47cee4
--- /dev/null
+++ b/sci-biology/geneathome/files/geneathome-1.10-iostream.patch
@@ -0,0 +1,82 @@
+Fixes "inlining failed in call to ..."
+
+--- a/src/main.cpp
++++ b/src/main.cpp
+@@ -22,8 +22,8 @@ int appMain(int argc, char* argv[]);
+
+ #if defined(__i386__) || defined (__x86_64__)
+
++#include <iostream>
+ #include <cpuid.h>
+-#include <stdio.h>
+
+ __attribute__((target("no-avx,no-sse")))
+ bool checkRequiredInstructionSets() {
+@@ -34,14 +34,14 @@ bool checkRequiredInstructionSets() {
+ unsigned int a, b, c, d;
+
+ if (!__get_cpuid(1, &a, &b, &c, &d)) {
+- fprintf(stderr, "CPUID instruction is not supported by your
CPU!\n");
++ std::cerr << "CPUID instruction is not supported by your
CPU!\n";
+ return false;
+ }
+
+ #ifdef __SSE2__
+ //printf("Checking for SSE2 support\n");
+ if (0 == (d & bit_SSE2)) {
+- fprintf(stderr, "SSE2 instructions are not supported by your
CPU!\n");
++ std::cerr << "SSE2 instructions are not supported by your
CPU!\n";
+ return false;
+ }
+ #endif
+@@ -49,13 +49,13 @@ bool checkRequiredInstructionSets() {
+ #ifdef __AVX__
+ //printf("Checking for AVX support\n");
+ if (0 == (c & bit_AVX)) {
+- fprintf(stderr, "AVX instructions are not supported by your
CPU!\n");
++ std::cerr << "AVX instructions are not supported by your
CPU!\n";
+ return false;
+ }
+
+ // AVX also needs OS support, check for it
+ if (0 == (c & bit_OSXSAVE)) {
+- fprintf(stderr, "OSXSAVE instructions are not supported by your
CPU!\n");
++ std::cerr << "OSXSAVE instructions are not supported by your
CPU!\n";
+ return false;
+ }
+
+@@ -63,7 +63,7 @@ bool checkRequiredInstructionSets() {
+ unsigned int ecx = 0; // _XCR_XFEATURE_ENABLED_MASK
+ __asm__ ("xgetbv" : "=a" (eax), "=d" (edx) : "c" (ecx));
+ if (0x6 != (eax & 0x6)) { // XSTATE_SSE | XSTATE_YMM
+- fprintf(stderr, "AVX instructions are not supported by your
OS!\n");
++ std::cerr << "AVX instructions are not supported by your OS!\n";
+ return false;
+ }
+ #endif
+@@ -71,7 +71,7 @@ bool checkRequiredInstructionSets() {
+ #ifdef __FMA__
+ //printf("Checking for FMA support\n");
+ if (0 == (c & bit_FMA)) {
+- fprintf(stderr, "FMA instructions are not supported by your
CPU!\n");
++ std::cerr << "FMA instructions are not supported by your
CPU!\n";
+ return false;
+ }
+ #endif
+@@ -79,14 +79,14 @@ bool checkRequiredInstructionSets() {
+ #ifdef __AVX2__
+ //printf("Checking for AVX2 support\n");
+ if (__get_cpuid_max(0, 0) < 7) {
+- fprintf(stderr, "Extended CPUID 0x7 instruction is not
supported by your CPU!\n");
++ std::cerr << "Extended CPUID 0x7 instruction is not supported
by your CPU!\n";
+ return false;
+ }
+
+ __cpuid_count(7, 0, a, b, c, d);
+
+ if (0 == (b & bit_AVX2)) {
+- fprintf(stderr, "AVX2 instructions are not supported by your
CPU!\n");
++ std::cerr << "AVX2 instructions are not supported by your
CPU!\n";
+ return false;
+ }
+ #endif
diff --git a/sci-biology/geneathome/files/makefile.patch
b/sci-biology/geneathome/files/geneathome-1.10-makefile.patch
similarity index 100%
rename from sci-biology/geneathome/files/makefile.patch
rename to sci-biology/geneathome/files/geneathome-1.10-makefile.patch
diff --git a/sci-biology/geneathome/geneathome-1.10-r3.ebuild
b/sci-biology/geneathome/geneathome-1.10-r4.ebuild
similarity index 77%
rename from sci-biology/geneathome/geneathome-1.10-r3.ebuild
rename to sci-biology/geneathome/geneathome-1.10-r4.ebuild
index c25cf8755..64c1db7d3 100644
--- a/sci-biology/geneathome/geneathome-1.10-r3.ebuild
+++ b/sci-biology/geneathome/geneathome-1.10-r4.ebuild
@@ -25,21 +25,16 @@ KEYWORDS="~amd64 ~arm64 ~x86"
DEPEND="app-arch/bzip2"
RDEPEND="${DEPEND}"
-PATCHES=( "${FILESDIR}"/makefile.patch )
+PATCHES=(
+ "${FILESDIR}"/${PN}-1.10-include.patch
+ "${FILESDIR}"/${PN}-1.10-iostream.patch
+ "${FILESDIR}"/${PN}-1.10-makefile.patch
+)
DOCS=( Readme.md )
boinc-app_add_deps
-src_prepare() {
- default
-
- # error: inlining failed in call to ‘always_inline’ ‘int fprintf(FILE*,
const char*, ...)’: target specific option mismatch
- sed -i src/main.cpp \
- -e 's/stdio.h/iostream/' \
- -e 's/fprintf(stderr, \(.*\))/std::cerr << \1/g' || die
-}
-
src_compile() {
tc-export CC CXX