Files
nixpkgs/pkgs/misc/uboot/python.nix
Kirill Elagin ebf43d4c4a ubootPythonTools: init at 0.0.7
Package the Python tools that come with U-Boot, most importantly,
`binman`.

We take the sources from PyPI because this is the official distribution
channel and the versions there are somehow newer than in the U-Boot
repository itself.
2025-09-07 12:13:53 +02:00

161 lines
2.9 KiB
Nix

{
lib,
python3Packages,
fetchPypi,
makeWrapper,
armTrustedFirmwareTools,
bzip2,
cbfstool,
gzip,
lz4,
lzop,
openssl,
ubootTools,
vboot_reference,
xilinx-bootgen,
xz,
zstd,
}:
let
# We are fetching from PyPI because the code in the repository seems to be
# lagging behind the PyPI releases somehow...
version = "0.0.7";
in
rec {
u_boot_pylib = python3Packages.buildPythonPackage rec {
pname = "u_boot_pylib";
inherit version;
pyproject = true;
src = fetchPypi {
inherit pname version;
hash = "sha256-A5r20Y8mgxhOhaKMpd5MJN5ubzPbkodAO0Tr0RN1SRA=";
};
build-system = with python3Packages; [
setuptools
];
checkPhase = ''
${python3Packages.python.interpreter} "src/$pname/__main__.py"
# There are some tests in other files, but they are broken
'';
pythonImportsCheck = [ "u_boot_pylib" ];
};
dtoc = python3Packages.buildPythonPackage rec {
pname = "dtoc";
inherit version;
pyproject = true;
src = fetchPypi {
inherit pname version;
hash = "sha256-NA96CznIxjqpw2Ik8AJpJkJ/ei+kQTCUExwFgssV+CM=";
};
build-system = with python3Packages; [
setuptools
];
dependencies =
(with python3Packages; [
libfdt
])
++ [
u_boot_pylib
];
pythonImportsCheck = [ "dtoc" ];
};
binman =
let
btools = [
armTrustedFirmwareTools
bzip2
cbfstool
# TODO: cst
gzip
lz4
# TODO: lzma_alone
lzop
openssl
ubootTools
vboot_reference
xilinx-bootgen
xz
zstd
];
in
python3Packages.buildPythonApplication rec {
pname = "binary_manager";
inherit version;
pyproject = true;
src = fetchPypi {
inherit pname version;
hash = "sha256-llEBBhUoW5jTEQeoaTCjZN8y6Kj+PGNUSB3cKpgD06w=";
};
patches = [
./binman-resources.patch
];
patchFlags = [
"-p2"
"-d"
"src"
];
build-system = with python3Packages; [
setuptools
];
nativeBuildInputs = [ makeWrapper ];
dependencies =
(with python3Packages; [
jsonschema
pycryptodomex
pyelftools
yamllint
])
++ [
dtoc
u_boot_pylib
];
preFixup = ''
wrapProgram "$out/bin/binman" --prefix PATH : "${lib.makeBinPath btools}"
'';
};
patman = python3Packages.buildPythonApplication rec {
pname = "patch_manager";
inherit version;
pyproject = true;
src = fetchPypi {
inherit pname version;
hash = "sha256-zD9e87fpWKynpUcfxobbdk6wbM6Ja3f8hEVHS7DGIKQ=";
};
build-system = with python3Packages; [
setuptools
];
dependencies =
(with python3Packages; [
aiohttp
pygit2
])
++ [
u_boot_pylib
];
};
}