uv/crates/install-wheel-rs/src
konsti 7964bfbb2b
Move architecture and operating system probing to Python (#2381)
The architecture of uv does not necessarily match that of the python
interpreter (#2326). In cross compiling/testing scenarios the operating
system can also mismatch. To solve this, we move arch and os detection
to python, vendoring the relevant pypa/packaging code, preventing
mismatches between what the python interpreter was compiled for and what
uv was compiled for.

To make the scripts more manageable, they are now a directory in a
tempdir and we run them with `python -m` . I've simplified the
pypa/packaging code since we're still building the tags in rust. A
`Platform` is now instantiated by querying the python interpreter for
its platform. The pypa/packaging files are copied verbatim for easier
updates except a `lru_cache()` python 3.7 backport.

Error handling is done by a `"result": "success|error"` field that allow
passing error details to rust:

```console
$ uv venv --no-cache
  × Can't use Python at `/home/konsti/projects/uv/.venv/bin/python3`
  ╰─▶ Unknown operation system `linux`
```

I've used the [maturin sysconfig
collection](855f6d2cb1/sysconfig)
as reference. I'm unsure how to test these changes across the wide
variety of platforms.

Fixes #2326
2024-03-13 11:51:14 +00:00
..
lib.rs Move architecture and operating system probing to Python (#2381) 2024-03-13 11:51:14 +00:00
linker.rs Use simpler pip-like Scheme for install paths (#2173) 2024-03-04 15:50:13 -05:00
metadata.rs Add Seek fallback for zip files (#2320) 2024-03-10 11:39:28 -04:00
record.rs Remove some unused code from install-wheel-rs (#2001) 2024-02-27 04:27:25 +00:00
script.rs Future-proof pip entrypoints special case (#1982) 2024-03-01 10:05:50 +01:00
uninstall.rs Close RECORD after reading entries during uninstall (#2259) 2024-03-07 04:35:22 +00:00
wheel.rs Write relative paths for scripts in data directory (#2348) 2024-03-10 23:02:02 +00:00