Support CPython 3.11, 3.12, and aarch64 processors #188
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 | |
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 | |
run: | | |
MATRIX_INCLUDE=$( | |
{ | |
cibuildwheel --print-build-identifiers --platform linux --arch x86_64,aarch64 | grep cp | jq -nRc '{"only": inputs, "os": "ubuntu-latest"}' \ | |
&& cibuildwheel --print-build-identifiers --platform macos --arch x86_64 | grep cp | jq -nRc '{"only": inputs, "os": "macos-13"}' \ | |
&& cibuildwheel --print-build-identifiers --platform macos --arch arm64 | grep cp | jq -nRc '{"only": inputs, "os": "macos-14"}' \ | |
&& cibuildwheel --print-build-identifiers --platform windows --arch AMD64 | grep cp | 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 # for uploading release assets | |
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 | |
- uses: pypa/[email protected] # 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 | |
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'" | |
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/[email protected] | |
with: | |
files: packages/vaex-core/dist/* | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.x" | |
- name: Make source distribution | |
run: | | |
pip install setuptools | |
python setup.py sdist | |
working-directory: packages/vaex-core/ | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: distribution-${{ matrix.only }} | |
path: packages/vaex-core/dist | |
- name: Publish a Python distribution to PyPI | |
if: startsWith(github.ref, 'refs/tags/core') | |
env: | |
TWINE_USERNAME: __token__ | |
TWINE_PASSWORD: ${{ secrets.pypi_password_vaex_core }} | |
run: | | |
pip install twine wheel | |
openssl sha256 dist/* | |
twine upload --skip-existing | |
working-directory: packages/vaex-core/ |