Fix mach argument quoting on NixOS (#35573)

This patch makes mach shell-quote its arguments when rerunning itself
with `nix-shell`, so that spaces and other special characters are
handled correctly.

Signed-off-by: Delan Azabani <dazabani@igalia.com>
This commit is contained in:
Delan Azabani 2025-02-21 16:21:50 +08:00 committed by GitHub
parent 9c8a47e993
commit 14db055d46
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

8
mach
View file

@ -15,6 +15,14 @@
run_in_nix_if_needed() {
if { [ -f /etc/NIXOS ] || [ -n "${MACH_USE_NIX}" ]; } && [ -z "${IN_NIX_SHELL}" ]; then
EXTRA_NIX_ARGS=${SERVO_ANDROID_BUILD:+'--arg buildAndroid true'}
# `nix-shell` needs the whole command passed as a single argument, so the arguments need
# to be shell-quoted. Rotate through the arguments, replacing them with quoted versions.
for arg in "$@"; do
set -- "$@" "$(printf \%q "$1")"
shift
done
echo "NOTE: Entering nix-shell ${MACH_DIR}/shell.nix"
exec nix-shell "${MACH_DIR}/shell.nix" $EXTRA_NIX_ARGS --run "$*"
else