buildUBoot: supports Python scripts with their own environment

Sometimes, U-Boot has interesting Python scripts in tools/, the issue is
that they rely on implicit dependencies described by their code itself.

For this, we offer an attribute set-style option to install Python scripts
with specific dependencies.

For example, you could do `pythonScriptsToInstall."tools/efivar.py" = python3.withPackages (ps: [ ps.pyopenssl ]);`
which will be added in a next PR.
This commit is contained in:
Raito Bezarius 2023-09-16 04:02:37 +02:00
parent fde40f170c
commit 50c6120a3e

View file

@ -34,6 +34,7 @@ let
version ? null
, src ? null
, filesToInstall
, pythonScriptsToInstall ? { }
, installDir ? "$out"
, defconfig
, extraConfig ? ""
@ -52,6 +53,10 @@ let
] ++ extraPatches;
postPatch = ''
${lib.concatMapStrings (script: ''
substituteInPlace ${script} \
--replace "#!/usr/bin/env python3" "#!${pythonScriptsToInstall.${script}}/bin/python3"
'') (builtins.attrNames pythonScriptsToInstall)}
patchShebangs tools
patchShebangs arch/arm/mach-rockchip
'';
@ -105,12 +110,12 @@ let
runHook preInstall
mkdir -p ${installDir}
cp ${lib.concatStringsSep " " filesToInstall} ${installDir}
cp ${lib.concatStringsSep " " (filesToInstall ++ builtins.attrNames pythonScriptsToInstall)} ${installDir}
mkdir -p "$out/nix-support"
${lib.concatMapStrings (file: ''
echo "file binary-dist ${installDir}/${builtins.baseNameOf file}" >> "$out/nix-support/hydra-build-products"
'') filesToInstall}
'') (filesToInstall ++ builtins.attrNames pythonScriptsToInstall)}
runHook postInstall
'';
@ -123,7 +128,7 @@ let
license = licenses.gpl2;
maintainers = with maintainers; [ bartsch dezgeg samueldr lopsided98 ];
} // extraMeta;
} // removeAttrs args [ "extraMeta" ]));
} // removeAttrs args [ "extraMeta" "pythonScriptsToInstall" ]));
in {
inherit buildUBoot;