|
| 1 | +from typing import Literal |
| 2 | + |
| 3 | +from bci_build.container_attributes import Arch |
| 4 | +from bci_build.container_attributes import PackageType |
| 5 | +from bci_build.os_version import OsVersion |
| 6 | +from bci_build.package import OsContainer |
| 7 | +from bci_build.package import Package |
| 8 | +from bci_build.package.helpers import generate_from_image_tag |
| 9 | +from bci_build.package.thirdparty import ThirdPartyRepoMixin |
| 10 | +from bci_build.replacement import Replacement |
| 11 | +from bci_build.util import ParseVersion |
| 12 | + |
| 13 | +AMD_REPO_KEY_URL = "https://repo.radeon.com/rocm/rocm.gpg.key" |
| 14 | + |
| 15 | +AMD_REPO_KEY_FILE = """-----BEGIN PGP PUBLIC KEY BLOCK----- |
| 16 | +
|
| 17 | +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 |
| 64 | +=4g5r |
| 65 | +-----END PGP PUBLIC KEY BLOCK----- |
| 66 | +""" |
| 67 | + |
| 68 | +AMD_REPO_BASEURL = "https://repo.radeon.com/amdgpu/7.0.3/sle/15.7/main/x86_64/" |
| 69 | + |
| 70 | +LICENSE = """Permission is hereby granted, free of charge, to any person obtaining a copy |
| 71 | +of this software and associated documentation files (the "Software"), to deal |
| 72 | +in the Software without restriction, including without limitation the rights |
| 73 | +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
| 74 | +copies of the Software, and to permit persons to whom the Software is |
| 75 | +furnished to do so, subject to the following conditions: |
| 76 | +
|
| 77 | +The above copyright notice and this permission notice shall be included in |
| 78 | +all copies or substantial portions of the Software. |
| 79 | +
|
| 80 | +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
| 81 | +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
| 82 | +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
| 83 | +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
| 84 | +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
| 85 | +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
| 86 | +SOFTWARE. |
| 87 | +""" |
| 88 | + |
| 89 | + |
| 90 | +class AMDGPUBCI(ThirdPartyRepoMixin, OsContainer): |
| 91 | + def __init__( |
| 92 | + self, |
| 93 | + kernel_version: str, |
| 94 | + driver_version: str, |
| 95 | + is_latest: bool = False, |
| 96 | + **kwargs, |
| 97 | + ): |
| 98 | + if is_latest: |
| 99 | + raise RuntimeError( |
| 100 | + "AMD GPU explicitly requires the kernel version in the tag" |
| 101 | + ) |
| 102 | + |
| 103 | + self.kernel_version = kernel_version |
| 104 | + self.driver_version = driver_version |
| 105 | + |
| 106 | + super().__init__(**kwargs) |
| 107 | + |
| 108 | + @property |
| 109 | + def build_tags(self) -> list[str]: |
| 110 | + # the amd-gpu operator expects this tag format |
| 111 | + # sles-15.7-6.4.0-150700.53.19-default-7.0.3 |
| 112 | + return [ |
| 113 | + f"{self.name}:sles-%OS_VERSION_ID_SP%-{self.kernel_version}-default-{self.driver_version}" |
| 114 | + ] |
| 115 | + |
| 116 | + @property |
| 117 | + def build_name(self) -> str | None: |
| 118 | + return f"bci-{self.name}-%OS_VERSION_ID_SP%" |
| 119 | + |
| 120 | + |
| 121 | +_AMD_GPU_VERSIONS_T = Literal["7.0.3"] |
| 122 | +_AMD_GPU_VERSIONS: list[_AMD_GPU_VERSIONS_T] = ["7.0.3"] |
| 123 | + |
| 124 | +AMD_GPU_CONTAINERS: list[AMDGPUBCI] = [] |
| 125 | + |
| 126 | +for os_version in (OsVersion.SP7,): |
| 127 | + for ver in _AMD_GPU_VERSIONS: |
| 128 | + AMD_GPU_CONTAINERS.append( |
| 129 | + AMDGPUBCI( |
| 130 | + os_version=os_version, |
| 131 | + kernel_version=(version_replacement := "%%kernel_version%%"), |
| 132 | + driver_version=ver, |
| 133 | + name="amdgpu-driver", |
| 134 | + pretty_name="AMD GPU Driver", |
| 135 | + is_latest=False, |
| 136 | + from_target_image=generate_from_image_tag(os_version, "bci-micro"), |
| 137 | + package_name=f"amd-gpu-{ver}", |
| 138 | + package_list=[ |
| 139 | + # these are build requirements for builder |
| 140 | + Package("autoconf", PackageType.BOOTSTRAP), |
| 141 | + Package("automake", PackageType.BOOTSTRAP), |
| 142 | + Package("bc", PackageType.BOOTSTRAP), |
| 143 | + Package("bison", PackageType.BOOTSTRAP), |
| 144 | + Package("dwarves", PackageType.BOOTSTRAP), |
| 145 | + Package("fipscheck", PackageType.BOOTSTRAP), |
| 146 | + Package("flex", PackageType.BOOTSTRAP), |
| 147 | + Package("gcc", PackageType.BOOTSTRAP), |
| 148 | + Package("kernel-default", PackageType.BOOTSTRAP), |
| 149 | + Package("kernel-default-devel", PackageType.BOOTSTRAP), |
| 150 | + Package("kernel-devel", PackageType.BOOTSTRAP), |
| 151 | + Package("kernel-macros", PackageType.BOOTSTRAP), |
| 152 | + Package("kernel-syms", PackageType.BOOTSTRAP), |
| 153 | + Package("libdwarves1", PackageType.BOOTSTRAP), |
| 154 | + Package("libelf-devel", PackageType.BOOTSTRAP), |
| 155 | + Package("libfipscheck1", PackageType.BOOTSTRAP), |
| 156 | + Package("libzstd-devel", PackageType.BOOTSTRAP), |
| 157 | + Package("make", PackageType.BOOTSTRAP), |
| 158 | + Package("mokutil", PackageType.BOOTSTRAP), |
| 159 | + Package("mozilla-nss-tools", PackageType.BOOTSTRAP), |
| 160 | + Package("perl", PackageType.BOOTSTRAP), |
| 161 | + Package("pesign", PackageType.BOOTSTRAP), |
| 162 | + Package("pesign-obs-integration", PackageType.BOOTSTRAP), |
| 163 | + Package("python3", PackageType.BOOTSTRAP), |
| 164 | + Package("python3-setuptools", PackageType.BOOTSTRAP), |
| 165 | + Package("python3-wheel", PackageType.BOOTSTRAP), |
| 166 | + # this is runtime requirement for target |
| 167 | + Package("kmod", PackageType.IMAGE), |
| 168 | + ], |
| 169 | + exclusive_arch=[Arch.X86_64], |
| 170 | + third_party_repo_url=AMD_REPO_BASEURL, |
| 171 | + third_party_repo_key_url=AMD_REPO_KEY_URL, |
| 172 | + third_party_repo_key_file=AMD_REPO_KEY_FILE, |
| 173 | + third_party_package_list=[ |
| 174 | + "amdgpu-dkms", |
| 175 | + "amdgpu-dkms-firmware", |
| 176 | + "dkms", |
| 177 | + ], |
| 178 | + replacements_via_service=[ |
| 179 | + Replacement( |
| 180 | + regex_in_build_description=version_replacement, |
| 181 | + package_name="kernel-devel", |
| 182 | + parse_version=ParseVersion.RELEASE, |
| 183 | + ) |
| 184 | + ], |
| 185 | + ) |
| 186 | + ) |
0 commit comments