1{
2 lib,
3 buildPythonPackage,
4 python,
5 fetchpatch,
6 fetchPypi,
7 pari,
8 gmp,
9 cython,
10 cysignals,
11
12 # Reverse dependency
13 sage,
14}:
15
16buildPythonPackage rec {
17 pname = "cypari2";
18 # upgrade may break sage, please test the sage build or ping @timokau on upgrade
19 version = "2.1.5";
20 format = "setuptools";
21
22 src = fetchPypi {
23 inherit pname version;
24 sha256 = "sha256-GiWGXDTyCx3JWDB5jjSrZDbieLjgyA3HvwqzTF2wOrg=";
25 };
26
27 patches = [
28 # patch to avoid some segfaults in sage's totallyreal.pyx test.
29 # (https://trac.sagemath.org/ticket/27267).
30 (fetchpatch {
31 name = "use-trashcan-for-gen.patch";
32 url = "https://raw.githubusercontent.com/sagemath/sage/b6ea17ef8e4d652de0a85047bac8d41e90b25555/build/pkgs/cypari/patches/trashcan.patch";
33 hash = "sha256-w4kktWb9/aR9z4CjrUvAMOxEwRN2WkubaKzQttN8rU8=";
34 })
35 ];
36
37 preBuild = ''
38 # generate cythonized extensions (auto_paridecl.pxd is crucial)
39 ${python.pythonOnBuildForHost.interpreter} setup.py build_ext --inplace
40 '';
41
42 nativeBuildInputs = [ pari ];
43
44 buildInputs = [ gmp ];
45
46 propagatedBuildInputs = [
47 cysignals
48 cython
49 ];
50
51 checkPhase = ''
52 test -f "$out/${python.sitePackages}/cypari2/auto_paridecl.pxd"
53 make check
54 '';
55
56 passthru.tests = {
57 inherit sage;
58 };
59
60 meta = with lib; {
61 description = "Cython bindings for PARI";
62 license = licenses.gpl2Plus;
63 maintainers = teams.sage.members;
64 homepage = "https://github.com/defeo/cypari2";
65 };
66}