|
14 | 14 | @dataclass(frozen=True)
|
15 | 15 | class Image:
|
16 | 16 | manylinux_version: str
|
17 |
| - platform: str |
| 17 | + platforms: list[str] |
18 | 18 | 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 |
20 | 21 |
|
21 | 22 |
|
22 | 23 | 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) |
27 | 27 |
|
28 | 28 |
|
29 | 29 | images = [
|
30 | 30 | # 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 | + ), |
39 | 44 | # 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 | + ), |
46 | 48 | # manylinux_2_31 images
|
47 |
| - PyPAImage("manylinux_2_31", "armv7l", None), |
| 49 | + PyPAImage("manylinux_2_31", ["armv7l"]), |
48 | 50 | # 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 | + ), |
55 | 54 | # 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"]), |
62 | 56 | ]
|
63 | 57 |
|
64 | 58 | config = configparser.ConfigParser()
|
@@ -114,10 +108,13 @@ def __init__(self, manylinux_version: str, platform: str, tag: str | None):
|
114 | 108 | )
|
115 | 109 | tag_name = pinned_tag["name"]
|
116 | 110 |
|
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}" |
121 | 118 |
|
122 | 119 | with open(RESOURCES / "pinned_docker_images.cfg", "w") as f:
|
123 | 120 | config.write(f)
|
0 commit comments