This repository is for the discussion and planning around providing prebuilt developer binaries on python.org for more platforms.
- Provide prebuilt binaries for all tier 1 platforms via python.org (other tiers are a bonus)
- The binaries are relocatable (i.e. can be placed anywhere on the file system by an installer and still work)
- Work well enough for local development purposes
- Be the most performant build possible (other providers are assumed to fill that need)
- Have any opinion on workflow tooling (this is only about the binaries themselves and not any developer workflow on how to manage these binaries for a user)
- Fully self-contained (i.e. the entire interpreter plus standard library does not have to be a single file or not require some patching by the installer, although that would be nice)
Discussions that have no answer yet go to General discussions category. As decisions are made (with a two week period for discussions to stay unanswered), the discussions will be marked as answered. Anything that requires an action be taken will have an issue created.
The general expectation is that no long-lived code will live in this repo and no patches against CPython will be kept here. Instead, code will just go straight upstream or be considered temporarily here until a final approach is chosen and then be moved upstream.
The relocatable.py script in this repo is meant to serve two purposes:
- To test different approaches to building CPython into a relocatable build.
- Figure out where upstream changes need to be made so a relocatable can be successful.
It's broken up into three subcommands to configure, make, and gather the files for a relocatable build. Assuming you run the script from within a source checkout of CPython, your typical command sequence will be:
../prebuilt-cpython/relocatable.py configure
../prebuilt-cpython/relocatable.py make
../prebuilt-cpython/relocatable.py gather <patching approach>The defaults will result in builddir/ containing the build and dist/ containing the files that comprise a relocatable build.
The key thing to note is which patching approach to specify with relocatable.py gather. There are:
--patchwhich rewrites all found paths of the placeholder--prefixargument to the target install directory (which defaults to dist/); this is meant to follow the approach used by conda.--originwhich usespatchelfto do a more targeted path rewrite upfront and then to patch any remaining paths; this is meant to follow the approach used by python-build-standalone.
These are people representing projects that have experience with prebuilt binaries for CPython.
- CPython: @brettcannon, @zooba, @emmatyping, @ned-deily
- python-build-standalone: @zanieb, @geofft, @jjhelmus
- BeeWare: @freakboy3742, @mhsmith