symengine: modernize; fix downstream build with cmake v4 (#447644)

This commit is contained in:
Nick Cao
2025-10-05 16:41:28 +00:00
committed by GitHub
2 changed files with 48 additions and 31 deletions
+33 -21
View File
@@ -2,25 +2,43 @@
lib,
stdenv,
fetchFromGitHub,
fetchpatch2,
cmake,
gmp,
flint,
mpfr,
libmpc,
withShared ? true,
withShared ? !stdenv.hostPlatform.isStatic,
}:
stdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: {
pname = "symengine";
version = "0.14.0";
src = fetchFromGitHub {
owner = "symengine";
repo = "symengine";
rev = "v${version}";
rev = "v${finalAttrs.version}";
hash = "sha256-WriVcYt3fkObR2U4J6a4KGGc2HgyyFyFpdrwxBD+AHA=";
};
outputs = [
"out"
"dev"
];
# upgrade supported cmake version in SymEngineConfig.cmake
patches = [
(fetchpatch2 {
url = "https://github.com/symengine/symengine/commit/c149b874b8ff947e51e8e58670a0d37daf588f86.patch?full_index=1";
hash = "sha256-LqkJRPdsbE8OE8G6AkpWX9B+GqnOQjUNPHpKKIcCL3Q=";
})
(fetchpatch2 {
url = "https://github.com/symengine/symengine/commit/186f72e208220efd12362c336a49378076f63f30.patch?full_index=1";
hash = "sha256-CuQra9K3MTxm8M0bt3LooJz9HgW0/Jy6ydRBCvEgkO4=";
})
];
nativeBuildInputs = [ cmake ];
buildInputs = [
@@ -31,28 +49,22 @@ stdenv.mkDerivation rec {
];
cmakeFlags = [
"-DWITH_FLINT=ON"
"-DINTEGER_CLASS=flint"
"-DWITH_SYMENGINE_THREAD_SAFE=yes"
"-DWITH_MPC=yes"
"-DBUILD_FOR_DISTRIBUTION=yes"
]
++ lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) [
# error: unrecognized instruction mnemonic, did you mean: bit, cnt, hint, ins, not?
"-DBUILD_TESTS=OFF"
]
++ lib.optionals withShared [
"-DBUILD_SHARED_LIBS=ON"
(lib.cmakeBool "WITH_FLINT" true)
(lib.cmakeFeature "INTEGER_CLASS" "flint")
(lib.cmakeBool "WITH_SYMENGINE_THREAD_SAFE" true)
(lib.cmakeBool "WITH_MPC" true)
(lib.cmakeBool "BUILD_FOR_DISTRIBUTION" true)
(lib.cmakeBool "BUILD_TESTS" finalAttrs.finalPackage.doCheck)
(lib.cmakeBool "BUILD_SHARED_LIBS" withShared)
];
doCheck = true;
meta = with lib; {
meta = {
description = "Fast symbolic manipulation library";
homepage = "https://github.com/symengine/symengine";
platforms = platforms.unix ++ platforms.windows;
license = licenses.bsd3;
maintainers = [ maintainers.costrouc ];
platforms = with lib.platforms; unix ++ windows;
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ costrouc ];
};
}
})
@@ -3,19 +3,17 @@
buildPythonPackage,
fetchFromGitHub,
cython,
setuptools,
cmake,
symengine,
pytest,
sympy,
python,
setuptools,
}:
buildPythonPackage rec {
pname = "symengine";
version = "0.14.1";
build-system = [ setuptools ];
pyproject = true;
src = fetchFromGitHub {
@@ -25,19 +23,24 @@ buildPythonPackage rec {
hash = "sha256-adzODm7gAqwAf7qzfRQ1AG8mC3auiXM4OsV/0h+ZmUg=";
};
env = {
SymEngine_DIR = "${symengine}";
};
postPatch = ''
substituteInPlace setup.py \
--replace-fail "'cython>=0.29.24'" "'cython'"
'';
build-system = [
cython
setuptools
];
dontUseCmakeConfigure = true;
nativeBuildInputs = [
cmake
cython
];
buildInputs = [
symengine
];
nativeCheckInputs = [
@@ -47,15 +50,17 @@ buildPythonPackage rec {
checkPhase = ''
runHook preCheck
mkdir empty && cd empty
${python.interpreter} ../bin/test_python.py
runHook postCheck
'';
meta = with lib; {
meta = {
description = "Python library providing wrappers to SymEngine";
homepage = "https://github.com/symengine/symengine.py";
license = licenses.mit;
license = lib.licenses.mit;
maintainers = [ ];
};
}