diff options
| author | seth <[email protected]> | 2024-01-25 08:20:48 -0500 |
|---|---|---|
| committer | seth <[email protected]> | 2024-01-25 11:16:13 -0500 |
| commit | c9e0dd7c15260eb73d59b9996a5a9a17548afd59 (patch) | |
| tree | b23d24c9e463a76205ac464e381cb9e6685013f5 /akmods | |
| parent | 4a2a030af2daef14c40a16e00ad186ac77796cea (diff) | |
don't use script files
Diffstat (limited to 'akmods')
| -rw-r--r-- | akmods/Containerfile | 65 | ||||
| -rw-r--r-- | akmods/NOTICE.md | 2 | ||||
| -rwxr-xr-x | akmods/build_cert.sh | 8 | ||||
| -rwxr-xr-x | akmods/build_nvidia.sh | 28 | ||||
| -rwxr-xr-x | akmods/install.sh | 7 | ||||
| -rwxr-xr-x | akmods/prep.sh | 27 |
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 |
