feat: add armv7l in auto_archs when running on aarch64 (#2259)

* feat: add armv7l in auto_archs when running on aarch64

This depends on aarch32 EL0 support and thus is done conditionally.

* ci(travis): move to Ubuntu 22.04 / cp312
This commit is contained in:
Matthieu Darbois
2025-02-12 10:54:44 -05:00
committed by GitHub
parent c738289583
commit c93d51ec54
14 changed files with 96 additions and 50 deletions
+20 -2
View File
@@ -1,10 +1,12 @@
from __future__ import annotations
import platform as platform_module
import shutil
import sys
import pytest
import cibuildwheel.architecture
from cibuildwheel.architecture import Architecture
@@ -24,6 +26,7 @@ def platform_machine(request, monkeypatch):
platform_name, platform_value, machine_value, machine_name = request.param
monkeypatch.setattr(sys, "platform", platform_value)
monkeypatch.setattr(platform_module, "machine", lambda: machine_value)
monkeypatch.setattr(cibuildwheel.architecture, "_check_aarch32_el0", lambda: True)
return platform_name, machine_name
@@ -34,7 +37,7 @@ def test_arch_auto(platform_machine):
expected = {
"32": {Architecture.i686},
"64": {Architecture.x86_64, Architecture.i686},
"arm": {Architecture.aarch64},
"arm": {Architecture.aarch64, Architecture.armv7l},
}
assert arch_set == expected[machine_name]
@@ -71,7 +74,7 @@ def test_arch_auto32(platform_machine):
platform_name, machine_name = platform_machine
arch_set = Architecture.parse_config("auto32", "linux")
expected = {"32": {Architecture.i686}, "64": {Architecture.i686}, "arm": set()}
expected = {"32": {Architecture.i686}, "64": {Architecture.i686}, "arm": {Architecture.armv7l}}
assert arch_set == expected[machine_name]
arch_set = Architecture.parse_config("auto32", "macos")
@@ -80,3 +83,18 @@ def test_arch_auto32(platform_machine):
arch_set = Architecture.parse_config("auto32", "windows")
expected = {"32": {Architecture.x86}, "64": {Architecture.x86}, "arm": set()}
assert arch_set == expected[machine_name]
def test_arch_auto_no_aarch32(monkeypatch):
monkeypatch.setattr(sys, "platform", "linux")
monkeypatch.setattr(platform_module, "machine", lambda: "aarch64")
monkeypatch.setattr(shutil, "which", lambda *args, **kwargs: None)
arch_set = Architecture.parse_config("auto", "linux")
assert arch_set == {Architecture.aarch64}
arch_set = Architecture.parse_config("auto64", "linux")
assert arch_set == {Architecture.aarch64}
arch_set = Architecture.parse_config("auto32", "linux")
assert len(arch_set) == 0
+2 -2
View File
@@ -8,7 +8,7 @@ from pathlib import Path
import pytest
from cibuildwheel import __main__, linux, macos, pyodide, windows
from cibuildwheel import __main__, architecture, linux, macos, pyodide, windows
from cibuildwheel.util import file
@@ -44,8 +44,8 @@ def mock_protection(monkeypatch):
monkeypatch.setattr(linux, "build", fail_on_call)
monkeypatch.setattr(macos, "build", fail_on_call)
monkeypatch.setattr(pyodide, "build", fail_on_call)
monkeypatch.setattr(Path, "mkdir", ignore_call)
monkeypatch.setattr(architecture, "_check_aarch32_el0", lambda: True)
@pytest.fixture(autouse=True)
+2 -2
View File
@@ -555,7 +555,7 @@ def test_local_image(
) -> None:
if (
detect_ci_provider() in {CIProvider.travis_ci}
and pm in {"s390x", "ppc64le"}
and pm != "x86_64"
and platform != DEFAULT_OCI_PLATFORM
):
pytest.skip("Skipping test because docker on this platform does not support QEMU")
@@ -585,7 +585,7 @@ def test_local_image(
def test_multiarch_image(container_engine, platform):
if (
detect_ci_provider() in {CIProvider.travis_ci}
and pm in {"s390x", "ppc64le"}
and pm != "x86_64"
and platform != DEFAULT_OCI_PLATFORM
):
pytest.skip("Skipping test because docker on this platform does not support QEMU")