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:
co-authored by
joerick
copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Copilot
parent
0a85e29549
commit
b70562f37a
@@ -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
@@ -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
@@ -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",
|
||||||
|
|||||||
Reference in New Issue
Block a user