From 54ae3fdcd9b6e7392a1eba8294d45ed547553c5c Mon Sep 17 00:00:00 2001 From: dramforever Date: Sat, 4 Oct 2025 19:37:05 +0800 Subject: [PATCH 1/2] release.nix: Use arm64-apple-darwin in bootstrapConfigs, not aarch64 Fix this config name for consistency with non-bootstrap platform config. This also fixes a build failure of the bootstrap tools on aarch64-darwin, where a test in LLVM 21 assumes it's spelt arm64, not aarch64. Also saves on having to rebuild LLVM just for bootstrap tools, now that the config is consistent. --- pkgs/stdenv/darwin/bootstrap-files/aarch64-apple-darwin.nix | 2 ++ pkgs/top-level/release.nix | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/stdenv/darwin/bootstrap-files/aarch64-apple-darwin.nix b/pkgs/stdenv/darwin/bootstrap-files/aarch64-apple-darwin.nix index 0af9115a32e3..9d014ae3be17 100644 --- a/pkgs/stdenv/darwin/bootstrap-files/aarch64-apple-darwin.nix +++ b/pkgs/stdenv/darwin/bootstrap-files/aarch64-apple-darwin.nix @@ -1,3 +1,5 @@ +# FIXME: Changed to arm64-apple-darwin in release.nix stdenvBootstrapTools, please handle when refreshing + # Autogenerated by maintainers/scripts/bootstrap-files/refresh-tarballs.bash as: # $ ./refresh-tarballs.bash --targets=aarch64-apple-darwin # diff --git a/pkgs/top-level/release.nix b/pkgs/top-level/release.nix index ff45ccee7bce..e8ce5f1c82b6 100644 --- a/pkgs/top-level/release.nix +++ b/pkgs/top-level/release.nix @@ -22,7 +22,7 @@ supportedSystems ? builtins.fromJSON (builtins.readFile ../../ci/supportedSystems.json), # The platform triples for which we build bootstrap tools. bootstrapConfigs ? [ - "aarch64-apple-darwin" + "arm64-apple-darwin" "aarch64-unknown-linux-gnu" "aarch64-unknown-linux-musl" "i686-unknown-linux-gnu" From b0ff7e6b3af51c7fe10ced9901a0361380d1b76f Mon Sep 17 00:00:00 2001 From: dramforever Date: Sat, 4 Oct 2025 19:52:24 +0800 Subject: [PATCH 2/2] freshBootstraptools.test: Fix Clang test on Darwin Since #420382, we set an absolute default CLANG_RESOURCE_DIR for LLVM versions >= 21, which breaks the bootstrap tools because the absolute path was removed by nuke-ref while building and isn't there while bootstrapping. Pass -resource-dir explicitly while testing Clang to make it work. --- pkgs/stdenv/darwin/test-bootstrap-tools.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pkgs/stdenv/darwin/test-bootstrap-tools.nix b/pkgs/stdenv/darwin/test-bootstrap-tools.nix index fc463a1b3e07..1a950d460318 100644 --- a/pkgs/stdenv/darwin/test-bootstrap-tools.nix +++ b/pkgs/stdenv/darwin/test-bootstrap-tools.nix @@ -55,7 +55,8 @@ builtins.derivation { # The stdenv bootstrap builds the SDK in the bootstrap. Use an existing SDK to test the tools. export SDKROOT='${apple-sdk.sdkroot}' - export flags="-idirafter $SDKROOT/usr/include --sysroot=$SDKROOT -L$SDKROOT/usr/lib -L$tools/lib -DTARGET_OS_IPHONE=0" + export resource_dir="$(echo "$tools"/lib/clang/*)" # Expand wildcard + export flags="-resource-dir=$resource_dir -idirafter $SDKROOT/usr/include --sysroot=$SDKROOT -L$SDKROOT/usr/lib -L$tools/lib -DTARGET_OS_IPHONE=0" export CPP="clang -E $flags" export CC="clang $flags" @@ -77,7 +78,7 @@ builtins.derivation { # using -Wl,-flat_namespace is required to generate an error mkdir libtest/ ln -s $tools/lib/libc++.dylib libtest/ - clang++ -Wl,-flat_namespace -idirafter $SDKROOT/usr/include -isystem$tools/include/c++/v1 \ + clang++ -Wl,-flat_namespace -resource-dir=$resource_dir -idirafter $SDKROOT/usr/include -isystem$tools/include/c++/v1 \ --sysroot=$SDKROOT -L$SDKROOT/usr/lib -L./libtest -L$PWD/libSystem-boot hello3.cc tar xvf ${hello.src}