diff options
Diffstat (limited to 'pkgs/development/python-modules/cython/default.nix')
-rw-r--r-- | pkgs/development/python-modules/cython/default.nix | 136 |
1 files changed, 95 insertions, 41 deletions
diff --git a/pkgs/development/python-modules/cython/default.nix b/pkgs/development/python-modules/cython/default.nix index 2062ae03863b..2ce92a1786b7 100644 --- a/pkgs/development/python-modules/cython/default.nix +++ b/pkgs/development/python-modules/cython/default.nix @@ -1,36 +1,28 @@ -{ lib -, stdenv -, buildPythonPackage -, fetchPypi -, setuptools -, python -, pkg-config -, gdb -, numpy -, ncurses +{ + lib, + buildPythonPackage, + fetchFromGitHub, + gdb, + ncurses, + numpy, + pkg-config, + pygame-ce, + python, + sage, # Reverse dependency + setuptools, + stdenv, }: -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 { +buildPythonPackage rec { pname = "cython"; - version = "3.0.9"; + version = "3.0.11-1"; pyproject = true; - src = fetchPypi { - pname = "Cython"; - inherit version; - hash = "sha256-otNU8FnR8FXTTPqmLFtovHisLOq2QHFI1H+1CM87pPM="; + src = fetchFromGitHub { + owner = "cython"; + repo = "cython"; + rev = "refs/tags/${version}"; + hash = "sha256-P2k21uNC6X+R6a1dWAIspGnUc6JwAzRXUleVfZG+vqY="; }; build-system = [ @@ -39,32 +31,94 @@ in buildPythonPackage rec { ]; nativeCheckInputs = [ - gdb numpy ncurses + gdb + numpy + ncurses ]; env.LC_ALL = "en_US.UTF-8"; - 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 + strictDeps = true; + + checkPhase = + 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 aren't working on aarch64. + # Disable them for now until upstream finds a workaround. + # Upstream issue: https://github.com/cython/cython/issues/2308 + ++ lib.optionals stdenv.hostPlatform.isAarch64 [ "numpy_memoryview" ] + ++ lib.optionals stdenv.hostPlatform.isi686 [ + "future_division" + "overflow_check_longlong" + ]; + commandline = builtins.concatStringsSep " " ( + [ + "-j$NIX_BUILD_CORES" + "--no-code-style" + ] + ++ lib.optionals (builtins.length excludedTests != 0) [ + ''--exclude="(${builtins.concatStringsSep "|" excludedTests})"'' + ] + ); + in + '' + runHook preCheck + export HOME="$NIX_BUILD_TOP" + ${python.interpreter} runtests.py ${commandline} + runHook postCheck + ''; + + passthru.tests = { + inherit pygame-ce sage; + }; + + # Force code regeneration 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"; + description = "Optimising static compiler for both the Python and the extended Cython programming languages"; + longDescription = '' + Cython is an optimising static compiler for both the Python programming + language and the extended Cython programming language (based on Pyrex). It + makes writing C extensions for Python as easy as Python itself. + + Cython gives you the combined power of Python and C to let you: + + - write Python code that calls back and forth from and to C or C++ code + natively at any point. + - easily tune readable Python code into plain C performance by adding + static type declarations, also in Python syntax. + - use combined source code level debugging to find bugs in your Python, + Cython and C code. + - interact efficiently with large data sets, e.g. using multi-dimensional + NumPy arrays. + - quickly build your applications within the large, mature and widely used + CPython ecosystem. + - integrate natively with existing code and data from legacy, low-level or + high-performance libraries and applications. + + The Cython language is a superset of the Python language that additionally + supports calling C functions and declaring C types on variables and class + attributes. This allows the compiler to generate very efficient C code + from Cython code. + ''; + changelog = "https://github.com/cython/cython/blob/${version}/CHANGES.rst"; license = lib.licenses.asl20; + mainProgram = "cython"; + maintainers = with lib.maintainers; [ AndersonTorres ]; }; } +# TODO: investigate recursive loop when doCheck is true |