forked from google/benchmark
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Modernize wheel building job config (google#1783)
It is now possible to build Mac wheels on native machines in Github Actions, so ARM64 Mac wheels are now built and tested on M1 machines. Also, the artifact up-/download was migrated to v4, which made it necessary to upload wheels to unique artifact names, and then later stitch them together again in a subsequent job. The cross-platform Mac build injection in setup.py was removed, since it is no longer necessary. I relanded a monkey-patching of Bazel build files, this time for MODULE.bazel. This is because `rules_python` does not allow running as the root user, which is the case in cibuildwheel+Linux (happens in a Docker container). Since I did not see a quick way of switching to rootless containers, and did not want to hardcode the config change (it can apparently cause cache misses and build failures), I inject the "ignore_root_user_error" flag into the MODULE.bazel file when running in cibuildwheel on Linux.
- Loading branch information
1 parent
185c55d
commit bc946b9
Showing
4 changed files
with
83 additions
and
43 deletions.
There are no files selected for viewing
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -15,24 +15,24 @@ jobs: | |
uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 | ||
- name: Install Python 3.11 | ||
- name: Install Python 3.12 | ||
uses: actions/setup-python@v5 | ||
with: | ||
python-version: 3.11 | ||
python-version: 3.12 | ||
- run: python -m pip install build | ||
- name: Build sdist | ||
run: python -m build --sdist | ||
- uses: actions/upload-artifact@v3 | ||
- uses: actions/upload-artifact@v4 | ||
with: | ||
name: dist | ||
name: dist-sdist | ||
path: dist/*.tar.gz | ||
|
||
build_wheels: | ||
name: Build Google Benchmark wheels on ${{ matrix.os }} | ||
runs-on: ${{ matrix.os }} | ||
strategy: | ||
matrix: | ||
os: [ubuntu-latest, macos-latest, windows-latest] | ||
os: [ubuntu-latest, macos-13, macos-14, windows-latest] | ||
|
||
steps: | ||
- name: Check out Google Benchmark | ||
|
@@ -47,32 +47,44 @@ jobs: | |
platforms: all | ||
|
||
- name: Build wheels on ${{ matrix.os }} using cibuildwheel | ||
uses: pypa/cibuildwheel@v2.16.2 | ||
uses: pypa/cibuildwheel@v2.17 | ||
env: | ||
CIBW_BUILD: 'cp38-* cp39-* cp310-* cp311-* cp312-*' | ||
CIBW_BUILD: "cp38-* cp39-* cp310-* cp311-* cp312-*" | ||
CIBW_SKIP: "*-musllinux_*" | ||
CIBW_TEST_SKIP: "*-macosx_arm64" | ||
CIBW_ARCHS_LINUX: x86_64 aarch64 | ||
CIBW_ARCHS_MACOS: x86_64 arm64 | ||
CIBW_ARCHS_WINDOWS: AMD64 | ||
CIBW_TEST_SKIP: "cp38-macosx_*:arm64" | ||
CIBW_ARCHS_LINUX: auto64 aarch64 | ||
CIBW_ARCHS_WINDOWS: auto64 | ||
CIBW_BEFORE_ALL_LINUX: bash .github/install_bazel.sh | ||
# Grab the rootless Bazel installation inside the container. | ||
CIBW_ENVIRONMENT_LINUX: PATH=$PATH:$HOME/bin | ||
CIBW_TEST_COMMAND: python {project}/bindings/python/google_benchmark/example.py | ||
|
||
- name: Upload Google Benchmark ${{ matrix.os }} wheels | ||
uses: actions/upload-artifact@v3 | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: dist | ||
name: dist-${{ matrix.os }} | ||
path: wheelhouse/*.whl | ||
|
||
merge_wheels: | ||
name: Merge all built wheels into one artifact | ||
runs-on: ubuntu-latest | ||
needs: build_wheels | ||
steps: | ||
- name: Merge wheels | ||
uses: actions/upload-artifact/merge@v4 | ||
with: | ||
name: dist | ||
pattern: dist-* | ||
delete-merged: true | ||
|
||
pypi_upload: | ||
name: Publish google-benchmark wheels to PyPI | ||
needs: [build_sdist, build_wheels] | ||
needs: [merge_wheels] | ||
runs-on: ubuntu-latest | ||
permissions: | ||
id-token: write | ||
steps: | ||
- uses: actions/download-artifact@v3 | ||
with: | ||
name: dist | ||
path: dist | ||
- uses: pypa/[email protected] | ||
- uses: actions/download-artifact@v4 | ||
with: | ||
path: dist | ||
- uses: pypa/gh-action-pypi-publish@v1 |
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
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