Skip to content
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
5 changes: 5 additions & 0 deletions docs/options.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
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.

You can specify extra arguments to pass to the build frontend using the
Expand Down
15 changes: 13 additions & 2 deletions test/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
from cibuildwheel.typing import PLATFORMS
from cibuildwheel.venv import find_uv

from . import utils
from .utils import DEFAULT_CIBW_ENABLE, EMULATED_ARCHS, get_platform


Expand Down Expand Up @@ -164,7 +165,7 @@ def build_frontend_env_nouv(request: pytest.FixtureRequest) -> dict[str, str]:


@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
marks = {m.name for m in request.node.iter_markers()}
if "android" in marks:
Expand All @@ -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"}:
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
Expand Down
6 changes: 5 additions & 1 deletion test/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@

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 {
None: Architecture.armv7l.value not in EMULATED_ARCHS,
CIProvider.travis_ci: False,
Expand Down Expand Up @@ -305,7 +309,7 @@ def _expected_wheels(
"pp311-pypy311_pp73",
]

if EnableGroup.GraalPy in enable_groups:
if EnableGroup.GraalPy in enable_groups and include_graalpy_in_expected_wheels:
python_abi_tags += [
"graalpy311-graalpy242_311_native",
"graalpy312-graalpy250_312_native",
Expand Down
Loading