name: System Install on: pull_request: paths: # When we change this workflow itself... - .github/workflows/system-install.yml workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref_name }}-${{ github.event.pull_request.number || github.sha }} cancel-in-progress: true env: CARGO_INCREMENTAL: 0 CARGO_NET_RETRY: 10 CARGO_TERM_COLOR: always RUSTUP_MAX_RETRIES: 10 jobs: install-debian: name: "Install Python on Debian" runs-on: ubuntu-latest container: debian:bullseye steps: - uses: actions/checkout@v4 - name: "Install Python" run: apt-get update && apt-get install -y python3.9 python3-pip python3.9-venv - name: "Install Rust toolchain" run: apt-get update && apt-get install -y curl build-essential && curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y - uses: Swatinem/rust-cache@v2 - name: "Build" run: $HOME/.cargo/bin/cargo build --no-default-features - name: "Print Python path" run: echo $(which python3.9) - name: "Validate global Python install" run: python3.9 scripts/check_system_python.py --uv ./target/debug/uv install-ubuntu: name: "Install Python on Ubuntu" runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.12" - name: "Install Rust toolchain" run: rustup show - uses: Swatinem/rust-cache@v2 - name: "Build" run: cargo build - name: "Print Python path" run: echo $(which python) - name: "Validate global Python install" run: python scripts/check_system_python.py --uv ./target/debug/uv install-pypy: name: "Install PyPy on Ubuntu" runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: 'pypy3.9' - name: "Install Rust toolchain" run: rustup show - uses: Swatinem/rust-cache@v2 - name: "Build" run: cargo build - name: "Print Python path" run: echo $(which pypy) - name: "Validate global Python install" run: pypy scripts/check_system_python.py --uv ./target/debug/uv install-pyston: name: "Install Pyston" runs-on: ubuntu-latest container: pyston/pyston:2.3.5 steps: - uses: actions/checkout@v4 - name: "Install Rust toolchain" run: apt-get update && apt-get install -y curl build-essential && curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y - uses: Swatinem/rust-cache@v2 - name: "Build" run: $HOME/.cargo/bin/cargo build --no-default-features - name: "Print Python path" run: echo $(which pyston) - name: "Validate global Python install" run: pyston scripts/check_system_python.py --uv ./target/debug/uv install-macos: name: "Install Python on macOS" runs-on: macos-14 steps: - uses: actions/checkout@v4 - name: "Install Python" run: brew install python@3.8 - name: "Install Rust toolchain" run: rustup show - uses: Swatinem/rust-cache@v2 - name: "Build" run: cargo build - name: "Print Python path" run: echo $(which python3.11) - name: "Validate global Python install" run: python3.11 scripts/check_system_python.py --uv ./target/debug/uv install-windows-python-310: name: "Install Python 3.10 on Windows" runs-on: windows-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.10" - name: "Install Rust toolchain" run: rustup show - uses: Swatinem/rust-cache@v2 - name: "Build" run: cargo build - name: "Print Python path" run: echo $(which python) - name: "Validate global Python install" run: py -3.10 ./scripts/check_system_python.py --uv ./target/debug/uv install-windows-python-313: name: "Install Python 3.13 on Windows" runs-on: windows-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.13" allow-prereleases: true cache: pip - name: "Install Rust toolchain" run: rustup show - uses: Swatinem/rust-cache@v2 - name: "Build" run: cargo build - name: "Print Python path" run: echo $(which python) - name: "Validate global Python install" run: py -3.13 ./scripts/check_system_python.py --uv ./target/debug/uv install-choco: name: "Install Python 3.12 via Chocolatey" runs-on: windows-latest steps: - uses: actions/checkout@v4 - name: "Install Python" run: choco install python3 --verbose --version=3.9.13 - name: "Install Rust toolchain" run: rustup show - uses: Swatinem/rust-cache@v2 - name: "Build" run: cargo build - name: "Print Python path" run: echo $(which python3) - name: "Validate global Python install" run: py -3.9 ./scripts/check_system_python.py --uv ./target/debug/uv install-pyenv: name: "Install Python via pyenv" runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: "Install pyenv" uses: "gabrielfalcao/pyenv-action@v18" with: default: 3.9.7 - name: "Install Rust toolchain" run: rustup show - uses: Swatinem/rust-cache@v2 - name: "Build" run: cargo build - name: "Print Python path" run: echo $(which python3.9) - name: "Validate global Python install" run: python3.9 scripts/check_system_python.py --uv ./target/debug/uv