Inside Bitcoin
Opening the selected file…
Inside Bitcoin
Opening the selected file…
The code behind the network, with room to understand it.
Release published 2026-10-28 · Snapshot fetched 2026-11-01. Latest stable release at fetch time; development branches and Git history are excluded. Only the selected code window and visible folders load here.
1# MacOS Deployment3The `macdeployqtplus` script should not be run manually. Instead, after building as usual:5```bash6make deploy7```9When complete, it will have produced `Bitcoin-Core.zip`.11## SDK Extraction13### Step 1: Obtaining `Xcode.app`15A free Apple Developer Account is required to proceed.17Our macOS SDK can be extracted from18[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).20Alternatively, after logging in to your account go to 'Downloads', then 'More'21and search for [`Xcode 26.1.1`](https://developer.apple.com/download/all/?q=Xcode%2026.1.1).23An Apple ID and cookies enabled for the hostname are needed to download this.25The `sha256sum` of the downloaded XIP archive should be `f4c65b01e2807372b61553c71036dbfef492d7c79d4c380a5afb61aa1018e555`.27To extract the `.xip` on Linux:29```bash30# Install/clone tools needed for extracting Xcode.app31apt install cpio32git clone https://github.com/bitcoin-core/apple-sdk-tools.git34# Unpack the .xip and place the resulting Xcode.app in your current35# working directory36python3 apple-sdk-tools/extract_xcode.py -f Xcode_26.1.1_Apple_silicon.xip | cpio -d -i37```39On macOS:41```bash42xip -x Xcode_26.1.1_Apple_silicon.xip43```45### Step 2: Generating the SDK tarball from `Xcode.app`47To generate the SDK, run the script [`gen-sdk.py`](./gen-sdk.py) with the48path to `Xcode.app` (extracted in the previous stage) as the first argument.50```bash51./contrib/macdeploy/gen-sdk.py '/path/to/Xcode.app'52```54The generated archive should be: `Xcode-26.1.1-17B100-extracted-SDK-with-libcxx-headers.tar`.55The `sha256sum` should be `9600fa93644df674ee916b5e2c8a6ba8dacf631996a65dc922d003b98b5ea3b1`.57## Deterministic macOS App Notes59macOS Applications are created on Linux using a recent LLVM.61All builds must target an Apple SDK. These SDKs are free to download, but not redistributable.62See the SDK Extraction notes above for how to obtain it.64The Guix build process has been designed to avoid including the SDK's files in Guix's outputs.65All interim tarballs are fully deterministic and may be freely redistributed.67Using an Apple-blessed key to sign binaries is a requirement to produce (distributable) macOS68binaries. Because this private key cannot be shared, we'll have to be a bit creative in order69for the build process to remain somewhat deterministic. Here's how it works:71- Builders use Guix to create an unsigned release. This outputs an unsigned ZIP which72users may choose to bless, self-codesign, and run. It also outputs an unsigned app structure73in the form of a tarball.74- The Apple keyholder uses this unsigned app to create a detached signature, using the75included script. Detached signatures are available from this [repository](https://github.com/bitcoin-core/bitcoin-detached-sigs).76- Builders feed the unsigned app + detached signature back into Guix, which combines the77pieces into a deterministic ZIP.
Independent explanations by MyBitcoinExplorer. Not affiliated with or endorsed by Bitcoin Core. Guides are educational and do not replace the source or its tests.
Bitcoin Core source © its contributors, distributed under the MIT license. Original notices and bundled third-party licenses are retained in the source tree.