Jakub Klinkovský pushed to branch main at Arch Linux / Packaging / Packages / nvidia-container-toolkit
Commits: 61b98e75 by Jakub Klinkovský at 2024-04-29T19:25:49+02:00 upgpkg: 1.15.0-2: improve pacman hook for CDI regeneration When the NVIDIA driver gets updated, running nvidia-ctk fails due to a NVML version mismatch. In this case, we fall back to plain string substitution to update the NVIDIA version in the previously generated CDI file. Addresses https://gitlab.archlinux.org/archlinux/packaging/packages/nvidia-container-toolkit/-/issues/2 - - - - - 4 changed files: - .SRCINFO - PKGBUILD - + nvidia-ctk-cdi - nvidia-ctk-cdi.hook Changes: ===================================== .SRCINFO ===================================== @@ -1,7 +1,7 @@ pkgbase = nvidia-container-toolkit pkgdesc = NVIDIA container toolkit pkgver = 1.15.0 - pkgrel = 1 + pkgrel = 2 url = https://github.com/NVIDIA/nvidia-container-toolkit arch = x86_64 license = Apache-2.0 @@ -11,8 +11,10 @@ pkgbase = nvidia-container-toolkit options = !lto backup = etc/nvidia-container-runtime/config.toml source = nvidia-container-toolkit-1.15.0.tar.gz::https://github.com/NVIDIA/nvidia-container-toolkit/archive/v1.15.0.tar.gz + source = nvidia-ctk-cdi source = nvidia-ctk-cdi.hook b2sums = 6f8764a71490d2836af690d4ef4ee4831d9613add430f720cb08c7e347d1675411471bbeda2155e567b5ae3f99220bfc4524081ab364c451d30e12b12be6196e - b2sums = 38484d2c593696c6c103f794e37c4ac62eba69913413d22a43bf56f9469b5c9aed4232640ef36628cdd263b8ee0969d653ec154228ba7c085007f14837cb6aa8 + b2sums = 196ba959e25b7bc9a6087b192a09196c6c46e4a2a0a6dbf1de158c06dc852b822235fb6193f10311c89d06bc722035fd807cab3afa560bf49e6181a9e14b6bd6 + b2sums = 35bf8bacda43f571858d40a99f6606400f4087265267f337432c72aab856aadc0b1544a83517419c19c5b57dcabaa721f3b28de21ae0b34a8dd82ea0cdb9e847 pkgname = nvidia-container-toolkit ===================================== PKGBUILD ===================================== @@ -5,7 +5,7 @@ pkgname=nvidia-container-toolkit pkgver=1.15.0 -pkgrel=1 +pkgrel=2 pkgdesc="NVIDIA container toolkit" arch=(x86_64) url="https://github.com/NVIDIA/nvidia-container-toolkit" @@ -16,9 +16,11 @@ backup=('etc/nvidia-container-runtime/config.toml') # we cannot use LTO as otherwise we do not get reproducible package with full RELRO options=('!lto') source=("$pkgname-$pkgver.tar.gz::$url/archive/v$pkgver.tar.gz" + nvidia-ctk-cdi nvidia-ctk-cdi.hook) b2sums=('6f8764a71490d2836af690d4ef4ee4831d9613add430f720cb08c7e347d1675411471bbeda2155e567b5ae3f99220bfc4524081ab364c451d30e12b12be6196e' - '38484d2c593696c6c103f794e37c4ac62eba69913413d22a43bf56f9469b5c9aed4232640ef36628cdd263b8ee0969d653ec154228ba7c085007f14837cb6aa8') + '196ba959e25b7bc9a6087b192a09196c6c46e4a2a0a6dbf1de158c06dc852b822235fb6193f10311c89d06bc722035fd807cab3afa560bf49e6181a9e14b6bd6' + '35bf8bacda43f571858d40a99f6606400f4087265267f337432c72aab856aadc0b1544a83517419c19c5b57dcabaa721f3b28de21ae0b34a8dd82ea0cdb9e847') prepare() { cd "$pkgname-$pkgver" @@ -54,6 +56,7 @@ package() { # install pacman hook install -vDm 644 ../nvidia-ctk-cdi.hook -t "$pkgdir/usr/share/libalpm/hooks/" + install -vDm 755 ../nvidia-ctk-cdi -t "$pkgdir/usr/share/libalpm/scripts/" # install the license install -vDm 644 LICENSE -t "$pkgdir/usr/share/licenses/$pkgname/" ===================================== nvidia-ctk-cdi ===================================== @@ -0,0 +1,23 @@ +#!/bin/bash + +set -eu + +cdi_file=/etc/cdi/nvidia.yaml + +# determine the old nvidia-utils version used in the CDI file +if [[ -f "$cdi_file" ]]; then + old_version=$(sed -ne 's|.*hostPath: /usr/lib/libcuda.so.\([0-9.]\+\)|\1|p' "$cdi_file") +fi + +# determine the new nvidia-utils version as installed in the system +new_version=$(realpath /usr/lib/libcuda.so) +new_version=${new_version#/usr/lib/libcuda.so.} + +if ! [[ -f "$cdi_file" ]] || [[ "$old_version" == "$new_version" ]]; then + nvidia-ctk --quiet cdi generate --output="$cdi_file" +else + printf "WARNING: updating nvidia-utils version (%s -> %s) in %s using plain string substitution.\n" "$old_version" "$new_version" "$cdi_file" + printf " -> If you meet problems, run the following command to regenerate the CDI file:\n" + printf " nvidia-ctk cdi generate --output=\"%s\"\n" "$cdi_file" + sed -i "s|$old_version|$new_version|g" "$cdi_file" +fi ===================================== nvidia-ctk-cdi.hook ===================================== @@ -4,9 +4,10 @@ Operation = Install Operation = Upgrade Target = nvidia-utils Target = nvidia-container-toolkit +Target = opencl-nvidia [Action] Description = Regenerate NVIDIA CDI (Container Device Interface) -Exec = /usr/bin/nvidia-ctk --quiet cdi generate --output=/etc/cdi/nvidia.yaml +Exec = /usr/share/libalpm/scripts/nvidia-ctk-cdi When = PostTransaction Depends = nvidia-utils View it on GitLab: https://gitlab.archlinux.org/archlinux/packaging/packages/nvidia-container-toolkit/-/commit/61b98e7549919e73f3de851d7b5264dc2ba33c7c -- This project does not include diff previews in email notifications. View it on GitLab: https://gitlab.archlinux.org/archlinux/packaging/packages/nvidia-container-toolkit/-/commit/61b98e7549919e73f3de851d7b5264dc2ba33c7c You're receiving this email because of your account on gitlab.archlinux.org.