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.3";
28 pyproject = true;
29
30 src = fetchFromGitHub {
31 owner = "fplll";
32 repo = "fpylll";
33 tag = version;
34 hash = "sha256-3+DXfCUuHQG+VSzJGEPa8qP6oxC+nngMa44XyFCJAVY=";
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 = [ numpy ];
52
53 nativeCheckInputs = [ pytestCheckHook ];
54
55 preCheck = ''
56 # Since upstream introduced --doctest-modules in
57 # https://github.com/fplll/fpylll/commit/9732fdb40cf1bd43ad1f60762ec0a8401743fc79,
58 # it is necessary to ignore import mismatches. Not sure why, but the files
59 # should be identical anyway.
60 export PY_IGNORE_IMPORTMISMATCH=1
61 '';
62
63 passthru.tests = {
64 inherit sage;
65 };
66
67 meta = with lib; {
68 description = "Python interface for fplll";
69 changelog = "https://github.com/fplll/fpylll/releases/tag/${src.tag}";
70 homepage = "https://github.com/fplll/fpylll";
71 teams = [ teams.sage ];
72 license = licenses.gpl2Plus;
73 };
74}