Skip to content

Commit f4fe311

Browse files
authored
fix: support Docker 29 (#2660)
* fix: support Docker 29 Signed-off-by: Henry Schreiner <[email protected]> * refactor: closer to actual case, lambda Signed-off-by: Henry Schreiner <[email protected]> --------- Signed-off-by: Henry Schreiner <[email protected]>
1 parent f6c8108 commit f4fe311

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

cibuildwheel/oci_container.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -116,11 +116,14 @@ def options_summary(self) -> str | dict[str, str]:
116116
def _check_engine_version(engine: OCIContainerEngineConfig) -> None:
117117
try:
118118
version_string = call(engine.name, "version", "-f", "{{json .}}", capture_stdout=True)
119-
version_info = json.loads(version_string.strip())
119+
# We are using lowercase keys for all dicts so we are not affected by casing of keys
120+
version_info = json.loads(
121+
version_string.strip(), object_pairs_hook=lambda inp: {k.lower(): v for k, v in inp}
122+
)
120123
match engine.name:
121124
case "docker":
122-
client_api_version = FlexibleVersion(version_info["Client"]["ApiVersion"])
123-
server_api_version = FlexibleVersion(version_info["Server"]["ApiVersion"])
125+
client_api_version = FlexibleVersion(version_info["client"]["apiversion"])
126+
server_api_version = FlexibleVersion(version_info["server"]["apiversion"])
124127
# --platform support was introduced in 1.32 as experimental, 1.41 removed the experimental flag
125128
version = min(client_api_version, server_api_version)
126129
minimum_version = FlexibleVersion("1.41")
@@ -135,9 +138,9 @@ def _check_engine_version(engine: OCIContainerEngineConfig) -> None:
135138
)
136139
case "podman":
137140
# podman uses the same version string for "Version" & "ApiVersion"
138-
client_version = FlexibleVersion(version_info["Client"]["Version"])
139-
if "Server" in version_info:
140-
server_version = FlexibleVersion(version_info["Server"]["Version"])
141+
client_version = FlexibleVersion(version_info["client"]["version"])
142+
if "server" in version_info:
143+
server_version = FlexibleVersion(version_info["server"]["version"])
141144
else:
142145
server_version = client_version
143146
# --platform support was introduced in v3

unit_test/oci_container_test.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -628,6 +628,11 @@ def test_multiarch_image(container_engine, platform):
628628
'{"Client":{"Version":"24.0.0","ApiVersion":"1.43"},"Server":{"ApiVersion":"1.43"}}',
629629
nullcontext(),
630630
),
631+
(
632+
"docker",
633+
'{"Client":{"Version":"29.0.0","ApiVersion":"1.52"},"Server":{"APIVersion":"1.52"}}',
634+
nullcontext(),
635+
),
631636
(
632637
"docker",
633638
'{"Client":{"ApiVersion":"1.43"},"Server":{"ApiVersion":"1.30"}}',

0 commit comments

Comments
 (0)