mirror of https://github.com/KLayout/klayout.git
133 lines
4.0 KiB
YAML
133 lines
4.0 KiB
YAML
---
|
|
name: Build Python Wheels
|
|
# https://docs.github.com/en/free-pro-team@latest/actions/guides/building-and-testing-python
|
|
|
|
on:
|
|
pull_request:
|
|
# Running on PRs and main branch only
|
|
# pull requests should be able to access cache from main branch
|
|
push:
|
|
branches:
|
|
- master
|
|
release:
|
|
types: [published]
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
fail-fast: false
|
|
max-parallel: 12
|
|
matrix:
|
|
include:
|
|
- os: "macos-13" # intel runner
|
|
cibuild: "*macosx*"
|
|
cibw_arch: "macos_x86_64"
|
|
macos-arch: "x86_64"
|
|
- os: "macos-14" # M1 runner
|
|
cibuild: "*macosx*"
|
|
cibw_arch: "macos_arm64"
|
|
macos-arch: "arm64"
|
|
- os: "ubuntu-latest"
|
|
cibuild: "*manylinux*"
|
|
cibw_arch: "manylinux"
|
|
- os: "ubuntu-latest"
|
|
cibuild: "*musllinux*"
|
|
cibw_arch: "musllinux"
|
|
steps:
|
|
- name: Free Disk Space (Ubuntu)
|
|
if: matrix.os == 'ubuntu-latest'
|
|
uses: jlumbroso/free-disk-space@main
|
|
with:
|
|
android: true
|
|
dotnet: true
|
|
haskell: true
|
|
large-packages: true
|
|
- uses: hmarr/debug-action@v3
|
|
- name: Cancel Workflow Action
|
|
uses: styfle/cancel-workflow-action@0.12.1
|
|
- uses: actions/checkout@v4
|
|
- name: ccache
|
|
uses: hendrikmuhs/ccache-action@v1.2
|
|
with:
|
|
key: ${{ github.job }}-${{ matrix.os }}-${{ matrix.cibuild }} # Make cache specific to OS
|
|
max-size: "5G"
|
|
- name: Install dependencies
|
|
run: |
|
|
env
|
|
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
|
|
echo "/usr/lib/ccache:/usr/local/opt/ccache/libexec" >> $GITHUB_PATH
|
|
HOST_CCACHE_DIR="$(ccache -k cache_dir)"
|
|
mkdir -p $HOST_CCACHE_DIR
|
|
- name: Build wheels # check https://cibuildwheel.readthedocs.io/en/stable/setup/#github-actions
|
|
uses: pypa/cibuildwheel@v2.23.0
|
|
# to supply options, put them in 'env', like:
|
|
# env:
|
|
# CIBW_SOME_OPTION: value
|
|
env:
|
|
CIBW_BUILD: ${{ matrix.cibuild }}
|
|
CIBW_ARCHS_MACOS: ${{ matrix.macos-arch }}
|
|
CIBW_DEPENDENCY_VERSIONS_MACOS: cibw_constraints.txt
|
|
|
|
- name: Download Cache from Docker (linux only)
|
|
if: ${{ runner.os == 'Linux' }}
|
|
# hack until https://github.com/pypa/cibuildwheel/issues/1030 is fixed
|
|
run: |
|
|
env
|
|
ccache -s
|
|
HOST_CCACHE_DIR="$(ccache -k cache_dir)"
|
|
rm -rf $HOST_CCACHE_DIR
|
|
mv ./wheelhouse/.ccache $HOST_CCACHE_DIR
|
|
ls -la $HOST_CCACHE_DIR
|
|
ccache -s
|
|
- uses: actions/upload-artifact@v4
|
|
with:
|
|
name: artifact-${{ matrix.os }}-${{ matrix.cibw_arch }}-${{ strategy.job-index }}
|
|
path: ./wheelhouse/*.whl
|
|
|
|
# The following was taken from https://cibuildwheel.readthedocs.io/en/stable/deliver-to-pypi/
|
|
make_sdist:
|
|
name: Make SDist
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Build SDist
|
|
run: pipx run build --sdist
|
|
|
|
- uses: actions/upload-artifact@v4
|
|
with:
|
|
name: artifact-sdist
|
|
path: dist/*.tar.gz
|
|
|
|
upload_to_test_pypy:
|
|
needs: [build, make_sdist]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/download-artifact@v4
|
|
with:
|
|
merge-multiple: true
|
|
path: dist
|
|
|
|
- uses: pypa/gh-action-pypi-publish@v1.12.4
|
|
continue-on-error: true # might fail if we don't bump the version
|
|
with:
|
|
user: __token__
|
|
password: ${{ secrets.test_pypi_password }}
|
|
repository-url: https://test.pypi.org/legacy/
|
|
|
|
upload_to_pypi:
|
|
needs: [build, make_sdist]
|
|
runs-on: ubuntu-latest
|
|
if: github.event_name == 'release' && github.event.action == 'published'
|
|
steps:
|
|
- uses: actions/download-artifact@v4
|
|
with:
|
|
merge-multiple: true
|
|
path: dist
|
|
|
|
- uses: pypa/gh-action-pypi-publish@v1.12.4
|
|
with:
|
|
user: __token__
|
|
password: ${{ secrets.pypi_password }}
|