Skip to content

Commit 57e8f6e

Browse files
committed
Revert "feat: swap to negativo17 as nvidia driver source (#170)"
This reverts commit b64843b.
1 parent b64843b commit 57e8f6e

File tree

5 files changed

+52
-56
lines changed

5 files changed

+52
-56
lines changed

.github/workflows/reusable-build.yml

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ on:
77
required: true
88
type: string
99
env:
10-
IMAGE_BASE_NAME: akmods
10+
IMAGE_NAME: akmods
1111
IMAGE_REGISTRY: ghcr.io/${{ github.repository_owner }}
1212

1313
concurrency:
@@ -36,7 +36,14 @@ jobs:
3636
cfile_suffix:
3737
- common
3838
- nvidia
39+
nvidia_version:
40+
- 0
41+
- 550
3942
exclude:
43+
- cfile_suffix: common
44+
nvidia_version: 550
45+
- cfile_suffix: nvidia
46+
nvidia_version: 0
4047
- kernel_flavor: asus
4148
fedora_version: 38
4249
- kernel_flavor: surface
@@ -66,19 +73,18 @@ jobs:
6673
echo "SOURCE_IMAGE=base" >> $GITHUB_ENV
6774
echo "SOURCE_ORG=fedora-ostree-desktops" >> $GITHUB_ENV
6875
fi
69-
if [ "common" == "${{ matrix.cfile_suffix }}" ]; then
70-
echo "IMAGE_NAME=${{ env.IMAGE_BASE_NAME }}" >> $GITHUB_ENV
71-
else
72-
echo "IMAGE_NAME=${{ env.IMAGE_BASE_NAME }}-${{ matrix.cfile_suffix }}" >> $GITHUB_ENV
73-
fi
7476
7577
- name: Generate tags
7678
id: generate-tags
7779
shell: bash
7880
run: |
7981
# Generate a timestamp for creating an image version history
8082
TIMESTAMP="$(date +%Y%m%d)"
81-
VARIANT="${{ matrix.kernel_flavor }}-${{ matrix.fedora_version }}"
83+
if [[ "${{ matrix.cfile_suffix }}" == "nvidia" ]]; then
84+
VARIANT="${{ matrix.kernel_flavor }}-${{ matrix.fedora_version }}-${{ matrix.nvidia_version }}"
85+
else
86+
VARIANT="${{ matrix.kernel_flavor }}-${{ matrix.fedora_version }}"
87+
fi
8288
8389
COMMIT_TAGS=()
8490
BUILD_TAGS=()
@@ -147,9 +153,9 @@ jobs:
147153
id: meta
148154
with:
149155
images: |
150-
${{ env.IMAGE_NAME }}
156+
${{ 'nvidia' == matrix.cfile_suffix && format('{0}-nvidia', env.IMAGE_NAME) || format('{0}', env.IMAGE_NAME) }}
151157
labels: |
152-
org.opencontainers.image.title=${{ env.IMAGE_BASE_NAME }}
158+
org.opencontainers.image.title=${{ env.IMAGE_NAME }}
153159
org.opencontainers.image.description=A caching layer for pre-built akmod RPMs
154160
org.opencontainers.image.version=${{ env.SOURCE_IMAGE_VERSION }}
155161
ostree.linux=${{ env.SOURCE_IMAGE_LINUX }}
@@ -173,14 +179,15 @@ jobs:
173179
with:
174180
containerfiles: |
175181
./Containerfile.${{ matrix.cfile_suffix }}
176-
image: ${{ env.IMAGE_NAME }}
182+
image: ${{ 'nvidia' == matrix.cfile_suffix && format('{0}-nvidia', env.IMAGE_NAME) || format('{0}', env.IMAGE_NAME) }}
177183
tags: |
178184
${{ steps.generate-tags.outputs.alias_tags }}
179185
build-args: |
180186
SOURCE_IMAGE=${{ env.SOURCE_IMAGE }}
181187
SOURCE_ORG=${{ env.SOURCE_ORG }}
182188
KERNEL_FLAVOR=${{ matrix.kernel_flavor }}
183189
FEDORA_MAJOR_VERSION=${{ matrix.fedora_version }}
190+
NVIDIA_MAJOR_VERSION=${{ matrix.nvidia_version }}
184191
RPMFUSION_MIRROR=${{ vars.RPMFUSION_MIRROR }}
185192
labels: ${{ steps.meta.outputs.labels }}
186193
oci: false

