From 2148a154c627845194217bb9886d24268052d9b4 Mon Sep 17 00:00:00 2001 From: Aiken Cairncross Date: Mon, 2 Mar 2020 22:18:08 +0000 Subject: [PATCH] python3Packages.monosat: Fix Python 3.8 build --- .../science/logic/monosat/default.nix | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/pkgs/applications/science/logic/monosat/default.nix b/pkgs/applications/science/logic/monosat/default.nix index c0512b74488..d7718f71b72 100644 --- a/pkgs/applications/science/logic/monosat/default.nix +++ b/pkgs/applications/science/logic/monosat/default.nix @@ -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 # annoying and break the python library, so let's not bother for now includeJava ? !stdenv.hostPlatform.isDarwin, includeGplCode ? true }: @@ -20,9 +20,17 @@ let inherit rev sha256; }; + patches = [ + # Python 3.8 compatibility + (fetchpatch { + url = https://github.com/sambayless/monosat/commit/a5079711d0df0451f9840f3a41248e56dbb03967.patch; + sha256 = "0fwsk67798dns7izdry19r7r3nmym4cbgxfpbjbnx4b4mlak65j8"; + }) + ]; + core = stdenv.mkDerivation { name = "${pname}-${version}"; - inherit src; + inherit src patches; buildInputs = [ cmake zlib gmp jdk8 ]; cmakeFlags = [ @@ -48,20 +56,22 @@ let }; python = { buildPythonPackage, cython }: buildPythonPackage { - inherit pname version src; - - # The top-level "source" is what fetchFromGitHub gives us. The rest is inside the repo - sourceRoot = "source/src/monosat/api/python/"; + inherit pname version src patches; propagatedBuildInputs = [ core cython ]; # This tells setup.py to use cython, which should produce faster bindings 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 # 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... - postPatch = '' + '' substituteInPlace setup.py \ --replace 'library_dir = "../../../../"' 'library_dir = "${core}/lib/"' '';