Merge branch 'rename-to-nvidia-container-hook' into 'main'

Rename -toolkit executable to -runtime-hook

See merge request nvidia/container-toolkit/container-toolkit!189
This commit is contained in:
Evan Lezar 2022-07-13 11:08:53 +00:00
commit 3809407b6a
19 changed files with 34 additions and 33 deletions

View File

@ -34,7 +34,7 @@ type CLIConfig struct {
Ldconfig *string `toml:"ldconfig"` Ldconfig *string `toml:"ldconfig"`
} }
// HookConfig : options for the nvidia-container-toolkit. // HookConfig : options for the nvidia-container-runtime-hook.
type HookConfig struct { type HookConfig struct {
DisableRequire bool `toml:"disable-require"` DisableRequire bool `toml:"disable-require"`
SwarmResource *string `toml:"swarm-resource"` SwarmResource *string `toml:"swarm-resource"`

View File

@ -20,7 +20,6 @@ import (
"os" "os"
"os/exec" "os/exec"
"path/filepath" "path/filepath"
"strings"
"github.com/NVIDIA/nvidia-container-toolkit/internal/config" "github.com/NVIDIA/nvidia-container-toolkit/internal/config"
"github.com/NVIDIA/nvidia-container-toolkit/internal/oci" "github.com/NVIDIA/nvidia-container-toolkit/internal/oci"
@ -61,8 +60,8 @@ func (m stableRuntimeModifier) Modify(spec *specs.Spec) error {
spec.Hooks = &specs.Hooks{} spec.Hooks = &specs.Hooks{}
} else if len(spec.Hooks.Prestart) != 0 { } else if len(spec.Hooks.Prestart) != 0 {
for _, hook := range spec.Hooks.Prestart { for _, hook := range spec.Hooks.Prestart {
if strings.Contains(hook.Path, config.NVIDIAContainerRuntimeHookExecutable) { if isNVIDIAContainerRuntimeHook(&hook) {
m.logger.Infof("existing nvidia prestart hook found in OCI spec") m.logger.Infof("Existing nvidia prestart hook (%v) found in OCI spec", hook.Path)
return nil return nil
} }
} }

View File

@ -1,2 +1,2 @@
#!/bin/sh #!/bin/sh
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" exec /usr/bin/nvidia-container-toolkit "$@" PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" exec /usr/bin/nvidia-container-runtime-hook "$@"

View File

@ -1,8 +1,8 @@
{ {
"version": "1.0.0", "version": "1.0.0",
"hook": { "hook": {
"path": "/usr/bin/nvidia-container-toolkit", "path": "/usr/bin/nvidia-container-runtime-hook",
"args": ["nvidia-container-toolkit", "prestart"], "args": ["nvidia-container-runtime-hook", "prestart"],
"env": [ "env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
] ]

View File

@ -3,9 +3,9 @@ Section: @SECTION@utils
Priority: optional Priority: optional
Maintainer: NVIDIA CORPORATION <cudatools@nvidia.com> Maintainer: NVIDIA CORPORATION <cudatools@nvidia.com>
Standards-Version: 3.9.8 Standards-Version: 3.9.8
Homepage: https://github.com/NVIDIA/nvidia-container-runtime/wiki Homepage: https://github.com/NVIDIA/nvidia-container-toolkit
Vcs-Git: https://github.com/NVIDIA/nvidia-container-runtime Vcs-Git: https://github.com/NVIDIA/nvidia-container-toolkit
Vcs-Browser: https://github.com/NVIDIA/nvidia-container-runtime Vcs-Browser: https://github.com/NVIDIA/nvidia-container-toolkit
Build-Depends: debhelper (>= 9) Build-Depends: debhelper (>= 9)
Package: nvidia-container-toolkit Package: nvidia-container-toolkit
@ -13,5 +13,5 @@ Architecture: any
Depends: ${misc:Depends}, libnvidia-container-tools (>= @LIBNVIDIA_CONTAINER_TOOLS_VERSION@), libnvidia-container-tools (<< 2.0.0), libseccomp2 Depends: ${misc:Depends}, libnvidia-container-tools (>= @LIBNVIDIA_CONTAINER_TOOLS_VERSION@), libnvidia-container-tools (<< 2.0.0), libseccomp2
Breaks: nvidia-container-runtime (<= 3.5.0-1), nvidia-container-runtime-hook Breaks: nvidia-container-runtime (<= 3.5.0-1), nvidia-container-runtime-hook
Replaces: nvidia-container-runtime (<= 3.5.0-1), nvidia-container-runtime-hook Replaces: nvidia-container-runtime (<= 3.5.0-1), nvidia-container-runtime-hook
Description: NVIDIA container runtime hook Description: NVIDIA Container toolkit
Provides a OCI hook to enable GPU support in containers. Provides tools and utilities to enable GPU support in containers.

View File

@ -1,4 +1,4 @@
config.toml /etc/nvidia-container-runtime config.toml /etc/nvidia-container-runtime
nvidia-container-toolkit /usr/bin nvidia-container-runtime-hook /usr/bin
nvidia-container-runtime /usr/bin nvidia-container-runtime /usr/bin
nvidia-ctk /usr/bin nvidia-ctk /usr/bin

View File

@ -7,9 +7,9 @@ NVIDIA_CONTAINER_TOOLKIT=/usr/bin/nvidia-container-toolkit
case "$1" in case "$1" in
configure) configure)
if [ -f "${NVIDIA_CONTAINER_TOOLKIT}" ]; then if [ -f "${NVIDIA_CONTAINER_RUNTIME_HOOK}" ]; then
if [ ! -e "${NVIDIA_CONTAINER_RUNTIME_HOOK}" ]; then if [ ! -e "${NVIDIA_CONTAINER_TOOLKIT}" ]; then
ln -s ${NVIDIA_CONTAINER_TOOLKIT} ${NVIDIA_CONTAINER_RUNTIME_HOOK} ln -s ${NVIDIA_CONTAINER_RUNTIME_HOOK} ${NVIDIA_CONTAINER_TOOLKIT}
fi fi
fi fi
;; ;;

View File

@ -7,7 +7,7 @@ NVIDIA_CONTAINER_TOOLKIT=/usr/bin/nvidia-container-toolkit
case "$1" in case "$1" in
purge) purge)
[ -L "${NVIDIA_CONTAINER_RUNTIME_HOOK}" ] && rm ${NVIDIA_CONTAINER_RUNTIME_HOOK} [ -L "${NVIDIA_CONTAINER_TOOLKIT}" ] && rm ${NVIDIA_CONTAINER_TOOLKIT}
;; ;;
upgrade|failed-upgrade|remove|abort-install|abort-upgrade|disappear) upgrade|failed-upgrade|remove|abort-install|abort-upgrade|disappear)

View File

@ -6,11 +6,11 @@ Group: Development Tools
Vendor: NVIDIA CORPORATION Vendor: NVIDIA CORPORATION
Packager: NVIDIA CORPORATION <cudatools@nvidia.com> Packager: NVIDIA CORPORATION <cudatools@nvidia.com>
Summary: NVIDIA container runtime hook Summary: NVIDIA Container Toolkit
URL: https://github.com/NVIDIA/nvidia-container-runtime URL: https://github.com/NVIDIA/nvidia-container-toolkit
License: Apache-2.0 License: Apache-2.0
Source0: nvidia-container-toolkit Source0: nvidia-container-runtime-hook
Source1: nvidia-container-runtime Source1: nvidia-container-runtime
Source2: nvidia-ctk Source2: nvidia-ctk
Source3: config.toml Source3: config.toml
@ -31,14 +31,14 @@ Requires: libseccomp
%endif %endif
%description %description
Provides a OCI hook to enable GPU support in containers. Provides tools and utilities to enable GPU support in containers.
%prep %prep
cp %{SOURCE0} %{SOURCE1} %{SOURCE2} %{SOURCE3} %{SOURCE4} %{SOURCE5} %{SOURCE6} . cp %{SOURCE0} %{SOURCE1} %{SOURCE2} %{SOURCE3} %{SOURCE4} %{SOURCE5} %{SOURCE6} .
%install %install
mkdir -p %{buildroot}%{_bindir} mkdir -p %{buildroot}%{_bindir}
install -m 755 -t %{buildroot}%{_bindir} nvidia-container-toolkit install -m 755 -t %{buildroot}%{_bindir} nvidia-container-runtime-hook
install -m 755 -t %{buildroot}%{_bindir} nvidia-container-runtime install -m 755 -t %{buildroot}%{_bindir} nvidia-container-runtime
install -m 755 -t %{buildroot}%{_bindir} nvidia-ctk install -m 755 -t %{buildroot}%{_bindir} nvidia-ctk
@ -52,14 +52,14 @@ mkdir -p %{buildroot}/usr/share/containers/oci/hooks.d
install -m 644 -t %{buildroot}/usr/share/containers/oci/hooks.d oci-nvidia-hook.json install -m 644 -t %{buildroot}/usr/share/containers/oci/hooks.d oci-nvidia-hook.json
%posttrans %posttrans
ln -sf %{_bindir}/nvidia-container-toolkit %{_bindir}/nvidia-container-runtime-hook ln -sf %{_bindir}/nvidia-container-runtime-hook %{_bindir}/nvidia-container-toolkit
%postun %postun
rm -f %{_bindir}/nvidia-container-runtime-hook rm -f %{_bindir}/nvidia-container-runtime-toolkit
%files %files
%license LICENSE %license LICENSE
%{_bindir}/nvidia-container-toolkit %{_bindir}/nvidia-container-runtime-hook
%{_bindir}/nvidia-container-runtime %{_bindir}/nvidia-container-runtime
%{_bindir}/nvidia-ctk %{_bindir}/nvidia-ctk
%config /etc/nvidia-container-runtime/config.toml %config /etc/nvidia-container-runtime/config.toml

View File

@ -35,14 +35,15 @@ testing::toolkit::install() {
test -e "$(${READLINK} -f "${shared_dir}/usr/local/nvidia/toolkit/libnvidia-container-go.so.1")" test -e "$(${READLINK} -f "${shared_dir}/usr/local/nvidia/toolkit/libnvidia-container-go.so.1")"
test -e "${shared_dir}/usr/local/nvidia/toolkit/nvidia-container-cli" test -e "${shared_dir}/usr/local/nvidia/toolkit/nvidia-container-cli"
test -e "${shared_dir}/usr/local/nvidia/toolkit/nvidia-container-toolkit" test -e "${shared_dir}/usr/local/nvidia/toolkit/nvidia-container-runtime-hook"
test -L "${shared_dir}/usr/local/nvidia/toolkit/nvidia-container-toolkit"
test -e "${shared_dir}/usr/local/nvidia/toolkit/nvidia-container-runtime" test -e "${shared_dir}/usr/local/nvidia/toolkit/nvidia-container-runtime"
grep -q -E "nvidia driver modules are not yet loaded, invoking runc directly" "${shared_dir}/usr/local/nvidia/toolkit/nvidia-container-runtime" grep -q -E "nvidia driver modules are not yet loaded, invoking runc directly" "${shared_dir}/usr/local/nvidia/toolkit/nvidia-container-runtime"
grep -q -E "exec runc \".@\"" "${shared_dir}/usr/local/nvidia/toolkit/nvidia-container-runtime" grep -q -E "exec runc \".@\"" "${shared_dir}/usr/local/nvidia/toolkit/nvidia-container-runtime"
test -e "${shared_dir}/usr/local/nvidia/toolkit/nvidia-container-cli.real" test -e "${shared_dir}/usr/local/nvidia/toolkit/nvidia-container-cli.real"
test -e "${shared_dir}/usr/local/nvidia/toolkit/nvidia-container-toolkit.real" test -e "${shared_dir}/usr/local/nvidia/toolkit/nvidia-container-runtime-hook.real"
test -e "${shared_dir}/usr/local/nvidia/toolkit/nvidia-container-runtime.real" test -e "${shared_dir}/usr/local/nvidia/toolkit/nvidia-container-runtime.real"
test -e "${shared_dir}/usr/local/nvidia/toolkit/nvidia-container-runtime.experimental" test -e "${shared_dir}/usr/local/nvidia/toolkit/nvidia-container-runtime.experimental"

View File

@ -21,6 +21,7 @@ import (
"os" "os"
"path/filepath" "path/filepath"
"github.com/NVIDIA/nvidia-container-toolkit/internal/config"
hooks "github.com/containers/podman/v4/pkg/hooks/1.0.0" hooks "github.com/containers/podman/v4/pkg/hooks/1.0.0"
rspec "github.com/opencontainers/runtime-spec/specs-go" rspec "github.com/opencontainers/runtime-spec/specs-go"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
@ -164,7 +165,7 @@ func getHookPath(hooksDir string, hookFilename string) string {
} }
func generateOciHook(toolkitDir string) hooks.Hook { func generateOciHook(toolkitDir string) hooks.Hook {
hookPath := filepath.Join(toolkitDir, "nvidia-container-toolkit") hookPath := filepath.Join(toolkitDir, config.NVIDIAContainerRuntimeHookExecutable)
envPath := "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:" + toolkitDir envPath := "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:" + toolkitDir
always := true always := true
@ -173,7 +174,7 @@ func generateOciHook(toolkitDir string) hooks.Hook {
Stages: []string{"prestart"}, Stages: []string{"prestart"},
Hook: rspec.Hook{ Hook: rspec.Hook{
Path: hookPath, Path: hookPath,
Args: []string{"nvidia-container-toolkit", "prestart"}, Args: []string{filepath.Base(config.NVIDIAContainerRuntimeHookExecutable), "prestart"},
Env: []string{envPath}, Env: []string{envPath},
}, },
When: hooks.When{ When: hooks.When{

View File

@ -33,7 +33,7 @@ const (
DefaultNvidiaDriverRoot = "/run/nvidia/driver" DefaultNvidiaDriverRoot = "/run/nvidia/driver"
nvidiaContainerCliSource = "/usr/bin/nvidia-container-cli" nvidiaContainerCliSource = "/usr/bin/nvidia-container-cli"
nvidiaContainerRuntimeHookSource = "/usr/bin/nvidia-container-toolkit" nvidiaContainerRuntimeHookSource = "/usr/bin/nvidia-container-runtime-hook"
nvidiaContainerToolkitConfigSource = "/etc/nvidia-container-runtime/config.toml" nvidiaContainerToolkitConfigSource = "/etc/nvidia-container-runtime/config.toml"
configFilename = "config.toml" configFilename = "config.toml"
@ -319,8 +319,8 @@ func installRuntimeHook(toolkitDir string, configFilePath string) (string, error
e := executable{ e := executable{
source: nvidiaContainerRuntimeHookSource, source: nvidiaContainerRuntimeHookSource,
target: executableTarget{ target: executableTarget{
dotfileName: "nvidia-container-toolkit.real", dotfileName: "nvidia-container-runtime-hook.real",
wrapperName: "nvidia-container-toolkit", wrapperName: "nvidia-container-runtime-hook",
}, },
argLines: argLines, argLines: argLines,
} }
@ -330,7 +330,7 @@ func installRuntimeHook(toolkitDir string, configFilePath string) (string, error
return "", fmt.Errorf("error installing NVIDIA container runtime hook: %v", err) return "", fmt.Errorf("error installing NVIDIA container runtime hook: %v", err)
} }
err = installSymlink(toolkitDir, "nvidia-container-runtime-hook", installedPath) err = installSymlink(toolkitDir, "nvidia-container-toolkit", installedPath)
if err != nil { if err != nil {
return "", fmt.Errorf("error installing symlink to NVIDIA container runtime hook: %v", err) return "", fmt.Errorf("error installing symlink to NVIDIA container runtime hook: %v", err)
} }