Containerfile.nvidia

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
###
2-
### Containerfile.nvidia - used to build ONLY NVIDIA kmods
2+
### Containerfile.nvidia - used to build ONLY NVIDIA kmods (one driver version per build)
33
###
44

5-
#Build from base, simply because it's the smallest image
5+
#Build from base, simpley because it's the smallest image
66
ARG SOURCE_IMAGE="${SOURCE_IMAGE:-base}"
77
ARG SOURCE_ORG="${SOURCE_ORG:-fedora-ostree-desktops}"
88
ARG BASE_IMAGE="quay.io/${SOURCE_ORG}/${SOURCE_IMAGE}"
99
ARG FEDORA_MAJOR_VERSION="${FEDORA_MAJOR_VERSION:-39}"
1010

1111
FROM ${BASE_IMAGE}:${FEDORA_MAJOR_VERSION} AS builder
1212
ARG FEDORA_MAJOR_VERSION="${FEDORA_MAJOR_VERSION:-39}"
13+
ARG NVIDIA_MAJOR_VERSION="${NVIDIA_MAJOR_VERSION:-550}"
1314
ARG KERNEL_FLAVOR="{KERNEL_FLAVOR:-main}"
1415
ARG RPMFUSION_MIRROR=""
1516

@@ -18,9 +19,15 @@ COPY certs /tmp/certs
1819

1920
# files for nvidia
2021
COPY ublue-os-nvidia-addons.spec /tmp/ublue-os-nvidia-addons/ublue-os-nvidia-addons.spec
21-
COPY files/etc/sway/environment /tmp/ublue-os-nvidia-addons/rpmbuild/SOURCES/environment
22-
COPY files/usr/lib/systemd/system/ublue-nvctk-cdi.service /tmp/ublue-os-nvidia-addons/rpmbuild/SOURCES/ublue-nvctk-cdi.service
23-
COPY files/usr/lib/systemd/system-preset/70-ublue-nvctk-cdi.preset /tmp/ublue-os-nvidia-addons/rpmbuild/SOURCES/70-ublue-nvctk-cdi.preset
22+
ADD https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo \
23+
/tmp/ublue-os-nvidia-addons/rpmbuild/SOURCES/nvidia-container-toolkit.repo
24+
ADD https://copr.fedorainfracloud.org/coprs/eyecantcu/supergfxctl/repo/fedora-${FEDORA_MAJOR_VERSION}/eyecantcu-supergfxctl-fedora-${FEDORA_MAJOR_VERSION}.repo \
25+
/tmp/ublue-os-nvidia-addons/rpmbuild/SOURCES/eyecantcu-supergfxctl.repo
26+
ADD https://raw.githubusercontent.com/NVIDIA/dgx-selinux/master/bin/RHEL9/nvidia-container.pp \
27+
/tmp/ublue-os-nvidia-addons/rpmbuild/SOURCES/nvidia-container.pp
28+
ADD files/etc/sway/environment /tmp/ublue-os-nvidia-addons/rpmbuild/SOURCES/environment
29+
ADD files/usr/lib/systemd/system/ublue-nvctk-cdi.service /tmp/ublue-os-nvidia-addons/rpmbuild/SOURCES/ublue-nvctk-cdi.service
30+
ADD files/usr/lib/systemd/system-preset/70-ublue-nvctk-cdi.preset /tmp/ublue-os-nvidia-addons/rpmbuild/SOURCES/70-ublue-nvctk-cdi.preset
2431

