1a8c51b3fSopenharmony_ciname: Build and upload Python wheels 2a8c51b3fSopenharmony_ci 3a8c51b3fSopenharmony_cion: 4a8c51b3fSopenharmony_ci workflow_dispatch: 5a8c51b3fSopenharmony_ci release: 6a8c51b3fSopenharmony_ci types: 7a8c51b3fSopenharmony_ci - published 8a8c51b3fSopenharmony_ci 9a8c51b3fSopenharmony_cijobs: 10a8c51b3fSopenharmony_ci build_sdist: 11a8c51b3fSopenharmony_ci name: Build source distribution 12a8c51b3fSopenharmony_ci runs-on: ubuntu-latest 13a8c51b3fSopenharmony_ci steps: 14a8c51b3fSopenharmony_ci - name: Check out repo 15a8c51b3fSopenharmony_ci uses: actions/checkout@v2 16a8c51b3fSopenharmony_ci 17a8c51b3fSopenharmony_ci - name: Install Python 3.9 18a8c51b3fSopenharmony_ci uses: actions/setup-python@v2 19a8c51b3fSopenharmony_ci with: 20a8c51b3fSopenharmony_ci python-version: 3.9 21a8c51b3fSopenharmony_ci 22a8c51b3fSopenharmony_ci - name: Build and check sdist 23a8c51b3fSopenharmony_ci run: | 24a8c51b3fSopenharmony_ci python setup.py sdist 25a8c51b3fSopenharmony_ci - name: Upload sdist 26a8c51b3fSopenharmony_ci uses: actions/upload-artifact@v2 27a8c51b3fSopenharmony_ci with: 28a8c51b3fSopenharmony_ci name: dist 29a8c51b3fSopenharmony_ci path: dist/*.tar.gz 30a8c51b3fSopenharmony_ci 31a8c51b3fSopenharmony_ci build_linux: 32a8c51b3fSopenharmony_ci name: Build google-benchmark manylinux wheels 33a8c51b3fSopenharmony_ci runs-on: ubuntu-latest 34a8c51b3fSopenharmony_ci 35a8c51b3fSopenharmony_ci steps: 36a8c51b3fSopenharmony_ci - name: Check out Google Benchmark 37a8c51b3fSopenharmony_ci uses: actions/checkout@v2 38a8c51b3fSopenharmony_ci 39a8c51b3fSopenharmony_ci - name: Set up Python 3.9 40a8c51b3fSopenharmony_ci uses: actions/setup-python@v2 41a8c51b3fSopenharmony_ci with: 42a8c51b3fSopenharmony_ci python-version: 3.9 43a8c51b3fSopenharmony_ci 44a8c51b3fSopenharmony_ci # TODO: Bazel does not seem to work in an emulated Docker environment, see 45a8c51b3fSopenharmony_ci # https://github.com/bazelbuild/bazel/issues/11379 46a8c51b3fSopenharmony_ci# - name: Set up QEMU 47a8c51b3fSopenharmony_ci# uses: docker/setup-qemu-action@v1 48a8c51b3fSopenharmony_ci# with: 49a8c51b3fSopenharmony_ci# platforms: all 50a8c51b3fSopenharmony_ci 51a8c51b3fSopenharmony_ci - name: Build Python wheels on ubuntu-latest 52a8c51b3fSopenharmony_ci env: 53a8c51b3fSopenharmony_ci CIBW_BUILD: 'cp37-* cp38-* cp39-* cp310-*' 54a8c51b3fSopenharmony_ci CIBW_SKIP: "*-musllinux_*" 55a8c51b3fSopenharmony_ci # Bazel repo only exists on CentOS 7 for x86 and ppc, so no manylinux2010 56a8c51b3fSopenharmony_ci # TODO: Build ppc64le, aarch64 using some other trick 57a8c51b3fSopenharmony_ci CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014 58a8c51b3fSopenharmony_ci CIBW_ARCHS_LINUX: x86_64 59a8c51b3fSopenharmony_ci CIBW_BEFORE_ALL: > 60a8c51b3fSopenharmony_ci curl -O --retry-delay 5 --retry 5 https://copr.fedorainfracloud.org/coprs/vbatts/bazel/repo/epel-7/vbatts-bazel-epel-7.repo && 61a8c51b3fSopenharmony_ci cp vbatts-bazel-epel-7.repo /etc/yum.repos.d/bazel.repo && 62a8c51b3fSopenharmony_ci yum install -y bazel4 63a8c51b3fSopenharmony_ci CIBW_TEST_COMMAND: python {project}/bindings/python/google_benchmark/example.py 64a8c51b3fSopenharmony_ci run: | 65a8c51b3fSopenharmony_ci pip install cibuildwheel 66a8c51b3fSopenharmony_ci python -m cibuildwheel --output-dir wheelhouse 67a8c51b3fSopenharmony_ci 68a8c51b3fSopenharmony_ci - name: Upload Linux wheels 69a8c51b3fSopenharmony_ci uses: actions/upload-artifact@v2 70a8c51b3fSopenharmony_ci with: 71a8c51b3fSopenharmony_ci name: dist 72a8c51b3fSopenharmony_ci path: wheelhouse/*.whl 73a8c51b3fSopenharmony_ci 74a8c51b3fSopenharmony_ci build_macos: 75a8c51b3fSopenharmony_ci name: Build google-benchmark macOS wheels 76a8c51b3fSopenharmony_ci runs-on: macos-latest 77a8c51b3fSopenharmony_ci 78a8c51b3fSopenharmony_ci steps: 79a8c51b3fSopenharmony_ci - name: Check out Google Benchmark 80a8c51b3fSopenharmony_ci uses: actions/checkout@v2 81a8c51b3fSopenharmony_ci 82a8c51b3fSopenharmony_ci - name: Set up Python 3.9 83a8c51b3fSopenharmony_ci uses: actions/setup-python@v2 84a8c51b3fSopenharmony_ci with: 85a8c51b3fSopenharmony_ci python-version: 3.9 86a8c51b3fSopenharmony_ci 87a8c51b3fSopenharmony_ci - name: Build Python wheels on macOS 88a8c51b3fSopenharmony_ci env: 89a8c51b3fSopenharmony_ci CIBW_ARCHS_MACOS: "x86_64 arm64" 90a8c51b3fSopenharmony_ci CIBW_BUILD: 'cp37-* cp38-* cp39-* cp310-*' 91a8c51b3fSopenharmony_ci # ARM64 requires Python 3.8 minimum 92a8c51b3fSopenharmony_ci CIBW_SKIP: 'cp37-*-arm64' 93a8c51b3fSopenharmony_ci CIBW_TEST_COMMAND: python {project}/bindings/python/google_benchmark/example.py 94a8c51b3fSopenharmony_ci CIBW_TEST_SKIP: "*_arm64" 95a8c51b3fSopenharmony_ci run: | 96a8c51b3fSopenharmony_ci pip install cibuildwheel 97a8c51b3fSopenharmony_ci python -m cibuildwheel --output-dir wheelhouse 98a8c51b3fSopenharmony_ci 99a8c51b3fSopenharmony_ci - name: Upload macOS wheels 100a8c51b3fSopenharmony_ci uses: actions/upload-artifact@v2 101a8c51b3fSopenharmony_ci with: 102a8c51b3fSopenharmony_ci name: dist 103a8c51b3fSopenharmony_ci path: wheelhouse/*.whl 104a8c51b3fSopenharmony_ci 105a8c51b3fSopenharmony_ci build_windows: 106a8c51b3fSopenharmony_ci name: Build google-benchmark wheels on Windows 107a8c51b3fSopenharmony_ci runs-on: windows-latest 108a8c51b3fSopenharmony_ci 109a8c51b3fSopenharmony_ci steps: 110a8c51b3fSopenharmony_ci - name: Check out Google Benchmark 111a8c51b3fSopenharmony_ci uses: actions/checkout@v2 112a8c51b3fSopenharmony_ci 113a8c51b3fSopenharmony_ci - name: Set up Python 3.9 114a8c51b3fSopenharmony_ci uses: actions/setup-python@v2 115a8c51b3fSopenharmony_ci with: 116a8c51b3fSopenharmony_ci python-version: 3.9 117a8c51b3fSopenharmony_ci 118a8c51b3fSopenharmony_ci - name: Build Python wheels on Windows 119a8c51b3fSopenharmony_ci env: 120a8c51b3fSopenharmony_ci CIBW_BUILD: 'cp37-* cp38-* cp39-* cp310-*' 121a8c51b3fSopenharmony_ci CIBW_ARCHS_WINDOWS: AMD64 122a8c51b3fSopenharmony_ci # otherwise, pip crashes the job by trying to remove an in-use bazel DLL 123a8c51b3fSopenharmony_ci PIP_NO_CLEAN: true 124a8c51b3fSopenharmony_ci CIBW_TEST_COMMAND: python {project}/bindings/python/google_benchmark/example.py 125a8c51b3fSopenharmony_ci run: | 126a8c51b3fSopenharmony_ci pip install cibuildwheel 127a8c51b3fSopenharmony_ci python -m cibuildwheel --output-dir wheelhouse 128a8c51b3fSopenharmony_ci 129a8c51b3fSopenharmony_ci - name: Upload wheels 130a8c51b3fSopenharmony_ci uses: actions/upload-artifact@v2 131a8c51b3fSopenharmony_ci with: 132a8c51b3fSopenharmony_ci name: dist 133a8c51b3fSopenharmony_ci path: wheelhouse/*.whl