haredo: remove shell wrapper overhead

There's only three mentions of `sh` in the source code, being only two
of them command calls; thus, is very trivial to patch them directly.
This commit is contained in:
Coutinho de Souza 2024-05-16 13:09:03 -03:00
parent d3195bd6d5
commit b155c656a0
No known key found for this signature in database
GPG Key ID: 59081FCB8F9AABB5
2 changed files with 29 additions and 5 deletions

@ -0,0 +1,20 @@
diff --git a/src/haredo.ha b/src/haredo.ha
index c2e56e6..304c9ad 100644
--- a/src/haredo.ha
+++ b/src/haredo.ha
@@ -280,12 +280,12 @@ fn try_do(
const tmpfilepath = strings::concat(ctx.tmpdir, "/", tmpfilename);
const cmd = if (ctx.verbose) {
- fmt::errorln("* sh -ev", dopaths.do, dopaths.target,
+ fmt::errorln("* @bash@/bin/sh -ev", dopaths.do, dopaths.target,
dopaths.basename, tmpfilepath)?;
- yield exec::cmd("sh", "-ev", dopaths.do, dopaths.target,
+ yield exec::cmd("@bash@/bin/sh", "-ev", dopaths.do, dopaths.target,
dopaths.basename, tmpfilepath)?;
} else {
- yield exec::cmd("sh", "-e", dopaths.do, dopaths.target,
+ yield exec::cmd("@bash@/bin/sh", "-e", dopaths.do, dopaths.target,
dopaths.basename, tmpfilepath)?;
};

@ -7,6 +7,7 @@
nix-update-script,
makeWrapper,
bash,
substituteAll,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "haredo";
@ -24,6 +25,14 @@ stdenv.mkDerivation (finalAttrs: {
hash = "sha256-gpui5FVRw3NKyx0AB/4kqdolrl5vkDudPOgjHc/IE4U=";
};
patches = [
# Use nix store's bash instead of sh. `@bash@/bin/sh` is used, since haredo expects a posix shell.
(substituteAll {
src = ./001-use-nix-store-sh.patch;
inherit bash;
})
];
nativeBuildInputs = [
hare
makeWrapper
@ -66,11 +75,6 @@ stdenv.mkDerivation (finalAttrs: {
runHook postInstall
'';
postFixup = ''
wrapProgram $out/bin/haredo \
--prefix PATH : "${lib.makeBinPath [ bash ]}"
'';
setupHook = ./setup-hook.sh;
passthru.updateScript = nix-update-script { };