|
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