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.


Reply via email to