Merge commit from fork
Some checks failed
CI Pipeline / code-scanning (push) Has been cancelled
CI Pipeline / variables (push) Has been cancelled
CI Pipeline / golang (push) Has been cancelled
CI Pipeline / image (push) Has been cancelled
CI Pipeline / e2e-test (push) Has been cancelled

Add `NVIDIA_CTK_DEBUG=false` to hook envs
This commit is contained in:
Evan Lezar 2025-05-30 15:31:26 +02:00 committed by GitHub
commit 450f73a046
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
13 changed files with 46 additions and 10 deletions

View File

@ -70,13 +70,15 @@ func main() {
Aliases: []string{"d"}, Aliases: []string{"d"},
Usage: "Enable debug-level logging", Usage: "Enable debug-level logging",
Destination: &opts.Debug, Destination: &opts.Debug,
EnvVars: []string{"NVIDIA_CDI_DEBUG"}, // TODO: Support for NVIDIA_CDI_DEBUG is deprecated and NVIDIA_CTK_DEBUG should be used instead.
EnvVars: []string{"NVIDIA_CTK_DEBUG", "NVIDIA_CDI_DEBUG"},
}, },
&cli.BoolFlag{ &cli.BoolFlag{
Name: "quiet", Name: "quiet",
Usage: "Suppress all output except for errors; overrides --debug", Usage: "Suppress all output except for errors; overrides --debug",
Destination: &opts.Quiet, Destination: &opts.Quiet,
EnvVars: []string{"NVIDIA_CDI_QUIET"}, // TODO: Support for NVIDIA_CDI_QUIET is deprecated and NVIDIA_CTK_QUIET should be used instead.
EnvVars: []string{"NVDIA_CTK_QUIET", "NVIDIA_CDI_QUIET"},
}, },
} }

View File

@ -95,6 +95,8 @@ containerEdits:
- create-symlinks - create-symlinks
- --link - --link
- libcuda.so.1::/lib/x86_64-linux-gnu/libcuda.so - libcuda.so.1::/lib/x86_64-linux-gnu/libcuda.so
env:
- NVIDIA_CTK_DEBUG=false
- hookName: createContainer - hookName: createContainer
path: {{ .toolkitRoot }}/nvidia-cdi-hook path: {{ .toolkitRoot }}/nvidia-cdi-hook
args: args:
@ -102,6 +104,8 @@ containerEdits:
- update-ldcache - update-ldcache
- --folder - --folder
- /lib/x86_64-linux-gnu - /lib/x86_64-linux-gnu
env:
- NVIDIA_CTK_DEBUG=false
mounts: mounts:
- hostPath: /host/driver/root/lib/x86_64-linux-gnu/libcuda.so.999.88.77 - hostPath: /host/driver/root/lib/x86_64-linux-gnu/libcuda.so.999.88.77
containerPath: /lib/x86_64-linux-gnu/libcuda.so.999.88.77 containerPath: /lib/x86_64-linux-gnu/libcuda.so.999.88.77

View File

@ -91,12 +91,16 @@ containerEdits:
- create-symlinks - create-symlinks
- --link - --link
- libcuda.so.1::/lib/x86_64-linux-gnu/libcuda.so - libcuda.so.1::/lib/x86_64-linux-gnu/libcuda.so
env:
- NVIDIA_CTK_DEBUG=false
- hookName: createContainer - hookName: createContainer
path: /usr/bin/nvidia-cdi-hook path: /usr/bin/nvidia-cdi-hook
args: args:
- nvidia-cdi-hook - nvidia-cdi-hook
- enable-cuda-compat - enable-cuda-compat
- --host-driver-version=999.88.77 - --host-driver-version=999.88.77
env:
- NVIDIA_CTK_DEBUG=false
- hookName: createContainer - hookName: createContainer
path: /usr/bin/nvidia-cdi-hook path: /usr/bin/nvidia-cdi-hook
args: args:
@ -104,6 +108,8 @@ containerEdits:
- update-ldcache - update-ldcache
- --folder - --folder
- /lib/x86_64-linux-gnu - /lib/x86_64-linux-gnu
env:
- NVIDIA_CTK_DEBUG=false
mounts: mounts:
- hostPath: {{ .driverRoot }}/lib/x86_64-linux-gnu/libcuda.so.999.88.77 - hostPath: {{ .driverRoot }}/lib/x86_64-linux-gnu/libcuda.so.999.88.77
containerPath: /lib/x86_64-linux-gnu/libcuda.so.999.88.77 containerPath: /lib/x86_64-linux-gnu/libcuda.so.999.88.77

