mirror of
https://github.com/NVIDIA/nvidia-container-toolkit
synced 2024-11-29 07:21:46 +00:00
Resolve ldconfig path in update-ldcache hook
Signed-off-by: Evan Lezar <elezar@nvidia.com>
This commit is contained in:
parent
232df647c1
commit
d792e64f38
@ -22,6 +22,7 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
"syscall"
|
"syscall"
|
||||||
|
|
||||||
|
"github.com/NVIDIA/nvidia-container-toolkit/internal/config"
|
||||||
"github.com/NVIDIA/nvidia-container-toolkit/internal/logger"
|
"github.com/NVIDIA/nvidia-container-toolkit/internal/logger"
|
||||||
"github.com/NVIDIA/nvidia-container-toolkit/internal/oci"
|
"github.com/NVIDIA/nvidia-container-toolkit/internal/oci"
|
||||||
"github.com/urfave/cli/v2"
|
"github.com/urfave/cli/v2"
|
||||||
@ -31,7 +32,7 @@ type command struct {
|
|||||||
logger logger.Interface
|
logger logger.Interface
|
||||||
}
|
}
|
||||||
|
|
||||||
type config struct {
|
type options struct {
|
||||||
folders cli.StringSlice
|
folders cli.StringSlice
|
||||||
containerSpec string
|
containerSpec string
|
||||||
}
|
}
|
||||||
@ -46,7 +47,7 @@ func NewCommand(logger logger.Interface) *cli.Command {
|
|||||||
|
|
||||||
// build the update-ldcache command
|
// build the update-ldcache command
|
||||||
func (m command) build() *cli.Command {
|
func (m command) build() *cli.Command {
|
||||||
cfg := config{}
|
cfg := options{}
|
||||||
|
|
||||||
// Create the 'update-ldcache' command
|
// Create the 'update-ldcache' command
|
||||||
c := cli.Command{
|
c := cli.Command{
|
||||||
@ -73,7 +74,7 @@ func (m command) build() *cli.Command {
|
|||||||
return &c
|
return &c
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m command) run(c *cli.Context, cfg *config) error {
|
func (m command) run(c *cli.Context, cfg *options) error {
|
||||||
s, err := oci.LoadContainerState(cfg.containerSpec)
|
s, err := oci.LoadContainerState(cfg.containerSpec)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to load container state: %v", err)
|
return fmt.Errorf("failed to load container state: %v", err)
|
||||||
@ -84,7 +85,8 @@ func (m command) run(c *cli.Context, cfg *config) error {
|
|||||||
return fmt.Errorf("failed to determined container root: %v", err)
|
return fmt.Errorf("failed to determined container root: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
args := []string{"/sbin/ldconfig"}
|
ldconfigPath := m.resolveLDConfigPath("/sbin/ldconfig")
|
||||||
|
args := []string{filepath.Base(ldconfigPath)}
|
||||||
if containerRoot != "" {
|
if containerRoot != "" {
|
||||||
args = append(args, "-r", containerRoot)
|
args = append(args, "-r", containerRoot)
|
||||||
}
|
}
|
||||||
@ -118,6 +120,13 @@ func (r root) hasPath(path string) bool {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// resolveLDConfigPath determines the LDConfig path to use for the system.
|
||||||
|
// On systems such as Ubuntu where `/sbin/ldconfig` is a wrapper around
|
||||||
|
// /sbin/ldconfig.real, the latter is returned.
|
||||||
|
func (m command) resolveLDConfigPath(path string) string {
|
||||||
|
return config.NormalizeLDConfigPath("@" + path)
|
||||||
|
}
|
||||||
|
|
||||||
// createConfig creates (or updates) /etc/ld.so.conf.d/nvcr-<RANDOM_STRING>.conf in the container
|
// createConfig creates (or updates) /etc/ld.so.conf.d/nvcr-<RANDOM_STRING>.conf in the container
|
||||||
// to include the required paths.
|
// to include the required paths.
|
||||||
func (m command) createConfig(root string, folders []string) error {
|
func (m command) createConfig(root string, folders []string) error {
|
||||||
|
Loading…
Reference in New Issue
Block a user