Adding MacOS support #51
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 | |
on: [push, pull_request] | |
jobs: | |
build_wheels: | |
name: Build wheels on ${{ matrix.os }} with label ${{ matrix.label }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: ubuntu-latest | |
label: "linux-target-x86_64" | |
- os: macos-13 | |
label: "macos-target-x86_64" | |
env: | |
MACOSX_DEPLOYMENT_TARGET: "10.15" | |
CIBW_ARCHS_MACOS: "x86_64" | |
- os: macos-13 | |
label: "macos-target-arm64" | |
env: | |
MACOSX_DEPLOYMENT_TARGET: "11" | |
CIBW_ARCHS_MACOS: "arm64" | |
env: | |
MACOSX_DEPLOYMENT_TARGET: ${{ matrix.env.MACOSX_DEPLOYMENT_TARGET }} | |
CIBW_ARCHS_MACOS: ${{ matrix.env.CIBW_ARCHS_MACOS }} | |
CIBW_CONFIG_SETTINGS: "cmake.verbose=true" | |
CIBW_BUILD_VERBOSITY: 1 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Set OpenMP env for macos x86_64 | |
if: matrix.label == 'macos-target-x86_64' | |
run: | | |
brew install libomp | |
prefix=$(brew --prefix libomp) | |
echo "LDFLAGS=$LDFLAGS -L$prefix/lib" >> $GITHUB_ENV | |
echo "CXXFLAGS=$CXXFLAGS -I$prefix/include" >> $GITHUB_ENV | |
- name: Set OpenMP env for macos arm64 | |
if: matrix.label == 'macos-target-arm64' | |
run: | | |
pkg=$(brew fetch --force --bottle-tag=arm64_ventura libomp | grep 'Downloaded to' | cut -d' ' -f3) | |
brew install $pkg | |
prefix=$(brew --prefix libomp) | |
echo "LDFLAGS=$LDFLAGS -L$prefix/lib -lomp" >> $GITHUB_ENV | |
echo "CXXFLAGS=$CXXFLAGS -I$prefix/include -target arm64-apple-macos11 -Xpreprocessor -fopenmp" >> $GITHUB_ENV | |
- name: Build wheels | |
uses: pypa/[email protected] | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: cibw-wheels-${{ matrix.label }} | |
path: ./wheelhouse/*.whl | |
# - name: Setup tmate session | |
# if: ${{ failure() }} | |
# uses: mxschmitt/action-tmate@v3 | |
# with: | |
# limit-access-to-actor: true | |
make_sdist: | |
name: Make SDist | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Build SDist | |
run: | | |
pip install -U build | |
python -m build --sdist | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: cibw-sdist | |
path: dist/*.tar.gz | |
test_arm64_wheels: | |
needs: [build_wheels] | |
runs-on: macos-14 | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12'] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- uses: actions/download-artifact@v4 | |
with: | |
name: cibw-wheels-macos-target-arm64 | |
path: wheelhouse/ | |
- name: Install arm64 wheels | |
run: | | |
pip install -U pip | |
pip install -f wheelhouse/ nifty-ls[test] | |
# ensure that the previous install didn't resolve to PyPI | |
pip install --no-index -f wheelhouse/ nifty-ls[test] | |
- name: Run tests | |
run: | | |
pytest --benchmark-skip tests/ | |
upload_all: | |
needs: [build_wheels, make_sdist, test_arm64_wheels] | |
environment: pypi | |
permissions: | |
id-token: write | |
runs-on: ubuntu-latest | |
# TODO: only run on release | |
# if: github.event_name == 'release' && github.event.action == 'published' | |
if: startsWith(github.ref, 'refs/tags/v') | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
pattern: cibw-* | |
path: dist | |
merge-multiple: true | |
- uses: pypa/gh-action-pypi-publish@release/v1 |