From 2c9ccac843ea4c3c8a38db9158dd8bbe83bd1f6f Mon Sep 17 00:00:00 2001 From: Joe Rickerby Date: Fri, 19 Nov 2021 17:39:24 +0000 Subject: [PATCH] Update the option defaults and fix up unit tests --- cibuildwheel/resources/defaults.toml | 8 ++++---- docs/cpp_standards.md | 2 +- docs/options.md | 10 +++++----- test/utils.py | 9 ++++++++- unit_test/main_tests/main_options_test.py | 6 +++--- unit_test/option_prepare_test.py | 20 ++++++++++---------- unit_test/options_toml_test.py | 10 +++++----- 7 files changed, 36 insertions(+), 29 deletions(-) diff --git a/cibuildwheel/resources/defaults.toml b/cibuildwheel/resources/defaults.toml index 3c7d3583..4a42dba5 100644 --- a/cibuildwheel/resources/defaults.toml +++ b/cibuildwheel/resources/defaults.toml @@ -18,13 +18,13 @@ before-test = "" test-requires = [] test-extras = [] -manylinux-x86_64-image = "manylinux2010" -manylinux-i686-image = "manylinux2010" +manylinux-x86_64-image = "manylinux2014" +manylinux-i686-image = "manylinux2014" manylinux-aarch64-image = "manylinux2014" manylinux-ppc64le-image = "manylinux2014" manylinux-s390x-image = "manylinux2014" -manylinux-pypy_x86_64-image = "manylinux2010" -manylinux-pypy_i686-image = "manylinux2010" +manylinux-pypy_x86_64-image = "manylinux2014" +manylinux-pypy_i686-image = "manylinux2014" manylinux-pypy_aarch64-image = "manylinux2014" musllinux-x86_64-image = "musllinux_1_1" diff --git a/docs/cpp_standards.md b/docs/cpp_standards.md index 38f825cf..1f140618 100644 --- a/docs/cpp_standards.md +++ b/docs/cpp_standards.md @@ -6,7 +6,7 @@ Building Python wheels with modern C++ standards (C++11 and later) requires a fe ## manylinux1 and C++14 -The default `manylinux1` image (based on CentOS 5) contains a version of GCC and libstdc++ that only supports C++11 and earlier standards. There are however ways to compile wheels with the C++14 standard (and later): https://github.com/pypa/manylinux/issues/118 +The old `manylinux1` image (based on CentOS 5) contains a version of GCC and libstdc++ that only supports C++11 and earlier standards. There are however ways to compile wheels with the C++14 standard (and later): https://github.com/pypa/manylinux/issues/118 `manylinux2010` and `manylinux2014` are newer and support all C++ standards (up to C++17). diff --git a/docs/options.md b/docs/options.md index cf3b6cd5..75b93a40 100644 --- a/docs/options.md +++ b/docs/options.md @@ -888,12 +888,12 @@ Auditwheel detects the version of the manylinux / musllinux standard in the Dock CIBW_MANYLINUX_PYPY_X86_64_IMAGE: manylinux2014 CIBW_MANYLINUX_PYPY_I686_IMAGE: manylinux2014 - # Build using the latest manylinux2010 release, instead of the cibuildwheel + # Build using the latest manylinux2014 release, instead of the cibuildwheel # pinned version - CIBW_MANYLINUX_X86_64_IMAGE: quay.io/pypa/manylinux2010_x86_64:latest - CIBW_MANYLINUX_I686_IMAGE: quay.io/pypa/manylinux2010_i686:latest - CIBW_MANYLINUX_PYPY_X86_64_IMAGE: quay.io/pypa/manylinux2010_x86_64:latest - CIBW_MANYLINUX_PYPY_I686_IMAGE: quay.io/pypa/manylinux2010_i686:latest + CIBW_MANYLINUX_X86_64_IMAGE: quay.io/pypa/manylinux2014_x86_64:latest + CIBW_MANYLINUX_I686_IMAGE: quay.io/pypa/manylinux2014_i686:latest + CIBW_MANYLINUX_PYPY_X86_64_IMAGE: quay.io/pypa/manylinux2014_x86_64:latest + CIBW_MANYLINUX_PYPY_I686_IMAGE: quay.io/pypa/manylinux2014_i686:latest # Build using a different image from the docker registry CIBW_MANYLINUX_X86_64_IMAGE: dockcross/manylinux-x64 diff --git a/test/utils.py b/test/utils.py index 97675c7d..384eb3ad 100644 --- a/test/utils.py +++ b/test/utils.py @@ -120,7 +120,14 @@ def expected_wheels( if manylinux_versions is None: if machine_arch == "x86_64": - manylinux_versions = ["manylinux_2_5", "manylinux1", "manylinux_2_12", "manylinux2010"] + manylinux_versions = [ + "manylinux_2_5", + "manylinux1", + "manylinux_2_12", + "manylinux2010", + "manylinux_2_17", + "manylinux2014", + ] else: manylinux_versions = ["manylinux_2_17", "manylinux2014"] diff --git a/unit_test/main_tests/main_options_test.py b/unit_test/main_tests/main_options_test.py index b956d59e..0a345cb1 100644 --- a/unit_test/main_tests/main_options_test.py +++ b/unit_test/main_tests/main_options_test.py @@ -71,19 +71,19 @@ def test_empty_selector(platform, intercepted_build_args, monkeypatch): @pytest.mark.parametrize( "architecture, image, full_image", [ - ("x86_64", None, "quay.io/pypa/manylinux2010_x86_64:*"), + ("x86_64", None, "quay.io/pypa/manylinux2014_x86_64:*"), ("x86_64", "manylinux1", "quay.io/pypa/manylinux1_x86_64:*"), ("x86_64", "manylinux2010", "quay.io/pypa/manylinux2010_x86_64:*"), ("x86_64", "manylinux2014", "quay.io/pypa/manylinux2014_x86_64:*"), ("x86_64", "manylinux_2_24", "quay.io/pypa/manylinux_2_24_x86_64:*"), ("x86_64", "custom_image", "custom_image"), - ("i686", None, "quay.io/pypa/manylinux2010_i686:*"), + ("i686", None, "quay.io/pypa/manylinux2014_i686:*"), ("i686", "manylinux1", "quay.io/pypa/manylinux1_i686:*"), ("i686", "manylinux2010", "quay.io/pypa/manylinux2010_i686:*"), ("i686", "manylinux2014", "quay.io/pypa/manylinux2014_i686:*"), ("i686", "manylinux_2_24", "quay.io/pypa/manylinux_2_24_i686:*"), ("i686", "custom_image", "custom_image"), - ("pypy_x86_64", None, "quay.io/pypa/manylinux2010_x86_64:*"), + ("pypy_x86_64", None, "quay.io/pypa/manylinux2014_x86_64:*"), ("pypy_x86_64", "manylinux1", "manylinux1"), # Does not exist ("pypy_x86_64", "manylinux2010", "quay.io/pypa/manylinux2010_x86_64:*"), ("pypy_x86_64", "manylinux2014", "quay.io/pypa/manylinux2014_x86_64:*"), diff --git a/unit_test/option_prepare_test.py b/unit_test/option_prepare_test.py index 55d7edb2..d21ba65d 100644 --- a/unit_test/option_prepare_test.py +++ b/unit_test/option_prepare_test.py @@ -52,7 +52,7 @@ def test_build_default_launches(mock_build_docker, fake_package_dir, monkeypatch # In Python 3.8+, this can be simplified to [0].kwargs kwargs = build_on_docker.call_args_list[0][1] - assert "quay.io/pypa/manylinux2010_x86_64" in kwargs["docker"]["docker_image"] + assert "quay.io/pypa/manylinux2014_x86_64" in kwargs["docker"]["docker_image"] assert kwargs["docker"]["cwd"] == Path("/project") assert not kwargs["docker"]["simulate_32_bit"] @@ -60,7 +60,7 @@ def test_build_default_launches(mock_build_docker, fake_package_dir, monkeypatch assert identifiers == {f"{x}-manylinux_x86_64" for x in ALL_IDS} kwargs = build_on_docker.call_args_list[1][1] - assert "quay.io/pypa/manylinux2010_i686" in kwargs["docker"]["docker_image"] + assert "quay.io/pypa/manylinux2014_i686" in kwargs["docker"]["docker_image"] assert kwargs["docker"]["cwd"] == Path("/project") assert kwargs["docker"]["simulate_32_bit"] @@ -94,13 +94,13 @@ def test_build_with_override_launches(mock_build_docker, monkeypatch, tmp_path): cibw_toml.write_text( """ [tool.cibuildwheel] -manylinux-x86_64-image = "manylinux2014" +manylinux-x86_64-image = "manylinux_2_24" -# Before Python 3.10, manylinux2010 is the most compatible +# Before Python 3.10, use manylinux2014 [[tool.cibuildwheel.overrides]] select = "cp3?-*" -manylinux-x86_64-image = "manylinux2010" -manylinux-i686-image = "manylinux2010" +manylinux-x86_64-image = "manylinux2014" +manylinux-i686-image = "manylinux2014" [[tool.cibuildwheel.overrides]] select = "cp36-manylinux_x86_64" @@ -118,7 +118,7 @@ before-all = "true" assert build_on_docker.call_count == 6 kwargs = build_on_docker.call_args_list[0][1] - assert "quay.io/pypa/manylinux2010_x86_64" in kwargs["docker"]["docker_image"] + assert "quay.io/pypa/manylinux2014_x86_64" in kwargs["docker"]["docker_image"] assert kwargs["docker"]["cwd"] == Path("/project") assert not kwargs["docker"]["simulate_32_bit"] @@ -127,7 +127,7 @@ before-all = "true" assert kwargs["options"].build_options("cp36-manylinux_x86_64").before_all == "true" kwargs = build_on_docker.call_args_list[1][1] - assert "quay.io/pypa/manylinux2010_x86_64" in kwargs["docker"]["docker_image"] + assert "quay.io/pypa/manylinux2014_x86_64" in kwargs["docker"]["docker_image"] assert kwargs["docker"]["cwd"] == Path("/project") assert not kwargs["docker"]["simulate_32_bit"] @@ -138,7 +138,7 @@ before-all = "true" assert kwargs["options"].build_options("cp37-manylinux_x86_64").before_all == "" kwargs = build_on_docker.call_args_list[2][1] - assert "quay.io/pypa/manylinux2014_x86_64" in kwargs["docker"]["docker_image"] + assert "quay.io/pypa/manylinux_2_24_x86_64" in kwargs["docker"]["docker_image"] assert kwargs["docker"]["cwd"] == Path("/project") assert not kwargs["docker"]["simulate_32_bit"] identifiers = {x.identifier for x in kwargs["platform_configs"]} @@ -149,7 +149,7 @@ before-all = "true" } kwargs = build_on_docker.call_args_list[3][1] - assert "quay.io/pypa/manylinux2010_i686" in kwargs["docker"]["docker_image"] + assert "quay.io/pypa/manylinux2014_i686" in kwargs["docker"]["docker_image"] assert kwargs["docker"]["cwd"] == Path("/project") assert kwargs["docker"]["simulate_32_bit"] diff --git a/unit_test/options_toml_test.py b/unit_test/options_toml_test.py index 06ab6e66..1dcfdc21 100644 --- a/unit_test/options_toml_test.py +++ b/unit_test/options_toml_test.py @@ -60,7 +60,7 @@ def test_simple_settings(tmp_path, platform, fname): ) assert options_reader.get("manylinux-x86_64-image") == "manylinux1" - assert options_reader.get("manylinux-i686-image") == "manylinux2010" + assert options_reader.get("manylinux-i686-image") == "manylinux2014" with pytest.raises(ConfigOptionError): options_reader.get("environment", sep=" ") @@ -71,7 +71,7 @@ def test_simple_settings(tmp_path, platform, fname): def test_envvar_override(tmp_path, platform, monkeypatch): monkeypatch.setenv("CIBW_BUILD", "cp38*") - monkeypatch.setenv("CIBW_MANYLINUX_X86_64_IMAGE", "manylinux2014") + monkeypatch.setenv("CIBW_MANYLINUX_X86_64_IMAGE", "manylinux_2_24") monkeypatch.setenv("CIBW_TEST_COMMAND", "mytest") monkeypatch.setenv("CIBW_TEST_REQUIRES", "docs") monkeypatch.setenv("CIBW_TEST_REQUIRES_LINUX", "scod") @@ -84,8 +84,8 @@ def test_envvar_override(tmp_path, platform, monkeypatch): assert options_reader.get("archs", sep=" ") == "auto" assert options_reader.get("build", sep=" ") == "cp38*" - assert options_reader.get("manylinux-x86_64-image") == "manylinux2014" - assert options_reader.get("manylinux-i686-image") == "manylinux2010" + assert options_reader.get("manylinux-x86_64-image") == "manylinux_2_24" + assert options_reader.get("manylinux-i686-image") == "manylinux2014" assert ( options_reader.get("test-requires", sep=" ") @@ -222,7 +222,7 @@ manylinux-x86_64-image = "" assert options_reader.get("manylinux-i686-image") == "" assert options_reader.get("manylinux-aarch64-image") == "manylinux1" - assert options_reader.get("manylinux-x86_64-image", ignore_empty=True) == "manylinux2010" + assert options_reader.get("manylinux-x86_64-image", ignore_empty=True) == "manylinux2014" assert options_reader.get("manylinux-i686-image", ignore_empty=True) == "manylinux1" assert options_reader.get("manylinux-aarch64-image", ignore_empty=True) == "manylinux1"