python3Packages.monosat: Fix Python 3.8 build

This commit is contained in:
Aiken Cairncross 2020-03-02 22:18:08 +00:00 committed by Frederik Rietdijk
parent 3fe7a65e23
commit 2148a154c6

View File

@ -1,4 +1,4 @@
{ stdenv, fetchFromGitHub, cmake, zlib, gmp, jdk8, { stdenv, fetchpatch, fetchFromGitHub, cmake, zlib, gmp, jdk8,
# The JDK we use on Darwin currenly makes extensive use of rpaths which are # The JDK we use on Darwin currenly makes extensive use of rpaths which are
# annoying and break the python library, so let's not bother for now # annoying and break the python library, so let's not bother for now
includeJava ? !stdenv.hostPlatform.isDarwin, includeGplCode ? true }: includeJava ? !stdenv.hostPlatform.isDarwin, includeGplCode ? true }:
@ -20,9 +20,17 @@ let
inherit rev sha256; inherit rev sha256;
}; };
patches = [
# Python 3.8 compatibility
(fetchpatch {
url = https://github.com/sambayless/monosat/commit/a5079711d0df0451f9840f3a41248e56dbb03967.patch;
sha256 = "0fwsk67798dns7izdry19r7r3nmym4cbgxfpbjbnx4b4mlak65j8";
})
];
core = stdenv.mkDerivation { core = stdenv.mkDerivation {
name = "${pname}-${version}"; name = "${pname}-${version}";
inherit src; inherit src patches;
buildInputs = [ cmake zlib gmp jdk8 ]; buildInputs = [ cmake zlib gmp jdk8 ];
cmakeFlags = [ cmakeFlags = [
@ -48,20 +56,22 @@ let
}; };
python = { buildPythonPackage, cython }: buildPythonPackage { python = { buildPythonPackage, cython }: buildPythonPackage {
inherit pname version src; inherit pname version src patches;
# The top-level "source" is what fetchFromGitHub gives us. The rest is inside the repo
sourceRoot = "source/src/monosat/api/python/";
propagatedBuildInputs = [ core cython ]; propagatedBuildInputs = [ core cython ];
# This tells setup.py to use cython, which should produce faster bindings # This tells setup.py to use cython, which should produce faster bindings
MONOSAT_CYTHON = true; MONOSAT_CYTHON = true;
# After patching src, move to where the actually relevant source is. This could just be made
# the sourceRoot if it weren't for the patch.
postPatch = ''
cd src/monosat/api/python
'' +
# The relative paths here don't make sense for our Nix build # The relative paths here don't make sense for our Nix build
# TODO: do we want to just reference the core monosat library rather than copying the # TODO: do we want to just reference the core monosat library rather than copying the
# shared lib? The current setup.py copies the .dylib/.so... # shared lib? The current setup.py copies the .dylib/.so...
postPatch = '' ''
substituteInPlace setup.py \ substituteInPlace setup.py \
--replace 'library_dir = "../../../../"' 'library_dir = "${core}/lib/"' --replace 'library_dir = "../../../../"' 'library_dir = "${core}/lib/"'
''; '';