Skip to content

Commit ed07338

Browse files
committed
chore: use multi-arch manylinux images as a source for image tag
Using multi-arch images directly messes with parallel tests for now. Using them as a source for image tag ensures that all architecture specific tags are pointing to the same tag for a given manylinux / musllinux policy.
1 parent 54ae9b0 commit ed07338

File tree

1 file changed

+34
-37
lines changed

1 file changed

+34
-37
lines changed

bin/update_docker.py

+34-37
Original file line numberDiff line numberDiff line change
@@ -14,51 +14,45 @@
1414
@dataclass(frozen=True)
1515
class Image:
1616
manylinux_version: str
17-
platform: str
17+
platforms: list[str]
1818
image_name: str
19-
tag: str | None # Set this to pin the image
19+
tag: str | None = None # Set this to pin the image
20+
use_platform_suffix: bool = False
2021

2122

2223
class PyPAImage(Image):
23-
def __init__(self, manylinux_version: str, platform: str, tag: str | None):
24-
platform_no_pypy = platform.removeprefix("pypy_")
25-
image_name = f"quay.io/pypa/{manylinux_version}_{platform_no_pypy}"
26-
super().__init__(manylinux_version, platform, image_name, tag)
24+
def __init__(self, manylinux_version: str, platforms: list[str], tag: str | None = None):
25+
image_name = f"quay.io/pypa/{manylinux_version}"
26+
super().__init__(manylinux_version, platforms, image_name, tag, True)
2727

2828

2929
images = [
3030
# manylinux2014 images
31-
PyPAImage("manylinux2014", "x86_64", None),
32-
PyPAImage("manylinux2014", "i686", None),
33-
PyPAImage("manylinux2014", "aarch64", None),
34-
PyPAImage("manylinux2014", "ppc64le", None),
35-
PyPAImage("manylinux2014", "s390x", None),
36-
PyPAImage("manylinux2014", "pypy_x86_64", None),
37-
PyPAImage("manylinux2014", "pypy_i686", None),
38-
PyPAImage("manylinux2014", "pypy_aarch64", None),
31+
PyPAImage(
32+
"manylinux2014",
33+
[
34+
"x86_64",
35+
"i686",
36+
"aarch64",
37+
"ppc64le",
38+
"s390x",
39+
"pypy_x86_64",
40+
"pypy_i686",
41+
"pypy_aarch64",
42+
],
43+
),
3944
# manylinux_2_28 images
40-
PyPAImage("manylinux_2_28", "x86_64", None),
41-
PyPAImage("manylinux_2_28", "aarch64", None),
42-
PyPAImage("manylinux_2_28", "ppc64le", None),
43-
PyPAImage("manylinux_2_28", "s390x", None),
44-
PyPAImage("manylinux_2_28", "pypy_x86_64", None),
45-
PyPAImage("manylinux_2_28", "pypy_aarch64", None),
45+
PyPAImage(
46+
"manylinux_2_28", ["x86_64", "aarch64", "ppc64le", "s390x", "pypy_x86_64", "pypy_aarch64"]
47+
),
4648
# manylinux_2_31 images
47-
PyPAImage("manylinux_2_31", "armv7l", None),
49+
PyPAImage("manylinux_2_31", ["armv7l"]),
4850
# manylinux_2_34 images
49-
PyPAImage("manylinux_2_34", "x86_64", None),
50-
PyPAImage("manylinux_2_34", "aarch64", None),
51-
PyPAImage("manylinux_2_34", "ppc64le", None),
52-
PyPAImage("manylinux_2_34", "s390x", None),
53-
PyPAImage("manylinux_2_34", "pypy_x86_64", None),
54-
PyPAImage("manylinux_2_34", "pypy_aarch64", None),
51+
PyPAImage(
52+
"manylinux_2_34", ["x86_64", "aarch64", "ppc64le", "s390x", "pypy_x86_64", "pypy_aarch64"]
53+
),
5554
# musllinux_1_2 images
56-
PyPAImage("musllinux_1_2", "x86_64", None),
57-
PyPAImage("musllinux_1_2", "i686", None),
58-
PyPAImage("musllinux_1_2", "aarch64", None),
59-
PyPAImage("musllinux_1_2", "ppc64le", None),
60-
PyPAImage("musllinux_1_2", "s390x", None),
61-
PyPAImage("musllinux_1_2", "armv7l", None),
55+
PyPAImage("musllinux_1_2", ["x86_64", "i686", "aarch64", "ppc64le", "s390x", "armv7l"]),
6256
]
6357

6458
config = configparser.ConfigParser()
@@ -114,10 +108,13 @@ def __init__(self, manylinux_version: str, platform: str, tag: str | None):
114108
)
115109
tag_name = pinned_tag["name"]
116110

117-
if not config.has_section(image.platform):
118-
config[image.platform] = {}
119-
120-
config[image.platform][image.manylinux_version] = f"{image.image_name}:{tag_name}"
111+
for platform in image.platforms:
112+
if not config.has_section(platform):
113+
config[platform] = {}
114+
suffix = ""
115+
if image.use_platform_suffix:
116+
suffix = f"_{platform.removeprefix('pypy_')}"
117+
config[platform][image.manylinux_version] = f"{image.image_name}{suffix}:{tag_name}"
121118

122119
with open(RESOURCES / "pinned_docker_images.cfg", "w") as f:
123120
config.write(f)

0 commit comments

Comments
 (0)