Commit 50c6120a authored by Raito Bezarius's avatar Raito Bezarius
Browse files

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.
parent fde40f17
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -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;