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/Containerfile | |
| parent | 4a2a030af2daef14c40a16e00ad186ac77796cea (diff) | |
don't use script files
Diffstat (limited to 'akmods/Containerfile')
| -rw-r--r-- | akmods/Containerfile | 65 |
1 files changed, 58 insertions, 7 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 |
