Here is a shorter up-to-date PKGBUILD. A special patch for go 1.21 is required. Otherwise there is a segfault. Please also keep in mind, that this PKGBUILD is adapted to fit to my custom libnvidia-container PKGBUILD file: https://aur.archlinux.org/pkgbase/libnvidia-container#comment-944659
PKGBUILD
pkgname=nvidia-container-toolkit
pkgver=1.14.3
pkgrel=1
pkgdesc='NVIDIA container runtime toolkit'
arch=('x86_64')
url='https://github.com/NVIDIA/nvidia-container-toolkit'
license=('Apache')
makedepends=('go')
depends=('libnvidia-container>=1.14.0')
options=(!lto)
backup=('etc/nvidia-container-runtime/config.toml')
install="nvidia-container-toolkit.install"
source=("${pkgname}-${pkgver}-${pkgrel}.tar.gz"::"${url}/archive/v${pkgver}.tar.gz"
'go-nvml-79.patch')
sha256sums=('a8dbb6a8d45fe8cb2ecbb7b5d49c332e0e7270e8988e57d2a8587ab1e004f6dd'
'769eba6d4f1342904a8aa058f2f2f3f06f81178ebdaab0e95125903a6da75b4d')
build() {
cd "${pkgname}-${pkgver}"
# Patch go-nvml to work with go 1.21. Otherwise it will segfault during docker run.
# https://github.com/NVIDIA/go-nvml/pull/79
# https://github.com/NVIDIA/go-nvml/issues/36
patch -d "vendor/github.com/NVIDIA/go-nvml" -p1 < "${srcdir}/go-nvml-79.patch"
make cmds
}
package() {
cd "${pkgname}-${pkgver}"
# Install binaries.
install -D -m755 nvidia-container-runtime "${pkgdir}/usr/bin/nvidia-container-runtime"
install -D -m755 nvidia-container-runtime.cdi "${pkgdir}/usr/bin/nvidia-container-runtime.cdi"
install -D -m755 nvidia-container-runtime-hook "${pkgdir}/usr/bin/nvidia-container-runtime-hook"
install -D -m755 nvidia-container-runtime.legacy "${pkgdir}/usr/bin/nvidia-container-runtime.legacy"
install -D -m755 nvidia-ctk "${pkgdir}/usr/bin/nvidia-ctk"
# Symlink hook.
ln -sf "nvidia-container-runtime-hook" "${pkgdir}/usr/bin/nvidia-container-toolkit"
# Create config.
mkdir -p "${pkgdir}/etc/nvidia-container-runtime"
./nvidia-ctk --quiet config --config-file="${pkgdir}/etc/nvidia-container-runtime/config.toml" --in-place
}
nvidia-container-toolkit.install
post_install() {
echo "Patching '/etc/docker/daemon.json' to include the nvidia-container-runtime"
/usr/bin/nvidia-ctk runtime configure --runtime=docker
}
post_remove() {
echo "IMPORTANT: manually remove the nvidia-container-runtime from '/etc/docker/daemon.json'"
}
go-nvml-79.patch
From b8d34ba5dc71c7b5a261bbdfdec63fe337fac2a5 Mon Sep 17 00:00:00 2001
From: braydonk <braydonk@google.com>
Date: Tue, 3 Oct 2023 03:32:50 +0000
Subject: [PATCH] gen/nvml: add --export-dynamic linker flag
Signed-off-by: braydonk <braydonk@google.com>
---
pkg/nvml/const.go | 2 +-
pkg/nvml/nvml.go | 2 +-
32files changed, 2 insertions(+), 2 deletions(-)
diff --git a/pkg/nvml/const.go b/pkg/nvml/const.go
index 1a0efaf..a9a3a56 100644
--- a/pkg/nvml/const.go
+++ b/pkg/nvml/const.go
@@ -18,7 +18,7 @@
package nvml
/*
-#cgo LDFLAGS: -Wl,--unresolved-symbols=ignore-in-object-files
+#cgo LDFLAGS: -Wl,--export-dynamic -Wl,--unresolved-symbols=ignore-in-object-files
#cgo CFLAGS: -DNVML_NO_UNVERSIONED_FUNC_DEFS=1
#include "nvml.h"
#include <stdlib.h>
diff --git a/pkg/nvml/nvml.go b/pkg/nvml/nvml.go
index f63dfe8..bf2d6fc 100644
--- a/pkg/nvml/nvml.go
+++ b/pkg/nvml/nvml.go
@@ -18,7 +18,7 @@
package nvml
/*
-#cgo LDFLAGS: -Wl,--unresolved-symbols=ignore-in-object-files
+#cgo LDFLAGS: -Wl,--export-dynamic -Wl,--unresolved-symbols=ignore-in-object-files
#cgo CFLAGS: -DNVML_NO_UNVERSIONED_FUNC_DEFS=1
#include "nvml.h"
#include <stdlib.h>
Pinned Comments
jshap commented on 2019-07-28 01:43 (UTC) (edited on 2019-07-29 22:32 (UTC) by jshap)
see the release notes here for why this exists: https://github.com/NVIDIA/nvidia-container-runtime/releases/tag/3.1.0
tl;dr:
nvidia-docker
is deprecated because docker now has native gpu support, which this package is required to use. :)