Fix pythonpackage.yml failing on macos-13 #237
Workflow file for this run
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
name: Build binary wheel | |
on: | |
push: | |
branches: | |
- master | |
tags: | |
- core-* | |
pull_request: | |
branches: | |
- master | |
schedule: | |
- cron: "0 2 * * 1-5" | |
release: | |
types: [released, prereleased] | |
workflow_dispatch: # allows running workflow manually from the Actions tab | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref || github.run_id }} | |
cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
jobs: | |
build_wheels_matrix: | |
runs-on: ubuntu-latest | |
outputs: | |
include: ${{ steps.set-matrix.outputs.include }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.x" | |
- run: pip install cibuildwheel==2.17.0 # sync version with pypa/cibuildwheel below | |
- id: set-matrix | |
env: | |
CIBW_SKIP: pp* cp38-win* | |
run: | | |
MATRIX_INCLUDE=$( | |
{ | |
cibuildwheel --print-build-identifiers --platform linux --arch x86_64,aarch64 | jq -nRc '{"only": inputs, "os": "ubuntu-latest"}' \ | |
&& cibuildwheel --print-build-identifiers --platform macos --arch x86_64 | jq -nRc '{"only": inputs, "os": "macos-13"}' \ | |
&& cibuildwheel --print-build-identifiers --platform macos --arch arm64 | jq -nRc '{"only": inputs, "os": "macos-14"}' \ | |
&& cibuildwheel --print-build-identifiers --platform windows --arch AMD64 | jq -nRc '{"only": inputs, "os": "windows-latest"}' | |
} | jq -sc | |
) | |
echo "include=$MATRIX_INCLUDE" >> $GITHUB_OUTPUT | |
cat $GITHUB_OUTPUT | |
working-directory: packages/vaex-core/ | |
build_wheels: | |
needs: build_wheels_matrix | |
runs-on: ${{ matrix.os }} | |
name: Build ${{ matrix.only }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: ${{ fromJson(needs.build_wheels_matrix.outputs.include) }} | |
permissions: | |
contents: write # softprops/action-gh-release | |
id-token: write # pypa/gh-action-pypi-publish | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Copy dll | |
if: matrix.os == 'windows-latest' | |
uses: ./ci/actions/windll | |
- name: chores | |
if: matrix.os != 'windows-latest' | |
run: | | |
mkdir packages/vaex-core/bin | |
cp bin/install_pcre.sh packages/vaex-core/bin/ | |
- name: Set up QEMU | |
if: runner.os == 'Linux' | |
uses: docker/setup-qemu-action@v3 | |
- name: Switch to older Xcode | |
if: startswith(matrix.os, 'macos') | |
run: sudo xcode-select -s "/Applications/Xcode_15.0.1.app" | |
- uses: pypa/cibuildwheel@v2.17.0 # sync version with pip install cibuildwheel above | |
with: | |
only: ${{ matrix.only }} | |
package-dir: packages/vaex-core/ | |
output-dir: packages/vaex-core/dist/ | |
env: | |
CIBW_BEFORE_BUILD: ${{ startswith(matrix.os, 'ubuntu') && 'bash bin/install_pcre.sh' || startswith(matrix.os, 'macos') && 'sudo -E bash bin/install_pcre.sh' || '' }} | |
CIBW_BUILD_VERBOSITY: 2 | |
# cargo needed because of missing blake3 wheels (aarch64 and musllinux missing) | |
# cargo added to path in CIBW_ENVIRONMENT_LINUX below | |
CIBW_BEFORE_TEST: ${{ startswith(matrix.os, 'ubuntu') && 'curl https://sh.rustup.rs -sSf | sh -s -- -y' || '' }} | |
# no test on musllinux due to missing pyarrow wheels ref https://github.com/apache/arrow/pull/40177 | |
CIBW_TEST_SKIP: '*musllinux*' | |
CIBW_TEST_COMMAND: python -c "import vaex; print(vaex.from_arrays(x=[1,2]))" | |
CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_28 | |
CIBW_MANYLINUX_AARCH64_IMAGE: manylinux_2_28 | |
CIBW_ENVIRONMENT_LINUX: 'CFLAGS="-Wl,-strip-all" CXXFLAGS="-Wl,-strip-all" PATH="$HOME/.cargo/bin:$PATH"' | |
CIBW_ENVIRONMENT_MACOS: 'CFLAGS="-I/usr/local/include -L/usr/local/lib" CXXFLAGS="-I/usr/local/include -L/usr/local/lib" LDFLAGS="-L/usr/local/lib"' | |
- name: Upload release assets | |
if: github.event_name == 'release' | |
uses: softprops/action-gh-release@v0.1.15 | |
with: | |
files: packages/vaex-core/dist/* | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: distribution-${{ matrix.only }} | |
path: packages/vaex-core/dist | |
# https://github.com/pypa/gh-action-pypi-publish#trusted-publishing | |
- name: Publish package distributions to PyPI | |
uses: pypa/gh-action-pypi-publish@v1.9.0 | |
if: startsWith(github.ref, 'refs/tags') | |
with: | |
skip-existing: true | |
packages-dir: packages/vaex-core/dist |