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.
161 lines
2.9 KiB
Nix
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
|
|
];
|
|
};
|
|
|
|
}
|