Skip to content

Add CI for building wheels on MacOS on arm64 #57

Add CI for building wheels on MacOS on arm64

Add CI for building wheels on MacOS on arm64 #57

Workflow file for this run

name: Build NEURON Python wheels
on:
push:
branches:
- master
pull_request:
branches:
- master
workflow_dispatch:
inputs:
rel_release:
description: Release branch/commit
default: 'release/x.y'
required: true
rel_version:
description: Release version (tag name)
default: 'x.y.z'
required: true
jobs:
build-test:
name: Build Python wheels
runs-on: ${{ matrix.os }}
timeout-minutes: 60
strategy:
matrix:
os: [macos-14]
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']
steps:
- name: Check out code
if: github.event_name != 'workflow_dispatch'
uses: actions/checkout@v4
- name: Check out code for release
if: github.event_name == 'workflow_dispatch'
uses: actions/checkout@v4
with:
ref: ${{ github.inputs.rel_release }}
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install MacOS System Dependencies
if: startsWith(runner.os, 'macOS')
run: |
brew install --cask xquartz
brew install flex bison mpich
brew unlink mpich && brew install openmpi
cmake --version
# Uninstall libomp for compatibility with issue #817
brew uninstall --ignore-dependencies libomp || echo "libomp doesn't exist"
brew install cmake
echo "$(brew --prefix)/opt/cmake/bin" >> $GITHUB_PATH
echo "$(brew --prefix)/opt/flex/bin:$(brew --prefix)/opt/bison/bin" >> $GITHUB_PATH
- name: Install readline
if: startsWith(runner.os, 'macOS')
run: |
sudo mkdir -p /opt/nrnwheel/$(uname -m)
sudo bash packaging/python/build_static_readline_osx.bash
- name: Set env for release
if: github.event_name == 'workflow_dispatch'
run: |
echo "NRN_NIGHTLY_UPLOAD=false" >> $GITHUB_ENV
echo NRN_RELEASE_UPLOAD=${{ github.event.inputs.upload }} >> $GITHUB_ENV
echo "NEURON_NIGHTLY_TAG=" >> $GITHUB_ENV
echo SETUPTOOLS_SCM_PRETEND_VERSION=${{ github.event.inputs.rel_version }} >> $GITHUB_ENV
- name: Build wheels on MacOS
if: startsWith(runner.os, 'macOS')
run: |
packaging/python/build_wheels.bash osx ${{ matrix.python-version }} coreneuron
- name: Test wheel
run: |
minor_version="$(python -c 'import sys;print(sys.version_info.minor)')"
packaging/python/test_wheels.sh $(which python) wheelhouse/*cp3${minor_version}*.whl
- name: Upload wheel files
uses: actions/upload-artifact@v4
with:
name: wheels-${{ matrix.python-version }}-${{ matrix.os }}
path: wheelhouse/*.whl
merge:
runs-on: ubuntu-latest
needs: build-test
steps:
- name: Merge Artifacts
uses: actions/upload-artifact/merge@v4
with:
delete-merged: true
name: wheels
pattern: wheels-*