GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — gh-138171: Migrate iOS testbed location and add Apple build script by freakboy3742 · Pull Request #138176 · python/cpython

Conversation

@freakboy3742

@freakboy3742 freakboy3742 commented Aug 27, 2025 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor

This script simplifies the process of configuring, compiling and packaging an XCframework for an Apple platform. This is an analog of the scripts used to build Android and Emscripten artefacts. It is a precursor to adding GitHub Action builds for iOS, and producing iOS build artefacts.

At present, it only supports iOS, but it has been constructed so that it could be used on any Apple platform (including, potentially, a redistributable macOS XCframework).

The simplest usage of this script is:

  $ python Apple ci iOS

which will:

  • Clean any pre-existing build artefacts
  • Configure and make a Python that can be used for the build
  • Configure and make a Python for each supported iOS architecture and ABI
  • Combine the outputs of the builds from the previous step into a single
    XCframework, merging binaries into a "fat" binary if necessary
  • Clone a copy of the testbed, configured to use the XCframework
  • Construct a tarball containing the release artefacts
  • Run the test suite using the generated XCframework.

This is the complete sequence that would be needed in CI to build and test a candidate release artefact. The output of the command will detect if it's running in a GitHub Actions and use output groups to make the log output easier to digest.

Each individual step can be invoked individually - there are commands to clean, configure-build, make-build, configure-host, make-host, package, and test.

There is also a build command that can be used to combine the configure and make steps for the build Python, an individual host, all hosts, or all builds.

One of the steps is to manage the download of binary artefacts; these artefacts are downloaded to the cross-build/downloads folder by default, but an alternate cache location can be provided.

There are three potentially controversial parts to this PR:

Moving iOS to Apple/iOS

As part of recognising that iOS is one of (potentially) many Apple platforms, and to prevent future proliferation of top-level directories for other Apple platforms, it migrates the iOS folder into a top level Apple folder. This change isn't strictly required, but if we don't make this change now, there is potential for a proliferation of directories if/when we add support for tvOS, watchOS, visionOS, macCatalyst. It also provides a convenient home for "cross platform" apple concerns, like the testbed script and the build script itself, as well as place for the existing content in the Mac directory to migrate to as part of a cleanup of macOS builds - something that @ned-deily has expressed an interest in doing 1

Universal simulator binaries

This PR generates a build that includes x86_64 simulator binaries. The iOS simulator slice of the XCframework is effectively a "universal" build covering both x86_64 and ARM64; although it has to be compiled in 2 passes and binaries merged after the fact. It's possible to both compile and test x86_64 binaries on ARM64 machines (pass --simulator "iPhone 16e,arch=x86_64" to the ci or test target, or to the testbed script), although running the test suite in emulator mode currently causes some test failure related to build-details.json not being fully cross-platform aware.

x86_64 isn't a Tier 3 platform for Python due to the difficulties of commissioning a buildbot; but x86_64 is still a supported platform for Apple. If we're going to produce official binaries, it seems to me like we should still support x86_64.

If we choose not to support x86_64, then there will be some changes required to the build script and testbed, as the name of the simulator slice will change from ios_arm64_x86_64_simulator to ios_arm64_simulator. It would also allow removing the most complicated part of this script - the part that does the merging of binaries.

Backporting to 3.13 and 3.14

I've proposed this for backport to 3.13 and 3.14. This is primarily so that the buildbots can be migrated to use this script, and CI jobs can be added for iOS. The directory reorganization is a significant change to make in a backport, especially in the year-old 3.13 release; however, when I floated this idea at the CPython core team summit, @Yhg1s suggested 1 that while it is a big change, the set of affected iOS users would be small, so the impact wasn't a huge concern.


NOTE: This PR currently contains a duplicate of the iOS/Resources/bin directory; this is needed because the location is hard-coded into the buildbots. Once the location change is confirmed, I can add the new path to the buildbot configuration, and remove the duplicate bin scripts.

  • Issue: Add mechanism for building iOS XCframeworks #138171

📚 Documentation preview 📚: https://cpython-previews--138176.org.readthedocs.build/

