This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: "👽 Build uv-ffi Wheels (Ultra-Exotic & Source)" | ||
|
Check failure on line 1 in .github/workflows/build-wheels-exotic.yml
|
||
| on: | ||
| release: | ||
| types: [published] | ||
| workflow_dispatch: | ||
| jobs: | ||
| # 2. DELIBERATE PYPY MATRIX | ||
| build-pypy: | ||
| name: "PyPy ${{ matrix.pypy }} • ${{ matrix.os }}" | ||
| runs-on: ${{ matrix.os }} | ||
| continue-on-error: true | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| os:[ubuntu-latest, macos-latest, windows-latest] | ||
| pypy:["pypy3.9", "pypy3.10"] | ||
| steps: | ||
| - uses: actions/checkout@v4 | ||
| - uses: actions/setup-python@v5 | ||
| with: | ||
| python-version: ${{ matrix.pypy }} | ||
| - name: Build PyPy Wheel | ||
| uses: PyO3/maturin-action@v1 | ||
| with: | ||
| working-directory: crates/uv-ffi | ||
| args: --release --out ${{ github.workspace }}/wheels/ --interpreter ${{ matrix.pypy }} | ||
| - name: Upload Wheels | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: "ext-wheels-pypy-${{ matrix.os }}-${{ matrix.pypy }}" | ||
| path: wheels/ | ||
| # 3. GRAALPY (Oracle's JVM-based Python) | ||
| build-graalpy: | ||
| name: "GraalPy • ${{ matrix.os }}" | ||
| runs-on: ${{ matrix.os }} | ||
| continue-on-error: true | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| os: [ubuntu-latest, macos-latest] | ||
| steps: | ||
| - uses: actions/checkout@v4 | ||
| - uses: actions/setup-python@v5 | ||
| with: | ||
| python-version: "graalpy24.0" # Official GitHub actions syntax for GraalPy | ||
| - name: Build GraalPy Wheel | ||
| uses: PyO3/maturin-action@v1 | ||
| with: | ||
| working-directory: crates/uv-ffi | ||
| # For GraalPy, setup-python aliases it to `python` | ||
| args: --release --out ${{ github.workspace }}/wheels/ --interpreter python | ||
| - name: Upload Wheels | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: "ext-wheels-graalpy-${{ matrix.os }}" | ||
| path: wheels/ | ||
| # 4. FREE-THREADED CPYTHON (NO-GIL) | ||
| build-freethreaded: | ||
| name: "Free-Threaded 3.13t • ${{ matrix.os }}" | ||
| runs-on: ${{ matrix.os }} | ||
| continue-on-error: true | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| os: [ubuntu-latest, macos-latest, windows-latest] | ||
| steps: | ||
| - uses: actions/checkout@v4 | ||
| - uses: actions/setup-python@v5 | ||
| with: | ||
| python-version: "3.13t" # The 't' fetches the experimental Free-Threaded build! | ||
| - name: Build Free-Threaded Wheel | ||
| uses: PyO3/maturin-action@v1 | ||
| with: | ||
| working-directory: crates/uv-ffi | ||
| args: --release --out ${{ github.workspace }}/wheels/ --interpreter python | ||
| - name: Upload Wheels | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: "ext-wheels-freethreaded-${{ matrix.os }}" | ||
| path: wheels/ | ||
| # 5. WEBASSEMBLY (PYODIDE / EMSCRIPTEN) | ||
| build-wasm: | ||
| name: "WebAssembly (Pyodide)" | ||
| runs-on: ubuntu-latest | ||
| continue-on-error: true | ||
| steps: | ||
| - uses: actions/checkout@v4 | ||
| - name: Setup Emscripten (Required for WASM) | ||
| uses: mymindstorm/setup-emsdk@v14 | ||
| with: | ||
| version: 3.1.58 # Matches Pyodide 0.26 Emscripten version | ||
| - uses: actions/setup-python@v5 | ||
| with: | ||
| python-version: "3.12" | ||
| - name: Build WebAssembly Wheel | ||
| uses: PyO3/maturin-action@v1 | ||
| with: | ||
| working-directory: crates/uv-ffi | ||
| target: wasm32-unknown-emscripten | ||
| # We tell maturin to build against Python 3.12 for Pyodide | ||
| args: --release --out ${{ github.workspace }}/wheels/ -i 3.12 | ||
| - name: Upload Wheels | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: "ext-wheels-wasm" | ||
| path: wheels/ | ||