2532

2633
RUN /tmp/build-prep.sh
@@ -36,7 +43,6 @@ RUN if grep -qv "surface" <<< "${KERNEL_FLAVOR}"; then \
3643

3744
RUN cp /tmp/ublue-os-nvidia-addons/rpmbuild/RPMS/noarch/ublue-os-nvidia-addons*.rpm \
3845
/var/cache/rpms/ublue-os/
39-
4046
RUN for RPM in $(find /var/cache/akmods/ -type f -name \*.rpm); do \
4147
cp "${RPM}" /var/cache/rpms/kmods/; \
4248
done

build-kmod-nvidia.sh

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,38 +2,45 @@
22

33
set -oeux pipefail
44

5+
NVIDIA_MAJOR_VERSION=${1}
6+
57
RELEASE="$(rpm -E '%fedora.%_arch')"
8+
echo NVIDIA_MAJOR_VERSION=${NVIDIA_MAJOR_VERSION}
69

710
cd /tmp
811

912
### BUILD nvidia
10-
11-
# disable rpmfusion and enable negativo17
12-
sed -i 's/enabled=1/enabled=0/' /etc/yum.repos.d/rpmfusion-*.repo
13-
cp /tmp/ublue-os-nvidia-addons/rpmbuild/SOURCES/negativo17-fedora-nvidia.repo /etc/yum.repos.d/
13+
# nvidia 520.xxx and newer currently don't have a -$VERSIONxx suffix in their
14+
# package names
15+
if [[ "${NVIDIA_MAJOR_VERSION}" -ge 520 ]]; then
16+
NVIDIA_PACKAGE_NAME="nvidia"
17+
else
18+
NVIDIA_PACKAGE_NAME="nvidia-${NVIDIA_MAJOR_VERSION}xx"
19+
fi
1420

1521
rpm-ostree install \
16-
akmod-nvidia*.fc${RELEASE}
22+
akmod-${NVIDIA_PACKAGE_NAME}*:${NVIDIA_MAJOR_VERSION}.*.fc${RELEASE} \
23+
xorg-x11-drv-${NVIDIA_PACKAGE_NAME}-{,cuda,devel,kmodsrc,power}*:${NVIDIA_MAJOR_VERSION}.*.fc${RELEASE}
1724

1825
# Either successfully build and install the kernel modules, or fail early with debug output
19-
rpm -qa |grep nvidia
2026
KERNEL_VERSION="$(rpm -q "${KERNEL_NAME}" --queryformat '%{VERSION}-%{RELEASE}.%{ARCH}')"
21-
NVIDIA_AKMOD_VERSION="$(basename "$(rpm -q "akmod-nvidia" --queryformat '%{VERSION}-%{RELEASE}')" ".fc${RELEASE%%.*}")"
22-
23-
24-
akmods --force --kernels "${KERNEL_VERSION}" --kmod "nvidia"
25-
26-
modinfo /usr/lib/modules/${KERNEL_VERSION}/extra/nvidia/nvidia{,-drm,-modeset,-peermem,-uvm}.ko.xz > /dev/null || \
27-
(cat /var/cache/akmods/nvidia/${NVIDIA_AKMOD_VERSION}-for-${KERNEL_VERSION}.failed.log && exit 1)
27+
NVIDIA_AKMOD_VERSION="$(basename "$(rpm -q "akmod-${NVIDIA_PACKAGE_NAME}" --queryformat '%{VERSION}-%{RELEASE}')" ".fc${RELEASE%%.*}")"
28+
NVIDIA_LIB_VERSION="$(basename "$(rpm -q "xorg-x11-drv-${NVIDIA_PACKAGE_NAME}" --queryformat '%{VERSION}-%{RELEASE}')" ".fc${RELEASE%%.*}")"
29+
NVIDIA_FULL_VERSION="$(rpm -q "xorg-x11-drv-${NVIDIA_PACKAGE_NAME}" --queryformat '%{EPOCH}:%{VERSION}-%{RELEASE}.%{ARCH}')"
2830