Footnotes

  1. https://pyfound.blogspot.com/2025/06/python-language-summit-2025-python-on-mobile.html ↩ ↩2

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@freakboy3742
Migrate testbed location and add cross-platform build script.
4a11615
@freakboy3742
freakboy3742 requested review from a team, AA-Turner, corona10 and erlend-aasland as code owners August 27, 2025 06:59
@freakboy3742 freakboy3742 added OS-ios needs backport to 3.13 only security fixes needs backport to 3.14 bugs and security fixes labels Aug 27, 2025
@bedevere-app bedevere-app Bot added the awaiting core review label Aug 27, 2025
@bedevere-app bedevere-app Bot mentioned this pull request Aug 27, 2025
Add mechanism for building iOS XCframeworks #138171
Closed
@freakboy3742

This comment was marked as resolved.

Sign in to view
@bedevere-bot

This comment was marked as outdated.

Sign in to view
@freakboy3742
As a buildbot workaround, retain a copy of the compiler shims in the …
b89f46f
…old location.
@freakboy3742

freakboy3742 commented Aug 27, 2025

Copy link
Copy Markdown
Contributor Author

The buildbot initially failed because the buildbot configuration references the older iOS/Resource/bin location. As an immediate workaround, I've restored the shims to their old location; if the directory move is accepted as a change, then I can modify the buildbot and remove the duplicate.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@freakboy3742

This comment was marked as outdated.

Sign in to view
@bedevere-bot

This comment was marked as outdated.

Sign in to view
@freakboy3742
...and get the legacy location correct.
68d671b
@freakboy3742

freakboy3742 commented Aug 27, 2025

Copy link
Copy Markdown
Contributor Author

!buildbot iOS

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@bedevere-bot

bedevere-bot commented Aug 27, 2025

Copy link
Copy Markdown

🤖 New build scheduled with the buildbot fleet by @freakboy3742 for commit 68d671b 🤖

Results will be shown at:

https://buildbot.python.org/all/#/grid?branch=refs%2Fpull%2F138176%2Fmerge

The command will test the builders whose names match following regular expression: iOS

The builders matched are:

  • iOS ARM64 Simulator PR
All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@AA-Turner

AA-Turner commented Aug 27, 2025

Copy link
Copy Markdown
Member

@freakboy3742 I imagine the CODEOWNERS entries will need updating in this PR?

freakboy3742 reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

AA-Turner
AA-Turner reviewed Aug 27, 2025
View reviewed changes
Comment thread .gitignore Outdated
Comment on lines +77 to +80
Apple/testbed/Python.xcframework/*-*/bin
Apple/testbed/Python.xcframework/*-*/include
Apple/testbed/Python.xcframework/*-*/lib
Apple/testbed/Python.xcframework/*-*/Python.framework

@AA-Turner AA-Turner Aug 27, 2025

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need *-* or would a simpler * pattern work?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@freakboy3742 freakboy3742 Aug 27, 2025

Copy link
Copy Markdown
Contributor Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hrm - you may be right. I used the *-* pattern because there are files in that folder that need to be version controlled (most notably, Info.plist), but when combined with the suffixes, they should be unique.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
AA-Turner
AA-Turner reviewed Aug 27, 2025
View reviewed changes
Comment thread Apple/__main__.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

@freakboy3742
freakboy3742 requested a review from ned-deily August 27, 2025 22:09
@freakboy3742
Updates to CODEOWNERS, gitignore and clean targets.
39856d1
@freakboy3742
freakboy3742 requested review from ezio-melotti and hugovk as code owners August 27, 2025 22:21
hugovk
hugovk reviewed Aug 28, 2025
View reviewed changes

@hugovk hugovk left a comment

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 to moving these under Apple.

Or should we go a step further and have a build, platform or $bikeshed dir for all of Apple, Android and PC, and whatever comes next (Linux?)

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread Apple/__main__.py


def unpack_deps(host, prefix_dir, cache_dir=None):
deps_url = "https://github.com/beeware/cpython-apple-source-deps/releases/download"

@hugovk hugovk Aug 28, 2025

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are there plans to move this under https://github.com/python/?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@freakboy3742 freakboy3742 Aug 28, 2025

Copy link
Copy Markdown
Contributor Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. @emmatyping started a pre-PEP discussion recently about consolidating the various repos we have into a single "binary dependency management repo", so that we have a single source for all (or as many as possible) of the build systems as possible. iOS and Android binaries (which are both currently BeeWare hosted) are part of those discussions.

