-
Notifications
You must be signed in to change notification settings - Fork 575
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update OpenSpiel to new libcxxwrap / libjulia #2325
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,8 +2,10 @@ | |
# `julia build_tarballs.jl --help` to see a usage message. | ||
using BinaryBuilder, Pkg | ||
|
||
julia_version = v"1.5.3" | ||
|
||
name = "OpenSpiel" | ||
version = v"0.1.2" | ||
version = v"0.1.3" | ||
|
||
# Collection of sources required to complete build | ||
sources = [ | ||
|
@@ -12,24 +14,11 @@ sources = [ | |
ArchiveSource("https://github.com/findmyway/abseil-cpp/archive/v0.1.0.tar.gz", "7b612c1fed278250b5d1a4e29ddb410145b26a0e7c781c1ca4ac03d092179202"), | ||
ArchiveSource("https://github.com/findmyway/hanabi-learning-environment/archive/v0.1.0.tar.gz", "6126936fd13a95f8cadeacaa69dfb38a960eaf3bd588aacc8893a6e07e4791a3"), | ||
ArchiveSource("https://github.com/findmyway/project_acpc_server/archive/v0.1.0.tar.gz", "e29f969dd62ba354b7019cae3f7f1dbfbd9a744687ea4a8f7494c2bb1ee87382"), | ||
ArchiveSource("https://julialang-s3.julialang.org/bin/linux/armv7l/1.3/julia-1.3.1-linux-armv7l.tar.gz", "965c8fab2214f8ce1b3d449d088561a6de61be42543b48c3bbadaed5b02bf824"; unpack_target="julia-arm-linux-gnueabihf"), | ||
ArchiveSource("https://julialang-s3.julialang.org/bin/linux/x64/1.3/julia-1.3.1-linux-x86_64.tar.gz", "faa707c8343780a6fe5eaf13490355e8190acf8e2c189b9e7ecbddb0fa2643ad"; unpack_target="julia-x86_64-linux-gnu"), | ||
ArchiveSource("https://github.com/Gnimuc/JuliaBuilder/releases/download/v1.3.0/julia-1.3.0-x86_64-apple-darwin14.tar.gz", "f2e5359f03314656c06e2a0a28a497f62e78f027dbe7f5155a5710b4914439b1"; unpack_target="julia-x86_64-apple-darwin14"), | ||
ArchiveSource("https://github.com/Gnimuc/JuliaBuilder/releases/download/v1.3.0/julia-1.3.0-x86_64-w64-mingw32.tar.gz", "c7b2db68156150d0e882e98e39269301d7bf56660f4fc2e38ed2734a7a8d1551"; unpack_target="julia-x86_64-w64-mingw32"), | ||
] | ||
|
||
# Bash recipe for building across all platforms | ||
script = raw""" | ||
|
||
case "$target" in | ||
arm-linux-gnueabihf|x86_64-linux-gnu) | ||
Julia_PREFIX=${WORKSPACE}/srcdir/julia-$target/julia-1.3.1 | ||
;; | ||
x86_64-apple-darwin14|x86_64-w64-mingw32) | ||
Julia_PREFIX=${WORKSPACE}/srcdir/julia-$target/juliabin | ||
;; | ||
esac | ||
|
||
mv open_spiel-0.1.0 open_spiel | ||
mv abseil-cpp-0.1.0/ open_spiel/open_spiel/abseil-cpp | ||
mv dds-0.1.0 open_spiel/open_spiel/games/bridge/double_dummy_solver | ||
|
@@ -38,17 +27,23 @@ mv project_acpc_server-0.1.0 open_spiel/open_spiel/games/universal_poker/acpc | |
|
||
mkdir open_spiel/build | ||
cd open_spiel/build | ||
BUILD_WITH_PYTHON=OFF BUILD_WITH_JULIA=ON BUILD_WITH_HANABI=ON BUILD_WITH_ACPC=OFF cmake -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TARGET_TOOLCHAIN} -DJulia_PREFIX=$Julia_PREFIX -DCMAKE_PREFIX_PATH=$prefix/destdir/lib/cmake/JlCxx -DCMAKE_INSTALL_PREFIX=$prefix -DCMAKE_FIND_ROOT_PATH=${prefix} ../open_spiel/ | ||
export BUILD_WITH_PYTHON=OFF BUILD_WITH_JULIA=ON BUILD_WITH_HANABI=ON BUILD_WITH_ACPC=OFF | ||
cmake \ | ||
-DCMAKE_FIND_ROOT_PATH=${prefix} \ | ||
-DCMAKE_INSTALL_PREFIX=$prefix \ | ||
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TARGET_TOOLCHAIN} \ | ||
-DJulia_PREFIX=${prefix} \ | ||
../open_spiel/ | ||
make -j${nproc} | ||
make install | ||
install_license ${WORKSPACE}/srcdir/open_spiel/LICENSE | ||
""" | ||
|
||
# These are the platforms we will build for by default, unless further | ||
# platforms are passed in on the command line | ||
platforms = [ | ||
Platform("x86_64", "linux"; libc="glibc", cxxstring_abi = "cxx11"), | ||
] | ||
include("../../L/libjulia/common.jl") | ||
platforms = libjulia_platforms(julia_version) | ||
platforms = expand_cxxstring_abis(platforms) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This part of the change expands the number of supported platforms substantially; but many currently don't build, due to various issues. I note that upstream now is at version 0.2.0, so some of them may be fixed there (but of course also new ones may have been introduced). One is in the upstream C++ code: /workspace/srcdir/open_spiel/open_spiel/utils/json.cc:66:64: error: no matching function for call to ‘min(long unsigned int, std::basic_string_view<char>::size_type)’
SPIEL_CHECK_EQ(error, str.substr(0, std::min(30ul, str.size()))); Patching this with a fix is easy enough, but I am not sure it's worth the effort -- is there any interest in supporting more platforms? |
||
|
||
# The products that we will ensure are always built | ||
products = [ | ||
|
@@ -57,8 +52,11 @@ products = [ | |
|
||
# Dependencies that must be installed before this package can be built | ||
dependencies = [ | ||
BuildDependency(PackageSpec(name="libjulia_jll", version=julia_version)), | ||
Dependency("libcxxwrap_julia_jll") | ||
] | ||
|
||
# Build the tarballs, and possibly a `build.jl` as well. | ||
build_tarballs(ARGS, name, version, sources, script, platforms, products, dependencies; preferred_gcc_version = v"8") | ||
build_tarballs(ARGS, name, version, sources, script, platforms, products, dependencies; | ||
preferred_gcc_version=v"8", | ||
julia_compat = "$(julia_version.major).$(julia_version.minor)") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I took the liberty of sorting these arguments alphabetically and generally aligning them with other JLLs, in the hope that this will help a bit with future maintenance.