about summary refs log tree commit diff
path: root/pkgs/misc
diff options
context:
space:
mode:
authorRaito Bezarius <masterancpp@gmail.com>2023-09-16 04:02:37 +0200
committerRaito Bezarius <masterancpp@gmail.com>2023-09-16 04:02:56 +0200
commit50c6120a3e14a15b507f07237d4748c6ebacbba5 (patch)
treed32953b2141536af2d3106e452d8a4741293b548 /pkgs/misc
parentfde40f170cae6ba541f91b9d48278e8a8702e55f (diff)
downloadnixlib-50c6120a3e14a15b507f07237d4748c6ebacbba5.tar
nixlib-50c6120a3e14a15b507f07237d4748c6ebacbba5.tar.gz
nixlib-50c6120a3e14a15b507f07237d4748c6ebacbba5.tar.bz2
nixlib-50c6120a3e14a15b507f07237d4748c6ebacbba5.tar.lz
nixlib-50c6120a3e14a15b507f07237d4748c6ebacbba5.tar.xz
nixlib-50c6120a3e14a15b507f07237d4748c6ebacbba5.tar.zst
nixlib-50c6120a3e14a15b507f07237d4748c6ebacbba5.zip
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.
Diffstat (limited to 'pkgs/misc')
-rw-r--r--pkgs/misc/uboot/default.nix11
1 files changed, 8 insertions, 3 deletions
diff --git a/pkgs/misc/uboot/default.nix b/pkgs/misc/uboot/default.nix
index 9ac761601270..6c002851db6f 100644
--- a/pkgs/misc/uboot/default.nix
+++ b/pkgs/misc/uboot/default.nix
@@ -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;