about summary refs log tree commit diff
path: root/pkgs/development/python-modules/cython
diff options
context:
space:
mode:
authorMartin Weinelt <hexa@darmstadt.ccc.de>2024-03-24 03:25:37 +0100
committerMartin Weinelt <hexa@darmstadt.ccc.de>2024-03-27 18:35:05 +0100
commit528354e66c26cf947b04cc94db7185f5d127ca31 (patch)
tree7cc0398d85bee6be3b05a59666072011017711a9 /pkgs/development/python-modules/cython
parentb974abcc5d85bf1a1a121ff1ef41936ff1ae900c (diff)
python312Packages.cython: 0.29.36 -> 3.0.9
Folds the cython_3 attribute into the primary cython attribute and
migrates all packages from the versioned attribute.

The old version will be provided through the cython_0 attribute in an
effort to phase it out.
Diffstat (limited to 'pkgs/development/python-modules/cython')
-rw-r--r--pkgs/development/python-modules/cython/0.nix91
-rw-r--r--pkgs/development/python-modules/cython/default.nix28
2 files changed, 95 insertions, 24 deletions
diff --git a/pkgs/development/python-modules/cython/0.nix b/pkgs/development/python-modules/cython/0.nix
new file mode 100644
index 0000000000000..72ba4a68f038f
--- /dev/null
+++ b/pkgs/development/python-modules/cython/0.nix
@@ -0,0 +1,91 @@
+{ lib
+, stdenv
+, buildPythonPackage
+, fetchPypi
+, fetchpatch
+, setuptools
+, python
+, pkg-config
+, gdb
+, numpy
+, ncurses
+}:
+
+let
+  excludedTests = [ "reimport_from_subinterpreter" ]
+    # cython's testsuite is not working very well with libc++
+    # We are however optimistic about things outside of testsuite still working
+    ++ lib.optionals (stdenv.cc.isClang or false) [ "cpdef_extern_func" "libcpp_algo" ]
+    # Some tests in the test suite isn't working on aarch64. Disable them for
+    # now until upstream finds a workaround.
+    # Upstream issue here: https://github.com/cython/cython/issues/2308
+    ++ lib.optionals stdenv.isAarch64 [ "numpy_memoryview" ]
+    ++ lib.optionals stdenv.isi686 [ "future_division" "overflow_check_longlong" ]
+  ;
+
+in buildPythonPackage rec {
+  pname = "cython";
+  version = "0.29.36";
+  pyproject = true;
+
+  src = fetchPypi {
+    pname = "Cython";
+    inherit version;
+    hash = "sha256-QcDP0tdU44PJ7rle/8mqSrhH0Ml0cHfd18Dctow7wB8=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    setuptools
+  ];
+
+  nativeCheckInputs = [
+    gdb numpy ncurses
+  ];
+
+  LC_ALL = "en_US.UTF-8";
+
+  patches = [
+    # backport Cython 3.0 trashcan support (https://github.com/cython/cython/pull/2842) to 0.X series.
+    # it does not affect Python code unless the code explicitly uses the feature.
+    # trashcan support is needed to avoid stack overflows during object deallocation in sage (https://trac.sagemath.org/ticket/27267)
+    ./trashcan.patch
+    # The above commit introduces custom trashcan macros, as well as
+    # compiler changes to use them in Cython-emitted code. The latter
+    # change is still useful, but the former has been upstreamed as of
+    # Python 3.8, and the patch below makes Cython use the upstream
+    # trashcan macros whenever available. This is needed for Python
+    # 3.11 support, because the API used in Cython's implementation
+    # changed: https://github.com/cython/cython/pull/4475
+    (fetchpatch {
+      name = "disable-trashcan.patch";
+      url = "https://github.com/cython/cython/commit/e337825cdcf5e94d38ba06a0cb0188e99ce0cc92.patch";
+      hash = "sha256-q0f63eetKrDpmP5Z4v8EuGxg26heSyp/62OYqhRoSso=";
+    })
+  ];
+
+  checkPhase = ''
+    export HOME="$NIX_BUILD_TOP"
+    ${python.interpreter} runtests.py -j$NIX_BUILD_CORES \
+      --no-code-style \
+      ${lib.optionalString (builtins.length excludedTests != 0)
+        ''--exclude="(${builtins.concatStringsSep "|" excludedTests})"''}
+  '';
+
+  # https://github.com/cython/cython/issues/2785
+  # Temporary solution
+  doCheck = false;
+  # doCheck = !stdenv.isDarwin;
+
+  # force regeneration of generated code in source distributions
+  # https://github.com/cython/cython/issues/5089
+  setupHook = ./setup-hook.sh;
+
+  meta = {
+    changelog = "https://github.com/cython/cython/blob/${version}/CHANGES.rst";
+    description = "An optimising static compiler for both the Python programming language and the extended Cython programming language";
+    homepage = "https://cython.org";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ fridh ];
+  };
+}
diff --git a/pkgs/development/python-modules/cython/default.nix b/pkgs/development/python-modules/cython/default.nix
index 72ba4a68f038f..4467dc3b459ce 100644
--- a/pkgs/development/python-modules/cython/default.nix
+++ b/pkgs/development/python-modules/cython/default.nix
@@ -2,7 +2,6 @@
 , stdenv
 , buildPythonPackage
 , fetchPypi
-, fetchpatch
 , setuptools
 , python
 , pkg-config
@@ -25,16 +24,16 @@ let
 
 in buildPythonPackage rec {
   pname = "cython";
-  version = "0.29.36";
+  version = "3.0.9";
   pyproject = true;
 
   src = fetchPypi {
     pname = "Cython";
     inherit version;
-    hash = "sha256-QcDP0tdU44PJ7rle/8mqSrhH0Ml0cHfd18Dctow7wB8=";
+    hash = "sha256-otNU8FnR8FXTTPqmLFtovHisLOq2QHFI1H+1CM87pPM=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     pkg-config
     setuptools
   ];
@@ -43,26 +42,7 @@ in buildPythonPackage rec {
     gdb numpy ncurses
   ];
 
-  LC_ALL = "en_US.UTF-8";
-
-  patches = [
-    # backport Cython 3.0 trashcan support (https://github.com/cython/cython/pull/2842) to 0.X series.
-    # it does not affect Python code unless the code explicitly uses the feature.
-    # trashcan support is needed to avoid stack overflows during object deallocation in sage (https://trac.sagemath.org/ticket/27267)
-    ./trashcan.patch
-    # The above commit introduces custom trashcan macros, as well as
-    # compiler changes to use them in Cython-emitted code. The latter
-    # change is still useful, but the former has been upstreamed as of
-    # Python 3.8, and the patch below makes Cython use the upstream
-    # trashcan macros whenever available. This is needed for Python
-    # 3.11 support, because the API used in Cython's implementation
-    # changed: https://github.com/cython/cython/pull/4475
-    (fetchpatch {
-      name = "disable-trashcan.patch";
-      url = "https://github.com/cython/cython/commit/e337825cdcf5e94d38ba06a0cb0188e99ce0cc92.patch";
-      hash = "sha256-q0f63eetKrDpmP5Z4v8EuGxg26heSyp/62OYqhRoSso=";
-    })
-  ];
+  env.LC_ALL = "en_US.UTF-8";
 
   checkPhase = ''
     export HOME="$NIX_BUILD_TOP"