From: Guillaume LE VAILLANT <glv@posteo.net>
To: "Ludovic Courtès" <ludo@gnu.org>
Cc: 36071@debbugs.gnu.org
Subject: [bug#36071] [PATCH] gnu: Add leela-zero.
Date: Wed, 5 Jun 2019 19:26:25 +0200 [thread overview]
Message-ID: <20190605192625.3c567ce7@yamatai> (raw)
In-Reply-To: <87v9xkyrzz.fsf@gnu.org>
[-- Attachment #1: Type: text/plain, Size: 660 bytes --]
Hi,
Ludovic Courtès <ludo@gnu.org> a écrit :
> Does the game run at all if we don’t download additional network
> weight data?
>
> There’s a debate as to whether trained neural network parameters can
> be considered “source”: <https://lwn.net/Articles/760142/>.
The game needs neural network weights to run. The user must download
a file with the weights (usually from
<https://zero.sjeng.org/best-network>, which is updated daily I think)
and put it in '$HOME/.local/share/leela-zero/'.
Do you think some weigths (e.g. taken from
<https://leela.online-go.com/networks>, for reproducibility) should be
embedded in the package?
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-Add-leela-zero.patch --]
[-- Type: text/x-patch, Size: 6466 bytes --]
From a3578a986661f6ad3fd08e8e4eb2d8f7cc8e3351 Mon Sep 17 00:00:00 2001
From: Guillaume LE VAILLANT <glv@posteo.net>
Date: Wed, 5 Jun 2019 18:11:20 +0200
Subject: [PATCH] gnu: Add leela-zero.
* gnu/packages/games.scm (leela-zero): New variable.
* gnu/packages/patches/leela-zero-gtest.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
---
gnu/local.mk | 2 +
gnu/packages/games.scm | 51 +++++++++++++++++++++
gnu/packages/patches/leela-zero-gtest.patch | 40 ++++++++++++++++
3 files changed, 93 insertions(+)
create mode 100644 gnu/packages/patches/leela-zero-gtest.patch
diff --git a/gnu/local.mk b/gnu/local.mk
index 6878aef44a..5e2f958f26 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -20,6 +20,7 @@
# Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
# Copyright © 2018 Stefan Stefanović <stefanx2ovic@gmail.com>
# Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+# Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
#
# This file is part of GNU Guix.
#
@@ -968,6 +969,7 @@ dist_patch_DATA = \
%D%/packages/patches/lcms-CVE-2018-16435.patch \
%D%/packages/patches/ldc-bootstrap-disable-tests.patch \
%D%/packages/patches/ldc-disable-phobos-tests.patch \
+ %D%/packages/patches/leela-zero-gtest.patch \
%D%/packages/patches/liba52-enable-pic.patch \
%D%/packages/patches/liba52-link-with-libm.patch \
%D%/packages/patches/liba52-set-soname.patch \
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 4fdc9b01e6..2b3552eba8 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -40,6 +40,7 @@
;;; Copyright © 2019 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
+;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -128,6 +129,7 @@
#:use-module (gnu packages netpbm)
#:use-module (gnu packages networking)
#:use-module (gnu packages ocaml)
+ #:use-module (gnu packages opencl)
#:use-module (gnu packages pcre)
#:use-module (gnu packages perl)
#:use-module (gnu packages perl-check)
@@ -7336,3 +7338,52 @@ Unfortunately, Hacker is not aware of Drascula's real ambitions: DOMINATING
the World and demonstrating that he is even more evil than his brother Vlad.")
;; Drascula uses a BSD-like license.
(license (license:non-copyleft "file:///readme.txt"))))
+
+(define-public leela-zero
+ (package
+ (name "leela-zero")
+ (version "0.17")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/leela-zero/leela-zero.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "17px5iny8mql5c01bymcli7zfssswkzvb2i8gnsmjcck6i2n8srl"))
+ (patches (search-patches "leela-zero-gtest.patch"))))
+ (build-system cmake-build-system)
+ (native-inputs
+ `(("googletest" ,googletest)))
+ (inputs
+ `(("boost" ,boost)
+ ("ocl-icd" ,ocl-icd)
+ ("openblas" ,openblas)
+ ("opencl-headers" ,opencl-headers)
+ ("qtbase" ,qtbase)
+ ("zlib" ,zlib)))
+ (arguments
+ '(#:configure-flags '("-DUSE_BLAS=YES")
+ #:phases (modify-phases %standard-phases
+ (add-before 'configure 'fix-tests
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((home (getcwd)))
+ (setenv "HOME" home)
+ (substitute* "src/tests/gtests.cpp"
+ (("\\.\\./src/tests/0k\\.txt")
+ (string-append home "/src/tests/0k.txt"))
+ (("cfg_gtp_mode = true;")
+ "cfg_gtp_mode = true; cfg_cpu_only = true;")))
+ #t))
+ (replace 'check
+ (lambda _
+ (invoke "./tests"))))))
+ (home-page "https://github.com/leela-zero/leela-zero")
+ (synopsis "Program playing the game of Go")
+ (description
+ "Leela-zero is a Go engine with no human-provided knowledge, modeled after
+the AlphaGo Zero paper. The current best network weights file for the engine
+can be downloaded from @url{https://zero.sjeng.org/best-network}.")
+ (license license:gpl3+)))
diff --git a/gnu/packages/patches/leela-zero-gtest.patch b/gnu/packages/patches/leela-zero-gtest.patch
new file mode 100644
index 0000000000..7291b4ab72
--- /dev/null
+++ b/gnu/packages/patches/leela-zero-gtest.patch
@@ -0,0 +1,40 @@
+Use shared gtest instead of submodule
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 617e4b2..2857875 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -18,7 +18,6 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
+ include(GNUInstallDirs)
+
+ project(leelaz)
+-add_subdirectory(gtest EXCLUDE_FROM_ALL) # We don't want to install gtest, exclude it from `all`
+
+ # Required Packages
+ set(Boost_MIN_VERSION "1.58.0")
+@@ -27,6 +26,7 @@ find_package(Boost 1.58.0 REQUIRED program_options filesystem)
+ find_package(Threads REQUIRED)
+ find_package(ZLIB REQUIRED)
+ find_package(OpenCL REQUIRED)
++find_package(GTest REQUIRED)
+ # We need OpenBLAS for now, because we make some specific
+ # calls. Ideally we'd use OpenBLAS is possible and fall back to
+ # not doing those calls if it's not present.
+@@ -93,6 +93,7 @@ include_directories(${IncludePath})
+ include_directories(${Boost_INCLUDE_DIRS})
+ include_directories(${OpenCL_INCLUDE_DIRS})
+ include_directories(${ZLIB_INCLUDE_DIRS})
++include_directories(${GTEST_INCLUDE_DIRS})
+
+ if((UNIX AND NOT APPLE) OR WIN32)
+ include_directories(${BLAS_INCLUDE_DIRS})
+@@ -141,7 +142,8 @@ target_link_libraries(tests ${Boost_LIBRARIES})
+ target_link_libraries(tests ${BLAS_LIBRARIES})
+ target_link_libraries(tests ${OpenCL_LIBRARIES})
+ target_link_libraries(tests ${ZLIB_LIBRARIES})
+-target_link_libraries(tests gtest_main ${CMAKE_THREAD_LIBS_INIT})
++target_link_libraries(tests ${GTEST_BOTH_LIBRARIES})
++target_link_libraries(tests ${CMAKE_THREAD_LIBS_INIT})
+
+ include(GetGitRevisionDescription)
+ git_describe(VERSION --tags)
--
2.21.0
next prev parent reply other threads:[~2019-06-05 18:09 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-03 13:06 [bug#36071] [PATCH] gnu: Add leela-zero Guillaume LE VAILLANT
2019-06-05 15:24 ` Ludovic Courtès
2019-06-05 17:26 ` Guillaume LE VAILLANT [this message]
2019-06-05 20:47 ` Ludovic Courtès
2019-06-06 10:38 ` zimoun
2019-06-11 20:55 ` Ricardo Wurmus
2019-06-11 22:54 ` Tobias Geerinckx-Rice
2019-06-25 15:12 ` bug#36071: " Ludovic Courtès
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190605192625.3c567ce7@yamatai \
--to=glv@posteo.net \
--cc=36071@debbugs.gnu.org \
--cc=ludo@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).