# SPDX-License-Identifier: NVIDIA DEEP LEARNING CONTAINER LICENSE

#     Copyright (c) 2026 SUSE LLC

# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon.

# The content of THIS FILE IS AUTOGENERATED and should not be manually modified.
# It is maintained by the BCI team and generated by
# https://github.com/SUSE/BCI-dockerfile-generator

# Please submit bugfixes or comments via https://bugs.opensuse.org/
# You can contact the BCI team via https://github.com/SUSE/bci/discussions

#!UseOBSRepositories
#!ExclusiveArch: aarch64
#!BuildTag: third-party/nvidia/driver:570.195.03-64kb-sles%OS_VERSION_ID_SP%-%RELEASE%
#!BuildTag: third-party/nvidia/driver:570.195.03-64kb-sles%OS_VERSION_ID_SP%
#!BcntSyncTag: nvidia-driver-image
#!BuildName: nvidia-driver-570.195.03-64kb
#!BuildVersion: 15.7.570.195.03
FROM registry.suse.com/bci/bci-micro:15.7 AS target
FROM registry.suse.com/bci/bci-base:15.7 AS nvidia-driver-builder
COPY --from=target / /target
RUN set -euo pipefail; zypper -n install --no-recommends dwarves elfutils gcc libelf-devel pesign-obs-integration zstd dracut gcc-c++ make mokutil pciutils perl-Bootloader python3 systemd xz
RUN set -euo pipefail; \
    export CHKSTAT_ALLOW_INSECURE_MODE_IF_NO_PROC=1; \
    zypper -n --installroot /target --gpg-auto-import-keys install --no-recommends awk coreutils findutils grep jq kmod rpm-ndb sed util-linux util-linux-systemd
