From e3e3146e26b485fa641d246714dab4a92c5d734a Mon Sep 17 00:00:00 2001 From: Micah Alpern Date: Sun, 13 Sep 2026 09:11:50 -0700 Subject: [PATCH] Use selected Xcode SDK for local builds --- Scripts/lib/xcode.sh | 7 ++++++- .../KeyPathTests/Lint/DeploymentScriptContractTests.swift | 3 ++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Scripts/lib/xcode.sh b/Scripts/lib/xcode.sh index 5fb249822..8ce7f4301 100644 --- a/Scripts/lib/xcode.sh +++ b/Scripts/lib/xcode.sh @@ -4,7 +4,7 @@ # Set KEYPATH_DEV_XCODE_DEVELOPER_DIR only when intentionally validating another toolchain. KEYPATH_STABLE_XCODE_VERSION="${KEYPATH_STABLE_XCODE_VERSION:-26.6}" -KEYPATH_STABLE_XCODE_DEVELOPER_DIR="${KEYPATH_STABLE_XCODE_DEVELOPER_DIR:-/Applications/Xcode-26.6.0.app/Contents/Developer}" +KEYPATH_STABLE_XCODE_DEVELOPER_DIR="${KEYPATH_STABLE_XCODE_DEVELOPER_DIR:-/Applications/Xcode-26.6.app/Contents/Developer}" keypath_xcode_version() { local developer_dir="$1" @@ -45,4 +45,9 @@ keypath_use_stable_xcode() { echo "❌ Invalid Xcode developer directory: $DEVELOPER_DIR" >&2 return 1 fi + + # Rust invokes the system compiler through `cc`; without an explicit SDK it + # can resolve Command Line Tools even when DEVELOPER_DIR points at Xcode. + # Keep every compiler on the same selected Xcode SDK. + export SDKROOT="$DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk" } diff --git a/Tests/KeyPathTests/Lint/DeploymentScriptContractTests.swift b/Tests/KeyPathTests/Lint/DeploymentScriptContractTests.swift index 15bc1d3fd..c1d1bfba2 100644 --- a/Tests/KeyPathTests/Lint/DeploymentScriptContractTests.swift +++ b/Tests/KeyPathTests/Lint/DeploymentScriptContractTests.swift @@ -36,12 +36,13 @@ final class DeploymentScriptContractTests: XCTestCase { "Scripts/release-doctor.sh", ] - XCTAssertTrue(xcodeContract.contains("Xcode-26.6.0.app/Contents/Developer")) + XCTAssertTrue(xcodeContract.contains("Xcode-26.6.app/Contents/Developer")) XCTAssertTrue(xcodeContract.contains(#"KEYPATH_STABLE_XCODE_VERSION="${KEYPATH_STABLE_XCODE_VERSION:-26.6}""#)) XCTAssertTrue(xcodeContract.contains("/Applications/Xcode.app/Contents/Developer")) XCTAssertTrue(xcodeContract.contains("keypath_xcode_version")) XCTAssertTrue(xcodeContract.contains("KEYPATH_DEV_XCODE_DEVELOPER_DIR")) XCTAssertTrue(xcodeContract.contains("keypath_use_stable_xcode")) + XCTAssertTrue(xcodeContract.contains("export SDKROOT=")) for relativePath in consumers { let script = try contents(of: root.appendingPathComponent(relativePath))