diff --git a/pkgs/development/python-modules/symengine/default.nix b/pkgs/development/python-modules/symengine/default.nix index 7d02d2e0c6fd..d59abb27c8d6 100644 --- a/pkgs/development/python-modules/symengine/default.nix +++ b/pkgs/development/python-modules/symengine/default.nix @@ -1,18 +1,23 @@ -{ lib -, buildPythonPackage -, fetchFromGitHub -, cython -, cmake -, symengine -, pytest -, sympy -, python +{ + lib, + buildPythonPackage, + fetchFromGitHub, + fetchpatch, + cython, + cmake, + symengine, + pytest, + sympy, + python, + setuptools, }: buildPythonPackage rec { pname = "symengine"; version = "0.11.0"; - format = "setuptools"; + + build-system = [ setuptools ]; + pyproject = true; src = fetchFromGitHub { owner = "symengine"; @@ -21,26 +26,39 @@ buildPythonPackage rec { hash = "sha256-uUMcNnynE2itIwc7IGFwxveqLRL8f4dAAcaD6FUWJaY="; }; + env = { + SymEngine_DIR = "${symengine}"; + }; + + patches = [ + # Distutils has been removed in python 3.12 + # See https://github.com/symengine/symengine.py/pull/478 + (fetchpatch { + name = "no-distutils.patch"; + url = "https://github.com/symengine/symengine.py/pull/478/commits/e72006d5f7425cd50c54b22766e0ed4bcd2dca85.patch"; + hash = "sha256-kGJRGkBgxOfI1wf88JwnSztkOYd1wvg62H7wA6CcYEQ="; + }) + ]; + postPatch = '' substituteInPlace setup.py \ - --replace "\"cmake\"" "\"${cmake}/bin/cmake\"" \ - --replace "'cython>=0.29.24'" "'cython'" + --replace-fail "\"cmake\"" "\"${lib.getExe' cmake "cmake"}\"" \ + --replace-fail "'cython>=0.29.24'" "'cython'" + + export PATH=${cython}/bin:$PATH ''; nativeBuildUnputs = [ cmake ]; buildInputs = [ cython ]; - nativeCheckInputs = [ pytest sympy ]; - - setupPyBuildFlags = [ - "--symengine-dir=${symengine}/" - "--define=\"CYTHON_BIN=${cython}/bin/cython\"" + nativeCheckInputs = [ + pytest + sympy ]; checkPhase = '' - mkdir empty - cd empty + mkdir empty && cd empty ${python.interpreter} ../bin/test_python.py '';