RUN mkdir -p /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/sles15/x86_64/libOpenCL1-2.2.11-8.3.1.x86_64.rpm sha256:d0a60fce054572969271cd27629574cd35930fcb3b83c9685acc6c267b931e6e
COPY libOpenCL1-2.2.11-8.3.1.x86_64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/sles15/sbsa/libOpenCL1-2.2.11-8.3.1.aarch64.rpm sha256:a664cba336a0fb95fedaaf29b002ea064ef91d1b304dce263dcd1f99be03fadd
COPY libOpenCL1-2.2.11-8.3.1.aarch64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/sles15/x86_64/nvidia-common-G06-570.195.03-1.x86_64.rpm sha256:7464655a9c686d18cbcec1429240d308616894a841481f813b6f3b1f04841f59
COPY nvidia-common-G06-570.195.03-1.x86_64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/sles15/sbsa/nvidia-common-G06-570.195.03-1.aarch64.rpm sha256:7b2c293c97097c2d21f2239fb6d6570eb4e6f89d9828a3675c4556214aaf3288
COPY nvidia-common-G06-570.195.03-1.aarch64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/sles15/x86_64/nvidia-compute-G06-570.195.03-1.x86_64.rpm sha256:19fdd4bc3a0157e77f5af79c55564983c8c385f1547861bdd0b029c145417f47
COPY nvidia-compute-G06-570.195.03-1.x86_64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/sles15/sbsa/nvidia-compute-G06-570.195.03-1.aarch64.rpm sha256:2e82443837ee937d498b1541f9552d4b8d661c1e9028d3685b4f9b5732baffc0
COPY nvidia-compute-G06-570.195.03-1.aarch64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/sles15/x86_64/nvidia-compute-utils-G06-570.195.03-1.x86_64.rpm sha256:f5663e2797a37c206498ccc52652bdceae10f948aab50d330043a94e578f6316
COPY nvidia-compute-utils-G06-570.195.03-1.x86_64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/sles15/sbsa/nvidia-compute-utils-G06-570.195.03-1.aarch64.rpm sha256:2f60afb2f62be609a859747d2db49eb6c851a2979df0901f468e8bc1f0fd8619
COPY nvidia-compute-utils-G06-570.195.03-1.aarch64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/sles15/sbsa/nvidia-driver-G06-kmp-64kb-570.195.03-1.aarch64.rpm sha256:e63ae60dd49d41614acfa669d5c275f9fd601cbe371577647faa9d26ec30e83f
COPY nvidia-driver-G06-kmp-64kb-570.195.03-1.aarch64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/sles15/x86_64/nvidia-driver-assistant-0.46.126.20-1.noarch.rpm nvidia-driver-assistant-0.46.126.20-1.x86_64.rpm sha256:00985339e19dfba6555738dffcfda80774f6415ff505142e1098e74139300198
COPY nvidia-driver-assistant-0.46.126.20-1.x86_64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/sles15/sbsa/nvidia-driver-assistant-0.46.126.20-1.noarch.rpm nvidia-driver-assistant-0.46.126.20-1.aarch64.rpm sha256:00985339e19dfba6555738dffcfda80774f6415ff505142e1098e74139300198
COPY nvidia-driver-assistant-0.46.126.20-1.aarch64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/sles15/x86_64/nvidia-modprobe-570.195.03-1.x86_64.rpm sha256:8118da1dc029897ff617dd8c2ced912594f96e4e27a3acb1048f6f91e1f7cab1
COPY nvidia-modprobe-570.195.03-1.x86_64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/sles15/sbsa/nvidia-modprobe-570.195.03-1.aarch64.rpm sha256:2e3f16f8b88de0821839c785a432c2f234c3a1c97391ef422ed6af1ae501063c
COPY nvidia-modprobe-570.195.03-1.aarch64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/sles15/sbsa/nvidia-open-driver-G06-kmp-64kb-570.195.03-1.aarch64.rpm sha256:fdb54b0c33beb6c565829ec593d18cee4f34264d77474bef62beae7f9e2c889b
COPY nvidia-open-driver-G06-kmp-64kb-570.195.03-1.aarch64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/sles15/x86_64/nvidia-persistenced-570.195.03-1.x86_64.rpm sha256:9d42bd57f352ddda310dbe02b0644a9ede44cb6e35c03eeb3dde161212d624bc
COPY nvidia-persistenced-570.195.03-1.x86_64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/sles15/sbsa/nvidia-persistenced-570.195.03-1.aarch64.rpm sha256:4a1690fa421e4c3b5e10c3a49ed62ec6f4c23cbfb452c671f11bd91e01e3349f
COPY nvidia-persistenced-570.195.03-1.aarch64.rpm /tmp/
#!RemoteAssetUrl: https://api.opensuse.org/public/build/SUSE:SLE-15-SP7:GA/pool/aarch64/kernel-64kb/kernel-64kb-6.4.0-150700.51.1.aarch64.rpm
COPY kernel-64kb-6.4.0-150700.51.1.aarch64.rpm /tmp/
#!RemoteAssetUrl: https://api.opensuse.org/public/build/SUSE:SLE-15-SP7:GA/pool/aarch64/kernel-64kb/kernel-64kb-devel-6.4.0-150700.51.1.aarch64.rpm
COPY kernel-64kb-devel-6.4.0-150700.51.1.aarch64.rpm /tmp/
#!RemoteAssetUrl: https://api.opensuse.org/public/build/SUSE:SLE-15-SP7:GA/pool/aarch64/kernel-default/kernel-default-devel-6.4.0-150700.51.1.aarch64.rpm
COPY kernel-default-devel-6.4.0-150700.51.1.aarch64.rpm /tmp/
#!RemoteAssetUrl: https://api.opensuse.org/public/build/SUSE:SLE-15-SP7:GA/pool/aarch64/kernel-syms/kernel-syms-6.4.0-150700.51.1.aarch64.rpm
COPY kernel-syms-6.4.0-150700.51.1.aarch64.rpm /tmp/
#!RemoteAssetUrl: https://api.opensuse.org/public/build/SUSE:SLE-15-SP7:GA/pool/aarch64/kernel-source/kernel-devel-6.4.0-150700.51.1.noarch.rpm kernel-devel-6.4.0-150700.51.1.aarch64.rpm
COPY kernel-devel-6.4.0-150700.51.1.aarch64.rpm /tmp/
#!RemoteAssetUrl: https://api.opensuse.org/public/build/SUSE:SLE-15-SP7:GA/pool/aarch64/kernel-source/kernel-macros-6.4.0-150700.51.1.noarch.rpm kernel-macros-6.4.0-150700.51.1.aarch64.rpm
COPY kernel-macros-6.4.0-150700.51.1.aarch64.rpm /tmp/

