[WIP] Complete rewrite of bindings with nanobind instead of numpyeigen+pybind11 #150
This file contains 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: Pip build | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
jobs: | |
build_sdist: | |
name: Build SDist | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Build SDist | |
run: pipx run build --sdist | |
- name: Check metadata | |
run: pipx run twine check dist/* | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: artifact-sdist | |
path: dist/*.tar.gz | |
build_wheels: | |
name: Build wheels ${{ matrix.cpversion }}-${{ matrix.os.cibw-arch }} | |
runs-on: ${{ matrix.os.runs-on }} | |
env: | |
# This is very dubious... It *may* work because these are just cpp libraries that should not depend on the python version. Still, super-dubious. | |
CIBW_TEST_REQUIRES: "gitpython" | |
CIBW_TEST_COMMAND: "python {project}/tests/test.py" | |
CIBW_BUILD: "${{ matrix.cpversion }}-${{ matrix.os.cibw-arch }}" | |
CIBW_TEST_SKIP: "*-macosx_arm64" | |
CIBW_ENVIRONMENT: "MAX_JOBS=${{ matrix.os.runs-on == 'macos-latest' && 3 || 2 }}" | |
# Why universal2 here? It's not included above in CIBW_BUILD | |
CIBW_ARCHS_MACOS: "x86_64 arm64 universal2" | |
CIBW_ENVIRONMENT_MACOS: "MACOSX_DEPLOYMENT_TARGET=10.13 CMAKE_OSX_ARCHITECTURES=\"${{ matrix.os.cibw-arch == 'macosx_x86_64' && 'x86_64' || matrix.os.cibw-arch == 'macosx_arm64' && 'arm64' || matrix.os.cibw-arch == 'macosx_universal2' && 'arm64;x86_64' || '' }}\"" | |
strategy: | |
fail-fast: false | |
matrix: | |
# Launch separate job for each python. The build is so much longer than | |
# machine configuration/setup, so parallel builds will be faster. More | |
# importantly, github times out after 6 hours _per job_. | |
cpversion: | |
- cp36 | |
- cp37 | |
- cp38 | |
- cp39 | |
- cp310 | |
- cp311 | |
- cp312 | |
os: | |
- runs-on: ubuntu-latest | |
cibw-arch: manylinux_x86_64 | |
- runs-on: macos-latest | |
cibw-arch: macosx_x86_64 | |
- runs-on: macos-latest | |
cibw-arch: macosx_arm64 | |
- runs-on: windows-latest | |
cibw-arch: win_amd64 | |
exclude: | |
- cpversion: cp36 | |
os: | |
runs-on: macos-latest | |
cibw-arch: macosx_arm64 | |
- cpversion: cp37 | |
os: | |
runs-on: macos-latest | |
cibw-arch: macosx_arm64 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.x" | |
- name: Install cibuildwheel | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install cibuildwheel | |
- name: Build wheels | |
shell: bash | |
run: | | |
python -m cibuildwheel --output-dir wheelhouse | |
# Upload binaries to github | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: artifact-wheel-${{ matrix.cpversion }}-${{ matrix.os.cibw-arch }} | |
path: |- | |
./wheelhouse/*.whl | |
./wheelhouse/*.tar.gz | |
# # Push the resulting binaries to pypi on a tag starting with 'v' | |
upload_pypi: | |
needs: build_wheels | |
runs-on: ubuntu-latest | |
# upload to PyPI on every tag starting with 'v' | |
# if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/v') | |
# alternatively, to publish when a GitHub Release is created, use the following rule: | |
if: github.event_name == 'release' && github.event.action == 'published' | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
pattern: artifact-* | |
merge-multiple: true | |
path: dist | |
- uses: pypa/[email protected] | |
with: | |
user: __token__ | |
password: ${{ secrets.pypi_password }} | |
skip_existing: true | |
# To test: repository_url: https://test.pypi.org/legacy/ |