Unverified Commit a63c038d authored by Nick Cao's avatar Nick Cao Committed by GitHub
Browse files

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

parents 7a062236 8fc57632
Loading
Loading
Loading
Loading
+33 −21
Original line number Diff line number Diff line
@@ -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 ];
  };

}
})
+15 −10
Original line number Diff line number Diff line
@@ -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 = [ ];
  };
}