Skip to content

Commit

Permalink
Promote arm64 macOS to tier 1 (#1077)
Browse files Browse the repository at this point in the history
* Promote arm64 macOS to tier 1

Github recently added a new macOS runner that is using the m1 CPU that
is usable for open source projects. [1] Previously rustworkx had support
for arm64 macOS at tier 4 because we were only able to cross compile for
the platform and not test the binaries. Now that we can run CI jobs on
the platform we're able to run both unit tests and test our binaries on
release. This commit adds a new set of test jobs and wheel builds that
use the macos-14 runner that mirrors the existing x86_64 macOS jobs we
have. This brings arm64 macOS to the same support level as arm64.

[1] https://github.blog/changelog/2024-01-30-github-actions-introducing-the-new-m1-macos-runner-available-to-open-source/

* Specify patch version for main test ci job

The setup-python action on macos-14 only has python 3.12 installers for
specific patch versions. This commit specifies that we use 3.12.0 as
this lets us start using stestr again to improve test throughput. Using
3.12.1 is blocked as there was a breaking api change made to unittest in
that Python release which is causing skip tests to be reported as errors.

* Use correct architecture string for Python

* Skip py3.8 and 3.9 until the setup-python action is updated

* Revert Python 3.12 job constraint and stestr usage
  • Loading branch information
mtreinish committed Feb 22, 2024
1 parent f3cc7fd commit 40d34b6
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 30 deletions.
7 changes: 7 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ jobs:
python-version: [3.8, 3.9, "3.10", "3.11", "3.12"]
platform: [
{ os: "macOS-latest", python-architecture: "x64", rust-target: "x86_64-apple-darwin" },
{ os: "macOS-14", python-architecture: "arm64", rust-target: "aarch64-apple-darwin" },
{ os: "ubuntu-latest", python-architecture: "x64", rust-target: "x86_64-unknown-linux-gnu" },
{ os: "windows-latest", python-architecture: "x64", rust-target: "x86_64-pc-windows-msvc" },
]
Expand All @@ -69,6 +70,12 @@ jobs:
python-version: 3.8
platform: { os: "ubuntu-latest", python-architecture: "x64", rust-target: "x86_64-unknown-linux-gnu" }
msrv: "MSRV"
# Exclude python 3.8 and 3.9 on arm64 until actions/setup-python#808 is resolved
exclude:
- platform: {os: "macOS-14", python-architecture: "arm64", rust-target: "aarch64-apple-darwin" }
python-version: 3.8
- platform: {os: "macOS-14", python-architecture: "arm64", rust-target: "aarch64-apple-darwin" }
python-version: 3.9
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
Expand Down
41 changes: 12 additions & 29 deletions .github/workflows/wheels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
os: [ubuntu-latest, windows-latest, macos-latest, macos-14]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
Expand All @@ -56,7 +56,7 @@ jobs:
- uses: dtolnay/rust-toolchain@stable
- name: Install cibuildwheel
run: |
python -m pip install cibuildwheel==2.16.2
python -m pip install cibuildwheel==2.16.5
- name: Build wheels
run: |
python -m cibuildwheel --output-dir wheelhouse
Expand All @@ -70,7 +70,7 @@ jobs:
environment: release
permissions:
id-token: write
needs: ["build_wheels", "build-mac-arm-wheels", "build-win32-wheels"]
needs: ["build_wheels", "build-win32-wheels"]
steps:
- uses: actions/download-artifact@v3
with:
Expand Down Expand Up @@ -103,7 +103,7 @@ jobs:
platforms: all
- name: Install cibuildwheel
run: |
python -m pip install cibuildwheel==2.16.2
python -m pip install cibuildwheel==2.16.5
- name: Build wheels
run: |
python -m cibuildwheel --output-dir wheelhouse
Expand Down Expand Up @@ -140,7 +140,7 @@ jobs:
platforms: all
- name: Install cibuildwheel
run: |
python -m pip install cibuildwheel==2.16.2
python -m pip install cibuildwheel==2.16.5
- name: Build wheels
run: |
python -m cibuildwheel --output-dir wheelhouse
Expand Down Expand Up @@ -177,7 +177,7 @@ jobs:
platforms: all
- name: Install cibuildwheel
run: |
python -m pip install cibuildwheel==2.16.2
python -m pip install cibuildwheel==2.16.5
- name: Build wheels
run: |
python -m cibuildwheel --output-dir wheelhouse
Expand Down Expand Up @@ -215,7 +215,7 @@ jobs:
platforms: all
- name: Install cibuildwheel
run: |
python -m pip install cibuildwheel==2.16.2
python -m pip install cibuildwheel==2.16.5
- name: Build wheels
run: |
python -m cibuildwheel --output-dir wheelhouse
Expand Down Expand Up @@ -253,7 +253,7 @@ jobs:
platforms: all
- name: Install cibuildwheel
run: |
python -m pip install cibuildwheel==2.16.2
python -m pip install cibuildwheel==2.16.5
- name: Build wheels
run: |
python -m cibuildwheel --output-dir wheelhouse
Expand Down Expand Up @@ -290,7 +290,7 @@ jobs:
platforms: all
- name: Install cibuildwheel
run: |
python -m pip install cibuildwheel==2.16.2
python -m pip install cibuildwheel==2.16.5
- name: Build wheels
run: |
python -m cibuildwheel --output-dir wheelhouse
Expand Down Expand Up @@ -327,7 +327,7 @@ jobs:
platforms: all
- name: Install cibuildwheel
run: |
python -m pip install cibuildwheel==2.16.2
python -m pip install cibuildwheel==2.16.5
- name: Build wheels
run: |
python -m cibuildwheel --output-dir wheelhouse
Expand Down Expand Up @@ -364,7 +364,7 @@ jobs:
platforms: all
- name: Install cibuildwheel
run: |
python -m pip install cibuildwheel==2.16.2
python -m pip install cibuildwheel==2.16.5
- name: Build wheels
run: |
python -m cibuildwheel --output-dir wheelhouse
Expand All @@ -378,23 +378,6 @@ jobs:
uses: pypa/gh-action-pypi-publish@release/v1
with:
packages-dir: wheelhouse/
build-mac-arm-wheels:
name: Build wheels on macos for arm and universal2
runs-on: macos-latest
environment: release
steps:
- uses: actions/checkout@v4
- name: Build wheels
uses: joerick/cibuildwheel@v2.16.2
env:
CIBW_BEFORE_ALL: rustup target add aarch64-apple-darwin
CIBW_ARCHS_MACOS: arm64 universal2
CIBW_BEFORE_BUILD: pip install -U setuptools-rust
CIBW_ENVIRONMENT: CARGO_BUILD_TARGET="aarch64-apple-darwin" PYO3_CROSS_LIB_DIR="/Library/Frameworks/Python.framework/Versions/$(python -c 'import sys; print(str(sys.version_info[0])+"."+str(sys.version_info[1]))')/lib/python$(python -c 'import sys; print(str(sys.version_info[0])+"."+str(sys.version_info[1]))')"
- uses: actions/upload-artifact@v4
with:
path: ./wheelhouse/*.whl
name: shared-wheel-builds
build-win32-wheels:
name: Build wheels on win32
runs-on: windows-latest
Expand All @@ -413,7 +396,7 @@ jobs:
run: rustup default stable-i686-pc-windows-msvc
- name: Install cibuildwheel
run: |
python -m pip install cibuildwheel==2.16.2
python -m pip install cibuildwheel==2.16.5
- name: Build wheels
run: |
python -m cibuildwheel --output-dir wheelhouse
Expand Down
7 changes: 6 additions & 1 deletion docs/source/install.rst
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ source.
-
* - macOS (11 or newer)
- arm64
- :ref:`tier-4`
- :ref:`tier-1` [#f1]_
-
* - Windows 64bit
- x86_64
Expand All @@ -117,6 +117,11 @@ source.

.. _manylinux 2014: https://peps.python.org/pep-0599/>

.. [#f1] Due to CI environment limitations tests for macOS arm64 are only run with
Python >= 3.10. The published binaries are still built and tested for all supported
Python versions, but the tests run on proposed changes are only run with Python >=3.10
.. _tier-1:

Tier 1
Expand Down
12 changes: 12 additions & 0 deletions releasenotes/notes/arm64-macos-tier-1-6be760ee2ac3975d.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
other:
- |
Support for the arm64 macOS platform has been promoted from :ref:`tier-4`
to :ref:`tier-1`. Previously the platform was at :ref:`tier-4` because
there was no available CI environment for testing rustworkx on the platform.
Now that Github has made an arm64 macOS environment available to open source
projects [#]_ we're testing the platform along with the other :ref:`tier-1`
supported platforms.
.. [#] https://github.blog/changelog/2024-01-30-github-actions-introducing-the-new-m1-macos-runner-available-to-open-source/

0 comments on commit 40d34b6

Please sign in to comment.