From 3576806d7edc615b2e89ee4f845d67c5b6c7ecc1 Mon Sep 17 00:00:00 2001 From: Malte Poll <1780588+malt3@users.noreply.github.com> Date: Thu, 2 Nov 2023 13:13:00 +0100 Subject: [PATCH] bazel: use bash with fallback $PATH consisting of basic shell utils --- .../build-managers/bazel/bazel_6/default.nix | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/pkgs/development/tools/build-managers/bazel/bazel_6/default.nix b/pkgs/development/tools/build-managers/bazel/bazel_6/default.nix index 8fb37a9f666f..de82eb54eb9d 100644 --- a/pkgs/development/tools/build-managers/bazel/bazel_6/default.nix +++ b/pkgs/development/tools/build-managers/bazel/bazel_6/default.nix @@ -22,6 +22,7 @@ , file , substituteAll , writeTextFile +, writeShellApplication }: let @@ -128,6 +129,16 @@ let defaultShellPath = lib.makeBinPath defaultShellUtils; + bashWithDefaultShellUtils = writeShellApplication { + name = "bash"; + text = '' + if [[ "$PATH" == "/no-such-path" ]]; then + export PATH=${defaultShellPath} + fi + exec ${bash}/bin/bash "$@" + ''; + }; + platforms = lib.platforms.linux ++ lib.platforms.darwin; system = if stdenv.hostPlatform.isDarwin then "darwin" else "linux"; @@ -420,8 +431,8 @@ stdenv.mkDerivation rec { # If you add more replacements here, you must change the grep above! # Only files containing /bin are taken into account. substituteInPlace "$path" \ - --replace /bin/bash ${bash}/bin/bash \ - --replace "/usr/bin/env bash" ${bash}/bin/bash \ + --replace /bin/bash ${bashWithDefaultShellUtils}/bin/bash \ + --replace "/usr/bin/env bash" ${bashWithDefaultShellUtils}/bin/bash \ --replace "/usr/bin/env python" ${python3}/bin/python \ --replace /usr/bin/env ${coreutils}/bin/env \ --replace /bin/true ${coreutils}/bin/true @@ -436,17 +447,17 @@ stdenv.mkDerivation rec { # bazel test runner include references to /bin/bash substituteInPlace tools/build_rules/test_rules.bzl \ - --replace /bin/bash ${bash}/bin/bash + --replace /bin/bash ${bashWithDefaultShellUtils}/bin/bash for i in $(find tools/cpp/ -type f) do substituteInPlace $i \ - --replace /bin/bash ${bash}/bin/bash + --replace /bin/bash ${bashWithDefaultShellUtils}/bin/bash done # Fixup scripts that generate scripts. Not fixed up by patchShebangs below. substituteInPlace scripts/bootstrap/compile.sh \ - --replace /bin/bash ${bash}/bin/bash + --replace /bin/bash ${bashWithDefaultShellUtils}/bin/bash # add nix environment vars to .bazelrc cat >> .bazelrc <