View File

@ -34,6 +34,7 @@ type Hook struct {
Lifecycle string Lifecycle string
Path string Path string
Args []string Args []string
Env []string
} }
// Discover defines an interface for discovering the devices, mounts, and hooks available on a system // Discover defines an interface for discovering the devices, mounts, and hooks available on a system

View File

@ -25,7 +25,7 @@ import (
func TestGraphicsLibrariesDiscoverer(t *testing.T) { func TestGraphicsLibrariesDiscoverer(t *testing.T) {
logger, _ := testlog.NewNullLogger() logger, _ := testlog.NewNullLogger()
hookCreator := NewHookCreator("/usr/bin/nvidia-cdi-hook") hookCreator := NewHookCreator("/usr/bin/nvidia-cdi-hook", false)
testCases := []struct { testCases := []struct {
description string description string
@ -71,6 +71,7 @@ func TestGraphicsLibrariesDiscoverer(t *testing.T) {
Args: []string{"nvidia-cdi-hook", "create-symlinks", Args: []string{"nvidia-cdi-hook", "create-symlinks",
"--link", "../libnvidia-allocator.so.1::/usr/lib64/gbm/nvidia-drm_gbm.so", "--link", "../libnvidia-allocator.so.1::/usr/lib64/gbm/nvidia-drm_gbm.so",
}, },
Env: []string{"NVIDIA_CTK_DEBUG=false"},
}, },
}, },
}, },
@ -98,6 +99,7 @@ func TestGraphicsLibrariesDiscoverer(t *testing.T) {
Args: []string{"nvidia-cdi-hook", "create-symlinks", Args: []string{"nvidia-cdi-hook", "create-symlinks",
"--link", "libnvidia-vulkan-producer.so.123.45.67::/usr/lib64/libnvidia-vulkan-producer.so", "--link", "libnvidia-vulkan-producer.so.123.45.67::/usr/lib64/libnvidia-vulkan-producer.so",
}, },
Env: []string{"NVIDIA_CTK_DEBUG=false"},
}, },
}, },
}, },
@ -129,6 +131,7 @@ func TestGraphicsLibrariesDiscoverer(t *testing.T) {
"--link", "../libnvidia-allocator.so.1::/usr/lib64/gbm/nvidia-drm_gbm.so", "--link", "../libnvidia-allocator.so.1::/usr/lib64/gbm/nvidia-drm_gbm.so",
"--link", "libnvidia-vulkan-producer.so.123.45.67::/usr/lib64/libnvidia-vulkan-producer.so", "--link", "libnvidia-vulkan-producer.so.123.45.67::/usr/lib64/libnvidia-vulkan-producer.so",
}, },
Env: []string{"NVIDIA_CTK_DEBUG=false"},
}, },
}, },
}, },

View File

