diff --git a/internal/discover/hooks.go b/internal/discover/hooks.go index f8aeea44..708260e1 100644 --- a/internal/discover/hooks.go +++ b/internal/discover/hooks.go @@ -39,22 +39,24 @@ func CreateNvidiaCTKHook(executable string, hookName string, additionalArgs ...s } // FindNvidiaCTK locates the nvidia-ctk executable to be used in hooks. -// If an override is specified, this is used instead. -func FindNvidiaCTK(logger *logrus.Logger, override string) string { - if override != "" { - logger.Debugf("Using specified NVIDIA Container Toolkit CLI path %v", override) - return override +// If an nvidia-ctk path is specified as an absolute path, it is used directly +// without checking for existence of an executable at that path. +func FindNvidiaCTK(logger *logrus.Logger, nvidiaCTKPath string) string { + if filepath.IsAbs(nvidiaCTKPath) { + logger.Debugf("Using specified NVIDIA Container Toolkit CLI path %v", nvidiaCTKPath) + return nvidiaCTKPath } + logger.Debugf("Locating NVIDIA Container Toolkit CLI as %v", nvidiaCTKPath) lookup := lookup.NewExecutableLocator(logger, "") hookPath := nvidiaCTKDefaultFilePath - targets, err := lookup.Locate(nvidiaCTKExecutable) + targets, err := lookup.Locate(nvidiaCTKPath) if err != nil { - logger.Warnf("Failed to locate %v: %v", nvidiaCTKExecutable, err) + logger.Warnf("Failed to locate %v: %v", nvidiaCTKPath, err) } else if len(targets) == 0 { - logger.Warnf("%v not found", nvidiaCTKExecutable) + logger.Warnf("%v not found", nvidiaCTKPath) } else { - logger.Debugf("Found %v candidates: %v", nvidiaCTKExecutable, targets) + logger.Debugf("Found %v candidates: %v", nvidiaCTKPath, targets) hookPath = targets[0] } logger.Debugf("Using NVIDIA Container Toolkit CLI path %v", hookPath) diff --git a/internal/discover/ldconfig.go b/internal/discover/ldconfig.go index 83f26b36..e56f605a 100644 --- a/internal/discover/ldconfig.go +++ b/internal/discover/ldconfig.go @@ -21,7 +21,6 @@ import ( "path/filepath" "strings" - "github.com/NVIDIA/nvidia-container-toolkit/internal/lookup" "github.com/sirupsen/logrus" ) @@ -29,9 +28,8 @@ import ( func NewLDCacheUpdateHook(logger *logrus.Logger, mounts Discover, cfg *Config) (Discover, error) { d := ldconfig{ logger: logger, + nvidiaCTKPath: FindNvidiaCTK(logger, cfg.NvidiaCTKPath), mountsFrom: mounts, - lookup: lookup.NewExecutableLocator(logger, cfg.Root), - nvidiaCTKPath: cfg.NvidiaCTKPath, } return &d, nil @@ -40,9 +38,8 @@ func NewLDCacheUpdateHook(logger *logrus.Logger, mounts Discover, cfg *Config) ( type ldconfig struct { None logger *logrus.Logger - mountsFrom Discover - lookup lookup.Locator nvidiaCTKPath string + mountsFrom Discover } // Hooks checks the required mounts for libraries and returns a hook to update the LDcache for the discovered paths. diff --git a/internal/edits/edits.go b/internal/edits/edits.go index 96d40c60..425e01a8 100644 --- a/internal/edits/edits.go +++ b/internal/edits/edits.go @@ -108,7 +108,7 @@ func (e *edits) Modify(spec *ociSpecs.Spec) error { } e.logger.Infof("Hooks:") for _, hook := range e.Hooks { - e.logger.Infof("Injecting %v", hook.Args) + e.logger.Infof("Injecting %v %v", hook.Path, hook.Args) } return e.Apply(spec)