Skip to content

Commit

Permalink
Use github actions to build wheels
Browse files Browse the repository at this point in the history
  • Loading branch information
BrianPugh committed Feb 26, 2024
1 parent 9328164 commit f77a1d8
Show file tree
Hide file tree
Showing 4 changed files with 240 additions and 42 deletions.
41 changes: 0 additions & 41 deletions .buildkite/pipeline.yml

This file was deleted.

238 changes: 238 additions & 0 deletions .github/workflows/build_wheels.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,238 @@
name: Build Wheels

on:
workflow_dispatch:
pull_request:
push:
tags:
- "v*.*.*"

jobs:
build_sdist:
name: "sdist"
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
steps:
- name: Check out repository
uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: "recursive"

- name: Set up python 3.12
uses: actions/setup-python@v4
with:
python-version: "3.12"

- name: Build sdist
run: |
pipx run build --sdist
- uses: actions/upload-artifact@v3
with:
path: dist/*.tar.gz

build_wheels_windows:
name: "${{ matrix.os }} ${{ matrix.cibw_archs }} ${{ matrix.cibw_build }}"
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [windows-latest]
cibw_build: ["cp38-*", "cp39-*", "cp310-*", "cp311-*", "cp312-*"]
cibw_archs: ["AMD64", "x86", "ARM64"]
exclude:
- os: windows-latest
cibw_build: "cp38-*"
cibw_archs: "ARM64"

steps:
- name: "Set environment variables (Windows)"
shell: pwsh
run: |
(Get-ItemProperty "HKLM:System\CurrentControlSet\Control\FileSystem").LongPathsEnabled
- name: Check out repository
uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: "recursive"

- name: Set up python 3.12
uses: actions/setup-python@v4
with:
python-version: "3.12"

- name: Build wheels
uses: pypa/[email protected]
env:
CIBW_ARCHS: ${{ matrix.cibw_archs }}
CIBW_BUILD: ${{ matrix.cibw_build }}
CIBW_TEST_SKIP: "*-win_arm64"
CIBW_BEFORE_ALL: mkdir openexr/build && cd openexr/build && cmake .. -DCMAKE_INSTALL_PREFIX=../../openexr-install && make all install
CIBW_ENVIRONMENT: LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/openexr-install/lib64:${GITHUB_WORKSPACE}/openexr-install/lib
CIBW_TEST_REQUIRES: pytest
CIBW_TEST_COMMAND: pytest {package}/tests

- uses: actions/upload-artifact@v3
with:
path: wheelhouse/*.whl

build_wheels_linux:
name: "${{ matrix.os }} ${{ matrix.cibw_archs }} ${{ matrix.cibw_build }}"
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
cibw_build: ["cp38-*", "cp39-*", "cp310-*", "cp311-*", "cp312-*"]
cibw_archs: ["x86_64", "aarch64"]

steps:
- name: Check out repository
uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: "recursive"

- name: Set up QEMU
if: matrix.cibw_archs != 'x86_64'
uses: docker/setup-qemu-action@v2
with:
platforms: all

- name: Set up python 3.12
uses: actions/setup-python@v4
with:
python-version: "3.12"

- name: Build wheels
uses: pypa/[email protected]
env:
CIBW_ARCHS: ${{ matrix.cibw_archs }}
CIBW_BUILD: ${{ matrix.cibw_build }}
CIBW_BEFORE_ALL: mkdir openexr/build && cd openexr/build && cmake .. -DCMAKE_INSTALL_PREFIX=../../openexr-install && make all install
CIBW_ENVIRONMENT: LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/openexr-install/lib64:${GITHUB_WORKSPACE}/openexr-install/lib
CIBW_TEST_REQUIRES: pytest
CIBW_TEST_COMMAND: pytest {package}/tests

- uses: actions/upload-artifact@v3
with:
path: wheelhouse/*.whl

build_wheels_macos:
name: "${{ matrix.os }} ${{ matrix.cibw_archs }} ${{ matrix.cibw_build }}"
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macos-latest]
cibw_build: ["cp38-*", "cp39-*", "cp310-*", "cp311-*", "cp312-*"]
cibw_archs: ["x86_64"]
env:
SYSTEM_VERSION_COMPAT: 0 # https://github.com/actions/setup-python/issues/469#issuecomment-1192522949
steps:
- name: Check out repository
uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: "recursive"

- name: Set up python 3.12
uses: actions/setup-python@v4
with:
python-version: "3.12"

- name: Build wheels
uses: pypa/[email protected]
env:
CIBW_ARCHS: ${{ matrix.cibw_archs }}
CIBW_BUILD: ${{ matrix.cibw_build }}
CIBW_BEFORE_ALL: mkdir openexr/build && cd openexr/build && cmake .. -DCMAKE_INSTALL_PREFIX=../../openexr-install && make all install
CIBW_ENVIRONMENT: LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/openexr-install/lib64:${GITHUB_WORKSPACE}/openexr-install/lib
CIBW_TEST_REQUIRES: pytest
CIBW_TEST_COMMAND: pytest {package}/tests

- uses: actions/upload-artifact@v3
with:
path: wheelhouse/*.whl

build_wheels_macos_arm64:
name: "${{ matrix.os }} ${{ matrix.cibw_archs }} ${{ matrix.cibw_build }}"
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-latest]
cibw_build: ["cp38-*", "cp39-*", "cp310-*", "cp311-*", "cp312-*"]
cibw_archs: ["arm64"]

steps:
- name: Check out repository
uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: "recursive"

- uses: actions/setup-python@v4
with:
python-version: "3.12"

- name: Build wheels
uses: pypa/[email protected]
env:
CIBW_BUILD: ${{ matrix.cibw_build }}
CIBW_ARCHS: ${{ matrix.cibw_archs }}
CIBW_TEST_SKIP: "*-macosx_arm64"
CIBW_TEST_REQUIRES: pytest
CIBW_TEST_COMMAND: pytest {package}/tests
CIBW_BEFORE_ALL: mkdir openexr/build && cd openexr/build && cmake .. -DCMAKE_INSTALL_PREFIX=../../openexr-install && make all install
CIBW_ENVIRONMENT: LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/openexr-install/lib64:${GITHUB_WORKSPACE}/openexr-install/lib
CIBW_REPAIR_WHEEL_COMMAND: |
echo "Target delocate archs: {delocate_archs}"
ORIGINAL_WHEEL={wheel}
echo "Running delocate-listdeps to list linked original wheel dependencies"
delocate-listdeps --all $ORIGINAL_WHEEL
echo "Renaming .whl file when architecture is 'macosx_arm64'"
RENAMED_WHEEL=${ORIGINAL_WHEEL//x86_64/arm64}
echo "Wheel will be renamed to $RENAMED_WHEEL"
mv $ORIGINAL_WHEEL $RENAMED_WHEEL
echo "Running delocate-wheel command on $RENAMED_WHEEL"
delocate-wheel --require-archs {delocate_archs} -w {dest_dir} -v $RENAMED_WHEEL
echo "Running delocate-listdeps to list linked wheel dependencies"
WHEEL_SIMPLE_FILENAME="${RENAMED_WHEEL##*/}"
delocate-listdeps --all {dest_dir}/$WHEEL_SIMPLE_FILENAME
echo "DONE."
- uses: actions/upload-artifact@v3
with:
path: ./wheelhouse/*.whl

upload_to_pypi:
# TODO: enable for private python repo
if: false && github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/v')
needs:
[
"build_sdist",
"build_wheels_windows",
"build_wheels_linux",
"build_wheels_macos",
"build_wheels_macos_arm64",
]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v3
- uses: pypa/gh-action-pypi-publish@release/v1
with:
password: ${{ secrets.PYPI_TOKEN }}
packages_dir: artifact/
skip_existing: true
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ build/
wheelhouse/
dist/
MANIFEST
/*.whl
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from distutils.sysconfig import get_config_var
from distutils.version import LooseVersion

version = "1.3.2+geomagical.3"
version = "1.4.0"
compiler_args = ["-g", '-DVERSION="%s"' % version]

openexr_lib = "openexr-install/lib64"
Expand Down

0 comments on commit f77a1d8

Please sign in to comment.