diff --git a/README.md b/README.md index aaaeecf3..b6026b46 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,6 @@ While cibuildwheel itself requires a recent Python version to run (we support th | PyPy 3.9 v7.3 | ✅ | ✅ | ✅ | N/A | N/A | ✅1 | ✅1 | ✅1 | N/A | N/A | N/A | N/A | N/A | N/A | | PyPy 3.10 v7.3 | ✅ | ✅ | ✅ | N/A | N/A | ✅1 | ✅1 | ✅1 | N/A | N/A | N/A | N/A | N/A | N/A | | PyPy 3.11 v7.3 | ✅ | ✅ | ✅ | N/A | N/A | ✅1 | ✅1 | ✅1 | N/A | N/A | N/A | N/A | N/A | N/A | -| GraalPy 3.11 v24.2 | ✅ | ✅ | ✅ | N/A | N/A | ✅1 | N/A | ✅1 | N/A | N/A | N/A | N/A | N/A | N/A | | GraalPy 3.12 v25.0 | ✅ | ✅ | ✅ | N/A | N/A | ✅1 | N/A | ✅1 | N/A | N/A | N/A | N/A | N/A | N/A | **1** PyPy & GraalPy are only supported for manylinux wheels.
diff --git a/cibuildwheel/platforms/windows.py b/cibuildwheel/platforms/windows.py index f55fc54d..dc0a2977 100644 --- a/cibuildwheel/platforms/windows.py +++ b/cibuildwheel/platforms/windows.py @@ -1,7 +1,6 @@ from __future__ import annotations import dataclasses -import json import os import platform as platform_module import shutil @@ -390,42 +389,6 @@ def setup_python( setup_setuptools_cross_compile(tmp, python_configuration, python_libs_base, env) setup_rust_cross_compile(tmp, python_configuration, python_libs_base, env) - if implementation_id.startswith("gp311"): - # GraalPy 24 fails to discover compilers, setup the relevant environment - # variables. Adapted from - # https://github.com/microsoft/vswhere/wiki/Start-Developer-Command-Prompt - # Remove when GraalPy 24.x is dropped. - vcpath = call( - Path(os.environ["PROGRAMFILES(X86)"]) - / "Microsoft Visual Studio" - / "Installer" - / "vswhere.exe", - "-products", - "*", - "-latest", - "-property", - "installationPath", - capture_stdout=True, - ).strip() - log.notice(f"Discovering Visual Studio for GraalPy at {vcpath}") - vcvars_file = tmp / "vcvars.json" - call( - f"{vcpath}\\Common7\\Tools\\vsdevcmd.bat", - "-no_logo", - "-arch=amd64", - "-host_arch=amd64", - "&&", - "python", - "-c", - # this command needs to be one line for Windows reasons - "import sys, json, pathlib, os; pathlib.Path(sys.argv[1]).write_text(json.dumps(dict(os.environ)))", - vcvars_file, - env=env, - ) - with open(vcvars_file, encoding="utf-8") as f: - vcvars = json.load(f) - env.update(vcvars) - return base_python, env @@ -511,22 +474,6 @@ def build(options: Options, tmp_path: Path) -> None: ), ) - if ( - config.identifier.startswith("gp311") - and build_frontend.name == "build" - and "--no-isolation" not in extra_flags - and "-n" not in extra_flags - ): - # GraalPy 24 fails to discover its standard library when a venv is created - # from a virtualenv seeded executable. See - # https://github.com/oracle/graalpython/issues/491 and remove this once - # GraalPy 24 is dropped. - log.notice( - "Disabling build isolation to workaround GraalPy bug. If the build fails, consider using pip or build[uv] as build frontend." - ) - shell("graalpy -m pip install setuptools wheel", env=env) - extra_flags = [*extra_flags, "-n"] - match build_frontend.name: case "pip": # Path.resolve() is needed. Without it pip wheel may try to fetch package from pypi.org diff --git a/cibuildwheel/resources/build-platforms.toml b/cibuildwheel/resources/build-platforms.toml index 1d969f67..cd457f89 100644 --- a/cibuildwheel/resources/build-platforms.toml +++ b/cibuildwheel/resources/build-platforms.toml @@ -21,7 +21,6 @@ python_configurations = [ { identifier = "pp39-manylinux_x86_64", version = "3.9", path_str = "/opt/python/pp39-pypy39_pp73" }, { identifier = "pp310-manylinux_x86_64", version = "3.10", path_str = "/opt/python/pp310-pypy310_pp73" }, { identifier = "pp311-manylinux_x86_64", version = "3.11", path_str = "/opt/python/pp311-pypy311_pp73" }, - { identifier = "gp311_242-manylinux_x86_64", version = "3.11", path_str = "/opt/python/graalpy311-graalpy242_311_native" }, { identifier = "gp312_250-manylinux_x86_64", version = "3.12", path_str = "/opt/python/graalpy312-graalpy250_312_native" }, { identifier = "cp39-manylinux_aarch64", version = "3.9", path_str = "/opt/python/cp39-cp39" }, { identifier = "cp310-manylinux_aarch64", version = "3.10", path_str = "/opt/python/cp310-cp310" }, @@ -71,7 +70,6 @@ python_configurations = [ { identifier = "pp39-manylinux_aarch64", version = "3.9", path_str = "/opt/python/pp39-pypy39_pp73" }, { identifier = "pp310-manylinux_aarch64", version = "3.10", path_str = "/opt/python/pp310-pypy310_pp73" }, { identifier = "pp311-manylinux_aarch64", version = "3.11", path_str = "/opt/python/pp311-pypy311_pp73" }, - { identifier = "gp311_242-manylinux_aarch64", version = "3.11", path_str = "/opt/python/graalpy311-graalpy242_311_native" }, { identifier = "gp312_250-manylinux_aarch64", version = "3.12", path_str = "/opt/python/graalpy312-graalpy250_312_native" }, { identifier = "pp39-manylinux_i686", version = "3.9", path_str = "/opt/python/pp39-pypy39_pp73" }, { identifier = "pp310-manylinux_i686", version = "3.10", path_str = "/opt/python/pp310-pypy310_pp73" }, @@ -176,8 +174,6 @@ python_configurations = [ { identifier = "pp310-macosx_arm64", version = "3.10", url = "https://downloads.python.org/pypy/pypy3.10-v7.3.19-macos_arm64.tar.bz2", sha256 = "3db8a03fc496164801646844d7f3b12baa0adb3ad9a0b7cb124521bc2e168a36" }, { identifier = "pp311-macosx_x86_64", version = "3.11", url = "https://downloads.python.org/pypy/pypy3.11-v7.3.23-macos_x86_64.tar.bz2", sha256 = "c95363c4e87235d11a6cec8128239c291b1eb67a752778fbcfe029a71da82b5e" }, { identifier = "pp311-macosx_arm64", version = "3.11", url = "https://downloads.python.org/pypy/pypy3.11-v7.3.23-macos_arm64.tar.bz2", sha256 = "4747b3aceba4c1c6104cddc0fe5ea302101d32955f0957347b9ecc4fbd7aed05" }, - { identifier = "gp311_242-macosx_x86_64", version = "3.11", url = "https://github.com/oracle/graalpython/releases/download/graal-24.2.2/graalpy-24.2.2-macos-amd64.tar.gz", sha256 = "2f4d5e7dbdf90e38778dfcb8ca3e1ec7eee257ef726b1937d5bc91b54cdddf9b" }, - { identifier = "gp311_242-macosx_arm64", version = "3.11", url = "https://github.com/oracle/graalpython/releases/download/graal-24.2.2/graalpy-24.2.2-macos-aarch64.tar.gz", sha256 = "f4a2ae01bae0fa53ec0d19f86d73c6dcc2a162d245552030183b84bfdd8f7635" }, { identifier = "gp312_250-macosx_x86_64", version = "3.12", url = "https://github.com/oracle/graalpython/releases/download/graal-25.0.1/graalpy-25.0.1-macos-amd64.tar.gz", sha256 = "10b0721d52397f0cc85f038900318da2203711cbcfae7899e3faed49d3dc6221" }, { identifier = "gp312_250-macosx_arm64", version = "3.12", url = "https://github.com/oracle/graalpython/releases/download/graal-25.0.3/graalpy-25.0.3-macos-aarch64.tar.gz", sha256 = "387d9f5b376860842bea4d55aae5820974f3f3b68fc36c77ae863a061a888857" }, ] @@ -214,7 +210,6 @@ python_configurations = [ { identifier = "pp39-win_amd64", version = "3.9", url = "https://downloads.python.org/pypy/pypy3.9-v7.3.16-win64.zip", sha256 = "06ec12a5e964dc0ad33e6f380185a4d295178dce6d6df512f508e7aee00a1323" }, { identifier = "pp310-win_amd64", version = "3.10", url = "https://downloads.python.org/pypy/pypy3.10-v7.3.19-win64.zip", sha256 = "c0d07bba6c8fb4e5804f4a8b3f8ef07cc3d89f6ad1db42a45ffb9be60bbb7cc2" }, { identifier = "pp311-win_amd64", version = "3.11", url = "https://downloads.python.org/pypy/pypy3.11-v7.3.23-win64.zip", sha256 = "948b8ea58dea5b9917210fe4afd242c788fbfaba1c3f1a25e696a404f703389a" }, - { identifier = "gp311_242-win_amd64", version = "3.11", url = "https://github.com/oracle/graalpython/releases/download/graal-24.2.2/graalpy-24.2.2-windows-amd64.zip", sha256 = "9606134284d4d95b2f9d69c3087cd3e9e488f46355b419f5e66588a3281df6a3" }, { identifier = "gp312_250-win_amd64", version = "3.12", url = "https://github.com/oracle/graalpython/releases/download/graal-25.0.3/graalpy-25.0.3-windows-amd64.zip", sha256 = "2ae5c42b93e08d9e106a017634a3442b272ccae6d08ace157244de0449e937d4" }, ] diff --git a/docs/options.md b/docs/options.md index c18e8afe..6e3bc0e7 100644 --- a/docs/options.md +++ b/docs/options.md @@ -69,7 +69,6 @@ When setting the options, you can use shell-style globbing syntax, as per [fnmat | PyPy3.9 v7.3 | pp39-macosx_x86_64
pp39-macosx_arm64 | pp39-win_amd64 | pp39-manylinux_x86_64
pp39-manylinux_i686 | pp39-manylinux_aarch64 | | | | | PyPy3.10 v7.3 | pp310-macosx_x86_64
pp310-macosx_arm64 | pp310-win_amd64 | pp310-manylinux_x86_64
pp310-manylinux_i686 | pp310-manylinux_aarch64 | | | | | PyPy3.11 v7.3 | pp311-macosx_x86_64
pp311-macosx_arm64 | pp311-win_amd64 | pp311-manylinux_x86_64
pp311-manylinux_i686 | pp311-manylinux_aarch64 | | | | -| GraalPy 3.11 v24.2 | gp311_242-macosx_x86_64
gp311_242-macosx_arm64 | gp311_242-win_amd64 | gp311_242-manylinux_x86_64 | gp311_242-manylinux_aarch64 | | | | GraalPy 3.12 v25.0 | gp312_250-macosx_x86_64
gp312_250-macosx_arm64 | gp312_250-win_amd64 | gp312_250-manylinux_x86_64 | gp312_250-manylinux_aarch64 | | | The list of supported and currently selected build identifiers can also be retrieved by passing the `--print-build-identifiers` flag to cibuildwheel. diff --git a/test/test_dependency_versions.py b/test/test_dependency_versions.py index 714ecf90..bf238c3c 100644 --- a/test/test_dependency_versions.py +++ b/test/test_dependency_versions.py @@ -179,19 +179,6 @@ def test_dependency_constraints( msg = f"Unknown method: {method}" raise ValueError(msg) - skip = "" - - if ( - utils.get_platform() == "windows" - and method == "file" - and build_frontend_env_nouv["CIBW_BUILD_FRONTEND"] == "build" - ): - # GraalPy 24 fails to discover its standard library when a venv is created - # from a virtualenv seeded executable. See - # https://github.com/oracle/graalpython/issues/491 and remove this once - # GraalPy 24 is dropped - skip = "gp311*" - # cross-platform Python script for dependency constraint checks before_build_script = project_dir / "check_versions.py" before_build_script.write_text(CHECK_VERSIONS_SCRIPT) @@ -200,7 +187,6 @@ def test_dependency_constraints( actual_wheels = utils.cibuildwheel_run( project_dir, add_env={ - "CIBW_SKIP": skip, "CIBW_DEPENDENCY_VERSIONS": dependency_version_option, "CIBW_BEFORE_BUILD": f"python {before_build_script.name}", "EXPECTED_VERSIONS": json.dumps(tool_versions), @@ -212,9 +198,4 @@ def test_dependency_constraints( # also check that we got the right wheels expected_wheels = utils.expected_wheels("spam", "0.1.0", single_python=True) - if skip == "gp*": - # See reference to https://github.com/oracle/graalpython/issues/491 - # above - expected_wheels = [w for w in expected_wheels if "graalpy311" not in w] - assert set(actual_wheels) == set(expected_wheels) diff --git a/test/test_pep518.py b/test/test_pep518.py index 4bd74b2d..8b0fd380 100644 --- a/test/test_pep518.py +++ b/test/test_pep518.py @@ -40,26 +40,12 @@ def test_pep518(tmp_path: Path, build_frontend_env: dict[str, str]) -> None: project_dir = tmp_path / "project" basic_project.generate(project_dir) - # GraalPy fails to discover its standard library when a venv is created - # from a virtualenv seeded executable. See - # https://github.com/oracle/graalpython/issues/491 and remove this once - # fixed upstream. - if build_frontend_env["CIBW_BUILD_FRONTEND"] == "build" and utils.get_platform() == "windows": - build_frontend_env["CIBW_SKIP"] = "gp*" - # build the wheels actual_wheels = utils.cibuildwheel_run(project_dir, add_env=build_frontend_env) # check that the expected wheels are produced expected_wheels = utils.expected_wheels("spam", "0.1.0") - # GraalPy fails to discover its standard library when a venv is created - # from a virtualenv seeded executable. See - # https://github.com/oracle/graalpython/issues/491 and remove this once - # fixed upstream. - if build_frontend_env["CIBW_BUILD_FRONTEND"] == "build" and utils.get_platform() == "windows": - expected_wheels = [w for w in expected_wheels if "graalpy" not in w] - assert set(actual_wheels) == set(expected_wheels) # These checks ensure an extra file is not created when using custom diff --git a/test/utils.py b/test/utils.py index f023c0c1..584d54d5 100644 --- a/test/utils.py +++ b/test/utils.py @@ -319,7 +319,6 @@ def _expected_wheels( if EnableGroup.GraalPy in enable_groups and include_graalpy_in_expected_wheels: python_abi_tags += [ - "graalpy311-graalpy242_311_native", "graalpy312-graalpy250_312_native", ] @@ -376,10 +375,7 @@ def _expected_wheels( else: min_macosx = _floor_macosx(macosx_deployment_target, "10.15") elif python_abi_tag.startswith("graalpy"): - if python_abi_tag.startswith("graalpy311"): - min_macosx = macosx_deployment_target - else: - min_macosx = _floor_macosx(macosx_deployment_target, "10.13") + min_macosx = _floor_macosx(macosx_deployment_target, "10.13") else: min_macosx = macosx_deployment_target diff --git a/unit_test/build_selector_test.py b/unit_test/build_selector_test.py index 39f57061..e80ca97b 100644 --- a/unit_test/build_selector_test.py +++ b/unit_test/build_selector_test.py @@ -199,7 +199,7 @@ def test_build_limited_python() -> None: assert build_selector("cp37-win32") assert build_selector("cp38-win32") assert build_selector("pp37-win_amd64") - assert build_selector("gp311_242-win_amd64") + assert build_selector("gp312_250-win_amd64") def test_build_limited_python_partial() -> None: diff --git a/unit_test/option_prepare_test.py b/unit_test/option_prepare_test.py index abc2009e..5bad4d28 100644 --- a/unit_test/option_prepare_test.py +++ b/unit_test/option_prepare_test.py @@ -14,7 +14,7 @@ from cibuildwheel.oci_container import OCIPlatform from cibuildwheel.util import file DEFAULT_IDS = {"cp39", "cp310", "cp311", "cp312", "cp313", "cp314", "cp314t"} -ALL_IDS = DEFAULT_IDS | {"pp39", "pp310", "pp311", "gp311_242", "gp312_250"} +ALL_IDS = DEFAULT_IDS | {"pp39", "pp310", "pp311", "gp312_250"} @pytest.fixture @@ -158,7 +158,6 @@ before-all = "true" "pp39", "pp310", "pp311", - "gp311_242", "gp312_250", } } @@ -180,7 +179,6 @@ before-all = "true" "pp39", "pp310", "pp311", - "gp311_242", "gp312_250", ] }