Skip to content

Commit b6f3831

Browse files
Add amdgpu-driver image (jsc#PED-14049)
This image is required for adding support for the AMD GPU Operator on SLES.
1 parent a13bee0 commit b6f3831

File tree

2 files changed

+188
-0
lines changed

2 files changed

+188
-0
lines changed

src/bci_build/package/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1477,6 +1477,7 @@ def generate_disk_size_constraints(size_gb: int) -> str:
14771477
"""
14781478

14791479

1480+
from .amdgpu import AMD_GPU_CONTAINERS # noqa: E402
14801481
from .apache_tomcat import TOMCAT_CONTAINERS # noqa: E402
14811482
from .appcontainers import ALERTMANAGER_CONTAINERS # noqa: E402
14821483
from .appcontainers import BLACKBOX_EXPORTER_CONTAINERS # noqa: E402
@@ -1546,6 +1547,7 @@ def generate_disk_size_constraints(size_gb: int) -> str:
15461547
*BCI_CI_CONTAINERS,
15471548
*THREE_EIGHT_NINE_DS_CONTAINERS,
15481549
*NGINX_CONTAINERS,
1550+
*AMD_GPU_CONTAINERS,
15491551
*DOTNET_CONTAINERS,
15501552
*PCP_CONTAINERS,
15511553
*REGISTRY_CONTAINERS,

src/bci_build/package/amdgpu.py

Lines changed: 186 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,186 @@
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

Comments
 (0)