-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathbuild.nix
93 lines (76 loc) · 1.99 KB
/
build.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
{ pkgs ? import <nixpkgs> {}, pythonPackages ? pkgs.python3Packages, benchmark ? false }:
rec {
package = pythonPackages.buildPythonPackage rec {
name = "python-moa";
src = builtins.filterSource
(path: _: !builtins.elem (builtins.baseNameOf path) [".git" "result" "docs"])
./.;
propagatedBuildInputs = with pythonPackages; [
sly
astunparse
];
checkInputs = with pythonPackages; [
pytest
pytestcov
graphviz
] ++ (if benchmark then [
pytest-benchmark
numpy
numba
pytorch
tensorflow
] else [ ]);
checkPhase = ''
pytest tests ${if benchmark then "benchmarks" else ""} --cov=moa
'';
};
sdist = pkgs.stdenv.mkDerivation {
name = "python-moa-sdist";
buildInputs = [ package ];
src = builtins.filterSource
(path: _: !builtins.elem (builtins.baseNameOf path) [".git" "result"])
./.;
buildPhase = ''
python setup.py sdist
'';
installPhase = ''
mkdir -p $out
cp dist/* $out
'';
};
docs = pkgs.stdenv.mkDerivation {
name = "python-moa-docs";
src = builtins.filterSource
(path: _: !builtins.elem (builtins.baseNameOf path) [".git" "result"])
./.;
postPatch = ''
# readthedocs makes the default GhostScript
substituteInPlace docs/conf.py \
--replace "'GhostScript'" "'pdf2svg'"
'';
buildInputs = with pythonPackages; [
package
sphinx
# sphinxcontrib-tikz
];
buildPhase = ''
cd docs;
sphinx-apidoc -f -o source/ ../moa
sphinx-build -b doctest . _build/doctest
sphinx-build -b html . _build/html
'';
installPhase = ''
mkdir $out
cp -r _build/html/* $out
'';
};
docker = pkgs.dockerTools.buildLayeredImage {
name = "python-moa";
tag = "latest";
contents = [
(pythonPackages.python.withPackages (ps: with ps; [ package ipython ]))
];
config.Cmd = [ "ipython" ];
maxLayers = 120;
};
}