diff --git a/pkgs/development/tools/build-managers/bazel/bazel_4/actions_path.patch b/pkgs/development/tools/build-managers/bazel/bazel_4/actions_path.patch new file mode 100644 index 000000000000..bade7fdb7165 --- /dev/null +++ b/pkgs/development/tools/build-managers/bazel/bazel_4/actions_path.patch @@ -0,0 +1,21 @@ +diff --git a/src/main/java/com/google/devtools/build/lib/exec/local/PosixLocalEnvProvider.java b/src/main/java/com/google/devtools/build/lib/exec/local/PosixLocalEnvProvider.java +index 6fff2af..7e2877e 100755 +--- a/src/main/java/com/google/devtools/build/lib/exec/local/PosixLocalEnvProvider.java ++++ b/src/main/java/com/google/devtools/build/lib/exec/local/PosixLocalEnvProvider.java +@@ -47,6 +47,16 @@ public final class PosixLocalEnvProvider implements LocalEnvProvider { + Map env, BinTools binTools, String fallbackTmpDir) { + ImmutableMap.Builder result = ImmutableMap.builder(); + result.putAll(Maps.filterKeys(env, k -> !k.equals("TMPDIR"))); ++ ++ // In case we are running on NixOS. ++ // If bash is called with an unset PATH on this platform, ++ // it will set it to /no-such-path and default tools will be missings. ++ // See, https://github.com/NixOS/nixpkgs/issues/94222 ++ // So we ensure that minimal dependencies are present. ++ if (!env.containsKey("PATH")){ ++ result.put("PATH", "@actionsPathPatch@"); ++ } ++ + String p = clientEnv.get("TMPDIR"); + if (Strings.isNullOrEmpty(p)) { + // Do not use `fallbackTmpDir`, use `/tmp` instead. This way if the user didn't export TMPDIR diff --git a/pkgs/development/tools/build-managers/bazel/bazel_4/default.nix b/pkgs/development/tools/build-managers/bazel/bazel_4/default.nix index 3dd40ad1f8a4..09d967a599ae 100644 --- a/pkgs/development/tools/build-managers/bazel/bazel_4/default.nix +++ b/pkgs/development/tools/build-managers/bazel/bazel_4/default.nix @@ -208,6 +208,11 @@ stdenv.mkDerivation rec { strictActionEnvPatch = defaultShellPath; }) + (substituteAll { + src = ./actions_path.patch; + actionsPathPatch = defaultShellPath; + }) + # bazel reads its system bazelrc in /etc # override this path to a builtin one (substituteAll {