Skip to content

Commit 4dd70ff

Browse files
authored
refactor: move ucore addons builds here (#219)
1 parent 7c3a5d8 commit 4dd70ff

8 files changed

+153
-20
lines changed

Containerfile.common

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,22 @@ COPY --from=kernel_cache /tmp/rpms /tmp/kernel_cache
2525

2626
# files for akmods
2727
COPY ublue-os-akmods-addons.spec /tmp/ublue-os-akmods-addons/ublue-os-akmods-addons.spec
28+
COPY ublue-os-ucore-addons.spec /tmp/ublue-os-ucore-addons/ublue-os-ucore-addons.spec
2829
ADD https://copr.fedorainfracloud.org/coprs/ublue-os/akmods/repo/fedora-${FEDORA_MAJOR_VERSION}/ublue-os-akmods-fedora-${FEDORA_MAJOR_VERSION}.repo \
2930
/tmp/ublue-os-akmods-addons/rpmbuild/SOURCES/_copr_ublue-os-akmods.repo
3031
ADD https://negativo17.org/repos/fedora-multimedia.repo \
3132
/tmp/ublue-os-akmods-addons/rpmbuild/SOURCES/negativo17-fedora-multimedia.repo
3233

3334
RUN --mount=type=cache,dst=/var/cache/dnf \
3435
/tmp/build-prep.sh && \
36+
if [[ "${KERNEL_FLAVOR}" =~ "coreos" ]]; then \
37+
/tmp/build-ublue-os-ucore-addons.sh && \
38+
cp /tmp/ublue-os-ucore-addons/rpmbuild/RPMS/noarch/ublue-os-ucore-addons*.rpm \
39+
/var/cache/rpms/ucore/ \
40+
; fi && \
3541
/tmp/build-ublue-os-akmods-addons.sh && \
42+
cp /tmp/ublue-os-akmods-addons/rpmbuild/RPMS/noarch/ublue-os-akmods-addons*.rpm \
43+
/var/cache/rpms/ublue-os/ && \
3644
if grep -qv "surface" <<< "${KERNEL_FLAVOR}"; then \
3745
export KERNEL_NAME="kernel" \
3846
; else \
@@ -49,8 +57,6 @@ RUN --mount=type=cache,dst=/var/cache/dnf \
4957
/tmp/build-kmod-xpadneo.sh && \
5058
/tmp/build-kmod-xone.sh && \
5159
/tmp/dual-sign.sh && \
52-
cp /tmp/ublue-os-akmods-addons/rpmbuild/RPMS/noarch/ublue-os-akmods-addons*.rpm \
53-
/var/cache/rpms/ublue-os/ && \
5460
for RPM in $(find /var/cache/akmods/ -type f -name \*.rpm); do \
5561
cp "${RPM}" /var/cache/rpms/kmods/; \
5662
done && \

Containerfile.nvidia

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,23 +25,31 @@ COPY --from=kernel_cache /tmp/rpms /tmp/kernel_cache
2525

2626
# files for nvidia
2727
COPY ublue-os-nvidia-addons.spec /tmp/ublue-os-nvidia-addons/ublue-os-nvidia-addons.spec
28+
COPY ublue-os-ucore-nvidia.spec /tmp/ublue-os-ucore-nvidia/ublue-os-ucore-nvidia.spec
2829
COPY files/etc/sway/environment /tmp/ublue-os-nvidia-addons/rpmbuild/SOURCES/environment
2930
COPY files/usr/lib/systemd/system/ublue-nvctk-cdi.service /tmp/ublue-os-nvidia-addons/rpmbuild/SOURCES/ublue-nvctk-cdi.service
31+
COPY files/usr/lib/systemd/system/ublue-nvctk-cdi.service /tmp/ublue-os-ucore-nvidia/rpmbuild/SOURCES/ublue-nvctk-cdi.service
3032
COPY files/usr/lib/systemd/system-preset/70-ublue-nvctk-cdi.preset /tmp/ublue-os-nvidia-addons/rpmbuild/SOURCES/70-ublue-nvctk-cdi.preset
33+
COPY files/usr/lib/systemd/system-preset/70-ublue-nvctk-cdi.preset /tmp/ublue-os-ucore-nvidia/rpmbuild/SOURCES/70-ublue-nvctk-cdi.preset
3134

3235

3336
RUN --mount=type=cache,dst=/var/cache/dnf \
3437
/tmp/build-prep.sh && \
38+
if [[ "${KERNEL_FLAVOR}" =~ "coreos" ]]; then \
39+
/tmp/build-ublue-os-ucore-nvidia.sh && \
40+
cp /tmp/ublue-os-ucore-nvidia/rpmbuild/RPMS/noarch/ublue-os-ucore-nvidia*.rpm \
41+
/var/cache/rpms/ucore/ \
42+
; fi && \
3543
/tmp/build-ublue-os-nvidia-addons.sh && \
44+
cp /tmp/ublue-os-nvidia-addons/rpmbuild/RPMS/noarch/ublue-os-nvidia-addons*.rpm \
45+
/var/cache/rpms/ublue-os/ && \
3646
if grep -qv "surface" <<< "${KERNEL_FLAVOR}"; then \
3747
export KERNEL_NAME="kernel" \
3848
; else \
3949
export KERNEL_NAME="kernel-surface" \
4050
; fi && \
4151
/tmp/build-kmod-nvidia.sh 550 && \
4252
/tmp/dual-sign.sh && \
43-
cp /tmp/ublue-os-nvidia-addons/rpmbuild/RPMS/noarch/ublue-os-nvidia-addons*.rpm \
44-
/var/cache/rpms/ublue-os/ && \
4553
for RPM in $(find /var/cache/akmods/ -type f -name \*.rpm); do \
4654
cp "${RPM}" /var/cache/rpms/kmods/; \
4755
done && \

build-prep.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,4 +93,4 @@ fi
9393
chmod 1777 /tmp /var/tmp
9494

9595
# create directories for later copying resulting artifacts
96-
mkdir -p /var/cache/rpms/{kmods,ublue-os}
96+
mkdir -p /var/cache/rpms/{kmods,ublue-os,ucore}

build-ublue-os-ucore-addons.sh

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#!/bin/sh
2+
3+
set -oeux pipefail
4+
5+
### BUILD UCORE-ADDONS RPM
6+
install -D /etc/pki/akmods/certs/public_key.der /tmp/ublue-os-ucore-addons/rpmbuild/SOURCES/public_key.der
7+
rpmbuild -ba \
8+
--define '_topdir /tmp/ublue-os-ucore-addons/rpmbuild' \
9+
--define '%_tmppath %{_topdir}/tmp' \
10+
/tmp/ublue-os-ucore-addons/ublue-os-ucore-addons.spec

build-ublue-os-ucore-nvidia.sh

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#!/bin/sh
2+
3+
set -oeux pipefail
4+
5+
### SETUP nvidia container stuffs
6+
7+
mkdir -p /tmp/ublue-os-ucore-nvidia/rpmbuild/SOURCES/
8+
9+
curl -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo \
10+
-o /tmp/ublue-os-ucore-nvidia/rpmbuild/SOURCES/nvidia-container-toolkit.repo
11+
sed -i "s@gpgcheck=0@gpgcheck=1@" /tmp/ublue-os-ucore-nvidia/rpmbuild/SOURCES/nvidia-container-toolkit.repo
12+
13+
curl -L https://raw.githubusercontent.com/NVIDIA/dgx-selinux/master/bin/RHEL9/nvidia-container.pp \
14+
-o /tmp/ublue-os-ucore-nvidia/rpmbuild/SOURCES/nvidia-container.pp
15+
16+
rpmbuild -ba \
17+
--define '_topdir /tmp/ublue-os-ucore-nvidia/rpmbuild' \
18+
--define '%_tmppath %{_topdir}/tmp' \
19+
/tmp/ublue-os-ucore-nvidia/ublue-os-ucore-nvidia.spec

ublue-os-nvidia-addons.spec

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,18 @@ Release: 1%{?dist}
44
Summary: Additional files for nvidia driver support
55

66
License: MIT
7-
URL: https://github.com/ublue-os/nvidia
7+
URL: https://github.com/ublue-os/akmods
88

99
BuildArch: noarch
1010
Supplements: mokutil policycoreutils
1111

1212
Source0: nvidia-container-toolkit.repo
13-
Source1: eyecantcu-supergfxctl.repo
14-
Source2: nvidia-container.pp
15-
Source3: environment
16-
Source4: ublue-nvctk-cdi.service
17-
Source5: 70-ublue-nvctk-cdi.preset
18-
Source6: negativo17-fedora-nvidia.repo
13+
Source1: nvidia-container.pp
14+
Source2: ublue-nvctk-cdi.service
15+
Source3: 70-ublue-nvctk-cdi.preset
16+
Source4: environment
17+
Source5: negativo17-fedora-nvidia.repo
18+
Source6: eyecantcu-supergfxctl.repo
1919

2020
%description
2121
Adds various runtime files for nvidia support.
@@ -25,21 +25,21 @@ Adds various runtime files for nvidia support.
2525

2626

2727
%build
28-
install -Dm0644 %{SOURCE6} %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/negativo17-fedora-nvidia.repo
2928
install -Dm0644 %{SOURCE0} %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/nvidia-container-toolkit.repo
30-
install -Dm0644 %{SOURCE1} %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/eyecantcu-supergfxctl.repo
31-
install -Dm0644 %{SOURCE2} %{buildroot}%{_datadir}/ublue-os/%{_datadir}/selinux/packages/nvidia-container.pp
32-
install -Dm0644 %{SOURCE3} %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/sway/environment
33-
install -Dm0644 %{SOURCE4} %{buildroot}%{_datadir}/ublue-os/%{_unitdir}/ublue-nvctk-cdi.service
34-
install -Dm0644 %{SOURCE5} %{buildroot}%{_presetdir}/70-ublue-nvctk-cdi.preset
29+
install -Dm0644 %{SOURCE1} %{buildroot}%{_datadir}/ublue-os/%{_datadir}/selinux/packages/nvidia-container.pp
30+
install -Dm0644 %{SOURCE2} %{buildroot}%{_datadir}/ublue-os/%{_unitdir}/ublue-nvctk-cdi.service
31+
install -Dm0644 %{SOURCE3} %{buildroot}%{_presetdir}/70-ublue-nvctk-cdi.preset
32+
install -Dm0644 %{SOURCE4} %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/sway/environment
33+
install -Dm0644 %{SOURCE5} %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/negativo17-fedora-nvidia.repo
34+
install -Dm0644 %{SOURCE6} %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/eyecantcu-supergfxctl.repo
3535

36+
sed -i 's@enabled=1@enabled=0@g' %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/eyecantcu-supergfxctl.repo
3637
sed -i 's@enabled=1@enabled=0@g' %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/negativo17-fedora-nvidia.repo
3738
sed -i 's@enabled=1@enabled=0@g' %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/nvidia-container-toolkit.repo
38-
sed -i 's@enabled=1@enabled=0@g' %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/eyecantcu-supergfxctl.repo
3939

4040
install -Dm0644 %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/negativo17-fedora-nvidia.repo %{buildroot}%{_sysconfdir}/yum.repos.d/negativo17-fedora-nvidia.repo
41-
install -Dm0644 %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/nvidia-container-toolkit.repo %{buildroot}%{_sysconfdir}/yum.repos.d/nvidia-container-toolkit.repo
4241
install -Dm0644 %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/eyecantcu-supergfxctl.repo %{buildroot}%{_sysconfdir}/yum.repos.d/eyecantcu-supergfxctl.repo
42+
install -Dm0644 %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/nvidia-container-toolkit.repo %{buildroot}%{_sysconfdir}/yum.repos.d/nvidia-container-toolkit.repo
4343
install -Dm0644 %{buildroot}%{_datadir}/ublue-os/%{_datadir}/selinux/packages/nvidia-container.pp %{buildroot}%{_datadir}/selinux/packages/nvidia-container.pp
4444
install -Dm0644 %{buildroot}%{_datadir}/ublue-os/%{_unitdir}/ublue-nvctk-cdi.service %{buildroot}%{_unitdir}/ublue-nvctk-cdi.service
4545

ublue-os-ucore-addons.spec

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
Name: ublue-os-ucore-addons
2+
Version: 0.1
3+
Release: 1%{?dist}
4+
Summary: Signing key for ucore kmods
5+
6+
License: MIT
7+
URL: https://github.com/ublue-os/ucore-kmods
8+
9+
BuildArch: noarch
10+
Supplements: mokutil policycoreutils
11+
12+
Source0: public_key.der
13+
14+
%description
15+
Adds the signing key for importing with mokutil to enable secure boot for kernel modules.
16+
17+
%prep
18+
%setup -q -c -T
19+
20+
21+
%build
22+
# Have different name for *.der in case kmodgenca is needed for creating more keys
23+
install -Dm0644 %{SOURCE0} %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/pki/akmods/certs/akmods-ublue.der
24+
25+
install -Dm0644 %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/pki/akmods/certs/akmods-ublue.der %{buildroot}%{_sysconfdir}/pki/akmods/certs/akmods-ublue.der
26+
27+
%files
28+
%attr(0644,root,root) %{_datadir}/ublue-os/%{_sysconfdir}/pki/akmods/certs/akmods-ublue.der
29+
%attr(0644,root,root) %{_sysconfdir}/pki/akmods/certs/akmods-ublue.der
30+
31+
%changelog
32+
* Sat Dec 30 2023 Benjamin Sherman <benjamin@holyarmy.org> - 0.1
33+
- Add key for enrolling ucore kernel modules for secure boot

ublue-os-ucore-nvidia.spec

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
Name: ublue-os-ucore-nvidia
2+
Version: 0.3
3+
Release: 1%{?dist}
4+
Summary: Additional files for nvidia driver support on CoreOS
5+
6+
License: MIT
7+
URL: https://github.com/ublue-os/akmods
8+
9+
BuildArch: noarch
10+
Supplements: mokutil policycoreutils
11+
12+
Source0: nvidia-container-toolkit.repo
13+
Source1: nvidia-container.pp
14+
Source2: ublue-nvctk-cdi.service
15+
Source3: 70-ublue-nvctk-cdi.preset
16+
17+
%description
18+
Adds various runtime files for nvidia support on Fedora CoreOS.
19+
20+
%prep
21+
%setup -q -c -T
22+
23+
24+
%build
25+
install -Dm0644 %{SOURCE0} %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/nvidia-container-toolkit.repo
26+
install -Dm0644 %{SOURCE1} %{buildroot}%{_datadir}/ublue-os/%{_datadir}/selinux/packages/nvidia-container.pp
27+
install -Dm0644 %{SOURCE2} %{buildroot}%{_datadir}/ublue-os/%{_unitdir}/ublue-nvctk-cdi.service
28+
install -Dm0644 %{SOURCE3} %{buildroot}%{_presetdir}/70-ublue-nvctk-cdi.preset
29+
30+
sed -i 's@enabled=1@enabled=0@g' %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/nvidia-container-toolkit.repo
31+
32+
install -Dm0644 %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/nvidia-container-toolkit.repo %{buildroot}%{_sysconfdir}/yum.repos.d/nvidia-container-toolkit.repo
33+
install -Dm0644 %{buildroot}%{_datadir}/ublue-os/%{_datadir}/selinux/packages/nvidia-container.pp %{buildroot}%{_datadir}/selinux/packages/nvidia-container.pp
34+
install -Dm0644 %{buildroot}%{_datadir}/ublue-os/%{_unitdir}/ublue-nvctk-cdi.service %{buildroot}%{_unitdir}/ublue-nvctk-cdi.service
35+
36+
%files
37+
%attr(0644,root,root) %{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/nvidia-container-toolkit.repo
38+
%attr(0644,root,root) %{_datadir}/ublue-os/%{_datadir}/selinux/packages/nvidia-container.pp
39+
%attr(0644,root,root) %{_datadir}/ublue-os/%{_unitdir}/ublue-nvctk-cdi.service
40+
%attr(0644,root,root) %{_sysconfdir}/yum.repos.d/nvidia-container-toolkit.repo
41+
%attr(0644,root,root) %{_datadir}/selinux/packages/nvidia-container.pp
42+
%attr(0644,root,root) %{_unitdir}/ublue-nvctk-cdi.service
43+
%attr(0644,root,root) %{_presetdir}/70-ublue-nvctk-cdi.preset
44+
45+
%changelog
46+
* Fri Oct 6 2023 Benjamin Sherman <benjamin@holyarmy.org> - 0.3
47+
- add ublue-nvctk-cdi service to auto-generate NVIDIA CDI GPU definitions
48+
49+
* Wed Oct 04 2023 Benjamin Sherman <benjamin@holyarmy.org> - 0.2
50+
- use newer nvidia-container-toolkit repo
51+
- repo provides newer toolkit, no longer requires config.toml
52+
53+
* Sat Aug 19 2023 Benjamin Sherman <benjamin@holyarmy.org> - 0.1
54+
First release for Fedora CoreOS based on ublue-os-nvidia-addons includes:
55+
- nvidia-container-runtime repo
56+
- nvidia-container-runtime rootless config
57+
- nvidia-container-runtime selinux policy file

0 commit comments

Comments
 (0)