2931

30-
# create a directory for later copying of resulting nvidia specific artifacts
31-
mkdir -p /var/cache/rpms/kmods/nvidia
32+
akmods --force --kernels "${KERNEL_VERSION}" --kmod "${NVIDIA_PACKAGE_NAME}"
3233

34+
modinfo /usr/lib/modules/${KERNEL_VERSION}/extra/${NVIDIA_PACKAGE_NAME}/nvidia{,-drm,-modeset,-peermem,-uvm}.ko.xz > /dev/null || \
35+
(cat /var/cache/akmods/${NVIDIA_PACKAGE_NAME}/${NVIDIA_AKMOD_VERSION}-for-${KERNEL_VERSION}.failed.log && exit 1)
3336

34-
cat <<EOF > /var/cache/rpms/kmods/nvidia-vars
37+
cat <<EOF > /var/cache/rpms/kmods/nvidia-vars.${NVIDIA_MAJOR_VERSION}
3538
KERNEL_VERSION=${KERNEL_VERSION}
3639
RELEASE=${RELEASE}
40+
NVIDIA_PACKAGE_NAME=${NVIDIA_PACKAGE_NAME}
41+
NVIDIA_MAJOR_VERSION=${NVIDIA_MAJOR_VERSION}
42+
NVIDIA_FULL_VERSION=${NVIDIA_FULL_VERSION}
3743
NVIDIA_AKMOD_VERSION=${NVIDIA_AKMOD_VERSION}
44+
NVIDIA_LIB_VERSION=${NVIDIA_LIB_VERSION}
3845
EOF
3946

build-ublue-os-nvidia-addons.sh

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,9 @@
22

33
set -oeux pipefail
44

5-
curl -L https://negativo17.org/repos/fedora-nvidia.repo \
6-
-o /tmp/ublue-os-nvidia-addons/rpmbuild/SOURCES/negativo17-fedora-nvidia.repo
75

8-
curl -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo \
9-
-o /tmp/ublue-os-nvidia-addons/rpmbuild/SOURCES/nvidia-container-toolkit.repo
106
sed -i "s@gpgcheck=0@gpgcheck=1@" /tmp/ublue-os-nvidia-addons/rpmbuild/SOURCES/nvidia-container-toolkit.repo
117

12-
curl -L https://raw.githubusercontent.com/NVIDIA/dgx-selinux/master/bin/RHEL9/nvidia-container.pp \
13-
-o /tmp/ublue-os-nvidia-addons/rpmbuild/SOURCES/nvidia-container.pp
14-
15-
curl -L https://copr.fedorainfracloud.org/coprs/eyecantcu/supergfxctl/repo/fedora-${FEDORA_MAJOR_VERSION}/eyecantcu-supergfxctl-fedora-${FEDORA_MAJOR_VERSION}.repo \
16-
-o /tmp/ublue-os-nvidia-addons/rpmbuild/SOURCES/eyecantcu-supergfxctl.repo
17-
18-
198
rpmbuild -ba \
209
--define '_topdir /tmp/ublue-os-nvidia-addons/rpmbuild' \
2110
--define '%_tmppath %{_topdir}/tmp' \

ublue-os-nvidia-addons.spec

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ Source2: nvidia-container.pp
1515
Source3: environment
1616
Source4: ublue-nvctk-cdi.service
1717
Source5: 70-ublue-nvctk-cdi.preset
18-
Source6: negativo17-fedora-nvidia.repo
1918

2019
%description
2120
Adds various runtime files for nvidia support.
@@ -25,43 +24,31 @@ Adds various runtime files for nvidia support.
2524

