| name: Build and upload Python wheels |
| |
| on: |
| workflow_dispatch: |
| release: |
| types: |
| - published |
| |
| jobs: |
| build_sdist: |
| name: Build source distribution |
| runs-on: ubuntu-latest |
| steps: |
| - name: Check out repo |
| uses: actions/checkout@v2 |
| |
| - name: Install Python 3.9 |
| uses: actions/setup-python@v2 |
| with: |
| python-version: 3.9 |
| |
| - name: Build and check sdist |
| run: | |
| python setup.py sdist |
| - name: Upload sdist |
| uses: actions/upload-artifact@v2 |
| with: |
| name: dist |
| path: dist/*.tar.gz |
| |
| build_linux: |
| name: Build google-benchmark manylinux wheels |
| runs-on: ubuntu-latest |
| |
| steps: |
| - name: Check out Google Benchmark |
| uses: actions/checkout@v2 |
| |
| - name: Set up Python 3.9 |
| uses: actions/setup-python@v2 |
| with: |
| python-version: 3.9 |
| |
| # TODO: Bazel does not seem to work in an emulated Docker environment, see |
| # https://github.com/bazelbuild/bazel/issues/11379 |
| # - name: Set up QEMU |
| # uses: docker/setup-qemu-action@v1 |
| # with: |
| # platforms: all |
| |
| - name: Build Python wheels on ubuntu-latest |
| env: |
| CIBW_BUILD: 'cp37-* cp38-* cp39-* cp310-*' |
| CIBW_SKIP: "*-musllinux_*" |
| # Bazel repo only exists on CentOS 7 for x86 and ppc, so no manylinux2010 |
| # TODO: Build ppc64le, aarch64 using some other trick |
| CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014 |
| CIBW_ARCHS_LINUX: x86_64 |
| CIBW_BEFORE_ALL: > |
| curl -O --retry-delay 5 --retry 5 https://copr.fedorainfracloud.org/coprs/vbatts/bazel/repo/epel-7/vbatts-bazel-epel-7.repo && |
| cp vbatts-bazel-epel-7.repo /etc/yum.repos.d/bazel.repo && |
| yum install -y bazel4 |
| CIBW_TEST_COMMAND: python {project}/bindings/python/google_benchmark/example.py |
| run: | |
| pip install cibuildwheel |
| python -m cibuildwheel --output-dir wheelhouse |
| |
| - name: Upload Linux wheels |
| uses: actions/upload-artifact@v2 |
| with: |
| name: dist |
| path: wheelhouse/*.whl |
| |
| build_macos: |
| name: Build google-benchmark macOS wheels |
| runs-on: macos-latest |
| |
| steps: |
| - name: Check out Google Benchmark |
| uses: actions/checkout@v2 |
| |
| - name: Set up Python 3.9 |
| uses: actions/setup-python@v2 |
| with: |
| python-version: 3.9 |
| |
| - name: Build Python wheels on macOS |
| env: |
| CIBW_ARCHS_MACOS: "x86_64 arm64" |
| CIBW_BUILD: 'cp37-* cp38-* cp39-* cp310-*' |
| # ARM64 requires Python 3.8 minimum |
| CIBW_SKIP: 'cp37-*-arm64' |
| CIBW_TEST_COMMAND: python {project}/bindings/python/google_benchmark/example.py |
| CIBW_TEST_SKIP: "*_arm64" |
| run: | |
| pip install cibuildwheel |
| python -m cibuildwheel --output-dir wheelhouse |
| |
| - name: Upload macOS wheels |
| uses: actions/upload-artifact@v2 |
| with: |
| name: dist |
| path: wheelhouse/*.whl |
| |
| build_windows: |
| name: Build google-benchmark wheels on Windows |
| runs-on: windows-latest |
| |
| steps: |
| - name: Check out Google Benchmark |
| uses: actions/checkout@v2 |
| |
| - name: Set up Python 3.9 |
| uses: actions/setup-python@v2 |
| with: |
| python-version: 3.9 |
| |
| - name: Build Python wheels on Windows |
| env: |
| CIBW_BUILD: 'cp37-* cp38-* cp39-* cp310-*' |
| CIBW_ARCHS_WINDOWS: AMD64 |
| # otherwise, pip crashes the job by trying to remove an in-use bazel DLL |
| PIP_NO_CLEAN: true |
| CIBW_TEST_COMMAND: python {project}/bindings/python/google_benchmark/example.py |
| run: | |
| pip install cibuildwheel |
| python -m cibuildwheel --output-dir wheelhouse |
| |
| - name: Upload wheels |
| uses: actions/upload-artifact@v2 |
| with: |
| name: dist |
| path: wheelhouse/*.whl |