|
25 | 25 | MANYLINUX2010_IMAGE_ID = f"quay.io/pypa/manylinux2010_{PLATFORM}:latest"
|
26 | 26 | MANYLINUX2014_IMAGE_ID = f"quay.io/pypa/manylinux2014_{PLATFORM}:latest"
|
27 | 27 | MANYLINUX_2_24_IMAGE_ID = f"quay.io/pypa/manylinux_2_24_{PLATFORM}:latest"
|
| 28 | +MANYLINUX_2_28_IMAGE_ID = f"quay.io/pypa/manylinux_2_28_{PLATFORM}:latest" |
28 | 29 | if PLATFORM in {"i686", "x86_64"}:
|
29 | 30 | MANYLINUX_IMAGES = {
|
30 | 31 | "manylinux_2_5": MANYLINUX1_IMAGE_ID,
|
31 | 32 | "manylinux_2_12": MANYLINUX2010_IMAGE_ID,
|
32 | 33 | "manylinux_2_17": MANYLINUX2014_IMAGE_ID,
|
33 | 34 | "manylinux_2_24": MANYLINUX_2_24_IMAGE_ID,
|
| 35 | + "manylinux_2_28": MANYLINUX_2_28_IMAGE_ID, |
34 | 36 | }
|
35 | 37 | POLICY_ALIASES = {
|
36 | 38 | "manylinux_2_5": ["manylinux1"],
|
|
42 | 44 | "manylinux_2_17": MANYLINUX2014_IMAGE_ID,
|
43 | 45 | "manylinux_2_24": MANYLINUX_2_24_IMAGE_ID,
|
44 | 46 | }
|
| 47 | + if PLATFORM in {"aarch64", "ppc64le"}: |
| 48 | + MANYLINUX_IMAGES["manylinux_2_28"] = MANYLINUX_2_28_IMAGE_ID |
45 | 49 | POLICY_ALIASES = {
|
46 | 50 | "manylinux_2_17": ["manylinux2014"],
|
47 | 51 | }
|
|
60 | 64 | "manylinux_2_12": "devtoolset-8",
|
61 | 65 | "manylinux_2_17": "devtoolset-10",
|
62 | 66 | "manylinux_2_24": "devtoolset-not-present",
|
| 67 | + "manylinux_2_28": "gcc-toolset-11", |
63 | 68 | "musllinux_1_1": "devtoolset-not-present",
|
64 | 69 | }
|
65 | 70 | PATH_DIRS = [
|
@@ -688,6 +693,46 @@ def test_nonpy_rpath(self, any_manylinux_container, docker_python, io_folder):
|
688 | 693 | ],
|
689 | 694 | )
|
690 | 695 |
|
| 696 | + def test_glibcxx_3_4_25(self, any_manylinux_container, docker_python, io_folder): |
| 697 | + policy, tag, manylinux_ctr = any_manylinux_container |
| 698 | + docker_exec( |
| 699 | + manylinux_ctr, |
| 700 | + [ |
| 701 | + "bash", |
| 702 | + "-c", |
| 703 | + "cd /auditwheel_src/tests/integration/test_glibcxx_3_4_25 && " |
| 704 | + "if [ -d ./build ]; then rm -rf ./build ./*.egg-info; fi && " |
| 705 | + "python -m pip wheel --no-deps -w /io .", |
| 706 | + ], |
| 707 | + ) |
| 708 | + |
| 709 | + orig_wheel, *_ = os.listdir(io_folder) |
| 710 | + assert orig_wheel.startswith("testentropy-0.0.1") |
| 711 | + |
| 712 | + # Repair the wheel using the appropriate manylinux container |
| 713 | + repair_command = f"auditwheel repair --plat {policy} -w /io /io/{orig_wheel}" |
| 714 | + if policy.startswith("manylinux_2_28_"): |
| 715 | + with pytest.raises(CalledProcessError): |
| 716 | + docker_exec(manylinux_ctr, repair_command) |
| 717 | + # TODO if a "permissive" mode is implemented, add the relevant flag to the |
| 718 | + # repair_command here and drop the return statement below |
| 719 | + return |
| 720 | + |
| 721 | + docker_exec(manylinux_ctr, repair_command) |
| 722 | + |
| 723 | + repaired_wheel, *_ = glob.glob(f"{io_folder}/*{policy}*.whl") |
| 724 | + repaired_wheel = os.path.basename(repaired_wheel) |
| 725 | + |
| 726 | + docker_exec(docker_python, "pip install /io/" + repaired_wheel) |
| 727 | + docker_exec( |
| 728 | + docker_python, |
| 729 | + [ |
| 730 | + "python", |
| 731 | + "-c", |
| 732 | + "from testentropy import run; exit(run())", |
| 733 | + ], |
| 734 | + ) |
| 735 | + |
691 | 736 |
|
692 | 737 | class TestManylinux(Anylinux):
|
693 | 738 | @pytest.fixture(scope="session")
|
|
0 commit comments