distributable: url: https://github.com/astral-sh/uv/releases/download/{{version}}/source.tar.gz strip-components: 1 versions: github: astral-sh/uv provides: - bin/uv companions: python.org: '*' dependencies: libgit2.org: ~1.7 # links to libgit2.so.1.7 build: dependencies: linux: nixos.org/patchelf: ^0.18 cmake.org: ^3.28 rust-lang.org/cargo: ^0.77 maturin.rs: ^1.4.0 info-zip.org/unzip: ^6 script: - maturin build --locked --release --out ./out - run: - unzip ./uv-{{version}}-*.whl - install -D ./uv-{{version}}.data/scripts/uv {{prefix}}/bin/uv working-directory: out test: dependencies: curl.se: '*' script: - uv --version | grep {{version}} - fixture: contents: | from flask import Flask app = Flask(__name__) @app.route("/") def hello_world(): return "

Hello, World!

" extname: .py run: - | if which flask; then false fi - | uv venv source .venv/bin/activate uv pip install flask - | mv $FIXTURE app.py set -m flask run & PID=$! # otherwise the server may not be ready - sleep 4 - test "$(curl 127.0.0.1:5000)" = "

Hello, World!

" # TODO need to install a signal handler or our build servers could be left with a running flask process - kill $PID