mirror of
https://github.com/astral-sh/uv.git
synced 2025-08-04 10:58:28 +00:00
Detect musl and error for musl pbs builds (#6643)
As described in #4242, we're currently incorrectly downloading glibc python-build-standalone on musl target, but we also can't fix this by using musl python-build-standalone on musl targets since the musl builds are effectively broken. We reintroduce the libc detection previously removed in #2381, using it to detect which libc is the current one before we have a python interpreter. I changed the strategy a big to support an empty `PATH` which we use in the tests. For simplicity, i've decided to just filter out the musl python-build-standalone archives from the list of available archive, given this is temporary. This means we show the same error message as if we don't have a build for the platform. We could also add a dedicated error message for musl. Fixes #4242 ## Test Plan Tested manually. On my ubuntu host, python downloads continue to pass: ``` target/x86_64-unknown-linux-musl/debug/uv python install ``` On alpine, we fail: ``` $ docker run -it --rm -v .:/io alpine /io/target/x86_64-unknown-linux-musl/debug/uv python install Searching for Python installations error: No download found for request: cpython-any-linux-x86_64-musl ```
This commit is contained in:
parent
1ae2c3f142
commit
ae57d85dfb
11 changed files with 363 additions and 30 deletions
|
@ -249,16 +249,20 @@ uv supports downloading and installing CPython and PyPy distributions.
|
|||
|
||||
### CPython distributions
|
||||
|
||||
Python does not publish official distributable CPython binaries, uv uses third-party standalone
|
||||
distributions from the
|
||||
[`python-build-standalone`](https://github.com/indygreg/python-build-standalone) project. The
|
||||
project is partially maintained by the uv maintainers and is used by many other Python projects.
|
||||
As Python does not publish official distributable CPython binaries, uv instead uses pre-built
|
||||
third-party distributions from the
|
||||
[`python-build-standalone`](https://github.com/indygreg/python-build-standalone) project.
|
||||
`python-build-standalone` is partially maintained by the uv maintainers and is used in many other
|
||||
Python projects, like [Rye](https://github.com/astral-sh/rye) and
|
||||
[bazelbuild/rules_python](https://github.com/bazelbuild/rules_python).
|
||||
|
||||
The uv Python distributions are self-contained, highly-portable, and performant. While Python can be
|
||||
built from source, as in tools like `pyenv`, it requires preinstalled system dependencies and
|
||||
creating optimized, performant builds is very slow.
|
||||
built from source, as in tools like `pyenv`, doing so requires preinstalled system dependencies, and
|
||||
creating optimized, performant builds (e.g., with PGO and LTO enabled) is very slow.
|
||||
|
||||
These distributions have some behavior quirks, generally as a consequence of portability. See the
|
||||
These distributions have some behavior quirks, generally as a consequence of portability; and, at
|
||||
present, uv does not support installing them on musl-based Linux distributions, like Alpine Linux.
|
||||
See the
|
||||
[`python-build-standalone` quirks](https://gregoryszorc.com/docs/python-build-standalone/main/quirks.html)
|
||||
documentation for details.
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue