commit: be034d5a3ee5c8bd154874dc04faf33ae0d36003 Author: Sam James <sam <AT> gentoo <DOT> org> AuthorDate: Tue Dec 24 04:53:42 2024 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Tue Dec 24 04:53:53 2024 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=be034d5a
games-board/stockfish: EAPI 8, fix build w/ gcc-15 New revision in part because the previous code was wrong and it wasn't guaranteed to work correctly. Closes: https://bugs.gentoo.org/940504 Signed-off-by: Sam James <sam <AT> gentoo.org> .../stockfish/files/stockfish-17-gcc15.patch | 40 +++++++++ games-board/stockfish/stockfish-17-r1.ebuild | 99 ++++++++++++++++++++++ 2 files changed, 139 insertions(+) diff --git a/games-board/stockfish/files/stockfish-17-gcc15.patch b/games-board/stockfish/files/stockfish-17-gcc15.patch new file mode 100644 index 000000000000..c92918335ada --- /dev/null +++ b/games-board/stockfish/files/stockfish-17-gcc15.patch @@ -0,0 +1,40 @@ +https://bugs.gentoo.org/940504 +https://github.com/official-stockfish/Stockfish/issues/5714 +https://github.com/official-stockfish/Stockfish/commit/1776448917e49b922a762d2d08c00a3f3be10205 + +From 1776448917e49b922a762d2d08c00a3f3be10205 Mon Sep 17 00:00:00 2001 +From: Disservin <[email protected]> +Date: Fri, 13 Dec 2024 17:00:05 +0100 +Subject: [PATCH] Move Embedded Net Data out of Anon Namespace + +fixes https://github.com/official-stockfish/Stockfish/issues/5714 + +closes https://github.com/official-stockfish/Stockfish/pull/5715 + +No functional change +--- + src/nnue/network.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/nnue/network.cpp b/src/nnue/network.cpp +index 0a4452f6604..01cf2516d4a 100644 +--- a/nnue/network.cpp ++++ b/nnue/network.cpp +@@ -38,7 +38,6 @@ + #include "nnue_common.h" + #include "nnue_misc.h" + +-namespace { + // Macro to embed the default efficiently updatable neural network (NNUE) file + // data in the engine binary (using incbin.h, by Dale Weiler). + // This macro invocation will declare the following three variables +@@ -58,6 +57,8 @@ const unsigned char* const gEmbeddedNNUESmallEnd = &gEmbeddedNNUESmallData[1 + const unsigned int gEmbeddedNNUESmallSize = 1; + #endif + ++namespace { ++ + struct EmbeddedNNUE { + EmbeddedNNUE(const unsigned char* embeddedData, + const unsigned char* embeddedEnd, + diff --git a/games-board/stockfish/stockfish-17-r1.ebuild b/games-board/stockfish/stockfish-17-r1.ebuild new file mode 100644 index 000000000000..8f2125616f25 --- /dev/null +++ b/games-board/stockfish/stockfish-17-r1.ebuild @@ -0,0 +1,99 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit toolchain-funcs + +NNUE_FILES="nn-1111cefa1111.nnue nn-37f18f62d772.nnue" +DESCRIPTION="Free UCI chess engine, claimed to be the strongest in the world" +HOMEPAGE="https://stockfishchess.org/" +SRC_URI="https://github.com/official-stockfish/Stockfish/archive/sf_${PV}.tar.gz -> ${P}.tar.gz" +for i in ${NNUE_FILES}; do + SRC_URI+=" https://tests.stockfishchess.org/api/nn/${i} -> ${P}-${i}" +done +S="${WORKDIR}/Stockfish-sf_${PV}/src" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~loong ~riscv ~x86" +IUSE="cpu_flags_arm_v7 cpu_flags_x86_avx2 cpu_flags_x86_popcnt cpu_flags_x86_sse cpu_flags_x86_avx512f" +IUSE+=" cpu_flags_x86_avx512dq debug general-32 general-64 +optimize" + +BDEPEND="|| ( app-arch/unzip app-arch/zip )" + +PATCHES=( + "${FILESDIR}"/${P}-gcc15.patch +) + +pkg_setup() { + if ! tc-is-clang && ! tc-is-gcc; then + die "Unsupported compiler: $(tc-getCC)" + fi +} + +src_prepare() { + default + + # remove config sanity check that doesn't like our COMPILER settings + sed -i -e 's/ config-sanity//g' Makefile || die + + for i in $NNUE_FILES; do + cp "${DISTDIR}"/${P}-${i} ${i} || die "copying the nnue file failed" + done + + # prevent pre-stripping + sed -e 's:-strip $(BINDIR)/$(EXE)::' -i Makefile \ + || die 'failed to disable stripping in the Makefile' + + # Makefile is a bit optimistic + sed -e 's:-flto=full:-flto:g' -i Makefile || die +} + +src_compile() { + local my_arch + + # generic unoptimized first + use general-32 && my_arch=general-32 + use general-64 && my_arch=general-64 + + # x86 + use x86 && my_arch=x86-32-old + use cpu_flags_x86_sse && my_arch=x86-32 + + # amd64 + use amd64 && my_arch=x86-64 + use cpu_flags_x86_popcnt && my_arch=x86-64-modern + + # both bmi2 and avx2 are part of hni (haswell new instructions) + use cpu_flags_x86_avx2 && my_arch=x86-64-bmi2 + + # avx512 + # we currently can't express 'avx512vnni' 'avx512dq' 'avx512f' 'avx512bw' 'avx512vl' + # so only enable basic support + use cpu_flags_x86_avx512f && use cpu_flags_x86_avx512dq && my_arch=x86-64-avx512 + + # other architectures + use cpu_flags_arm_v7 && my_arch=armv7 + use ppc && my_arch=ppc + use ppc64 && my_arch=ppc64 + + # Bug 919781: COMP is a fixed string like clang/gcc to set tools for PGO + local comp + tc-is-gcc && comp="gcc" + tc-is-clang && comp="clang" + + # There's a nice hack in the Makefile that overrides the value of CXX with + # COMPILER to support Travis CI and we abuse it to make sure that we + # build with our compiler of choice. + emake profile-build ARCH="${my_arch}" \ + COMP="${comp}" \ + COMPILER="$(tc-getCXX)" \ + debug=$(usex debug "yes" "no") \ + optimize=$(usex optimize "yes" "no") +} + +src_install() { + dobin "${PN}" + dodoc ../AUTHORS ../README.md +}
