Debug GraalPy/uv test failures on Windows (#2741)

* Dont attempt uv frontend tests on gp311.

* docs: note GraalPy 3.11 incompatibility with uv on Windows (#2751)

* Initial plan

* docs: note GraalPy311 incompatibility with uv/build[uv] on Windows

Co-authored-by: joerick <1244307+joerick@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: joerick <1244307+joerick@users.noreply.github.com>

* Skip both graalpy with uv for now

* Docs updates

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: joerick <1244307+joerick@users.noreply.github.com>
This commit is contained in:
Joe Rickerby
2026-03-02 11:24:40 +00:00
committed by GitHub
co-authored by joerick copilot-swe-agent[bot]
parent 0a85e29549
commit b70562f37a
3 changed files with 23 additions and 3 deletions
+5
View File
@@ -482,6 +482,11 @@ uv currently does not support iOS or musllinux on s390x, ppc64le and riscv64.
You can also use the `uv` backend directly; though currently multiple output You can also use the `uv` backend directly; though currently multiple output
files (from workspaces) are not supported. files (from workspaces) are not supported.
!!! note
There is currently a compatibility issue between GraalPy and uv. If you
are building GraalPy wheels, use `build` or `pip` as the build frontend
instead of `build[uv]` or `uv`.
On Android and Pyodide, the "pip" frontend is not supported. On Android and Pyodide, the "pip" frontend is not supported.
You can specify extra arguments to pass to the build frontend using the You can specify extra arguments to pass to the build frontend using the
+13 -2
View File
@@ -13,6 +13,7 @@ from cibuildwheel.selector import EnableGroup
from cibuildwheel.typing import PLATFORMS from cibuildwheel.typing import PLATFORMS
from cibuildwheel.venv import find_uv from cibuildwheel.venv import find_uv
from . import utils
from .utils import DEFAULT_CIBW_ENABLE, EMULATED_ARCHS, get_platform from .utils import DEFAULT_CIBW_ENABLE, EMULATED_ARCHS, get_platform
@@ -164,7 +165,7 @@ def build_frontend_env_nouv(request: pytest.FixtureRequest) -> dict[str, str]:
@pytest.fixture(params=["pip", "build", "build[uv]", "uv"]) @pytest.fixture(params=["pip", "build", "build[uv]", "uv"])
def build_frontend_env(request: pytest.FixtureRequest) -> dict[str, str]: def build_frontend_env(request: pytest.FixtureRequest) -> Generator[dict[str, str], None, None]:
frontend = request.param frontend = request.param
marks = {m.name for m in request.node.iter_markers()} marks = {m.name for m in request.node.iter_markers()}
if "android" in marks: if "android" in marks:
@@ -186,7 +187,17 @@ def build_frontend_env(request: pytest.FixtureRequest) -> dict[str, str]:
if uv_path is not None and frontend == "build" and platform not in {"android", "ios"}: if uv_path is not None and frontend == "build" and platform not in {"android", "ios"}:
pytest.skip("No need to check build when uv is present") pytest.skip("No need to check build when uv is present")
return {"CIBW_BUILD_FRONTEND": frontend} # temporary workaround: uv doesn't work with graalpy yet
uses_uv = "uv" in frontend
env: dict[str, str] = {"CIBW_BUILD_FRONTEND": frontend}
if uses_uv:
utils.include_graalpy_in_expected_wheels = False
env["CIBW_SKIP"] = "gp*" # skip graalpy when using uv, until uv supports it
try:
yield env
finally:
if uses_uv:
utils.include_graalpy_in_expected_wheels = True
@pytest.fixture @pytest.fixture
+5 -1
View File
@@ -28,6 +28,10 @@ GRAALPY_ARCHS = ["x86_64", "AMD64", "aarch64", "arm64"]
SINGLE_PYTHON_VERSION: Final[tuple[int, int]] = (3, 12) SINGLE_PYTHON_VERSION: Final[tuple[int, int]] = (3, 12)
# temporary workaround: set by build_frontend_env fixture to skip graalpy
# when uv is the build frontend (compatibility issue between graalpy and uv)
include_graalpy_in_expected_wheels: bool = True
_AARCH64_CAN_RUN_ARMV7: Final[bool] = Architecture.aarch64.value not in EMULATED_ARCHS and { _AARCH64_CAN_RUN_ARMV7: Final[bool] = Architecture.aarch64.value not in EMULATED_ARCHS and {
None: Architecture.armv7l.value not in EMULATED_ARCHS, None: Architecture.armv7l.value not in EMULATED_ARCHS,
CIProvider.travis_ci: False, CIProvider.travis_ci: False,
@@ -305,7 +309,7 @@ def _expected_wheels(
"pp311-pypy311_pp73", "pp311-pypy311_pp73",
] ]
if EnableGroup.GraalPy in enable_groups: if EnableGroup.GraalPy in enable_groups and include_graalpy_in_expected_wheels:
python_abi_tags += [ python_abi_tags += [
"graalpy311-graalpy242_311_native", "graalpy311-graalpy242_311_native",
"graalpy312-graalpy250_312_native", "graalpy312-graalpy250_312_native",