Commit Graph

347 Commits

Author SHA1 Message Date
konsti
b2a0ea3701 Integration test uv_build package (#12058)
I somehow missed running an actual integration test of the PEP 517 API
in CI and the python shim was using the old uv CLI interface still.

The tests include pip, uv and `python -m build`. They must be a in CI
job since we can't depend on the Python package in the Rust tests (we
only get the binary in `cargo test`, not the `uv_build` wheel).
2025-03-07 23:40:53 +01:00
Zanie Blue
0798c3565d Fix PyPI typo in publish workflow (#12051) 2025-03-07 11:10:23 -06:00
Zanie Blue
7a56aef7d1 Revert "Run the uv-build publish sequentially after uv (#12022)" (#12024)
This was not the problem
2025-03-06 16:53:39 -06:00
Zanie Blue
15bc1e7c03 Fix upload name for macOS wheels (#12023)
These were missed in the original PR and consequently not uploaded
2025-03-06 16:53:29 -06:00
Zanie Blue
ef1243c6e8 Run the uv-build publish sequentially after uv (#12022)
In an attempt to resolve a trusted publishing failure
2025-03-06 15:27:57 -06:00
konsti
bf4c7afe8b A minimal build backend for uv: uv_build (#11446)
uv itself is a large package with many dependencies and lots of
features. To build a package using the uv build backend, you shouldn't
have to download and install the entirety of uv. For platform where we
don't provide wheels, it should be possible and fast to compile the uv
build backend. To that end, we're introducing a python package that
contains a trimmed down version of uv that only contains the build
backend, with a minimal dependency tree in rust.

The `uv_build` package is publish from CI just like uv itself. It is
part of the workspace, but has much less dependencies for its own
binary. We're using cargo deny to enforce that the network stack is not
part of the dependencies. A new build profile ensure we're getting the
minimum possible binary size for a rust binary.

---------

Co-authored-by: Zanie Blue <contact@zanie.dev>
2025-03-06 13:27:20 -06:00
Zanie Blue
b7f98f1ff2 Use the Depot Ubuntu runners instead of GitHub for release workflows (#11948)
See

-
https://opensource.axo.dev/cargo-dist/book/reference/config.html#github-custom-runners
- https://github.com/axodotdev/cargo-dist/issues/1760
- #11935
2025-03-04 13:28:14 -06:00
konsti
6132d252d6 Remove unused UV_STACK_SIZE env vars (#11957)
These were overlooked in #10479
2025-03-04 16:53:34 +00:00
Zanie Blue
f44aba0a96 Run the Docker build workflow when we touch project or toolchain metadata (#11938)
I noticed that https://github.com/astral-sh/uv/pull/11936 did not run
the Docker builds, nor did #11934

We should run these when the relevant files change so there aren't
surprises at release time!

Updates the `build-binaries` workflow to include toolchain version
changes and `.cargo/config.toml` changes too.
2025-03-04 08:36:20 -06:00
Zanie Blue
f0ec9fd44a Bump version to 0.6.4 (#11934) 2025-03-03 16:04:11 -06:00
Zanie Blue
326d0c460a Add emulated test for x86-64 Python on aarch64 Windows (#11626)
Coverage of https://github.com/astral-sh/uv/pull/11625 for unmanaged
Python.
2025-02-19 12:02:13 -06:00
konsti
3634a4d8e9 More consistent build-binaries.yml (#11478)
For uv-build, we need to duplicate a lot of the `build-binaries.yml`
logic to build another source distribution and wheel. In preparation for
that I tried to make the invocations more consistent, to make it easier
to review the changes when adding the `uv-build` builds on top.

Split out from #11446

---------

Co-authored-by: Charlie Marsh <charlie.r.marsh@gmail.com>
2025-02-18 11:36:26 -06:00
samypr100
553b3a7c34 Bump alpine default tag to 3.21 (#11157)
Alpine 3.21 has been released for a few months and it's now being used
officially under `alpine` based [python
images](https://hub.docker.com/_/python), hence our python-alpine based
images has been using 3.21 since uv 0.5.8 under the hood.

This could arguably be `breaking` as we're dropping alpine3.20 top-level
tag, so it could be a good candidate for 0.6.0.

Alternatively, we can keep support for 3.20 and make this non-breaking
by simply repointing alpine to now be 3.21 and keeping the 3.20 tag
around.
2025-02-13 16:17:49 -06:00
Zanie Blue
4badcef3d8 Disable pip cache in Windows system test job (#11403)
I have no idea why we'd want the cache enabled here anyway?

Closes https://github.com/astral-sh/uv/issues/11397
2025-02-10 20:36:00 +00:00
Zanie Blue
e22ecee36b Respect no-build label in Docker image builds (#11333)
e.g., https://github.com/astral-sh/uv/pull/11329 is runner Docker image
builds but should not
2025-02-08 02:17:59 +00:00
Zanie Blue
1f963d1b89 Move content from the mkdocs.public.yml into the template (#11246)
Closes https://github.com/astral-sh/uv/issues/11242
2025-02-05 16:13:46 +00:00
Charlie Marsh
ee2bdc21fa Disable wheel testing for powerpc64le-unknown-linux-gnu (#11229)
## Summary

I need to look into this later, but the test step is failing to install
Python:
https://github.com/astral-sh/uv/actions/runs/13148286589/job/36694160839.
We already disable this for the non-`le` variant, so this seems ok to
revisit.
2025-02-04 22:46:08 -05:00
FishAlchemist
49b85d2e65 Add `last updated` for document (#11164)
## Summary

![image](https://github.com/user-attachments/assets/75431f9f-debe-435d-a02e-d216be7a3a01)

![image](https://github.com/user-attachments/assets/2d1b895e-4878-410e-90ff-ff8e932cbf24)
Display the last document update time, excluding any automatically
generated parts of the document, while ensuring that Google can
accurately read and recognize the webpage's time.

Note that I do not have permission to update
``requirements-insiders.txt``


Google time info
*
https://developers.google.com/search/blog/2019/03/help-google-search-know-best-date-for
*
https://developers.google.com/search/docs/appearance/structured-data/article#amp

Similar https://github.com/astral-sh/uv/pull/11162
Closes #11148
## Test Plan
uvx --with-requirements docs/requirements.txt -- mkdocs serve -f
mkdocs.public.yml --strict

![image](https://github.com/user-attachments/assets/6e8cd609-2e60-489c-97cc-fb28aa3204e0)
The correct format is actually ``2024-08-08T22:01:08Z``, but Google
Search happens to be lenient and accepts this format.

![image](https://github.com/user-attachments/assets/2ec8ce98-49ea-403b-bbd2-3d0d5630a562)
2025-02-03 22:28:47 -05:00
konsti
c54dbcbcc2 Use dev drive for trampoline CI to avoid timeout (#11015)
Sometimes that job is just slow:
https://github.com/astral-sh/uv/actions/runs/12996921221/job/36247398606
2025-02-03 15:38:56 +01:00
Martijn Pieters
47f80a62c4 Sign docker images using cosign (#8685)
cosign uses the GitHub action ID token to retrieve an ephemeral code
signing certificate from Fulcio, and store the signature in the Rekor
transparency log.

Once an image has been successfully signed, you should be able to verify
the signature with:

```sh
cosign verify ghcr.io/astral-sh/uv:latest --certificate-identity-regexp='.*' --certificate-oidc-issuer-regexp='.*'
```

Closes #8670
2025-01-31 09:00:23 -06:00
Zanie Blue
24c70240d5 Link to our MRE documentation in the issue template (#11045) 2025-01-28 23:09:04 -06:00
Zanie Blue
a6d887a37e Include Rust toolchain in cache in trampoline test job (#11019) 2025-01-28 14:26:07 +00:00
Zanie Blue
e8d50153d0 Update name of "Build binary" job to highlight that these are the "release" binaries (#10990)
I found this confusing since we have `build binary` jobs in regular CI
2025-01-27 11:48:38 -06:00
konsti
ad60f8da77 Use install action for cargo shear (#10983) 2025-01-27 18:06:17 +01:00
Zanie Blue
1ef47aa1d5 Only move the .cargo directory if it exists (#10938)
which it usually does... but on some runners it can be missing now?
2025-01-24 15:39:29 +00:00
Zanie Blue
98e7cd00c8 Add Windows aarch64 to the release binaries (#10885)
Following test coverage from #10540 
Closes https://github.com/astral-sh/uv/issues/1141
2025-01-24 09:24:22 -06:00
Zanie Blue
0008ec69c4 Run multiple commands in ecosystem tests (#10920) 2025-01-24 09:18:21 -06:00
Zanie Blue
9a2d5fd358 Add ecosystem test case for pydantic/pydantic-core (#10917) 2025-01-23 17:05:13 -06:00
Zanie Blue
10654cb8c2 Fix render of matrix arch for system conda tests (#10914) 2025-01-23 21:31:59 +00:00
Zanie Blue
a05b0e0346 Separate musl and libc linux builds in CI (#10830)
We have a lot of jobs downstream of the `build-binary-linux` job, but
the job is significantly slower than the other binary builds because we
need to configure musl. Instead, we split this into two jobs (as it was
before https://github.com/astral-sh/uv/pull/2309#discussion_r1520101330)
to speed things up.

The libc job takes ~1m and its _downstream_ jobs finish before the musl
build does. The musl job takes ~5m.
2025-01-23 15:19:26 -06:00
Zanie Blue
26210cc0e6 Bump cargo-dist version to 0.28.0 (#10884)
Some installer improvements; see
https://github.com/axodotdev/cargo-dist/blob/main/CHANGELOG.md#version-0280-2025-01-08
2025-01-23 10:49:53 -06:00
konsti
db4ab9dc8a Install and remove managed Python to and from the Windows Registry (PEP 514) (#10634)
## Summary

In preview mode on windows, register und un-register the managed python build standalone installations in the Windows registry following PEP 514.

We write the values defined in the PEP plus the download URL and hash. We add an entry when installing a version, remove an entry when uninstalling and removing all values when uninstalling with `--all`. We update entries only by overwriting existing values, there is no "syncing" involved.

Since they are not official builds, pbs gets a prefix. `py -V:Astral/CPython3.13.1` works, `py -3.13` doesn't.

```
$ py --list-paths                                            
 -V:3.12 *        C:\Users\Konsti\AppData\Local\Programs\Python\Python312\python.exe
 -V:3.11.9        C:\Users\Konsti\.pyenv\pyenv-win\versions\3.11.9\python.exe
 -V:3.11          C:\Users\micro\AppData\Local\Programs\Python\Python311\python.exe
 -V:3.8           C:\Users\micro\AppData\Local\Programs\Python\Python38\python.exe
 -V:Astral/CPython3.13.1 C:\Users\Konsti\AppData\Roaming\uv\data\python\cpython-3.13.1-windows-x86_64-none\python.exe
```

Registry errors are reported but not fatal, except for operations on the company key since it's not bound to any specific python interpreter.

On uninstallation, we prune registry entries that have no matching Python installation (i.e. broken entries).

The code uses the official `windows_registry` crate of the `winreg` crate.

Best reviewed commit-by-commit.

## Test Plan

We're reusing an existing system check to test different (un)installation scenarios.
2025-01-23 14:13:41 +00:00
Divyanshu Kalra
027c3f5e67 Add Windows aarch64 build and test job to CI
Based on discussion in https://github.com/astral-sh/uv/pull/10306, this
adds building aarch64 exe using x86 runner. See:
https://github.com/astral-sh/uv/pull/10402#issuecomment-2579094192

Addresses: #1141

---------

Co-authored-by: Zanie Blue <contact@zanie.dev>
2025-01-22 22:38:50 -06:00
Charlie Marsh
183fe403c6 Disable .egg-info tests via slow-tests feature on Windows and macOS (#10872)
## Summary

These are super slow on Windows and it's not critical to test them on
that platform. Let's just do the lazy thing.
2025-01-22 21:39:04 +00:00
Zanie Blue
a539d33021 Update smoke test scripts to fail on first error (#10831)
These continue on failure on Windows, which is annoying.
2025-01-22 15:00:50 -06:00
Zanie Blue
fd16988a4b Move smoke tests into dedicated jobs and build uvx explicitly (#10824)
In the interest of expanding these tests and debugging weird behaviors,
I've moved the smoke tests out of the `cargo test` job and into
dedicated `smoke test` jobs. We explicitly build `uvx` in the `build
binary` jobs instead of relying on the implicit build for the test run.

I also added a `uvx` test case to the smoke tests: `uvx ruff --version`
2025-01-21 16:46:12 -06:00
Zanie Blue
6a5e5b33f2 Move cargo to the Dev Drive in Windows CI (#10656)
This successfully changed the nextest install to target the dev drive

```
info: cargo-nextest installed at /e/.cargo/bin/cargo-nextest.exe
```
2025-01-21 12:43:54 -06:00
Zanie Blue
399086d28f Disable the distutils setuptools shim during interpreter query (#10819)
Addresses
https://github.com/astral-sh/uv/issues/4204#issuecomment-2604983670

Original context in https://github.com/astral-sh/uv/issues/2302
2025-01-21 18:34:13 +00:00
Zanie Blue
ad2ef7331a Add issue templates (#10786)
Demo at https://github.com/zanieb/uv/issues

I think the next steps are to

- Move the "Build failures" document to a dedicated "Troubleshooting"
section
- Add more documentation on how to create an MRE
- Add more troubleshooting pages
2025-01-21 11:25:07 -06:00
Zanie Blue
f9539d5a8e Remove old issue template (#10787)
It is not used anymore because of the GitHub issue preview
2025-01-21 09:03:19 -06:00
Zanie Blue
581a82d370 Install Python via uv in Windows CI (#10657)
Python 3.8 is a GHA cache miss now, so it is actually like 30-45s. uv
may be faster
2025-01-21 09:02:14 -06:00
Zanie Blue
4f31b44eac Improve log when distutils is missing (#10713)
See https://github.com/astral-sh/uv/issues/4204 for motivation

This doesn't really reach the user experience I'd expect — i.e., we end
up saying a virtual environment "does not exist" which is a little
silly. However, I think improving the error messaging on interpreter
queries in general should be solved separately. I did one small
"general" change in
89e11d0222
— otherwise we don't show the message at all.

---------

Co-authored-by: konsti <konstin@mailbox.org>
2025-01-20 17:29:29 +00:00
Zanie Blue
896435faec Use D: drive for Windows CI (#10180)
When using the standard Windows runners (as opposed to the _larger_
GitHub runners), an undocumented `D:` drive is available and performant.
We can save some money on by using this on a standard runner instead of
a larger runner with an ReFS drive. Switching to the `D:` drive was not
acceptable for `cargo test` >25m runtime.

Inspired by https://github.com/pypa/pip/pull/13129
See https://github.com/actions/runner-images/issues/8755

Timings (grain of salt — GitHub is super noisy):

- clippy: 2m 18s -> 2m 11s
- build binary: 2m 3s -> 2m 35s
- trampoline check (x86-64): 2m 32s -> 1m 50s (other architectures
similar)
- trampoline test (x86-64): 4m 12s -> 6m 7s
- trampoline test (i686): 6m 44s -> 5m 35s
2025-01-17 13:57:09 -06:00
Zanie Blue
75a1a47859 Improve performance of our test drive in Windows CI (#10651)
Previously, we couldn't use a DevDrive
(https://github.com/astral-sh/uv/pull/3522#issuecomment-2111448930)
because our Windows version was not sufficient.

Recently, I upgraded our larger runners to Windows 2025 preview
(https://github.com/astral-sh/uv/pull/10298) which I presume has support
for this.

I removed ReFS in
953c3535c3
which didn't seem to do anything to performance.

I also found some notes on "trusted" DevDrives and "disabling anti-virus
filtering" which I simply have to try.
2025-01-16 12:07:09 -06:00
Aria Desires
80ac8db7db Always spawn a main2 thread to normalize main stack size issues (#10479)
Also removes UV_STACK_SIZE and uses RUST_MIN_STACK instead, tweaking
docs to reflect the differences.

Fixes #10367
2025-01-14 22:35:17 -05:00
Charlie Marsh
5bc09a1e9e Revert "improve shell compatibility of venv activate scripts (#10397)" (#10497)
## Summary

This reverts commit 2f7f9ea571
(https://github.com/astral-sh/uv/pull/10397). We're seeing some
user-reported failures, so we need to investigate further before
re-shipping.

Re-opens https://github.com/astral-sh/uv/issues/7480.

Closes https://github.com/astral-sh/uv/issues/10487.
2025-01-11 09:23:07 -05:00
Zanie Blue
68bfa5b5b8 Avoid Docker rate limits by logging into DockerHub (#10400)
The latest release flaked failing to fetch the buildx image, which is
reportedly due to rate limits. Last I checked, DockerHub enforces much
stricter limits on unauthenticated requests. I added a bot account and a
corresponding read-only token.
2025-01-08 18:46:24 +00:00
Aria Desires
2f7f9ea571 improve shell compatibility of venv activate scripts (#10397)
The shellcheck action we uses misses some files, so they fell out of
spec for what we support. This PR first and foremost adds them to the
scanning list, and then fixes the issues found.

Fixes #7480
2025-01-08 13:12:29 -05:00
Zanie Blue
bbf9558b16 Rename CI runners and use Windows 2025 preview on large runners (#10298)
I'm renaming our runners to be more explicit about their size,
architecture, and version.

Switching to Windows 2025 over 2022 in some of our jobs in the hope that
it's faster.
2025-01-05 14:29:37 -06:00
Charlie Marsh
d1b1da5ac1 Upgrade cargo-dist to v0.27.0 (#10141)
## Summary

Required peer to https://github.com/astral-sh/uv/pull/10115.
2024-12-24 08:24:14 -05:00