Skip to content

Commit

Permalink
Switch to using .dylib format for iOS binary modules (#187)
Browse files Browse the repository at this point in the history
Switch to using .dylib format for iOS binary modules.

This work is substantially built upon the work done by @alibeyram (and team).

Other changes:
* Create aliases for CC and other xcrun-based binaries.
* Rationalize usage of platform and multiarch.
* Rework output locations to make sharing of output easier.
  • Loading branch information
freakboy3742 authored Sep 26, 2023
1 parent a8c93fe commit 972b185
Show file tree
Hide file tree
Showing 22 changed files with 1,058 additions and 608 deletions.
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
*.swp
.envrc
.vscode/
alias/*
archive/*
build/*
diff/*
Expand All @@ -17,3 +18,6 @@ wheels/*
__pycache__
tests/testbed/macOS
tests/testbed/iOS
*.log
*.gz
*.DS_Store
286 changes: 175 additions & 111 deletions Makefile

Large diffs are not rendered by default.

11 changes: 5 additions & 6 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,10 @@ repository:
* `Python 3.9 <https://github.com/beeware/Python-Apple-support/tree/3.9>`__
* `Python 3.10 <https://github.com/beeware/Python-Apple-support/tree/3.10>`__

It works by downloading, patching, and building a fat binary of Python and
selected pre-requisites, and packaging them as static libraries that can be
incorporated into an Xcode project. The binary modules in the Python standard
library are statically compiled, but are distribted as ``.so`` objects that
can be dynamically loaded at runtime.
It works by downloading, patching, and building a fat binary of Python and selected
pre-requisites, and packaging them as static libraries that can be incorporated into an
XCode project. The binary modules in the Python standard library are statically
compiled, but are distributed as objects that can be dynamically loaded at runtime.

It exposes *almost* all the modules in the Python standard library except for:

Expand Down Expand Up @@ -90,7 +89,7 @@ Each support package contains:

* ``VERSIONS``, a text file describing the specific versions of code used to
build the support package;
* ``Python.xcframework``, a multi-architecture build of libPython3.11.a
* ``Python.xcframework``, a multi-architecture build of the Python runtime library
* ``python-stdlib``, the code and binary modules comprising the Python standard
library. On iOS, tvOS and watchOS, there are 2 copies of every binary module -
one for physical devices, and one for the simulator. The simulator binaries
Expand Down
Loading

0 comments on commit 972b185

Please sign in to comment.