If there's a more pressing interest for an interim solution, I'm happy to transfer ownership of both the iOS and Android repos to the Python org, or to give maintainer access to the existing repos any core team member who wants it.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

hugovk and mhsmith reacted with thumbs up emoji
All reactions
  • 👍 2 reactions
Comment thread Apple/__main__.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread Apple/__main__.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread Apple/__main__.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread Apple/__main__.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread Apple/__main__.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread Apple/iOS/README.rst Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread Apple/testbed/__main__.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

freakboy3742 and others added 3 commits August 29, 2025 07:25
@freakboy3742 @hugovk
Apply suggestions from code review
f6a836c
Co-authored-by: Hugo van Kemenade <[email protected]>
@freakboy3742
Convert README to Markdown.
c692e9a
@freakboy3742
Add type hints and more docstrings.
fe39aa4
@freakboy3742

freakboy3742 commented Sep 19, 2025

Copy link
Copy Markdown
Contributor Author

!buildbot iOS

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@bedevere-bot

bedevere-bot commented Sep 19, 2025

Copy link
Copy Markdown

🤖 New build scheduled with the buildbot fleet by @freakboy3742 for commit e0f6b5a 🤖

Results will be shown at:

https://buildbot.python.org/all/#/grid?branch=refs%2Fpull%2F138176%2Fmerge

The command will test the builders whose names match following regular expression: iOS

The builders matched are:

  • iOS ARM64 Simulator PR
All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

mhsmith
mhsmith reviewed Sep 19, 2025
View reviewed changes
Comment thread Apple/__main__.py
"--timeout=-1",
# Adding Python options requires the use of a subprocess to
# start a new Python interpreter.
"--dont-add-python-opts",

@mhsmith mhsmith Sep 19, 2025 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

--dont-add-python-opts may reduce the effectiveness of the tests: see #138805 (comment).

However, resolving this in the Android testbed required a fairly significant refactoring, so since this PR doesn't make the iOS situation any worse, it's probably best left to a separate PR.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@freakboy3742 freakboy3742 Sep 19, 2025

Copy link
Copy Markdown
Contributor Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure I agree it's reducing effectiveness. It's preventing the use of a code branch that would otherwise be invoked as a consequence of using --fast-ci or --slow-ci; if that problem code branch is invoked, the test suite crashes. Using --fast-ci/--slow-ci improves testing consistency; the options that aren't being processed as a result of using this flag weren't being used previously, either.

I agree that the Python options that are enabled by that code branch should be factored into the iOS testbed - but as you have flagged, that would requires a much more substantial refactor, and it can be handled independently.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@mhsmith mhsmith Sep 19, 2025

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good. FYI, the reason why I made the Android testbed accept Python options on the command line, rather than hard-coding the options expected by the CPython test suite, is that some of those options might not be appropriate for third-party package tests run by cibuildwheel.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@freakboy3742 freakboy3742 Sep 20, 2025

Copy link
Copy Markdown
Contributor Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure - that makes sense. I've got some ideas for how this could be managed in the context of the iOS testbed - we can read options out of the Info.plist file to separate test suite options from interpreter options.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@mhsmith mhsmith Sep 21, 2025

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I found it simpler not to separate them at all, but to let PyConfig_SetBytesArgv handle both of them at once, just like in a normal Python executable.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@freakboy3742
freakboy3742 merged commit 35c7e52 into python:main Sep 19, 2025
@freakboy3742
freakboy3742 deleted the apple-build branch September 19, 2025 12:23
@bedevere-app bedevere-app Bot removed the awaiting merge label Sep 19, 2025
@bedevere-bot

bedevere-bot commented Sep 19, 2025

Copy link
Copy Markdown

⚠️⚠️⚠️ Buildbot failure ⚠️⚠️⚠️

Hi! The buildbot x86 Debian Non-Debug with X 3.x (no tier) has failed when building commit 35c7e52.

