Build using backward-compatible numpy API #255
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: | |
# skipping pypy for now, cp38-win was segfaulting on CI, numpy has no wheels for cp38-musllinux_aarch64 -> build from source -> CI timeouts | |
CIBW_SKIP: pp* cp38-win* cp38-musllinux_aarch64 | |
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 | |
# xcode 15.2 throws compilation errors ref https://github.com/vaexio/vaex/pull/2432 | |
# select older xcode from the available versions on the runner ref https://github.com/actions/runner-images/blob/ff9acc6/images/macos/macos-13-Readme.md#xcode | |
- name: Switch to older Xcode (Mac-only) | |
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 |