1{
2 lib,
3 fetchFromGitHub,
4 buildPythonPackage,
5
6 # build-system
7 cysignals,
8 cython,
9 pkgconfig,
10 setuptools,
11
12 gmp,
13 pari,
14 mpfr,
15 fplll,
16 numpy,
17
18 # Reverse dependency
19 sage,
20
21 # tests
22 pytestCheckHook,
23}:
24
25buildPythonPackage rec {
26 pname = "fpylll";
27 version = "0.6.4";
28 pyproject = true;
29
30 src = fetchFromGitHub {
31 owner = "fplll";
32 repo = "fpylll";
33 tag = version;
34 hash = "sha256-vks4rTXk6fh8183PCxJzfTXQyo3scBH4afjbQAkT6Gw=";
35 };
36
37 nativeBuildInputs = [
38 cython
39 cysignals
40 pkgconfig
41 setuptools
42 ];
43
44 buildInputs = [
45 gmp
46 pari
47 mpfr
48 fplll
49 ];
50
51 propagatedBuildInputs = [
52 numpy
53 cysignals
54 ];
55
56 nativeCheckInputs = [ pytestCheckHook ];
57
58 preCheck = ''
59 # Since upstream introduced --doctest-modules in
60 # https://github.com/fplll/fpylll/commit/9732fdb40cf1bd43ad1f60762ec0a8401743fc79,
61 # it is necessary to ignore import mismatches. Not sure why, but the files
62 # should be identical anyway.
63 export PY_IGNORE_IMPORTMISMATCH=1
64 '';
65
66 passthru.tests = {
67 inherit sage;
68 };
69
70 meta = with lib; {
71 description = "Python interface for fplll";
72 changelog = "https://github.com/fplll/fpylll/releases/tag/${src.tag}";
73 homepage = "https://github.com/fplll/fpylll";
74 teams = [ teams.sage ];
75 license = licenses.gpl2Plus;
76 };
77}