From fc7babd85a230331821410e52012de153e87b8f2 Mon Sep 17 00:00:00 2001 From: Elias Strauss Date: Sun, 18 Oct 2026 01:16:46 +0200 Subject: [PATCH 1/2] [Fix] flaky macos profiler CI test --- tests/profiler/test_hardware.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tests/profiler/test_hardware.py b/tests/profiler/test_hardware.py index 07b8dd0a..0a2830a8 100644 --- a/tests/profiler/test_hardware.py +++ b/tests/profiler/test_hardware.py @@ -145,9 +145,14 @@ def create_time(self): assert len(previous) == 2 +# Polls straddling an operator boundary are discarded, and a poll can take tens +# of milliseconds on loaded CI runners, so each window spans many intervals. +OP_SECONDS = .5 + + class BusyOp(SameLabelOp): def process(self, mode, inputs): - end = perf_counter() + .12 + end = perf_counter() + OP_SECONDS while perf_counter() < end: sum(range(1000)) return 1 @@ -155,7 +160,7 @@ def process(self, mode, inputs): class IdleOp(SameLabelOp): def process(self, mode, inputs): - sleep(.12) + sleep(OP_SECONDS) return 1 From bb8aa00da0890bcdf7960c3bf45410a0c0cf4365 Mon Sep 17 00:00:00 2001 From: Elias Strauss Date: Sun, 18 Oct 2026 01:17:31 +0200 Subject: [PATCH 2/2] [CI] Move macOS test jobs to macos-26 and skip brew update Homebrew moved macOS 14 to Tier 3 in early October, so it no longer ships bottles for it. Since then `brew update && brew install libomp` built openssl, cmake and libomp from source on every run, taking 15 to 20 minutes of the Python and Rust test jobs. The macos-14 runner image is also deprecated. Run on macos-26 (Homebrew Tier 1) and install libomp without updating Homebrew or upgrading installed dependents, so the bottle is poured directly. --- .github/workflows/python_tests.yml | 13 ++++++++----- .github/workflows/rust_tests.yml | 13 ++++++++----- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/.github/workflows/python_tests.yml b/.github/workflows/python_tests.yml index 42ffecf1..c7e25b99 100644 --- a/.github/workflows/python_tests.yml +++ b/.github/workflows/python_tests.yml @@ -41,7 +41,7 @@ jobs: python-version: "3.13" - os: ubuntu-latest python-version: "3.14" - - os: macos-14 + - os: macos-26 python-version: "3.12" - os: windows-latest python-version: "3.12" @@ -51,10 +51,13 @@ jobs: uses: actions/checkout@v4 - name: Install OS specific dependencies - if: matrix.os == 'macos-14' - run: | - brew update - brew install libomp + if: matrix.os == 'macos-26' + # Skip `brew update` and dependent upgrades: they pull formula versions + # newer than the runner image ships, which then build from source. + env: + HOMEBREW_NO_AUTO_UPDATE: 1 + HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1 + run: brew install libomp - name: Set up Python uses: actions/setup-python@v5 diff --git a/.github/workflows/rust_tests.yml b/.github/workflows/rust_tests.yml index ff763393..3c1100ac 100644 --- a/.github/workflows/rust_tests.yml +++ b/.github/workflows/rust_tests.yml @@ -40,7 +40,7 @@ jobs: matrix: os: - ubuntu-latest - - macos-14 + - macos-26 - windows-latest steps: @@ -48,10 +48,13 @@ jobs: uses: actions/checkout@v4 - name: Install OS specific dependencies - if: matrix.os == 'macos-14' - run: | - brew update - brew install libomp + if: matrix.os == 'macos-26' + # Skip `brew update` and dependent upgrades: they pull formula versions + # newer than the runner image ships, which then build from source. + env: + HOMEBREW_NO_AUTO_UPDATE: 1 + HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1 + run: brew install libomp - name: Cache Cargo build uses: actions/cache@v4