Skip to content

Setup binder as a Python package and publish pre-built wheels to PyPI #31

Setup binder as a Python package and publish pre-built wheels to PyPI

Setup binder as a Python package and publish pre-built wheels to PyPI #31

Workflow file for this run

name: Wheels
on:
push:
branches:
- master
paths:
- ".github/workflows/wheels.yml"
- "python/**"
- "source/**"
pull_request:
branches:
- master
paths:
- ".github/workflows/wheels.yml"
- "python/**"
- "source/**"
release:
types: [published]
workflow_dispatch:
concurrency:
group: wheels-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build-wheels:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os:
- ubuntu-22.04
archs:
- "x86_64"
- "i686"
impl:
- "manylinux"
- "musllinux"
include:
- os: windows-2022
archs: "AMD64"
impl: win
- os: windows-2022
archs: "x86"
impl: win
- os: macos-13
archs: "universal2"
impl: macosx
fail-fast: false
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup QEMU for Linux cross-compilation
if: runner.os == 'Linux'
uses: docker/setup-qemu-action@v3
with:
platforms: all
- name: Clone LLVM project
shell: bash
run: |
git clone -b release/6.x https://github.com/llvm/llvm-project.git
working-directory: python
- name: Setup LLVM project
shell: bash
run: |
echo 'add_subdirectory(binder)' > python/llvm-project/clang-tools-extra/CMakeLists.txt
cp -r source python/llvm-project/clang-tools-extra/binder
- name: Setup cibuildwheel and build wheels
run: |
pipx install cibuildwheel
pipx run cibuildwheel python
env:
CIBW_BUILD: cp313-${{ matrix.impl }}*
CIBW_ARCHS: ${{ matrix.archs }}
- name: Upload wheels to artifacts
uses: actions/upload-artifact@v4
with:
name: cppbinder-wheels-${{ matrix.os }}-${{ matrix.archs }}-${{ matrix.impl }}-${{ github.event_name == 'release' && github.ref_name || github.sha }}
path: ./wheelhouse/*.whl
build-sdist:
runs-on: ubuntu-22.04
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Clone LLVM project
shell: bash
run: |
git clone -b release/6.x https://github.com/llvm/llvm-project.git
working-directory: python
- name: Setup LLVM project
shell: bash
run: |
echo 'add_subdirectory(binder)' > python/llvm-project/clang-tools-extra/CMakeLists.txt
cp -r source python/llvm-project/clang-tools-extra/binder
- name: Setup build and build source distribution
run: |
pipx install build
pipx run build --sdist --outdir dist
working-directory: python
- name: Upload source distribution to artifacts
uses: actions/upload-artifact@v4
with:
name: cppbinder-sdist-${{ github.event_name == 'release' && github.ref_name || github.sha }}
path: ./python/dist/*.tar.gz
publish:
needs: [build-wheels, build-sdist]
if: github.event_name == 'release'
runs-on: ubuntu-22.04
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Download wheels and source distribution
uses: actions/download-artifact@v4
with:
pattern: cppbinder-*
path: dist
merge-multiple: true
- name: Publish package to PyPI
uses: pypa/[email protected]
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
packages-dir: dist