diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml index 6f001569d9..20c7c5f580 100644 --- a/.github/workflows/wheels.yml +++ b/.github/workflows/wheels.yml @@ -176,6 +176,46 @@ jobs: uses: pypa/gh-action-pypi-publish@release/v1 with: packages-dir: wheelhouse/ + build_emscripten: + name: Build wheels for Pyodide (Emscripten) + runs-on: ubuntu-latest + environment: release + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + name: Install Python + with: + python-version: '3.12' + - uses: dtolnay/rust-toolchain@stable + - name: Install cibuildwheel + run: | + python -m pip install cibuildwheel==4.1.0 + - name: Build wheels + run: | + python -m cibuildwheel --platform pyodide --output-dir wheelhouse + env: + CIBW_BUILD: cp314-pyodide_wasm32 + CIBW_BUILD_VERBOSITY: 3 + - uses: actions/upload-artifact@v4 + with: + path: ./wheelhouse/*.whl + name: wheel-builds-emscripten + upload_emscripten: + name: Upload wheels for Pyodide (Emscripten) + runs-on: ubuntu-latest + environment: release + permissions: + id-token: write + needs: ["build_emscripten", "upload_shared_wheels"] + steps: + - uses: actions/download-artifact@v4 + with: + name: wheel-builds-emscripten + path: wheelhouse + - name: Publish package distributions to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: wheelhouse/ build-win32-wheels: name: Build wheels on win32 runs-on: windows-latest diff --git a/.github/workflows/wheels2.yml b/.github/workflows/wheels2.yml new file mode 100644 index 0000000000..dcecbc8bb5 --- /dev/null +++ b/.github/workflows/wheels2.yml @@ -0,0 +1,147 @@ +--- +name: Wheel Builds Dry Run +on: + pull_request: + +jobs: + build_wheels: + name: Build wheels on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, windows-latest, macos-15-intel, macos-14, ubuntu-24.04-arm] + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + name: Install Python + with: + python-version: '3.12' + - uses: dtolnay/rust-toolchain@stable + - name: Install cibuildwheel + run: | + python -m pip install -U --group releaseinfra + - name: Build wheels + run: | + python -m cibuildwheel --output-dir wheelhouse + - uses: actions/upload-artifact@v4 + with: + path: ./wheelhouse/*.whl + name: dry-run-wheel-builds-${{ matrix.os }} + + build_wheels_ppc64le: + name: Build wheels on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-24.04-ppc64le] + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + - name: Install uv + run: | + python3 -m pip install --user uv==0.11.2 + - name: Install cibuildwheel dependencies + run: | + python3 -m uv python install 3.12 + python3 -m uv venv --python 3.12 .venv + source .venv/bin/activate + uv pip install --group releaseinfra + - name: Build wheels + run: | + source .venv/bin/activate + python -m cibuildwheel --output-dir wheelhouse + env: + CIBW_SKIP: pp* cp314t* *win32 *musl* + CIBW_ARCHS_LINUX: ppc64le + - uses: actions/upload-artifact@v4 + with: + path: ./wheelhouse/*.whl + name: dry-run-wheel-builds-ppc64le + + build_wheels_s390x: + name: Build wheels on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-24.04-s390x] + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + - name: Install uv + run: | + python3 -m pip install --user uv==0.11.2 + - name: Install cibuildwheel dependencies + run: | + python3 -m uv python install 3.12 + python3 -m uv venv --python 3.12 .venv + source .venv/bin/activate + uv pip install --group releaseinfra + - name: Build wheels + run: | + source .venv/bin/activate + python -m cibuildwheel --output-dir wheelhouse + env: + CIBW_SKIP: pp* cp314t* *win32 *musl* + CIBW_ARCHS_LINUX: s390x + - uses: actions/upload-artifact@v4 + with: + path: ./wheelhouse/*.whl + name: dry-run-wheel-builds-s390x + + build_emscripten: + name: Build wheels for Pyodide (Emscripten) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + name: Install Python + with: + python-version: '3.12' + - uses: dtolnay/rust-toolchain@stable + with: + targets: wasm32-unknown-emscripten + components: rust-src + - name: Install cibuildwheel + run: | + python -m pip install cibuildwheel==4.1.0 + - name: Build wheels + run: | + python -m cibuildwheel --platform pyodide --output-dir wheelhouse + env: + CIBW_BUILD: cp314-pyodide_wasm32 + CIBW_BUILD_VERBOSITY: 3 + - uses: actions/upload-artifact@v4 + with: + path: ./wheelhouse/*.whl + name: dry-run-wheel-builds-emscripten + + build-win32-wheels: + name: Build wheels on win32 + runs-on: windows-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + name: Install Python + with: + python-version: '3.12' + architecture: 'x86' + - uses: dtolnay/rust-toolchain@stable + with: + targets: i686-pc-windows-msvc + - name: Force win32 rust + run: rustup default stable-i686-pc-windows-msvc + - name: Install cibuildwheel + run: | + python -m pip install -U --group releaseinfra + - name: Build wheels + run: | + python -m cibuildwheel --output-dir wheelhouse + env: + CIBW_SKIP: pp* cp314t* *amd64 *musl* + - uses: actions/upload-artifact@v4 + with: + path: ./wheelhouse/*.whl + name: dry-run-wheel-builds-win32 diff --git a/docs/source/install.rst b/docs/source/install.rst index 071f25e347..2b9cc619d8 100644 --- a/docs/source/install.rst +++ b/docs/source/install.rst @@ -176,7 +176,7 @@ Tier Experimental ----------------- Tier Experimental platforms are not tested upstream as part of the development process. -Pre-compiled binaries are built by the external community in separate repositories. Not all of rustworkx might compile for +Pre-compiled binaries are built and published to PyPI as part of the release process. Not all of rustworkx might compile for platforms of this tier and features can be removed. Often, platforms in this tier use unstable features from the Rust compiler and might break at any time. Support for these platforms are best effort only. diff --git a/releasenotes/notes/pyodide-pypi-wheels-06f63330094bac2b.yaml b/releasenotes/notes/pyodide-pypi-wheels-06f63330094bac2b.yaml new file mode 100644 index 0000000000..175ce13111 --- /dev/null +++ b/releasenotes/notes/pyodide-pypi-wheels-06f63330094bac2b.yaml @@ -0,0 +1,7 @@ +--- +features: + - | + Experimental Pyodide wheels are now published to PyPI. These wheels use the + ``pyemscripten`` platform tag defined by `PEP 783 `__, + allowing compatible Pyodide environments to install ``rustworkx`` from PyPI. + Pyodide support remains best effort.