2625

2726
%build
28-
install -Dm0644 %{SOURCE6} %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/negativo17-fedora-nvidia.repo
2927
install -Dm0644 %{SOURCE0} %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/nvidia-container-toolkit.repo
3028
install -Dm0644 %{SOURCE1} %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/eyecantcu-supergfxctl.repo
3129
install -Dm0644 %{SOURCE2} %{buildroot}%{_datadir}/ublue-os/%{_datadir}/selinux/packages/nvidia-container.pp
3230
install -Dm0644 %{SOURCE3} %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/sway/environment
3331
install -Dm0644 %{SOURCE4} %{buildroot}%{_datadir}/ublue-os/%{_unitdir}/ublue-nvctk-cdi.service
3432
install -Dm0644 %{SOURCE5} %{buildroot}%{_presetdir}/70-ublue-nvctk-cdi.preset
3533

36-
sed -i 's@enabled=1@enabled=0@g' %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/negativo17-fedora-nvidia.repo
37-
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
39-
40-
install -Dm0644 %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/negativo17-fedora-nvidia.repo %{buildroot}%{_sysconfdir}/yum.repos.d/negativo17-fedora-nvidia.repo
4134
install -Dm0644 %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/nvidia-container-toolkit.repo %{buildroot}%{_sysconfdir}/yum.repos.d/nvidia-container-toolkit.repo
4235
install -Dm0644 %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/eyecantcu-supergfxctl.repo %{buildroot}%{_sysconfdir}/yum.repos.d/eyecantcu-supergfxctl.repo
4336
install -Dm0644 %{buildroot}%{_datadir}/ublue-os/%{_datadir}/selinux/packages/nvidia-container.pp %{buildroot}%{_datadir}/selinux/packages/nvidia-container.pp
4437
install -Dm0644 %{buildroot}%{_datadir}/ublue-os/%{_unitdir}/ublue-nvctk-cdi.service %{buildroot}%{_unitdir}/ublue-nvctk-cdi.service
4538

4639
%files
47-
%attr(0644,root,root) %{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/negativo17-fedora-nvidia.repo
4840
%attr(0644,root,root) %{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/nvidia-container-toolkit.repo
4941
%attr(0644,root,root) %{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/eyecantcu-supergfxctl.repo
5042
%attr(0644,root,root) %{_datadir}/ublue-os/%{_datadir}/selinux/packages/nvidia-container.pp
5143
%attr(0644,root,root) %{_datadir}/ublue-os/%{_sysconfdir}/sway/environment
5244
%attr(0644,root,root) %{_datadir}/ublue-os/%{_unitdir}/ublue-nvctk-cdi.service
53-
%attr(0644,root,root) %{_sysconfdir}/yum.repos.d/negativo17-fedora-nvidia.repo
5445
%attr(0644,root,root) %{_sysconfdir}/yum.repos.d/nvidia-container-toolkit.repo
5546
%attr(0644,root,root) %{_sysconfdir}/yum.repos.d/eyecantcu-supergfxctl.repo
5647
%attr(0644,root,root) %{_datadir}/selinux/packages/nvidia-container.pp
5748
%attr(0644,root,root) %{_unitdir}/ublue-nvctk-cdi.service
5849
%attr(0644,root,root) %{_presetdir}/70-ublue-nvctk-cdi.preset
5950

6051
%changelog
61-
* Sat Apr 13 Benjamin Sherman <benjamin@holyarmy.org> - 0.11
62-
- Add negativo17 fedora-nvidia repo for switch of NVIDIA driver source
63-
- Provided third-party repos are no longer enabled by default
64-
6552
* Fri Oct 6 2023 Benjamin Sherman <benjamin@holyarmy.org> - 0.10
6653
- add ublue-nvctk-cdi service to auto-generate NVIDIA CDI GPU definitions
6754

0 commit comments

Comments
 (0)