summaryrefslogtreecommitdiff
path: root/akmods
diff options
context:
space:
mode:
authorseth <[email protected]>2024-01-25 08:20:48 -0500
committerseth <[email protected]>2024-01-25 11:16:13 -0500
commitc9e0dd7c15260eb73d59b9996a5a9a17548afd59 (patch)
treeb23d24c9e463a76205ac464e381cb9e6685013f5 /akmods
parent4a2a030af2daef14c40a16e00ad186ac77796cea (diff)
don't use script files
Diffstat (limited to 'akmods')
-rw-r--r--akmods/Containerfile65
-rw-r--r--akmods/NOTICE.md2
-rwxr-xr-xakmods/build_cert.sh8
-rwxr-xr-xakmods/build_nvidia.sh28
-rwxr-xr-xakmods/install.sh7
-rwxr-xr-xakmods/prep.sh27
6 files changed, 59 insertions, 78 deletions
diff --git a/akmods/Containerfile b/akmods/Containerfile
index 5d2c892..8a6a01b 100644
--- a/akmods/Containerfile
+++ b/akmods/Containerfile
@@ -2,20 +2,71 @@ ARG BASE_IMAGE="quay.io/fedora-ostree-desktops/base"
ARG FEDORA_VERSION="${FEDORA_VERSION:-39}"
FROM ${BASE_IMAGE}:${FEDORA_VERSION} as builder
+ARG FEDORA_VERSION="${FEDORA_VERSION:-39}"
ARG NVIDIA_VERSION="${NVIDIA_VERSION:-535}"
-COPY prep.sh /tmp/prep.sh
-COPY build_*.sh /tmp
-COPY install.sh /tmp/install.sh
+
COPY certs /tmp/certs
COPY akmods-cert.spec /tmp/akmods-cert/akmods-cert.spec
-RUN /tmp/prep.sh
+RUN mkdir -p \
+ # this is required for ld to work and build akmods
+ # see https://github.com/coreos/rpm-ostree/issues/4201 &
+ # https://github.com/coreos/rpm-ostree/issues/1614
+ /var/lib/alternatives \
+ # for signed artifacts
+ /var/cache/rpms/kmods \
+ # for akmods public cert
+ /var/cache/rpms/akmods-cert
+
+# setup rpmfusion
+RUN rpm-ostree install \
+ https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-${FEDORA_VERSION}.noarch.rpm \
+ https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-${FEDORA_VERSION}.noarch.rpm
+
+# install test or real keys
+RUN if [ ! -e /tmp/certs/private_key.priv ]; then \
+ echo "WARNING: Using test signing key" && \
+ cp /tmp/certs/private_key.priv{.test,} && \
+ cp /tmp/certs/public_key.der{.test,}; \
+fi
+
+RUN install -Dm644 {/tmp/certs,/etc/pki/akmods/certs}/public_key.der && \
+ install -Dm644 {/tmp/certs,/etc/pki/akmods/private}/private_key.priv
+
+# install kmods
+RUN rpm-ostree install \
+ akmods \
+ mock \
+ # nvidia
+ akmod-nvidia-${NVIDIA_VERSION}* \
+ xorg-x11-drv-nvidia-{cuda,power}-${NVIDIA_VERSION}*
+
+
+# nvidia
+RUN export kernel_version="$(rpm -q kernel --queryformat '%{VERSION}-%{RELEASE}.%{ARCH}')" && \
+ export akmod_version="$(basename "$(rpm -q akmod-nvidia --queryformat '%{VERSION}-%{RELEASE}')" ".fc${release%%.*}")" && \
+ akmods --force --kernels "$kernel_version" --kmod nvidia && \
+ if ! modinfo /usr/lib/modules/"$kernel_version"/extra/nvidia/nvidia{,-drm,-modeset,-peermem,-uvm}.ko.xz &> /dev/null; then \
+ cat /var/cache/akmods/nvidia/"$akmod_version"-for-"$kernel_version".failed.log && exit 1; \
+ fi
+
+
+# certificate rpm
+RUN install -D /etc/pki/akmods/certs/public_key.der /tmp/akmods-cert/rpmbuild/SOURCES/public_key.der
+RUN rpmbuild -ba \
+ --define '_topdir /tmp/akmods-cert/rpmbuild' \
+ --define '%_tmppath %{_topdir}/tmp' \
+ /tmp/akmods-cert/akmods-cert.spec
+
-RUN /tmp/build_nvidia.sh ${NVIDIA_VERSION}
-RUN /tmp/build_cert.sh
+# wrap everything up
+RUN cp /tmp/akmods-cert/rpmbuild/RPMS/noarch/getchoo-akmods-cert*.rpm /var/cache/rpms/akmods-cert/
+RUN find /var/cache/akmods -type f -name \*.rpm | while read -r rpm; do \
+ cp "$rpm" /var/cache/rpms/kmods/; \
+done
-RUN /tmp/install.sh
+# send it off
FROM scratch
COPY --from=builder /var/cache/rpms /rpms
diff --git a/akmods/NOTICE.md b/akmods/NOTICE.md
index 99e8f10..9ee1144 100644
--- a/akmods/NOTICE.md
+++ b/akmods/NOTICE.md
@@ -2,7 +2,7 @@
The section uses code derived from ublue-os' [akmods](https://github.com/ublue-os/akmods) repository.
Specifically `build-ublue-os-akmods-addons.sh`, `ublue-os-akmods-addons.spec`, `build-prep.sh`, and
-`build-kmod-nvidia.sh` were modified
+`build-kmod-nvidia.sh` were adapted into the Containerfile
```
Apache License
diff --git a/akmods/build_cert.sh b/akmods/build_cert.sh
deleted file mode 100755
index 65e60e7..0000000
--- a/akmods/build_cert.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env bash
-set -euxo pipefail
-
-install -D /etc/pki/akmods/certs/public_key.der /tmp/akmods-cert/rpmbuild/SOURCES/public_key.der
-rpmbuild -ba \
- --define '_topdir /tmp/akmods-cert/rpmbuild' \
- --define '%_tmppath %{_topdir}/tmp' \
- /tmp/akmods-cert/akmods-cert.spec
diff --git a/akmods/build_nvidia.sh b/akmods/build_nvidia.sh
deleted file mode 100755
index 1931149..0000000
--- a/akmods/build_nvidia.sh
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/usr/bin/env bash
-set -euxo pipefail
-
-_usage="
-usage: ./build_nvidia.sh nvidia_driver_version
-"
-
-if [ $# -lt 1 ]; then
- echo "$_usage"
- exit 1
-fi
-
-NVIDIA_VERSION="$1"
-release="$(rpm -E '%fedora.%_arch')"
-
-rpm-ostree install \
- akmod-nvidia-"$NVIDIA_VERSION"* \
- xorg-x11-drv-nvidia-{cuda,power}-"$NVIDIA_VERSION"* \
-
-# Either successfully build and install the kernel modules, or fail early with debug output
-kernel_version="$(rpm -q kernel --queryformat '%{VERSION}-%{RELEASE}.%{ARCH}')"
-akmod_version="$(basename "$(rpm -q akmod-nvidia --queryformat '%{VERSION}-%{RELEASE}')" ".fc${release%%.*}")"
-
-akmods --force --kernels "$kernel_version" --kmod nvidia
-
-if ! modinfo /usr/lib/modules/"$kernel_version"/extra/nvidia/nvidia{,-drm,-modeset,-peermem,-uvm}.ko.xz &> /dev/null; then
- cat /var/cache/akmods/nvidia/"$akmod_version"-for-"$kernel_version".failed.log && exit 1
-fi
diff --git a/akmods/install.sh b/akmods/install.sh
deleted file mode 100755
index d8d1a87..0000000
--- a/akmods/install.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/usr/bin/env bash
-set -euxo pipefail
-
-cp /tmp/akmods-cert/rpmbuild/RPMS/noarch/getchoo-akmods-cert*.rpm /var/cache/rpms/akmods-cert/
-find /var/cache/akmods -type f -name \*.rpm | while read -r rpm; do
- cp "$rpm" /var/cache/rpms/kmods/
-done
diff --git a/akmods/prep.sh b/akmods/prep.sh
deleted file mode 100755
index b7ee4ae..0000000
--- a/akmods/prep.sh
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/usr/bin/env bash
-set -euxo pipefail
-
-# enable alternatives (for ld to be available)
-mkdir -p /var/lib/alternatives
-
-# install rpmfusion
-release=$(rpm -E %fedora)
-rpm-ostree install \
- "https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$release.noarch.rpm" \
- "https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$release.noarch.rpm"
-
-rpm-ostree install akmods mock
-
-if [ ! -e /tmp/certs/private_key.priv ]; then
- echo "WARNING: Using test signing key." >> "${GITHUB_OUTPUT:-/dev/stdout}"
- cp /tmp/certs/private_key.priv{.test,}
- cp /tmp/certs/public_key.der{.test,}
-fi
-
-install -Dm644 {/tmp/certs,/etc/pki/akmods/certs}/public_key.der
-install -Dm644 {/tmp/certs,/etc/pki/akmods/private}/private_key.priv
-
-# directory for signed artifacts
-mkdir -p /var/cache/rpms/kmods
-# directory for akmods public cert
-mkdir -p /var/cache/rpms/akmods-cert