1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5
6 # build-system
7 setuptools,
8 setuptools-scm,
9
10 # dependencies
11 asn1crypto,
12 bincopy,
13 bitstring,
14 click,
15 click-command-tree,
16 click-option-group,
17 colorama,
18 crcmod,
19 cryptography,
20 deepmerge,
21 fastjsonschema,
22 filelock,
23 hexdump,
24 libusbsio,
25 libuuu,
26 oscrypto,
27 packaging,
28 platformdirs,
29 prettytable,
30 pyasn1,
31 pyocd,
32 pyserial,
33 requests,
34 ruamel-yaml,
35 sly,
36 spsdk-mcu-link,
37 spsdk-pyocd,
38 typing-extensions,
39 x690,
40
41 # tests
42 cookiecutter,
43 ipykernel,
44 pytest-notebook,
45 pytestCheckHook,
46 voluptuous,
47 versionCheckHook,
48 writableTmpDirAsHomeHook,
49}:
50
51buildPythonPackage rec {
52 pname = "spsdk";
53 version = "3.2.0";
54 pyproject = true;
55
56 src = fetchFromGitHub {
57 owner = "nxp-mcuxpresso";
58 repo = "spsdk";
59 tag = "v${version}";
60 hash = "sha256-unJpJjoS0C9TKsvk9/fQO8jiIOGbgfJopeXR5FcIq/g=";
61 };
62
63 postPatch = ''
64 substituteInPlace pyproject.toml \
65 --replace-fail "setuptools>=72.1,<74" "setuptools" \
66 --replace-fail "setuptools_scm<8.2" "setuptools_scm"
67 '';
68
69 build-system = [
70 setuptools
71 setuptools-scm
72 ];
73
74 pythonRelaxDeps = [
75 "cryptography"
76 "filelock"
77 "importlib-metadata"
78 "packaging"
79 "prettytable"
80 "requests"
81 "setuptools_scm"
82 "typing-extensions"
83 ];
84
85 pythonRemoveDeps = [
86 # Remove unneeded unfree package. pyocd-pemicro is only used when
87 # generating a pyinstaller package, which we don't do.
88 "pyocd-pemicro"
89 ];
90
91 dependencies = [
92 asn1crypto
93 bincopy
94 bitstring
95 click
96 click-command-tree
97 click-option-group
98 colorama
99 cookiecutter
100 crcmod
101 cryptography
102 deepmerge
103 fastjsonschema
104 filelock
105 hexdump
106 libusbsio
107 libuuu
108 oscrypto
109 packaging
110 platformdirs
111 prettytable
112 pyasn1
113 pyocd
114 pyserial
115 requests
116 ruamel-yaml
117 sly
118 spsdk-mcu-link
119 spsdk-pyocd
120 typing-extensions
121 x690
122 ];
123
124 pythonImportsCheck = [ "spsdk" ];
125
126 nativeCheckInputs = [
127 cookiecutter
128 ipykernel
129 pytest-notebook
130 pytestCheckHook
131 voluptuous
132 versionCheckHook
133 writableTmpDirAsHomeHook
134 ];
135 versionCheckProgramArg = "--version";
136
137 disabledTests = [
138 # Missing rotk private key
139 "test_general_notebooks"
140
141 # Attempts to access /run
142 "test_nxpimage_famode_export_cli"
143 ];
144
145 meta = {
146 changelog = "https://github.com/nxp-mcuxpresso/spsdk/blob/${src.tag}/docs/release_notes.rst";
147 description = "NXP Secure Provisioning SDK";
148 homepage = "https://github.com/nxp-mcuxpresso/spsdk";
149 license = lib.licenses.bsd3;
150 maintainers = with lib.maintainers; [
151 frogamic
152 sbruder
153 ];
154 mainProgram = "spsdk";
155 };
156}