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?


    fanquake commented at 10:24 AM on November 5, 2026:

    @hebasto you might have missed this comment?

  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.


    fanquake commented at 10:22 AM on November 5, 2026:

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

    What do you mean here?

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

    lgtm ACK eaa8d1f5a5fcfeefcb3ff432aeb969e8f8f14a7d

  11. sedited commented at 10:20 AM on November 5, 2026: contributor

    Guix build

    762b951b94452e1abd0694afde6d5bda17f42fc894d43f158faa8dfecd004720  guix-build-eaa8d1f5a5fc/output/aarch64-linux-gnu/SHA256SUMS.part
    0210bb680140e576d6ca24f02261f80a1b0c19e56dea688789f559f5f6f89bce  guix-build-eaa8d1f5a5fc/output/aarch64-linux-gnu/bitcoin-eaa8d1f5a5fc-aarch64-linux-gnu-debug.tar.gz
    86f45deade142e25d9abd049389dca613f5d58edd788e3b6a8b7f1c03812e5cc  guix-build-eaa8d1f5a5fc/output/aarch64-linux-gnu/bitcoin-eaa8d1f5a5fc-aarch64-linux-gnu.tar.gz
    7576f85b6c5796bddb9ca6a86a383e58a396d9bfb3dff701fb03e24899f854d0  guix-build-eaa8d1f5a5fc/output/arm-linux-gnueabihf/SHA256SUMS.part
    01cafe9bd643ba34bb87da1e517fb4693744175b4da70e98f0827f81a0bf3f30  guix-build-eaa8d1f5a5fc/output/arm-linux-gnueabihf/bitcoin-eaa8d1f5a5fc-arm-linux-gnueabihf-debug.tar.gz
    e5a226ea573cca034a0d712407666227ff912b020ad9821f6320fda8d7c06790  guix-build-eaa8d1f5a5fc/output/arm-linux-gnueabihf/bitcoin-eaa8d1f5a5fc-arm-linux-gnueabihf.tar.gz
    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
    4dd2457d102c5336798bb7b4d7dc818b63e9e930aaa8037085fdfc8e2dbfab93  guix-build-eaa8d1f5a5fc/output/powerpc64-linux-gnu/SHA256SUMS.part
    d4006334dbf97fc79c40b7df4dc0d8984fc0ea0bb7080a5899fd29b0d10f6281  guix-build-eaa8d1f5a5fc/output/powerpc64-linux-gnu/bitcoin-eaa8d1f5a5fc-powerpc64-linux-gnu-debug.tar.gz
    4ffa5353048e73001ad7a246f568541aaa27a866274671e69c57ead0519e8f05  guix-build-eaa8d1f5a5fc/output/powerpc64-linux-gnu/bitcoin-eaa8d1f5a5fc-powerpc64-linux-gnu.tar.gz
    ab78f1d6bf3fc538aa536e959dd72017dace15f268df31653b8b8e479fd392ff  guix-build-eaa8d1f5a5fc/output/riscv64-linux-gnu/SHA256SUMS.part
    42ef946a521af2346aef20b00cdf35dd92b27c32b36147699716eb35debf8314  guix-build-eaa8d1f5a5fc/output/riscv64-linux-gnu/bitcoin-eaa8d1f5a5fc-riscv64-linux-gnu-debug.tar.gz
    4a1426de9ce9bd8e81aa90147dee5ba2e06c87515e2d6494fb76ef666d74b92d  guix-build-eaa8d1f5a5fc/output/riscv64-linux-gnu/bitcoin-eaa8d1f5a5fc-riscv64-linux-gnu.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
    d07e519e6bc834abd04132d7d7b18f6e36b56f591d1179532465af3d8f6b67d7  guix-build-eaa8d1f5a5fc/output/x86_64-linux-gnu/SHA256SUMS.part
    8b5ab48d2c1928e1b6b43a2ed70a7a5e37974d0d0a381dfd9e486433ce2bd9b1  guix-build-eaa8d1f5a5fc/output/x86_64-linux-gnu/bitcoin-eaa8d1f5a5fc-x86_64-linux-gnu-debug.tar.gz
    924af34dc099fd28eacf0ed2aacc7da1030e1c528670d7080ee0eacfe9dae6fa  guix-build-eaa8d1f5a5fc/output/x86_64-linux-gnu/bitcoin-eaa8d1f5a5fc-x86_64-linux-gnu.tar.gz
    5cf6ac7afc06e7733cacfaa01c460983828640f2576b1832c0b2a28ad891c2d0  guix-build-eaa8d1f5a5fc/output/x86_64-w64-mingw32/SHA256SUMS.part
    0f71490ca1385e4ec8ae8f1e589e09884c467cfc901bd2134ffacf4a81427306  guix-build-eaa8d1f5a5fc/output/x86_64-w64-mingw32/bitcoin-eaa8d1f5a5fc-win64-codesigning.tar.gz
    e6c2b56fe3b58eb1c864d845697c0cced35bacce76e173b0d048b175fa76b28c  guix-build-eaa8d1f5a5fc/output/x86_64-w64-mingw32/bitcoin-eaa8d1f5a5fc-win64-debug.zip
    adbf6647eb4789640c31eefc32cb1c469f9a31dd1fc4aacdaf67c3809b166442  guix-build-eaa8d1f5a5fc/output/x86_64-w64-mingw32/bitcoin-eaa8d1f5a5fc-win64-setup-unsigned.exe
    b4a1747262b37f022ab34fce98c2538cb7d807472790714250adf9be1bda14fa  guix-build-eaa8d1f5a5fc/output/x86_64-w64-mingw32/bitcoin-eaa8d1f5a5fc-win64-unsigned.zip
    

    Looks good to me, but don't have a mac to test.

  12. fanquake commented at 10:31 AM on November 5, 2026: member

    Not a blocker, but one thing I'm not quite following (in this GUI context), is when the decision is being made to "bump" things, vs patching around requirements. In this PR, the version requirement isn't really known, other than configure fails, which I assume could be patched around; but instead we are bumping. Whereas in #36593, we are patching dependencies to avoid bumping, #36593 (review), without knowing if it will actually work?

  13. fanquake merged this on Nov 5, 2026
  14. fanquake closed this on Nov 5, 2026


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-11-14 11:51 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me