Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Multi arch test #65

Merged
merged 24 commits into from
Aug 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 95 additions & 0 deletions .github/workflows/build-multiarch.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
name: Build Multiarch

on:
push:
branches: [release]
pull_request:
branches: [master, release]

jobs:
multi-arch-test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- arch: armv6
distro: bookworm
- arch: armv7
distro: bookworm
- arch: aarch64
distro: bookworm
- arch: s390x
distro: bookworm
- arch: ppc64le
distro: bookworm

- arch: armv7
distro: ubuntu_latest
- arch: aarch64
distro: ubuntu_latest
- arch: riscv64
distro: ubuntu_devel
- arch: s390x
distro: ubuntu_latest
- arch: ppc64le
distro: ubuntu_latest

- arch: armv7
distro: ubuntu22.04
- arch: aarch64
distro: ubuntu22.04
# - arch: riscv64
# distro: ubuntu22.04
- arch: s390x
distro: ubuntu22.04
- arch: ppc64le
distro: ubuntu22.04
# ubuntu with riscv64 has three failures and a crash on test_SolverInterface_basics in scipy's root function; also test_is_poly_positive and test_bend_rounded_Miller_Re_correction
# ubuntu20.04 is too old, fluids dropped support with numpy 2.0 compat

- arch: armv6
distro: alpine_latest
- arch: armv7
distro: alpine_latest
- arch: aarch64
distro: alpine_latest
- arch: riscv64
distro: alpine_latest
- arch: s390x
distro: alpine_latest
- arch: ppc64le
distro: alpine_latest
# fedora-latest doesn't work not sure why

steps:
- uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
with:
platforms: all
- name: Run on ${{ matrix.arch }}
uses: uraimo/run-on-arch-action@v2
with:
arch: ${{ matrix.arch }}
distro: ${{ matrix.distro }}
githubToken: ${{ github.token }}
install: |
if [[ "${{ matrix.distro }}" == "alpine_latest" ]]; then
apk update
apk add python3 py3-pip py3-scipy py3-matplotlib py3-numpy py3-pandas
elif [[ "${{ matrix.distro }}" == "ubuntu_latest" || "${{ matrix.distro }}" == "ubuntu_rolling" || "${{ matrix.distro }}" == "ubuntu_devel" || "${{ matrix.distro }}" == "ubuntu20.04" || "${{ matrix.distro }}" == "ubuntu22.04" || "${{ matrix.distro }}" == "bookworm" ]]; then
apt-get update
apt-get install -y libatlas-base-dev liblapack-dev gfortran libgmp-dev libmpfr-dev libsuitesparse-dev ccache libmpc-dev python3 python3-pip python3-scipy python3-matplotlib python3-numpy python3-pandas
fi
run: |
if python3 -c "import subprocess; exit('no such option' not in subprocess.getoutput('pip3 install --break-system-packages'))"; then
# If the exit status is 0 (True), this means the option is not supported
python3 -m pip install wheel
pip3 install -r requirements_test_multiarch.txt
else
# If the exit status is 1 (False), this means the option is supported
python3 -m pip install wheel --break-system-packages
pip3 install -r requirements_test_multiarch.txt --break-system-packages
fi
python3 -m pytest . -v -m "not online and not thermo and not numba"
6 changes: 5 additions & 1 deletion conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@
ver_tup = platform.python_version_tuple()[0:2]
ver_tup = tuple(int(i) for i in ver_tup)


is_x86_or_x86_64 = platform.machine().lower() in ('i386', 'i686', 'x86', 'x86_64', 'amd64')


def pytest_ignore_collect(path):
path = str(path)
if 'manual_runner' in path or 'make_test_stubs' in path or 'plot' in path or 'prerelease' in path:
Expand All @@ -15,7 +19,7 @@ def pytest_ignore_collect(path):
return True
if 'is_pypy' and 'test_spa' in path:
return True
if ver_tup < (3, 7) or ver_tup >= (3, 13) or is_pypy:
if ver_tup < (3, 7) or ver_tup >= (3, 13) or is_pypy or not is_x86_or_x86_64:
# numba does not yet run under pypy
if 'numba' in path:
return True
Expand Down
9 changes: 9 additions & 0 deletions requirements_test_multiarch.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
pytest
pytest-cov
sympy
thefuzz
pint
pytz
IPython
sphinx
wheel
2 changes: 1 addition & 1 deletion tests/test_numerics.py
Original file line number Diff line number Diff line change
Expand Up @@ -512,7 +512,7 @@ def to_solve(x):

def test_is_poly_positive():
assert not is_poly_positive([4, 3, 2, 1])
for high in range(0, 100, 5):
for high in range(0, 30, 5):
assert is_poly_positive([4, 3, 2, 1], domain=(0, 10**high))

coeffs_4alpha = [2.1570803657937594e-10, 2.008831101045556e-06, -0.004656598178209313, 2.8575882247542514]
Expand Down
Loading