contrib: update macOS SDK to Xcode-26.1.1-17B100
What changed, and why it matters
This commit simply updates the version numbers and download hashes used to fetch Apple's macOS development toolkit (the SDK) when building Bitcoin Core for Mac computers. It does not change any Bitcoin protocol code, wallet logic, or network behavior. There is no indication in the commit that this fixes or introduces a security problem.
No security action required. Treat as a routine build-toolchain version bump. Verify the new SHA-256 hashes match Apple's published Xcode 26.1.1 archive if performing reproducible macOS builds.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The patch bumps the macOS/Xcode SDK references from Xcode 15.0/15A240d to Xcode 26.1.1/17B100 across CI environment scripts, Guix/macdeploy README documentation, and the depends build system. It updates the expected SHA-256 checksums for the downloaded XIP archive and the generated SDK tarball. No source code, consensus, cryptography, or networking code is modified.
Changed components
ci/test/00_setup_env_mac_cross.shci/test/00_setup_env_mac_cross_intel.shcontrib/guix/README.mdcontrib/macdeploy/README.mddepends/hosts/darwin.mkInspect captured patch +14 / −14
diff --git a/ci/test/00_setup_env_mac_cross.sh b/ci/test/00_setup_env_mac_cross.sh
index 5b33c127..63d89fb9 100755
--- a/ci/test/00_setup_env_mac_cross.sh
+++ b/ci/test/00_setup_env_mac_cross.sh
@@ -12,8 +12,8 @@ export CONTAINER_NAME=ci_macos_cross
export CI_IMAGE_NAME_TAG="mirror.gcr.io/debian:trixie" # Check that https://packages.debian.org/trixie/clang (version 19, similar to guix) can cross-compile
export HOST=arm64-apple-darwin
export PACKAGES="clang lld llvm zip"
-export XCODE_VERSION=15.0
-export XCODE_BUILD_ID=15A240d
+export XCODE_VERSION=26.1.1
+export XCODE_BUILD_ID=17B100
export RUN_UNIT_TESTS=false
export RUN_FUNCTIONAL_TESTS=false
export GOAL="deploy"
diff --git a/ci/test/00_setup_env_mac_cross_intel.sh b/ci/test/00_setup_env_mac_cross_intel.sh
index 28eb7a09..4b07e14b 100755
--- a/ci/test/00_setup_env_mac_cross_intel.sh
+++ b/ci/test/00_setup_env_mac_cross_intel.sh
@@ -12,8 +12,8 @@ export CONTAINER_NAME=ci_macos_cross_intel
export CI_IMAGE_NAME_TAG="mirror.gcr.io/debian:trixie" # Check that https://packages.debian.org/trixie/clang (version 19, similar to guix) can cross-compile
export HOST=x86_64-apple-darwin
export PACKAGES="clang lld llvm zip"
-export XCODE_VERSION=15.0
-export XCODE_BUILD_ID=15A240d
+export XCODE_VERSION=26.1.1
+export XCODE_BUILD_ID=17B100
export RUN_UNIT_TESTS=false
export RUN_FUNCTIONAL_TESTS=false
export GOAL="deploy"
diff --git a/contrib/guix/README.md b/contrib/guix/README.md
index 7cf53338..088ed807 100644
--- a/contrib/guix/README.md
+++ b/contrib/guix/README.md
@@ -261,7 +261,7 @@ details.
Set the path where _extracted_ SDKs can be found. This is passed through to
the depends tree. Note that this should be set to the _parent_ directory of
the actual SDK (e.g. `SDK_PATH=$HOME/Downloads/macOS-SDKs` instead of
- `$HOME/Downloads/macOS-SDKs/Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers`).
+ `$HOME/Downloads/macOS-SDKs/Xcode-26.1.1-17B100-extracted-SDK-with-libcxx-headers`).
The path that this environment variable points to **must be a directory**, and
**NOT a symlink to a directory**.
diff --git a/contrib/macdeploy/README.md b/contrib/macdeploy/README.md
index 1763c6cb..4633246d 100644
--- a/contrib/macdeploy/README.md
+++ b/contrib/macdeploy/README.md
@@ -15,14 +15,14 @@ When complete, it will have produced `Bitcoin-Core.zip`.
A free Apple Developer Account is required to proceed.
Our macOS SDK can be extracted from
-[Xcode_15.xip](https://download.developer.apple.com/Developer_Tools/Xcode_15/Xcode_15.xip).
+[Xcode_26.1.1_Apple_silicon.xip](https://download.developer.apple.com/Developer_Tools/Xcode_26.1.1/Xcode_26.1.1_Apple_silicon.xip).
Alternatively, after logging in to your account go to 'Downloads', then 'More'
-and search for [`Xcode 15`](https://developer.apple.com/download/all/?q=Xcode%2015).
+and search for [`Xcode 26.1.1`](https://developer.apple.com/download/all/?q=Xcode%2026.1.1).
An Apple ID and cookies enabled for the hostname are needed to download this.
-The `sha256sum` of the downloaded XIP archive should be `4daaed2ef2253c9661779fa40bfff50655dc7ec45801aba5a39653e7bcdde48e`.
+The `sha256sum` of the downloaded XIP archive should be `f4c65b01e2807372b61553c71036dbfef492d7c79d4c380a5afb61aa1018e555`.
To extract the `.xip` on Linux:
@@ -33,13 +33,13 @@ git clone https://github.com/bitcoin-core/apple-sdk-tools.git
# Unpack the .xip and place the resulting Xcode.app in your current
# working directory
-python3 apple-sdk-tools/extract_xcode.py -f Xcode_15.xip | cpio -d -i
+python3 apple-sdk-tools/extract_xcode.py -f Xcode_26.1.1_Apple_silicon.xip | cpio -d -i
```
On macOS:
```bash
-xip -x Xcode_15.xip
+xip -x Xcode_26.1.1_Apple_silicon.xip
```
### Step 2: Generating the SDK tarball from `Xcode.app`
@@ -51,8 +51,8 @@ path to `Xcode.app` (extracted in the previous stage) as the first argument.
./contrib/macdeploy/gen-sdk.py '/path/to/Xcode.app'
```
-The generated archive should be: `Xcode-15.0-15A240d-extracted-SDK-with-libcxx-headers.tar`.
-The `sha256sum` should be `95b00dc41fa090747dc0a7907a5031a2fcb2d7f95c9584ba6bccdb99b6e3d498`.
+The generated archive should be: `Xcode-26.1.1-17B100-extracted-SDK-with-libcxx-headers.tar`.
+The `sha256sum` should be `9600fa93644df674ee916b5e2c8a6ba8dacf631996a65dc922d003b98b5ea3b1`.
## Deterministic macOS App Notes
diff --git a/depends/hosts/darwin.mk b/depends/hosts/darwin.mk
index 6f38a15b..71fac7cc 100644
--- a/depends/hosts/darwin.mk
+++ b/depends/hosts/darwin.mk
@@ -1,7 +1,7 @@
OSX_MIN_VERSION=14.0
OSX_SDK_VERSION=14.0
-XCODE_VERSION=15.0
-XCODE_BUILD_ID=15A240d
+XCODE_VERSION=26.1.1
+XCODE_BUILD_ID=17B100
LLD_VERSION=711
OSX_SDK=$(SDK_PATH)/Xcode-$(XCODE_VERSION)-$(XCODE_BUILD_ID)-extracted-SDK-with-libcxx-headers
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.