build: Bump macOS SDK version to 15.0 #36592

pull hebasto wants to merge 1 commits into bitcoin:master from hebasto:261021-macos-sdk changing 2 files +2 −2
  1. hebasto commented at 6:27 PM on October 21, 2026: member

    Qt 6.12, which supports deployment targets up to macOS 26, requires the macOS 15 SDK or higher.

    See https://doc.qt.io/qt-6.12/macos.html.

    This is a prerequisite for the upcoming update of Qt in depends from 6.8 LTS to 6.12 LTS.

    My partial Guix build:

    $ uname -m && find guix-build-$(git rev-parse --short=12 HEAD)/output/ -type f -print0 | env LC_ALL=C sort -z | xargs -r0 sha256sum
    x86_64
    727bcc7343afc599cadad3891a6aaa73883594a5feea6695b81056eaf1881914  guix-build-eaa8d1f5a5fc/output/arm64-apple-darwin/SHA256SUMS.part
    cea76395e4761c9cc6c1e7fc0eae52abd3bb024caeed62a3461a9cf0de2f4b08  guix-build-eaa8d1f5a5fc/output/arm64-apple-darwin/bitcoin-eaa8d1f5a5fc-arm64-apple-darwin-codesigning.tar.gz
    8886c05cca9f518441284be4cb415d275b7d118e8150e441d053e3fc61d27807  guix-build-eaa8d1f5a5fc/output/arm64-apple-darwin/bitcoin-eaa8d1f5a5fc-arm64-apple-darwin-unsigned.tar.gz
    7c6c4423e6272a821fd6adefaac6dd4a1e09f7f85ecf9efa6bd7e97c0ddc79bc  guix-build-eaa8d1f5a5fc/output/arm64-apple-darwin/bitcoin-eaa8d1f5a5fc-arm64-apple-darwin-unsigned.zip
    a74db20b1a8acd1a570a733d02ea7e3aa28ac8902462e9be9fac10e0f84e4ca1  guix-build-eaa8d1f5a5fc/output/dist-archive/bitcoin-eaa8d1f5a5fc.tar.gz
    f708d94dc0343a5057d3b8791242acd67dbb1f481b2da7fc778aa981e9fc2e42  guix-build-eaa8d1f5a5fc/output/x86_64-apple-darwin/SHA256SUMS.part
    98ddcc471b967208e491c06f697e94d09005631da463e085ee88e281c035180e  guix-build-eaa8d1f5a5fc/output/x86_64-apple-darwin/bitcoin-eaa8d1f5a5fc-x86_64-apple-darwin-codesigning.tar.gz
    7aeb9b6f84679f11d22ffe1faf4b0aa386c09f641a6d742f70ef727466b24d0f  guix-build-eaa8d1f5a5fc/output/x86_64-apple-darwin/bitcoin-eaa8d1f5a5fc-x86_64-apple-darwin-unsigned.tar.gz
    de23e46dbe3c0886fd689b16ab345120907445212ffb6fcb41ccca8cfc8d628e  guix-build-eaa8d1f5a5fc/output/x86_64-apple-darwin/bitcoin-eaa8d1f5a5fc-x86_64-apple-darwin-unsigned.zip
    
  2. build: Bump macOS SDK version to 15.0
    Qt 6.12 requires macOS 15 SDK or higher.
    See https://doc.qt.io/qt-6.12/macos.html.
    
    The minimum supported macOS version stays at 14.0.
    eaa8d1f5a5
  3. hebasto added the label macOS on Oct 21, 2026
  4. hebasto added the label Build system on Oct 21, 2026
  5. DrahtBot commented at 6:27 PM on October 21, 2026: contributor

    <!--e57a25ab6845829454e8d69fc972939a-->

    The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

    <!--006a51241073e994b41acfe9ec718e94-->

    External sites

    <!--021abf342d371248e50ceaed478a90ca-->

    Reviews

    See the guideline and AI policy for information on the review process.

    Type Reviewers
    ACK maflcko

    If your review is incorrectly listed, please copy-paste <code>&lt;!--meta-tag:bot-skip--&gt;</code> into the comment that the bot should ignore.

    <!--5faf32d7da4f0f540f40219e4f7537a3-->

  6. in depends/hosts/darwin.mk:1 in eaa8d1f5a5
       0 | @@ -1,5 +1,5 @@
       1 |  OSX_MIN_VERSION=14.0
    


    fanquake commented at 6:39 PM on October 21, 2026:

    See https://doc.qt.io/qt-6.12/macos.html.

    This page also claims that a deployment target of 14.4 or later is required, but you're not changing that here. Will our release binaries just crash on the older versions?


    hebasto commented at 7:21 PM on October 21, 2026:

    This page also claims that a deployment target of 14.4 or later is required, but you're not changing that here.

    Yes, both changes are prerequisites for updating Qt to 6.12. However, I thought it would be better to consider them separately, as we might skip no longer supported 14.4 altogether and bump the minimum version straight to 15.0.


    fanquake commented at 7:25 PM on October 21, 2026:

    Yes, both changes are prerequisites for updating Qt to 6.12.

    I don't see the other change in #36593?

  7. fanquake commented at 6:41 PM on October 21, 2026: member

    requires the macOS 15 SDK or higher.

    What is the actual requirement for the 15.x SDK?

  8. hebasto commented at 7:09 PM on October 21, 2026: member

    requires the macOS 15 SDK or higher.

    What is the actual requirement for the 15.x SDK?

    It's hard to say from the commit message. But the configuration fails with the current OSX_SDK_VERSION=14.0.

  9. in depends/hosts/darwin.mk:2 in eaa8d1f5a5
       0 | @@ -1,5 +1,5 @@
       1 |  OSX_MIN_VERSION=14.0
       2 | -OSX_SDK_VERSION=14.0
       3 | +OSX_SDK_VERSION=15.0
    


    maflcko commented at 7:35 AM on October 22, 2026:

    Can you explain what this value means for non-Apple people? According to https://developer.apple.com/documentation/xcode-release-notes/xcode-26_1-release-notes?changes=l_4,l_4,l_4,l_4&utm_source=openai#Overview, Xcode 26.1.1 includes [...] SDKs for [...] 26.1, so this value should be 26.1 and neither 14 nor 15?

    <details><summary>I think this is also what Ralph LLM asks:</summary>

    The pinned sysroot comes from Xcode 26.1.1/17B100 and contains the macOS 26.1 SDK, but the linker receives 15.0 as the SDK version and the Guix symbol checker requires that value. Builds using this sysroot therefore report SDK 15.0 in their Mach-O metadata despite using the macOS 26.1 SDK. Could the linker metadata and checker use the actual SDK version while keeping OSX_MIN_VERSION=14.0? If Qt needs a separate SDK floor, keep that separate rather than using one value for both. (developer.apple.com)

    </details>

    Basically, I wonder why is this not 26.1 now. Going further, this line could also be removed on the next archive bump and the actual version could simply be extracted from SDKSettings.json's version field?


    hebasto commented at 4:02 PM on October 27, 2026:

    Can you explain what this value means for non-Apple people?

    The linker stamps the SDK version into the binary. At runtime, Apple’s frameworks read it to decide which generation of behaviour the binary opts into, independently of the headers actually used and of the minimum supported macOS version.

    Choosing 26.1 means the binary opts into every behaviour change Apple has gated up to macOS 26.1, so on any OS that has them, the latest ones are used.

    Choosing 15.0 means the binary opts into changes gated up to macOS 15.0 and keeps the legacy behaviour for anything gated later.

    This choice affects the look-and-feel of the GUI. Consider the following side-by-side comparison of OSX_SDK_VERSION=14.0 and OSX_SDK_VERSION=26.1 on macOS 27.2:

    <img width="1280" height="798" alt="image" src="https://github.com/user-attachments/assets/f24a4531-66a4-4ef1-b879-dbd09fa9bc11" />


    maflcko commented at 4:16 PM on October 27, 2026:

    Thanks for clarifying!

    Though, I still wonder why this is not 26.1 now (i.e. the latest SDK), so that any OS can use the latest features, if it has them. Is there some requirement that GUI looks the same for any macOS version? Or is this some hack in the assumption that gating the features will avoid having an exploding test matrix?

    Personally, I think it is fine to let the GUI look different (possibly "modern" on later macOS versions). Also I think it is fine to use other SDK features on later macOS versions. If there was a bug in any of them, we'd have to fix them anyway for self-compilation and if there is a macOS bug a feature gate is no guarantee that the bug won't happen?

    Just curious. Any value here seems fine, given your reply.


    hebasto commented at 4:35 PM on October 27, 2026:

    Though, I still wonder why this is not 26.1 now (i.e. the latest SDK), so that any OS can use the latest features, if it has them.

    That would require us to test the release binaries on every supported macOS version, with each one running a different generation of framework behaviour.

    Is there some requirement that GUI looks the same for any macOS version?

    No, there is not, as far as I'm aware.

    Or is this some hack in the assumption that gating the features will avoid having an exploding test matrix?

    Yes, that is my thinking.

    Personally, I think it is fine to let the GUI look different (possibly "modern" on later macOS versions). Also I think it is fine to use other SDK features on later macOS versions. If there was a bug in any of them, we'd have to fix them anyway for self-compilation and if there is a macOS bug a feature gate is no guarantee that the bug won't happen?

    To use the latest SDK, it's needed to build with Homebrew’s packages.

  10. maflcko commented at 4:44 PM on October 27, 2026: member

    lgtm ACK eaa8d1f5a5fcfeefcb3ff432aeb969e8f8f14a7d


github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-10-30 09:40 UTC