Skip to content
47 changes: 43 additions & 4 deletions .github/workflows/tests-cibw.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,16 +22,20 @@ jobs:
submodules: true
fetch-depth: 0

- uses: pypa/cibuildwheel@v3.0
- uses: pypa/cibuildwheel@v3.1
env:
PYODIDE_BUILD_EXPORTS: whole_archive
with:
package-dir: tests
only: cp312-pyodide_wasm32

build-ios:
name: iOS wheel
runs-on: macos-latest
name: iOS wheel ${{ matrix.runs-on }}
runs-on: ${{ matrix.runs-on }}
strategy:
fail-fast: false
matrix:
runs-on: [macos-latest, macos-13]
steps:
- uses: actions/checkout@v4
with:
Expand All @@ -40,8 +44,43 @@ jobs:

- run: brew upgrade cmake

- uses: pypa/cibuildwheel@v3.0
- uses: pypa/cibuildwheel@v3.1
env:
CIBW_PLATFORM: ios
CIBW_SKIP: cp314-* # https://github.com/pypa/cibuildwheel/issues/2494
with:
package-dir: tests

build-android:
name: Android wheel ${{ matrix.runs-on }}
runs-on: ${{ matrix.runs-on }}
strategy:
fail-fast: false
matrix:
runs-on: [macos-latest, macos-13, ubuntu-latest]
steps:
- uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 0

# GitHub Actions can't currently run the Android emulator on macOS.
- name: Skip Android tests on macOS
if: contains(matrix.runs-on, 'macos')
run: echo "CIBW_TEST_COMMAND=" >> "$GITHUB_ENV"

# https://github.blog/changelog/2024-04-02-github-actions-hardware-accelerated-android-virtualization-now-available/
- name: Enable KVM for Android emulator
if: contains(matrix.runs-on, 'ubuntu')
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm

- run: pipx install patchelf

- uses: pypa/[email protected]
env:
CIBW_PLATFORM: android
with:
package-dir: tests
1 change: 1 addition & 0 deletions tests/env.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

import pytest

ANDROID = sys.platform.startswith("android")
LINUX = sys.platform.startswith("linux")
MACOS = sys.platform.startswith("darwin")
WIN = sys.platform.startswith("win32") or sys.platform.startswith("cygwin")
Expand Down
7 changes: 5 additions & 2 deletions tests/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# Warning: this is currently used for pyodide, and is not a general out-of-tree
# builder for the tests (yet). Specifically, wheels can't be built from SDists.
# Warning: this is currently used to test cross-compilation, and is not a general
# out-of-tree builder for the tests (yet). Specifically, wheels can't be built from
# SDists.

[build-system]
requires = ["scikit-build-core"]
Expand Down Expand Up @@ -29,6 +30,8 @@ test-sources = ["tests", "pyproject.toml"]
test-command = "python -m pytest -o timeout=0 -p no:cacheprovider tests"
environment.PIP_ONLY_BINARY = "numpy"
environment.PIP_PREFER_BINARY = "1"

android.environment.ANDROID_API_LEVEL = "24" # Needed to include libc++ in the wheel.
pyodide.test-groups = ["numpy", "scipy"]
ios.test-groups = ["numpy"]
ios.xbuild-tools = ["cmake", "ninja"]
Expand Down
2 changes: 1 addition & 1 deletion tests/test_exceptions.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ def test_cross_module_exceptions(msg):

# TODO: FIXME
@pytest.mark.xfail(
"env.MACOS and env.PYPY",
"(env.MACOS and env.PYPY) or env.ANDROID",
raises=RuntimeError,
reason="See Issue #2847, PR #2999, PR #4324",
strict=not env.PYPY, # PR 5569
Expand Down
Loading