Unverified Commit b155c656 authored by Coutinho de Souza's avatar Coutinho de Souza
Browse files

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.
parent d3195bd6
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
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)?;
 	};
 
+9 −5
Original line number Diff line number Diff line
@@ -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 { };