From ab4295ea0fac84bcc245180db5af5ea007c40358 Mon Sep 17 00:00:00 2001 From: Sergei Trofimovich Date: Fri, 8 Aug 2025 21:50:01 +0100 Subject: [PATCH] stdenv/setup.sh: fix isMachO detection after bash-5.3 update Without the change isMachO fails to work on UTF-8 locales as `read -u 4` decoders 4 UTF-8 chars and not 4 bytes. `LANG=C` forces it to read bytes. Closes: https://github.com/NixOS/nixpkgs/issues/431934 --- pkgs/stdenv/generic/setup.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh index 5a2121dc36be..81e65129b88f 100644 --- a/pkgs/stdenv/generic/setup.sh +++ b/pkgs/stdenv/generic/setup.sh @@ -519,7 +519,7 @@ isELF() { local fd local magic exec {fd}< "$fn" - read -r -n 4 -u "$fd" magic + LANG=C read -r -n 4 -u "$fd" magic exec {fd}<&- if [ "$magic" = $'\177ELF' ]; then return 0; else return 1; fi } @@ -530,7 +530,7 @@ isMachO() { local fd local magic exec {fd}< "$fn" - read -r -n 4 -u "$fd" magic + LANG=C read -r -n 4 -u "$fd" magic exec {fd}<&- # nix uses 'declare -F' in get-env.sh to retrieve the loaded functions. @@ -559,7 +559,7 @@ isScript() { local fd local magic exec {fd}< "$fn" - read -r -n 2 -u "$fd" magic + LANG=C read -r -n 2 -u "$fd" magic exec {fd}<&- if [[ "$magic" =~ \#! ]]; then return 0; else return 1; fi }