COPY cuda-sles15-x86_64.repo /etc/zypp/repos.d/cuda-sles15-x86_64.repo
COPY cuda-sles15-x86_64.gpg.key /tmp/cuda-sles15-x86_64.gpg.key
RUN rpm --import /tmp/cuda-sles15-x86_64.gpg.key
RUN rpm --root /target --import /tmp/cuda-sles15-x86_64.gpg.key
COPY cuda-sles15-sbsa.repo /etc/zypp/repos.d/cuda-sles15-sbsa.repo
COPY cuda-sles15-sbsa.gpg.key /tmp/cuda-sles15-sbsa.gpg.key
RUN rpm --import /tmp/cuda-sles15-sbsa.gpg.key
RUN rpm --root /target --import /tmp/cuda-sles15-sbsa.gpg.key
FROM nvidia-driver-builder AS open-driver-builder
RUN set -euo pipefail; if [ "$(uname -m)" = "aarch64" ]; then \
        zypper -n --gpg-auto-import-keys install \
            --capability \
            --no-recommends \
            --auto-agree-with-licenses \
            /tmp/libOpenCL1-2.2.11-8.3.1.aarch64.rpm \
            /tmp/nvidia-common-G06-570.195.03-1.aarch64.rpm \
            /tmp/nvidia-compute-G06-570.195.03-1.aarch64.rpm \
            /tmp/nvidia-compute-utils-G06-570.195.03-1.aarch64.rpm \
            /tmp/nvidia-driver-assistant-0.46.126.20-1.aarch64.rpm \
            /tmp/nvidia-modprobe-570.195.03-1.aarch64.rpm \
            /tmp/nvidia-open-driver-G06-kmp-64kb-570.195.03-1.aarch64.rpm \
            /tmp/nvidia-persistenced-570.195.03-1.aarch64.rpm \
            /tmp/kernel-64kb-6.4.0-150700.51.1.aarch64.rpm \
            /tmp/kernel-64kb-devel-6.4.0-150700.51.1.aarch64.rpm \
            /tmp/kernel-default-devel-6.4.0-150700.51.1.aarch64.rpm \
            /tmp/kernel-syms-6.4.0-150700.51.1.aarch64.rpm \
            /tmp/kernel-devel-6.4.0-150700.51.1.aarch64.rpm \
            /tmp/kernel-macros-6.4.0-150700.51.1.aarch64.rpm; \
    fi