@ -17,6 +17,7 @@
package discover package discover
import ( import (
"fmt"
"path/filepath" "path/filepath"
"tags.cncf.io/container-device-interface/pkg/cdi" "tags.cncf.io/container-device-interface/pkg/cdi"
@ -49,15 +50,17 @@ type Option func(*CDIHook)
type CDIHook struct { type CDIHook struct {
nvidiaCDIHookPath string nvidiaCDIHookPath string
debugLogging bool
} }
type HookCreator interface { type HookCreator interface {
Create(string, ...string) *Hook Create(string, ...string) *Hook
} }
func NewHookCreator(nvidiaCDIHookPath string) HookCreator { func NewHookCreator(nvidiaCDIHookPath string, debugLogging bool) HookCreator {
CDIHook := &CDIHook{ CDIHook := &CDIHook{
nvidiaCDIHookPath: nvidiaCDIHookPath, nvidiaCDIHookPath: nvidiaCDIHookPath,
debugLogging: debugLogging,
} }
return CDIHook return CDIHook
@ -80,6 +83,7 @@ func (c CDIHook) Create(name string, args ...string) *Hook {
Lifecycle: cdi.CreateContainerHook, Lifecycle: cdi.CreateContainerHook,
Path: c.nvidiaCDIHookPath, Path: c.nvidiaCDIHookPath,
Args: append(c.requiredArgs(name), args...), Args: append(c.requiredArgs(name), args...),
Env: []string{fmt.Sprintf("NVIDIA_CTK_DEBUG=%v", c.debugLogging)},
} }
} }

View File

@ -31,7 +31,7 @@ const (
func TestLDCacheUpdateHook(t *testing.T) { func TestLDCacheUpdateHook(t *testing.T) {
logger, _ := testlog.NewNullLogger() logger, _ := testlog.NewNullLogger()
hookCreator := NewHookCreator(testNvidiaCDIHookPath) hookCreator := NewHookCreator(testNvidiaCDIHookPath, false)
testCases := []struct { testCases := []struct {
description string description string
@ -96,6 +96,7 @@ func TestLDCacheUpdateHook(t *testing.T) {
Path: testNvidiaCDIHookPath, Path: testNvidiaCDIHookPath,
Args: tc.expectedArgs, Args: tc.expectedArgs,
Lifecycle: "createContainer", Lifecycle: "createContainer",
Env: []string{"NVIDIA_CTK_DEBUG=false"},
} }
d, err := NewLDCacheUpdateHook(logger, mountMock, hookCreator, tc.ldconfigPath) d, err := NewLDCacheUpdateHook(logger, mountMock, hookCreator, tc.ldconfigPath)

View File

@ -115,6 +115,7 @@ func TestWithWithDriverDotSoSymlinks(t *testing.T) {
Lifecycle: "createContainer", Lifecycle: "createContainer",
Path: "/path/to/nvidia-cdi-hook", Path: "/path/to/nvidia-cdi-hook",
Args: []string{"nvidia-cdi-hook", "create-symlinks", "--link", "libcuda.so.1::/usr/lib/libcuda.so"}, Args: []string{"nvidia-cdi-hook", "create-symlinks", "--link", "libcuda.so.1::/usr/lib/libcuda.so"},
Env: []string{"NVIDIA_CTK_DEBUG=false"},
}, },
}, },
}, },
@ -147,6 +148,7 @@ func TestWithWithDriverDotSoSymlinks(t *testing.T) {
Lifecycle: "createContainer", Lifecycle: "createContainer",
Path: "/path/to/nvidia-cdi-hook", Path: "/path/to/nvidia-cdi-hook",
Args: []string{"nvidia-cdi-hook", "create-symlinks", "--link", "libcuda.so.1::/usr/lib/libcuda.so"}, Args: []string{"nvidia-cdi-hook", "create-symlinks", "--link", "libcuda.so.1::/usr/lib/libcuda.so"},
Env: []string{"NVIDIA_CTK_DEBUG=false"},
}, },
}, },
}, },
@ -178,6 +180,7 @@ func TestWithWithDriverDotSoSymlinks(t *testing.T) {
Lifecycle: "createContainer", Lifecycle: "createContainer",
Path: "/path/to/nvidia-cdi-hook", Path: "/path/to/nvidia-cdi-hook",
Args: []string{"nvidia-cdi-hook", "create-symlinks", "--link", "libcuda.so.1::/usr/lib/libcuda.so"}, Args: []string{"nvidia-cdi-hook", "create-symlinks", "--link", "libcuda.so.1::/usr/lib/libcuda.so"},
Env: []string{"NVIDIA_CTK_DEBUG=false"},
}, },
}, },
}, },
@ -247,6 +250,7 @@ func TestWithWithDriverDotSoSymlinks(t *testing.T) {
Lifecycle: "createContainer", Lifecycle: "createContainer",
Path: "/path/to/nvidia-cdi-hook", Path: "/path/to/nvidia-cdi-hook",
Args: []string{"nvidia-cdi-hook", "create-symlinks", "--link", "libcuda.so.1::/usr/lib/libcuda.so"}, Args: []string{"nvidia-cdi-hook", "create-symlinks", "--link", "libcuda.so.1::/usr/lib/libcuda.so"},
Env: []string{"NVIDIA_CTK_DEBUG=false"},
}, },
}, },
}, },
@ -301,12 +305,13 @@ func TestWithWithDriverDotSoSymlinks(t *testing.T) {
"--link", "libGLX_nvidia.so.1.2.3::/usr/lib/libGLX_indirect.so.0", "--link", "libGLX_nvidia.so.1.2.3::/usr/lib/libGLX_indirect.so.0",
"--link", "libnvidia-opticalflow.so.1::/usr/lib/libnvidia-opticalflow.so", "--link", "libnvidia-opticalflow.so.1::/usr/lib/libnvidia-opticalflow.so",
}, },
Env: []string{"NVIDIA_CTK_DEBUG=false"},
}, },
}, },
}, },
} }
hookCreator := NewHookCreator("/path/to/nvidia-cdi-hook") hookCreator := NewHookCreator("/path/to/nvidia-cdi-hook", false)
for _, tc := range testCases { for _, tc := range testCases {
t.Run(tc.description, func(t *testing.T) { t.Run(tc.description, func(t *testing.T) {
d := WithDriverDotSoSymlinks( d := WithDriverDotSoSymlinks(

View File

@ -42,6 +42,7 @@ func (d hook) toSpec() *specs.Hook {
HookName: d.Lifecycle, HookName: d.Lifecycle,
Path: d.Path, Path: d.Path,
Args: d.Args, Args: d.Args,
Env: d.Env,
} }
return &s return &s

View File

@ -97,6 +97,7 @@ func TestDiscovererFromCSVFiles(t *testing.T) {
"--link", "--link",
"/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so::/usr/lib/aarch64-linux-gnu/libv4l/plugins/nv/libv4l2_nvargus.so", "/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so::/usr/lib/aarch64-linux-gnu/libv4l/plugins/nv/libv4l2_nvargus.so",
}, },
Env: []string{"NVIDIA_CTK_DEBUG=false"},
}, },
}, },
}, },
@ -153,6 +154,7 @@ func TestDiscovererFromCSVFiles(t *testing.T) {
"--link", "--link",
"/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so::/usr/lib/aarch64-linux-gnu/libv4l/plugins/nv/libv4l2_nvargus.so", "/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so::/usr/lib/aarch64-linux-gnu/libv4l/plugins/nv/libv4l2_nvargus.so",
}, },
Env: []string{"NVIDIA_CTK_DEBUG=false"},
}, },
}, },
}, },
@ -181,7 +183,7 @@ func TestDiscovererFromCSVFiles(t *testing.T) {
}, },
} }
hookCreator := discover.NewHookCreator("/usr/bin/nvidia-cdi-hook") hookCreator := discover.NewHookCreator("/usr/bin/nvidia-cdi-hook", false)
for _, tc := range testCases { for _, tc := range testCases {
t.Run(tc.description, func(t *testing.T) { t.Run(tc.description, func(t *testing.T) {
defer setGetTargetsFromCSVFiles(tc.moutSpecs)() defer setGetTargetsFromCSVFiles(tc.moutSpecs)()

View File

@ -18,6 +18,7 @@ package runtime
import ( import (
"fmt" "fmt"
"os"
"github.com/NVIDIA/nvidia-container-toolkit/internal/config" "github.com/NVIDIA/nvidia-container-toolkit/internal/config"
"github.com/NVIDIA/nvidia-container-toolkit/internal/config/image" "github.com/NVIDIA/nvidia-container-toolkit/internal/config/image"
@ -75,7 +76,10 @@ func newSpecModifier(logger logger.Interface, cfg *config.Config, ociSpec oci.Sp
return nil, err return nil, err
} }
hookCreator := discover.NewHookCreator(cfg.NVIDIACTKConfig.Path) hookCreator := discover.NewHookCreator(
cfg.NVIDIACTKConfig.Path,
cfg.NVIDIAContainerRuntimeConfig.DebugFilePath == "" || cfg.NVIDIAContainerRuntimeConfig.DebugFilePath == os.DevNull,
)
mode := info.ResolveAutoMode(logger, cfg.NVIDIAContainerRuntimeConfig.Mode, image) mode := info.ResolveAutoMode(logger, cfg.NVIDIAContainerRuntimeConfig.Mode, image)
// We update the mode here so that we can continue passing just the config to other functions. // We update the mode here so that we can continue passing just the config to other functions.

View File

@ -29,7 +29,7 @@ import (
func TestNvidiaSMISymlinkHook(t *testing.T) { func TestNvidiaSMISymlinkHook(t *testing.T) {
logger, _ := testlog.NewNullLogger() logger, _ := testlog.NewNullLogger()
hookCreator := discover.NewHookCreator("nvidia-cdi-hook") hookCreator := discover.NewHookCreator("nvidia-cdi-hook", false)
errMounts := errors.New("mounts error") errMounts := errors.New("mounts error")
@ -96,6 +96,7 @@ func TestNvidiaSMISymlinkHook(t *testing.T) {
Path: "nvidia-cdi-hook", Path: "nvidia-cdi-hook",
Args: []string{"nvidia-cdi-hook", "create-symlinks", Args: []string{"nvidia-cdi-hook", "create-symlinks",
"--link", "nvidia-smi::/usr/bin/nvidia-smi"}, "--link", "nvidia-smi::/usr/bin/nvidia-smi"},
Env: []string{"NVIDIA_CTK_DEBUG=false"},
}, },
}, },
}, },
@ -116,6 +117,7 @@ func TestNvidiaSMISymlinkHook(t *testing.T) {
Path: "nvidia-cdi-hook", Path: "nvidia-cdi-hook",
Args: []string{"nvidia-cdi-hook", "create-symlinks", Args: []string{"nvidia-cdi-hook", "create-symlinks",
"--link", "/some/path/nvidia-smi::/usr/bin/nvidia-smi"}, "--link", "/some/path/nvidia-smi::/usr/bin/nvidia-smi"},
Env: []string{"NVIDIA_CTK_DEBUG=false"},
}, },
}, },
}, },
@ -136,6 +138,7 @@ func TestNvidiaSMISymlinkHook(t *testing.T) {
Path: "nvidia-cdi-hook", Path: "nvidia-cdi-hook",
Args: []string{"nvidia-cdi-hook", "create-symlinks", Args: []string{"nvidia-cdi-hook", "create-symlinks",
"--link", "/some/path/nvidia-smi::/usr/bin/nvidia-smi"}, "--link", "/some/path/nvidia-smi::/usr/bin/nvidia-smi"},
Env: []string{"NVIDIA_CTK_DEBUG=false"},
}, },
}, },
}, },

View File

@ -85,7 +85,7 @@ func New(opts ...Option) (Interface, error) {
l.nvidiaCDIHookPath = "/usr/bin/nvidia-cdi-hook" l.nvidiaCDIHookPath = "/usr/bin/nvidia-cdi-hook"
} }
// create hookCreator // create hookCreator
l.hookCreator = discover.NewHookCreator(l.nvidiaCDIHookPath) l.hookCreator = discover.NewHookCreator(l.nvidiaCDIHookPath, false)
if l.driverRoot == "" { if l.driverRoot == "" {
l.driverRoot = "/" l.driverRoot = "/"