diff --git a/CHANGELOG.md b/CHANGELOG.md index a4987eac..a1fdc07e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ## v1.17.8 - Updated the ordering of Mounts in CDI to have a deterministic output. This makes testing more consistent. +- Added NVIDIA_CTK_DEBUG envvar to hooks. ### Changes in libnvidia-container diff --git a/cmd/nvidia-cdi-hook/main.go b/cmd/nvidia-cdi-hook/main.go index d7b7c271..8a536e3c 100644 --- a/cmd/nvidia-cdi-hook/main.go +++ b/cmd/nvidia-cdi-hook/main.go @@ -58,13 +58,15 @@ func main() { Aliases: []string{"d"}, Usage: "Enable debug-level logging", 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{ Name: "quiet", Usage: "Suppress all output except for errors; overrides --debug", 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"}, }, } diff --git a/internal/discover/discover.go b/internal/discover/discover.go index 7ff9f042..2ec33174 100644 --- a/internal/discover/discover.go +++ b/internal/discover/discover.go @@ -34,6 +34,7 @@ type Hook struct { Lifecycle string Path string Args []string + Env []string } // Discover defines an interface for discovering the devices, mounts, and hooks available on a system diff --git a/internal/discover/graphics_test.go b/internal/discover/graphics_test.go index a515c939..122e0599 100644 --- a/internal/discover/graphics_test.go +++ b/internal/discover/graphics_test.go @@ -70,6 +70,7 @@ func TestGraphicsLibrariesDiscoverer(t *testing.T) { Args: []string{"nvidia-cdi-hook", "create-symlinks", "--link", "../libnvidia-allocator.so.1::/usr/lib64/gbm/nvidia-drm_gbm.so", }, + Env: []string{"NVIDIA_CTK_DEBUG=false"}, }, }, }, @@ -97,6 +98,7 @@ func TestGraphicsLibrariesDiscoverer(t *testing.T) { Args: []string{"nvidia-cdi-hook", "create-symlinks", "--link", "libnvidia-vulkan-producer.so.123.45.67::/usr/lib64/libnvidia-vulkan-producer.so", }, + Env: []string{"NVIDIA_CTK_DEBUG=false"}, }, }, }, @@ -128,6 +130,7 @@ func TestGraphicsLibrariesDiscoverer(t *testing.T) { "--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", }, + Env: []string{"NVIDIA_CTK_DEBUG=false"}, }, }, }, diff --git a/internal/discover/hooks.go b/internal/discover/hooks.go index 4259ccf8..03a57434 100644 --- a/internal/discover/hooks.go +++ b/internal/discover/hooks.go @@ -17,6 +17,7 @@ package discover import ( + "fmt" "path/filepath" "tags.cncf.io/container-device-interface/pkg/cdi" @@ -69,6 +70,7 @@ func (c cdiHook) Create(name string, args ...string) Hook { Lifecycle: cdi.CreateContainerHook, Path: string(c), Args: append(c.requiredArgs(name), args...), + Env: []string{fmt.Sprintf("NVIDIA_CTK_DEBUG=%v", false)}, } } func (c cdiHook) requiredArgs(name string) []string { diff --git a/internal/discover/ldconfig_test.go b/internal/discover/ldconfig_test.go index 0b214c77..09aef765 100644 --- a/internal/discover/ldconfig_test.go +++ b/internal/discover/ldconfig_test.go @@ -95,6 +95,7 @@ func TestLDCacheUpdateHook(t *testing.T) { Path: testNvidiaCDIHookPath, Args: tc.expectedArgs, Lifecycle: "createContainer", + Env: []string{"NVIDIA_CTK_DEBUG=false"}, } d, err := NewLDCacheUpdateHook(logger, mountMock, testNvidiaCDIHookPath, tc.ldconfigPath) diff --git a/internal/discover/symlinks_test.go b/internal/discover/symlinks_test.go index 7653b847..6d7662fe 100644 --- a/internal/discover/symlinks_test.go +++ b/internal/discover/symlinks_test.go @@ -115,6 +115,7 @@ func TestWithWithDriverDotSoSymlinks(t *testing.T) { Lifecycle: "createContainer", Path: "/path/to/nvidia-cdi-hook", 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", Path: "/path/to/nvidia-cdi-hook", 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", Path: "/path/to/nvidia-cdi-hook", 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", Path: "/path/to/nvidia-cdi-hook", Args: []string{"nvidia-cdi-hook", "create-symlinks", "--link", "libcuda.so.1::/usr/lib/libcuda.so"}, + Env: []string{"NVIDIA_CTK_DEBUG=false"}, }, }, }, @@ -301,6 +305,7 @@ func TestWithWithDriverDotSoSymlinks(t *testing.T) { "--link", "libGLX_nvidia.so.1.2.3::/usr/lib/libGLX_indirect.so.0", "--link", "libnvidia-opticalflow.so.1::/usr/lib/libnvidia-opticalflow.so", }, + Env: []string{"NVIDIA_CTK_DEBUG=false"}, }, }, }, diff --git a/internal/edits/hook.go b/internal/edits/hook.go index f528fe1d..919a07ab 100644 --- a/internal/edits/hook.go +++ b/internal/edits/hook.go @@ -38,10 +38,15 @@ func (d hook) toEdits() *cdi.ContainerEdits { // toSpec converts a discovered Hook to a CDI Spec Hook. Note // that missing info is filled in when edits are applied by querying the Hook node. func (d hook) toSpec() *specs.Hook { + env := d.Env + if env == nil { + env = []string{"NVIDIA_CTK_DEBUG=false"} + } s := specs.Hook{ HookName: d.Lifecycle, Path: d.Path, Args: d.Args, + Env: env, } return &s diff --git a/internal/platform-support/tegra/csv_test.go b/internal/platform-support/tegra/csv_test.go index 2e8e42fe..07437ad6 100644 --- a/internal/platform-support/tegra/csv_test.go +++ b/internal/platform-support/tegra/csv_test.go @@ -97,6 +97,7 @@ func TestDiscovererFromCSVFiles(t *testing.T) { "--link", "/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", "/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"}, }, }, }, diff --git a/pkg/nvcdi/driver-wsl_test.go b/pkg/nvcdi/driver-wsl_test.go index b9aac1a1..cc2687f5 100644 --- a/pkg/nvcdi/driver-wsl_test.go +++ b/pkg/nvcdi/driver-wsl_test.go @@ -95,6 +95,7 @@ func TestNvidiaSMISymlinkHook(t *testing.T) { Path: "nvidia-cdi-hook", Args: []string{"nvidia-cdi-hook", "create-symlinks", "--link", "nvidia-smi::/usr/bin/nvidia-smi"}, + Env: []string{"NVIDIA_CTK_DEBUG=false"}, }, }, }, @@ -115,6 +116,7 @@ func TestNvidiaSMISymlinkHook(t *testing.T) { Path: "nvidia-cdi-hook", Args: []string{"nvidia-cdi-hook", "create-symlinks", "--link", "/some/path/nvidia-smi::/usr/bin/nvidia-smi"}, + Env: []string{"NVIDIA_CTK_DEBUG=false"}, }, }, }, @@ -135,6 +137,7 @@ func TestNvidiaSMISymlinkHook(t *testing.T) { Path: "nvidia-cdi-hook", Args: []string{"nvidia-cdi-hook", "create-symlinks", "--link", "/some/path/nvidia-smi::/usr/bin/nvidia-smi"}, + Env: []string{"NVIDIA_CTK_DEBUG=false"}, }, }, },