Skip to content

Commit 572f2a7

Browse files
authored
fix: image deprecation warning (#2314)
1 parent 26e1229 commit 572f2a7

File tree

2 files changed

+49
-18
lines changed

2 files changed

+49
-18
lines changed

cibuildwheel/options.py

+16-18
Original file line numberDiff line numberDiff line change
@@ -672,6 +672,20 @@ def globals(self) -> GlobalOptions:
672672
allow_empty=allow_empty,
673673
)
674674

675+
def _check_pinned_image(self, value: str, pinned_images: Mapping[str, str]) -> None:
676+
if (
677+
value in {"manylinux1", "manylinux2010", "manylinux_2_24", "musllinux_1_1"}
678+
and value not in self._image_warnings
679+
):
680+
self._image_warnings.add(value)
681+
msg = (
682+
f"Deprecated image {value!r}. This value will not work"
683+
" in a future version of cibuildwheel. Either upgrade to a supported"
684+
" image or continue using the deprecated image by pinning directly"
685+
f" to {pinned_images[value]!r}."
686+
)
687+
log.warning(msg)
688+
675689
def _compute_build_options(self, identifier: str | None) -> BuildOptions:
676690
"""
677691
Compute BuildOptions for a single run configuration. Normally accessed
@@ -778,24 +792,7 @@ def _compute_build_options(self, identifier: str | None) -> BuildOptions:
778792
# default to manylinux2014
779793
image = pinned_images["manylinux2014"]
780794
elif config_value in pinned_images:
781-
if (
782-
config_value
783-
in {
784-
"manylinux1",
785-
"manylinux2010",
786-
"manylinux_2_24",
787-
"musllinux_1_1",
788-
}
789-
and config_value not in self._image_warnings
790-
):
791-
self._image_warnings.add(config_value)
792-
msg = (
793-
f"Deprecated image {config_value!r}. This value will not work"
794-
" in a future version of cibuildwheel. Either upgrade to a supported"
795-
" image or continue using the deprecated image by pinning directly"
796-
f" to {pinned_images[config_value]!r}."
797-
)
798-
log.warning(msg)
795+
self._check_pinned_image(config_value, pinned_images)
799796
image = pinned_images[config_value]
800797
else:
801798
image = config_value
@@ -810,6 +807,7 @@ def _compute_build_options(self, identifier: str | None) -> BuildOptions:
810807
if not config_value:
811808
image = pinned_images["musllinux_1_2"]
812809
elif config_value in pinned_images:
810+
self._check_pinned_image(config_value, pinned_images)
813811
image = pinned_images[config_value]
814812
else:
815813
image = config_value

unit_test/options_test.py

+33
Original file line numberDiff line numberDiff line change
@@ -529,3 +529,36 @@ def test_dependency_versions_toml(
529529
else:
530530
assert parsed_dependency_constraints.base_file_path == base_file_path
531531
assert parsed_dependency_constraints.packages == packages
532+
533+
534+
@pytest.mark.parametrize(
535+
("image", "deprecated"),
536+
[
537+
("manylinux1", True),
538+
("manylinux2010", True),
539+
("manylinux2014", False),
540+
("manylinux_2_24", True),
541+
("manylinux_2_28", False),
542+
("manylinux_2_34", False),
543+
("musllinux_1_1", True),
544+
("musllinux_1_2", False),
545+
],
546+
)
547+
def test_deprecated_image(image: str, deprecated: bool, capsys: pytest.CaptureFixture[str]) -> None:
548+
args = CommandLineArguments.defaults()
549+
env = {
550+
"CIBW_ARCHS": "x86_64",
551+
"CIBW_MANYLINUX_X86_64_IMAGE": image if image.startswith("manylinux") else "",
552+
"CIBW_MUSLLINUX_X86_64_IMAGE": image if image.startswith("musllinux") else "",
553+
}
554+
options = Options(platform="linux", command_line_arguments=args, env=env)
555+
bo = options.build_options(None)
556+
images = bo.manylinux_images if image.startswith("manylinux") else bo.musllinux_images
557+
assert images is not None
558+
resolved_image = images["x86_64"]
559+
captured = capsys.readouterr()
560+
if deprecated:
561+
assert f"Deprecated image {image!r}" in captured.err
562+
assert f"{resolved_image!r}" in captured.err
563+
else:
564+
assert captured.err == ""

0 commit comments

Comments
 (0)