@@ -47,33 +47,85 @@ ARG VERSION="N/A"
4747ARG GIT_COMMIT="unknown"
4848RUN make PREFIX=/artifacts cmd-nvidia-ctk-installer
4949
50- FROM nvcr.io/nvidia/cuda:12.8.1-base-ubi8
51-
52- ENV NVIDIA_DISABLE_REQUIRE="true"
53- ENV NVIDIA_VISIBLE_DEVICES=void
54- ENV NVIDIA_DRIVER_CAPABILITIES=utility
50+ FROM nvcr.io/nvidia/cuda:12.8.1-base-ubi8 AS packaging
5551
5652ARG ARTIFACTS_ROOT
57- ARG PACKAGE_DIST
58- COPY ${ARTIFACTS_ROOT}/${PACKAGE_DIST} /artifacts/packages/${PACKAGE_DIST}
53+ COPY ${ARTIFACTS_ROOT} /artifacts/packages/
5954
6055WORKDIR /artifacts/packages
6156
57+ # build-args are added to the manifest.txt file below.
58+ ARG PACKAGE_DIST
6259ARG PACKAGE_VERSION
60+ ARG GIT_BRANCH
61+ ARG GIT_COMMIT
62+ ARG GIT_COMMIT_SHORT
63+ ARG SOURCE_DATE_EPOCH
64+ ARG VERSION
65+
66+ # Create a manifest.txt file with the absolute paths of all deb and rpm packages in the container
67+ RUN echo "#IMAGE_EPOCH=$(date '+%s')" > /artifacts/manifest.txt && \
68+ env | sed 's/^/#/g' >> /artifacts/manifest.txt && \
69+ find /artifacts/packages -iname '*.deb' -o -iname '*.rpm' >> /artifacts/manifest.txt
70+
71+ RUN mkdir /licenses && mv /NGC-DL-CONTAINER-LICENSE /licenses/NGC-DL-CONTAINER-LICENSE
72+
73+ # The rpmpackages stage is used to extract the contents of the rpm packages.
74+ FROM nvcr.io/nvidia/cuda:12.8.1-base-ubi8 AS rpmpackages
75+ RUN dnf install -y cpio
76+
6377ARG TARGETARCH
64- ENV PACKAGE_ARCH=${TARGETARCH}
78+ ARG PACKAGE_DIST_RPM=centos7
6579
66- RUN PACKAGE_ARCH=${PACKAGE_ARCH/amd64/x86_64} && PACKAGE_ARCH=${PACKAGE_ARCH/arm64/aarch64} && \
67- yum localinstall -y \
68- ${PACKAGE_DIST}/${PACKAGE_ARCH}/libnvidia-container1-1.*.rpm \
69- ${PACKAGE_DIST}/${PACKAGE_ARCH}/libnvidia-container-tools-1.*.rpm \
70- ${PACKAGE_DIST}/${PACKAGE_ARCH}/nvidia-container-toolkit*-${PACKAGE_VERSION}*.rpm
80+ COPY --from=packaging /artifacts/packages/${PACKAGE_DIST_RPM} /rpm-packages
7181
72- WORKDIR /work
82+ RUN mkdir -p /artifacts/rpm
83+ RUN set -eux; \
84+ \
85+ case "${TARGETARCH}" in \
86+ x86_64 | amd64) ARCH='x86_64' ;; \
87+ ppc64el | ppc64le) ARCH='ppc64le' ;; \
88+ aarch64 | arm64) ARCH='aarch64' ;; \
89+ *) echo "unsupported architecture" ; exit 1 ;; \
90+ esac; \
91+ for p in $(ls /rpm-packages/${ARCH}/*.rpm); do rpm2cpio $p | cpio -idmv -D /artifacts/rpm; done
92+
93+ # The debpackages stage is used to extract the contents of deb packages.
94+ FROM nvcr.io/nvidia/cuda:12.8.1-base-ubuntu20.04 AS debpackages
7395
74- COPY --from=build /artifacts/nvidia-ctk-installer /work/nvidia-ctk-installer
75- RUN ln -s nvidia-ctk-installer nvidia-toolkit
96+ ARG TARGETARCH
97+ ARG PACKAGE_DIST_DEB=ubuntu18.04
98+
99+ COPY --from=packaging /artifacts/packages/${PACKAGE_DIST_DEB} /deb-packages
100+
101+ RUN mkdir -p /artifacts/deb
102+ RUN set -eux; \
103+ \
104+ case "${TARGETARCH}" in \
105+ x86_64 | amd64) ARCH='amd64' ;; \
106+ ppc64el | ppc64le) ARCH='ppc64le' ;; \
107+ aarch64 | arm64) ARCH='arm64' ;; \
108+ *) echo "unsupported architecture" ; exit 1 ;; \
109+ esac; \
110+ for p in $(ls /deb-packages/${ARCH}/*.deb); do dpkg-deb -xv $p /artifacts/deb/; done
76111
112+ FROM nvcr.io/nvidia/cuda:12.8.1-base-ubi8 AS artifacts
113+
114+ COPY --from=rpmpackages /artifacts/rpm /artifacts/rpm
115+ COPY --from=debpackages /artifacts/deb /artifacts/deb
116+ COPY --from=build /artifacts/bin /artifacts/build
117+
118+ FROM nvcr.io/nvidia/cuda:12.6.2-base-ubi8
119+
120+ ENV NVIDIA_DISABLE_REQUIRE="true"
121+ ENV NVIDIA_VISIBLE_DEVICES=void
122+ ENV NVIDIA_DRIVER_CAPABILITIES=utility
123+
124+ COPY --from=artifacts /artifacts/rpm /artifacts/rpm
125+ COPY --from=artifacts /artifacts/deb /artifacts/deb
126+ COPY --from=artifacts /artifacts/build /work
127+
128+ WORKDIR /work
77129ENV PATH=/work:$PATH
78130
79131ARG VERSION
0 commit comments