RUN set -euo pipefail; if rpm -q dkms >/dev/null 2>&1; then \
        printf 'compress="zstd"\n' > /etc/dkms/framework.conf.d/module-compress.conf; \
        dkms autoinstall -k $(basename /lib/modules/*-64kb); \
    fi
RUN set -euo pipefail; cp -rfx /lib/modules/*/updates /opt/open
RUN set -euo pipefail; mkdir /opt/lib && cp -rfx /lib/firmware /opt/lib/firmware

FROM nvidia-driver-builder AS closed-driver-builder
RUN set -euo pipefail; if [ "$(uname -m)" = "aarch64" ]; then \
        zypper -n --gpg-auto-import-keys install \
            --capability \
            --no-recommends \
            --auto-agree-with-licenses \
            /tmp/libOpenCL1-2.2.11-8.3.1.aarch64.rpm \
            /tmp/nvidia-common-G06-570.195.03-1.aarch64.rpm \
            /tmp/nvidia-compute-G06-570.195.03-1.aarch64.rpm \
            /tmp/nvidia-compute-utils-G06-570.195.03-1.aarch64.rpm \
            /tmp/nvidia-driver-G06-kmp-64kb-570.195.03-1.aarch64.rpm \
            /tmp/nvidia-driver-assistant-0.46.126.20-1.aarch64.rpm \
            /tmp/nvidia-modprobe-570.195.03-1.aarch64.rpm \
            /tmp/nvidia-persistenced-570.195.03-1.aarch64.rpm \
            /tmp/kernel-64kb-6.4.0-150700.51.1.aarch64.rpm \
            /tmp/kernel-64kb-devel-6.4.0-150700.51.1.aarch64.rpm \
            /tmp/kernel-default-devel-6.4.0-150700.51.1.aarch64.rpm \
            /tmp/kernel-syms-6.4.0-150700.51.1.aarch64.rpm \
            /tmp/kernel-devel-6.4.0-150700.51.1.aarch64.rpm \
            /tmp/kernel-macros-6.4.0-150700.51.1.aarch64.rpm; \
    fi

RUN set -euo pipefail; if rpm -q dkms >/dev/null 2>&1; then \
        printf 'compress="zstd"\n' > /etc/dkms/framework.conf.d/module-compress.conf; \
        dkms autoinstall -k $(basename /lib/modules/*-64kb); \
    fi
RUN set -euo pipefail; cp -rfx /lib/modules/*/updates /opt/proprietary

FROM nvidia-driver-builder AS builder

COPY --from=open-driver-builder /usr/share/nvidia-driver-assistant/supported-gpus/supported-gpus.json /target/usr/share/nvidia-driver-assistant/supported-gpus/supported-gpus.json
COPY --from=open-driver-builder /opt/lib /target/opt/lib
COPY --from=open-driver-builder /opt/open /target/opt/open
COPY --from=closed-driver-builder /opt/proprietary /target/opt/proprietary
RUN set -euo pipefail; if [ "$(uname -m)" = "aarch64" ]; then \
        rpm --root /target -Uvh --nodeps \
            /tmp/libOpenCL1-2.2.11-8.3.1.aarch64.rpm \
            /tmp/nvidia-common-G06-570.195.03-1.aarch64.rpm \
            /tmp/nvidia-compute-G06-570.195.03-1.aarch64.rpm \
            /tmp/nvidia-compute-utils-G06-570.195.03-1.aarch64.rpm \
            /tmp/nvidia-driver-assistant-0.46.126.20-1.aarch64.rpm \
            /tmp/nvidia-modprobe-570.195.03-1.aarch64.rpm \
            /tmp/nvidia-persistenced-570.195.03-1.aarch64.rpm; \
    fi

RUN set -euo pipefail; if rpm --root /target -q compat-usrmerge-tools; then rpm --root /target -e compat-usrmerge-tools; fi

# cleanup logs and temporary files
RUN set -euo pipefail; zypper -n --installroot /target clean -a; \
    rm -rf {/target,}/var/log/{alternatives.log,lastlog,tallylog,zypper.log,zypp/history,YaST2}; \
    rm -rf {/target,}/run/*; \
    rm -f {/target,}/etc/{shadow-,group-,passwd-,.pwd.lock}; \
    rm -f {/target,}/usr/lib/sysimage/rpm/.rpm.lock; \
    rm -f {/target,}/var/lib/zypp/AnonymousUniqueId; \
    rm -f {/target,}/var/lib/zypp/AutoInstalled; \
    rm -f {/target,}/var/cache/ldconfig/aux-cache

# set the day of last password change to empty
RUN set -euo pipefail; sed -i 's/^\([^:]*:[^:]*:\)[^:]*\(:.*\)$/\1\2/' /target/etc/shadow
FROM registry.suse.com/bci/bci-micro:15.7
COPY --from=builder /target /
# Define labels according to https://en.opensuse.org/Building_derived_containers
# labelprefix=com.suse.third-party.nvidia-driver
LABEL org.opencontainers.image.authors="https://github.com/SUSE/bci/discussions"
LABEL org.opencontainers.image.title="SLE BCI NVIDIA Driver"
LABEL org.opencontainers.image.description="NVIDIA Driver container based on the SUSE Linux Enterprise Base Container Image."
LABEL org.opencontainers.image.version="570.195.03"
LABEL org.opencontainers.image.url="https://www.suse.com/products/base-container-images/"
LABEL org.opencontainers.image.created="%BUILDTIME%"
LABEL org.opencontainers.image.vendor="SUSE LLC"
LABEL org.opencontainers.image.source="%SOURCEURL%"
LABEL org.opencontainers.image.ref.name="570.195.03-64kb-sles%OS_VERSION_ID_SP%"
LABEL org.opensuse.reference="registry.suse.com/third-party/nvidia/driver:570.195.03-64kb-sles%OS_VERSION_ID_SP%-%RELEASE%"
LABEL org.openbuildservice.disturl="%DISTURL%"
LABEL com.suse.supportlevel="techpreview"
LABEL com.suse.supportlevel.until=""
LABEL com.suse.eula="sle-beta"
LABEL com.suse.lifecycle-url="https://www.suse.com/lifecycle#suse-linux-enterprise-server-15"
LABEL com.suse.release-stage="beta"
# endlabelprefix
LABEL org.opencontainers.image.base.name="%BASE_REFNAME%"
LABEL org.opencontainers.image.base.digest="%BASE_DIGEST%"
LABEL io.artifacthub.package.readme-url="%SOURCEURL_WITH(README.driver-570.195.03-64kb.md)%"
ENV DISABLE_VGPU_VERSION_CHECK="true"
ENV DRIVER_BRANCH="570"
ENV DRIVER_TYPE="passthrough"
ENV DRIVER_VERSION="570.195.03"
ENV KERNEL_VERSION="latest"
ENV NVIDIA_VISIBLE_DEVICES="void"
ENV VGPU_LICENSE_SERVER_TYPE="NLS"
ENTRYPOINT ["nvidia-driver", "load"]

COPY extract-vmlinux /usr/local/bin/
RUN set -euo pipefail; chmod +x /usr/local/bin/extract-vmlinux

COPY nvidia-driver /usr/local/bin/
RUN set -euo pipefail; chmod +x /usr/local/bin/nvidia-driver

COPY nvidia-driver-selector.sh /usr/local/bin/
RUN set -euo pipefail; chmod +x /usr/local/bin/nvidia-driver-selector.sh

RUN set -euo pipefail; mkdir /licenses
COPY NGC-DL-CONTAINER-LICENSE /licenses

RUN set -euo pipefail; mkdir /drivers
COPY vGPU-README.md /drivers/README.md

WORKDIR /drivers

ENTRYPOINT ["nvidia-driver", "load"]
# Avoid blkid waiting on udev (bsc#1247914)
RUN set -euo pipefail; sed -i -e 's/^EVALUATE=.*/EVALUATE=scan/g' /etc/blkid.conf
