1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 setuptools,
6 setuptools-scm,
7 coreutils,
8 jinja2,
9 pandas,
10 pyparsing,
11 pytestCheckHook,
12 pythonOlder,
13 which,
14 yosys,
15}:
16
17buildPythonPackage rec {
18 pname = "edalize";
19 version = "0.6.1";
20 pyproject = true;
21
22 disabled = pythonOlder "3.7";
23
24 src = fetchFromGitHub {
25 owner = "olofk";
26 repo = "edalize";
27 tag = "v${version}";
28 hash = "sha256-5c3Szq0tXQdlyzFTFCla44qB/O6RK8vezVOaFOv8sw4=";
29 };
30
31 postPatch = ''
32 substituteInPlace tests/test_edam.py \
33 --replace /usr/bin/touch ${coreutils}/bin/touch
34 patchShebangs tests/mock_commands/vsim
35 '';
36
37 build-system = [
38 setuptools
39 setuptools-scm
40 ];
41
42 propagatedBuildInputs = [ jinja2 ];
43
44 optional-dependencies = {
45 reporting = [
46 pandas
47 pyparsing
48 ];
49 };
50
51 nativeCheckInputs = [
52 pytestCheckHook
53 which
54 yosys
55 ]
56 ++ lib.flatten (builtins.attrValues optional-dependencies);
57
58 pythonImportsCheck = [ "edalize" ];
59
60 disabledTests = [
61 # disable failures related to pandas 2.1.0 apply(...,errors="ignore")
62 # behavior change. upstream pins pandas to 2.0.3 as of 2023-10-10
63 # https://github.com/olofk/edalize/commit/2a3db6658752f97c61048664b478ebfe65a909f8
64 "test_picorv32_artix7_summary"
65 "test_picorv32_artix7_resources"
66 "test_picorv32_artix7_timing"
67 "test_picorv32_kusp_summary"
68 "test_picorv32_kusp_resources"
69 "test_picorv32_kusp_timing"
70 "test_linux_on_litex_vexriscv_arty_a7_summary"
71 "test_linux_on_litex_vexriscv_arty_a7_resources"
72 "test_linux_on_litex_vexriscv_arty_a7_timing"
73 ];
74
75 disabledTestPaths = [
76 "tests/test_questa_formal.py"
77 "tests/test_slang.py"
78 "tests/test_apicula.py"
79 "tests/test_ascentlint.py"
80 "tests/test_diamond.py"
81 "tests/test_gatemate.py"
82 "tests/test_ghdl.py"
83 "tests/test_icarus.py"
84 "tests/test_icestorm.py"
85 "tests/test_ise.py"
86 "tests/test_mistral.py"
87 "tests/test_openlane.py"
88 "tests/test_oxide.py"
89 "tests/test_quartus.py"
90 "tests/test_radiant.py"
91 "tests/test_spyglass.py"
92 "tests/test_symbiyosys.py"
93 "tests/test_trellis.py"
94 "tests/test_vcs.py"
95 "tests/test_veribleformat.py"
96 "tests/test_veriblelint.py"
97 "tests/test_vivado.py"
98 "tests/test_xcelium.py"
99 "tests/test_xsim.py"
100 ];
101
102 meta = with lib; {
103 description = "Abstraction library for interfacing EDA tools";
104 mainProgram = "el_docker";
105 homepage = "https://github.com/olofk/edalize";
106 changelog = "https://github.com/olofk/edalize/releases/tag/${src.tag}";
107 license = licenses.bsd2;
108 maintainers = with maintainers; [ astro ];
109 };
110}