What do you need to do:

  1. Don't panic.
  2. Check the buildbot page in the devguide if you don't know what the buildbots are or how they work.
  3. Go to the page of the buildbot that failed (https://buildbot.python.org/#/builders/1245/builds/6433) and take a look at the build logs.
  4. Check if the failure is related to this commit (35c7e52) or if it is a false positive.
  5. If the failure is related to this commit, please, reflect that on the issue and make a new Pull Request with a fix.

You can take a look at the buildbot page here:

https://buildbot.python.org/#/builders/1245/builds/6433

Summary of the results of the build (if available):

==

Click to see traceback logs
Traceback (most recent call last):
  File �[35m"/buildbot/buildarea/3.x.ware-debian-x86.nondebug/build/Lib/contextlib.py"�[0m, line �[35m85�[0m, in �[35minner�[0m
    return func(*args, **kwds)
  File �[35m"/buildbot/buildarea/3.x.ware-debian-x86.nondebug/build/Lib/test/_test_multiprocessing.py"�[0m, line �[35m596�[0m, in �[35mtest_interrupt�[0m
    exitcode = self._kill_process(multiprocessing.Process.interrupt)
  File �[35m"/buildbot/buildarea/3.x.ware-debian-x86.nondebug/build/Lib/contextlib.py"�[0m, line �[35m85�[0m, in �[35minner�[0m
    return func(*args, **kwds)
  File �[35m"/buildbot/buildarea/3.x.ware-debian-x86.nondebug/build/Lib/test/_test_multiprocessing.py"�[0m, line �[35m577�[0m, in �[35m_kill_process�[0m
    self.assertEqual(�[31mjoin�[0m�[1;31m()�[0m, None)
                     �[31m~~~~�[0m�[1;31m^^�[0m
  File �[35m"/buildbot/buildarea/3.x.ware-debian-x86.nondebug/build/Lib/test/_test_multiprocessing.py"�[0m, line �[35m250�[0m, in �[35m__call__�[0m
    return �[31mself.func�[0m�[1;31m(*args, **kwds)�[0m
           �[31m~~~~~~~~~�[0m�[1;31m^^^^^^^^^^^^^^^�[0m
  File �[35m"/buildbot/buildarea/3.x.ware-debian-x86.nondebug/build/Lib/multiprocessing/process.py"�[0m, line �[35m156�[0m, in �[35mjoin�[0m
    res = self._popen.wait(timeout)
  File �[35m"/buildbot/buildarea/3.x.ware-debian-x86.nondebug/build/Lib/multiprocessing/popen_fork.py"�[0m, line �[35m44�[0m, in �[35mwait�[0m
    return �[31mself.poll�[0m�[1;31m(os.WNOHANG if timeout == 0.0 else 0)�[0m
           �[31m~~~~~~~~~�[0m�[1;31m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^�[0m
  File �[35m"/buildbot/buildarea/3.x.ware-debian-x86.nondebug/build/Lib/multiprocessing/popen_fork.py"�[0m, line �[35m28�[0m, in �[35mpoll�[0m
    pid, sts = �[31mos.waitpid�[0m�[1;31m(self.pid, flag)�[0m
               �[31m~~~~~~~~~~�[0m�[1;31m^^^^^^^^^^^^^^^^�[0m
  File �[35m"/buildbot/buildarea/3.x.ware-debian-x86.nondebug/build/Lib/test/_test_multiprocessing.py"�[0m, line �[35m573�[0m, in �[35mhandler�[0m
    raise RuntimeError('join took too long: %s' % p)
�[1;35mRuntimeError�[0m: �[35mjoin took too long: <Process name='Process-1' pid=28784 parent=28782 started daemon>�[0m


Traceback (most recent call last):
  File �[35m"/buildbot/buildarea/3.x.ware-debian-x86.nondebug/build/Lib/contextlib.py"�[0m, line �[35m85�[0m, in �[35minner�[0m
    return func(*args, **kwds)
  File �[35m"/buildbot/buildarea/3.x.ware-debian-x86.nondebug/build/Lib/test/_test_multiprocessing.py"�[0m, line �[35m596�[0m, in �[35mtest_interrupt�[0m
    exitcode = self._kill_process(multiprocessing.Process.interrupt)
  File �[35m"/buildbot/buildarea/3.x.ware-debian-x86.nondebug/build/Lib/contextlib.py"�[0m, line �[35m85�[0m, in �[35minner�[0m
    return func(*args, **kwds)
  File �[35m"/buildbot/buildarea/3.x.ware-debian-x86.nondebug/build/Lib/test/_test_multiprocessing.py"�[0m, line �[35m577�[0m, in �[35m_kill_process�[0m
    self.assertEqual(�[31mjoin�[0m�[1;31m()�[0m, None)
                     �[31m~~~~�[0m�[1;31m^^�[0m
  File �[35m"/buildbot/buildarea/3.x.ware-debian-x86.nondebug/build/Lib/test/_test_multiprocessing.py"�[0m, line �[35m250�[0m, in �[35m__call__�[0m
    return �[31mself.func�[0m�[1;31m(*args, **kwds)�[0m
           �[31m~~~~~~~~~�[0m�[1;31m^^^^^^^^^^^^^^^�[0m
  File �[35m"/buildbot/buildarea/3.x.ware-debian-x86.nondebug/build/Lib/multiprocessing/process.py"�[0m, line �[35m156�[0m, in �[35mjoin�[0m
    res = self._popen.wait(timeout)
  File �[35m"/buildbot/buildarea/3.x.ware-debian-x86.nondebug/build/Lib/multiprocessing/popen_fork.py"�[0m, line �[35m44�[0m, in �[35mwait�[0m
    return �[31mself.poll�[0m�[1;31m(os.WNOHANG if timeout == 0.0 else 0)�[0m
           �[31m~~~~~~~~~�[0m�[1;31m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^�[0m
  File �[35m"/buildbot/buildarea/3.x.ware-debian-x86.nondebug/build/Lib/multiprocessing/popen_fork.py"�[0m, line �[35m28�[0m, in �[35mpoll�[0m
    pid, sts = �[31mos.waitpid�[0m�[1;31m(self.pid, flag)�[0m
               �[31m~~~~~~~~~~�[0m�[1;31m^^^^^^^^^^^^^^^^�[0m
  File �[35m"/buildbot/buildarea/3.x.ware-debian-x86.nondebug/build/Lib/test/_test_multiprocessing.py"�[0m, line �[35m573�[0m, in �[35mhandler�[0m
    raise RuntimeError('join took too long: %s' % p)
�[1;35mRuntimeError�[0m: �[35mjoin took too long: <Process name='Process-158' pid=21525 parent=20497 started daemon>�[0m
All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@freakboy3742 freakboy3742 added the needs backport to 3.14 bugs and security fixes label Sep 21, 2025
@miss-islington-app

miss-islington-app Bot commented Sep 21, 2025

Copy link
Copy Markdown

Thanks @freakboy3742 for the PR 🌮🎉.. I'm working now to backport this PR to: 3.14.
🐍🍒⛏🤖

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@miss-islington-app

miss-islington-app Bot commented Sep 21, 2025

Copy link
Copy Markdown

Sorry, @freakboy3742, I could not cleanly backport this to 3.14 due to a conflict.
Please backport using cherry_picker on command line.

cherry_picker 35c7e52b3ea3fdeb8eb77d2d8c803467a2ba6311 3.14
All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@miss-islington-app miss-islington-app Bot assigned freakboy3742 Sep 21, 2025
@freakboy3742

freakboy3742 commented Sep 21, 2025

Copy link
Copy Markdown
Contributor Author

After a conversation with @hugovk, it might be worth back porting this to 3.14 so that it is in 3.14 final; even if we don't do a binary release until a 3.14.1 or later - or at all - having the directory renamed will make other maintenance and back porting easier.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

freakboy3742 added a commit to freakboy3742/cpython that referenced this pull request Sep 21, 2025
@freakboy3742
pythongh-138171: Migrate iOS testbed location and add Apple build scr…
659cb85
…ipt (python#138176)

Adds tooling to generate and test an iOS XCframework, in a way that will also facilitate
adding other XCframework targets for other Apple platforms (tvOS, watchOS, visionOS and
even macOS, potentially).

---------
Co-authored-by: Hugo van Kemenade <[email protected]>

(cherry picked from commit 35c7e52)
@bedevere-app

bedevere-app Bot commented Sep 21, 2025

Copy link
Copy Markdown

GH-139204 is a backport of this pull request to the 3.14 branch.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@bedevere-app bedevere-app Bot removed the needs backport to 3.14 bugs and security fixes label Sep 21, 2025
freakboy3742 added a commit to freakboy3742/cpython that referenced this pull request Sep 28, 2025
@freakboy3742 @hugovk
pythongh-138171: Migrate iOS testbed location and add Apple build scr…
82119fa
…ipt (python#138176)

Adds tooling to generate and test an iOS XCframework, in a way that will also facilitate
adding other XCframework targets for other Apple platforms (tvOS, watchOS, visionOS and
even macOS, potentially).

---------
Co-authored-by: Hugo van Kemenade <[email protected]>
hugovk added a commit that referenced this pull request Sep 29, 2025
@freakboy3742 @hugovk
[3.14] gh-138171: Migrate iOS testbed location and add Apple build sc…
91d8645
…ript (#138176) (#139204)

Co-authored-by: Hugo van Kemenade <[email protected]>
freakboy3742 added a commit to freakboy3742/cpython that referenced this pull request Oct 8, 2025
@freakboy3742 @hugovk
[3.13] pythongh-138171: Migrate iOS testbed location and add Apple bu…
33361a0
…ild script (python#138176)

Adds tooling to generate and test an iOS XCframework, in a way that will also facilitate
adding other XCframework targets for other Apple platforms (tvOS, watchOS, visionOS and
even macOS, potentially).

---------
Co-authored-by: Hugo van Kemenade <[email protected]>
freakboy3742 added a commit to freakboy3742/cpython that referenced this pull request Feb 3, 2026
@freakboy3742 @hugovk
[3.10] pythongh-138171: Migrate iOS testbed location and add Apple bu…
91cc68c
…ild script (python#138176)

Adds tooling to generate and test an iOS XCframework, in a way that will also facilitate
adding other XCframework targets for other Apple platforms (tvOS, watchOS, visionOS and
even macOS, potentially).

---------
Co-authored-by: Hugo van Kemenade <[email protected]>
freakboy3742 added a commit to freakboy3742/cpython that referenced this pull request Feb 3, 2026
@freakboy3742 @hugovk
[3.11] pythongh-138171: Migrate iOS testbed location and add Apple bu…
683a253
…ild script (python#138176)

Adds tooling to generate and test an iOS XCframework, in a way that will also facilitate
adding other XCframework targets for other Apple platforms (tvOS, watchOS, visionOS and
even macOS, potentially).

---------
Co-authored-by: Hugo van Kemenade <[email protected]>
freakboy3742 added a commit to freakboy3742/cpython that referenced this pull request Feb 3, 2026
@freakboy3742 @hugovk
[3.12] pythongh-138171: Migrate iOS testbed location and add Apple bu…
8821424
…ild script (python#138176)

Adds tooling to generate and test an iOS XCframework, in a way that will also facilitate
adding other XCframework targets for other Apple platforms (tvOS, watchOS, visionOS and
even macOS, potentially).

---------
Co-authored-by: Hugo van Kemenade <[email protected]>
freakboy3742 added a commit to freakboy3742/cpython that referenced this pull request Feb 3, 2026
@freakboy3742 @hugovk
[3.13] pythongh-138171: Migrate iOS testbed location and add Apple bu…
48ca6f2
…ild script (python#138176)

Adds tooling to generate and test an iOS XCframework, in a way that will also facilitate
adding other XCframework targets for other Apple platforms (tvOS, watchOS, visionOS and
even macOS, potentially).

---------
Co-authored-by: Hugo van Kemenade <[email protected]>
freakboy3742 added a commit to freakboy3742/cpython that referenced this pull request Jun 12, 2026
@freakboy3742 @hugovk
[3.13] pythongh-138171: Migrate iOS testbed location and add Apple bu…
e85af50
…ild script (python#138176)

Adds tooling to generate and test an iOS XCframework, in a way that will also facilitate
adding other XCframework targets for other Apple platforms (tvOS, watchOS, visionOS and
even macOS, potentially).

---------
Co-authored-by: Hugo van Kemenade <[email protected]>
freakboy3742 added a commit to freakboy3742/cpython that referenced this pull request Jun 12, 2026
@freakboy3742 @hugovk
[3.11] pythongh-138171: Migrate iOS testbed location and add Apple bu…
dbe89ba
…ild script (python#138176)

Adds tooling to generate and test an iOS XCframework, in a way that will also facilitate
adding other XCframework targets for other Apple platforms (tvOS, watchOS, visionOS and
even macOS, potentially).

---------
Co-authored-by: Hugo van Kemenade <[email protected]>
freakboy3742 added a commit to freakboy3742/cpython that referenced this pull request Jun 12, 2026
@freakboy3742 @hugovk
[3.12] pythongh-138171: Migrate iOS testbed location and add Apple bu…
a208156
…ild script (python#138176)

Adds tooling to generate and test an iOS XCframework, in a way that will also facilitate
adding other XCframework targets for other Apple platforms (tvOS, watchOS, visionOS and
even macOS, potentially).

---------
Co-authored-by: Hugo van Kemenade <[email protected]>
freakboy3742 added a commit to freakboy3742/cpython that referenced this pull request Oct 2, 2026
@freakboy3742 @hugovk
[3.13] pythongh-138171: Migrate iOS testbed location and add Apple bu…
df199a2
…ild script (python#138176)

Adds tooling to generate and test an iOS XCframework, in a way that will also facilitate
adding other XCframework targets for other Apple platforms (tvOS, watchOS, visionOS and
even macOS, potentially).

---------
Co-authored-by: Hugo van Kemenade <[email protected]>
freakboy3742 added a commit to freakboy3742/cpython that referenced this pull request Oct 2, 2026
@freakboy3742 @hugovk
[3.12] pythongh-138171: Migrate iOS testbed location and add Apple bu…
b9da17a
…ild script (python#138176)

Adds tooling to generate and test an iOS XCframework, in a way that will also facilitate
adding other XCframework targets for other Apple platforms (tvOS, watchOS, visionOS and
even macOS, potentially).

---------
Co-authored-by: Hugo van Kemenade <[email protected]>
freakboy3742 added a commit to freakboy3742/cpython that referenced this pull request Oct 2, 2026
@freakboy3742 @hugovk
[3.11] pythongh-138171: Migrate iOS testbed location and add Apple bu…
4928ff4
…ild script (python#138176)

Adds tooling to generate and test an iOS XCframework, in a way that will also facilitate
adding other XCframework targets for other Apple platforms (tvOS, watchOS, visionOS and
even macOS, potentially).

---------
Co-authored-by: Hugo van Kemenade <[email protected]>
freakboy3742 added a commit to freakboy3742/cpython that referenced this pull request Oct 12, 2026
@freakboy3742 @hugovk
[3.13] pythongh-138171: Migrate iOS testbed location and add Apple bu…
2e00fbc
…ild script (python#138176)

Adds tooling to generate and test an iOS XCframework, in a way that will also facilitate
adding other XCframework targets for other Apple platforms (tvOS, watchOS, visionOS and
even macOS, potentially).

---------
Co-authored-by: Hugo van Kemenade <[email protected]>
freakboy3742 added a commit to freakboy3742/cpython that referenced this pull request Oct 12, 2026
@freakboy3742 @hugovk
[3.12] pythongh-138171: Migrate iOS testbed location and add Apple bu…
3e6ea8e
…ild script (python#138176)

Adds tooling to generate and test an iOS XCframework, in a way that will also facilitate
adding other XCframework targets for other Apple platforms (tvOS, watchOS, visionOS and
even macOS, potentially).

---------
Co-authored-by: Hugo van Kemenade <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@mhsmith mhsmith mhsmith left review comments
@hugovk hugovk hugovk left review comments
@AA-Turner AA-Turner AA-Turner left review comments
@ned-deily ned-deily ned-deily approved these changes
@erlend-aasland erlend-aasland Awaiting requested review from erlend-aasland erlend-aasland is a code owner
@corona10 corona10 Awaiting requested review from corona10 corona10 is a code owner
@ezio-melotti ezio-melotti Awaiting requested review from ezio-melotti ezio-melotti is a code owner
@emmatyping emmatyping Awaiting requested review from emmatyping emmatyping is a code owner

Uh oh!

There was an error while loading. Please reload this page.

Assignees

@freakboy3742 freakboy3742

Labels

OS-ios

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

6 participants

@freakboy3742 @bedevere-bot @AA-Turner @ned-deily @mhsmith @hugovk
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.