1{ lib
2, buildPythonPackage
3, pythonOlder
4, fetchFromGitHub
5, setuptools
6, setuptools-scm
7, pyvcd
8, jinja2
9, importlib-resources
10, importlib-metadata
11, git
12
13# for tests
14, pytestCheckHook
15, symbiyosys
16, yices
17, yosys
18}:
19
20buildPythonPackage rec {
21 pname = "nmigen";
22 version = "unstable-2021-02-09";
23 # python setup.py --version
24 realVersion = "0.3.dev243+g${lib.substring 0 7 src.rev}";
25 disabled = pythonOlder "3.6";
26
27 src = fetchFromGitHub {
28 owner = "nmigen";
29 repo = "nmigen";
30 rev = "f7c2b9419f9de450be76a0e9cf681931295df65f";
31 sha256 = "0cjs9wgmxa76xqmjhsw4fsb2mhgvd85jgs2mrjxqp6fwp8rlgnl1";
32 };
33
34 SETUPTOOLS_SCM_PRETEND_VERSION="${realVersion}";
35
36 nativeBuildInputs = [
37 git
38 setuptools-scm
39 ];
40
41 propagatedBuildInputs = [
42 jinja2
43 pyvcd
44 setuptools
45 ] ++
46 lib.optional (pythonOlder "3.9") importlib-resources ++
47 lib.optional (pythonOlder "3.8") importlib-metadata;
48
49 checkInputs = [
50 pytestCheckHook
51 symbiyosys
52 yices
53 yosys
54 ];
55
56 postPatch = ''
57 substituteInPlace setup.py \
58 --replace "Jinja2~=2.11" "Jinja2>=2.11" \
59 --replace "pyvcd~=0.2.2" "pyvcd"
60 '';
61
62 pythonImportsCheck = [ "nmigen" ];
63
64 meta = with lib; {
65 description = "A refreshed Python toolbox for building complex digital hardware";
66 homepage = "https://nmigen.info/nmigen";
67 license = licenses.bsd2;
68 maintainers = with maintainers; [ emily ];
69 };
70}