# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 # For details: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt # Based on: # https://github.com/joerick/cibuildwheel/blob/master/examples/github-deploy.yml name: "Kits" on: push: branches: # Don't build kits all the time, but do if the branch is about kits. - "**/*kit*" workflow_dispatch: defaults: run: shell: bash env: PIP_DISABLE_PIP_VERSION_CHECK: 1 jobs: wheels: name: "Build wheels on ${{ matrix.os }}" runs-on: ${{ matrix.os }} strategy: matrix: include: - os: ubuntu-latest cibw_arch: x86_64 i686 aarch64 - os: windows-latest cibw_arch: x86 AMD64 - os: macos-latest cibw_arch: x86_64 fail-fast: false steps: - name: Setup QEMU if: matrix.os == 'ubuntu-latest' uses: docker/setup-qemu-action@v1 with: platforms: arm64 - name: "Check out the repo" uses: actions/checkout@v2 - name: "Install Python 3.8" uses: actions/setup-python@v2 with: python-version: "3.8" - name: "Install tools" run: | python -m pip install -r requirements/kit.pip - name: "Build wheels" env: # Don't build wheels for PyPy. CIBW_SKIP: pp* CIBW_ARCHS: ${{ matrix.cibw_arch }} run: | python -m cibuildwheel --output-dir wheelhouse ls -al wheelhouse/ - name: "Upload wheels" uses: actions/upload-artifact@v2 with: name: dist path: wheelhouse/*.whl sdist: name: "Build source distribution" runs-on: ubuntu-latest steps: - name: "Check out the repo" uses: actions/checkout@v2 - name: "Install Python 3.8" uses: actions/setup-python@v2 with: python-version: "3.8" - name: "Install tools" run: | python -m pip install -r requirements/kit.pip - name: "Build sdist" run: | python -m build ls -al dist/ - name: "Upload sdist" uses: actions/upload-artifact@v2 with: name: dist path: dist/*.tar.gz pypy: name: "Build PyPy wheels" runs-on: ubuntu-latest steps: - name: "Check out the repo" uses: actions/checkout@v2 - name: "Install PyPy" uses: actions/setup-python@v2 with: python-version: "pypy3" - name: "Install requirements" run: | pypy3 -m pip install -r requirements/kit.pip - name: "Build wheels" run: | # yes, this is weird syntax: https://github.com/pypa/build/issues/202 pypy3 -m build -w -C="--global-option=--python-tag" -C="--global-option=pp36" pypy3 -m build -w -C="--global-option=--python-tag" -C="--global-option=pp37" pypy3 -m build -w -C="--global-option=--python-tag" -C="--global-option=pp38" ls -al dist/ - name: "Upload wheels" uses: actions/upload-artifact@v2 with: name: dist path: dist/*.whl prerel: name: "Build ${{ matrix.python-version }} wheels on ${{ matrix.os }}" if: ${{ false }} # disable for now, since there are no pre-rel Python versions. runs-on: ${{ matrix.os }} strategy: matrix: os: - ubuntu-latest - windows-latest - macos-latest python-version: - "3.10.0-rc.2" fail-fast: false steps: - name: "Check out the repo" uses: actions/checkout@v2 - name: "Install Python ${{ matrix.python-version }}" uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} - name: "Install wheel tools" run: | python -m pip install -r requirements/kit.pip - name: "Build wheel" run: | python -m build - name: "Convert to manylinux wheel" if: runner.os == 'Linux' run: | ls -la dist/ auditwheel show dist/*.whl auditwheel repair dist/*.whl ls -la wheelhouse/ auditwheel show wheelhouse/*.whl rm dist/*.whl mv wheelhouse/*.whl dist/ ls -al dist/ - name: "Upload wheels" uses: actions/upload-artifact@v2 with: name: dist path: dist/*.whl