bazel: use bash with fallback $PATH consisting of basic shell utils

This commit is contained in:
Malte Poll
2023-11-11 00:25:53 +01:00
committed by Bjørn Forsman
parent 061b245b47
commit 3576806d7e
@@ -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 <<EOF