1{
2 lib,
3 buildPythonPackage,
4 fetchPypi,
5 fetchpatch2,
6
7 # build-system
8 flit-core,
9
10 # dependencies
11 progress,
12 pyserial,
13
14 # optional-dependencies
15 intelhex,
16
17 # tests
18 pytestCheckHook,
19}:
20
21buildPythonPackage rec {
22 pname = "stm32loader";
23 version = "0.7.1";
24 pyproject = true;
25
26 src = fetchPypi {
27 inherit pname version;
28 hash = "sha256-QTLSEjdJtDH4GCamnKHN5pEjW41rRtAMXxyZZMM5K3w=";
29 };
30
31 patches = [
32 # fix build with python 3.12
33 # https://github.com/florisla/stm32loader/pull/79
34 (fetchpatch2 {
35 url = "https://github.com/florisla/stm32loader/commit/96f59b2984b0d0371b2da0360d6e8d94d0b39a68.patch?full_index=1";
36 hash = "sha256-JUEjQWOnzeMA1OELS214OR7+MYUkCKN5lxwsmRoFbfo=";
37 })
38 ];
39
40 nativeBuildInputs = [ flit-core ];
41
42 propagatedBuildInputs = [
43 progress
44 pyserial
45 ];
46
47 optional-dependencies = {
48 hex = [ intelhex ];
49 };
50
51 nativeCheckInputs = [
52 pytestCheckHook
53 ]
54 ++ lib.flatten (lib.attrValues optional-dependencies);
55
56 enabledTestPaths = [ "tests/unit" ];
57
58 meta = with lib; {
59 description = "Flash firmware to STM32 microcontrollers in Python";
60 mainProgram = "stm32loader";
61 homepage = "https://github.com/florisla/stm32loader";
62 changelog = "https://github.com/florisla/stm32loader/blob/v${version}/CHANGELOG.md";
63 license = licenses.gpl3;
64 maintainers = [ ];
65 };
66}