From 79cf38de27c8a7106c384c2d3e80d9fee83575d4 Mon Sep 17 00:00:00 2001 From: Matt Madison Date: Mon, 6 May 2024 15:19:55 -0700 Subject: [PATCH] external/virtualization-layer: update nvidia-container-toolkit to 1.14.5 * Added patch to support location of files in the container-passthrough tree * Added systemd service to generate the config.toml file for the container runtime during boot, so we can add the location of the passthrough tree. Signed-off-by: Ilies CHERGUI Signed-off-by: Matt Madison --- ...alternate-roots-for-tegra-CSV-handli.patch | 251 ++++++++++++++++++ ...ix-cgo-LDFLAGS-for-go-1.21-and-later.patch | 28 -- ...ix-cgo-LDFLAGS-for-go-1.21-and-later.patch | 70 +++++ .../generate-config.sh.in | 4 + .../nvidia-container-setup.service.in | 13 + ....bb => nvidia-container-toolkit_1.14.5.bb} | 35 ++- 6 files changed, 355 insertions(+), 46 deletions(-) create mode 100644 external/virtualization-layer/recipes-containers/nvidia-container-toolkit/nvidia-container-toolkit/0001-Add-support-for-alternate-roots-for-tegra-CSV-handli.patch delete mode 100644 external/virtualization-layer/recipes-containers/nvidia-container-toolkit/nvidia-container-toolkit/0001-Fix-cgo-LDFLAGS-for-go-1.21-and-later.patch create mode 100644 external/virtualization-layer/recipes-containers/nvidia-container-toolkit/nvidia-container-toolkit/0002-Fix-cgo-LDFLAGS-for-go-1.21-and-later.patch create mode 100644 external/virtualization-layer/recipes-containers/nvidia-container-toolkit/nvidia-container-toolkit/generate-config.sh.in create mode 100644 external/virtualization-layer/recipes-containers/nvidia-container-toolkit/nvidia-container-toolkit/nvidia-container-setup.service.in rename external/virtualization-layer/recipes-containers/nvidia-container-toolkit/{nvidia-container-toolkit_1.11.0.bb => nvidia-container-toolkit_1.14.5.bb} (69%) diff --git a/external/virtualization-layer/recipes-containers/nvidia-container-toolkit/nvidia-container-toolkit/0001-Add-support-for-alternate-roots-for-tegra-CSV-handli.patch b/external/virtualization-layer/recipes-containers/nvidia-container-toolkit/nvidia-container-toolkit/0001-Add-support-for-alternate-roots-for-tegra-CSV-handli.patch new file mode 100644 index 00000000..863e09d5 --- /dev/null +++ b/external/virtualization-layer/recipes-containers/nvidia-container-toolkit/nvidia-container-toolkit/0001-Add-support-for-alternate-roots-for-tegra-CSV-handli.patch @@ -0,0 +1,251 @@ +From 4af28f6ae3cc08e28db4a498c9d35b526e5f0374 Mon Sep 17 00:00:00 2001 +From: Matt Madison +Date: Sat, 9 Mar 2024 06:17:17 -0800 +Subject: [PATCH 1/2] Add support for 'alternate' roots for tegra CSV handling + +So the host OS can provide one or more trees of libraries that +should be mounted into containers, overriding the copies in +the main rootfs of the host OS. + +Upstream-Status: Inappropriate [oe-specific] + +Signed-off-by: Matt Madison +--- + cmd/nvidia-ctk/cdi/generate/generate.go | 7 +++ + internal/config/runtime.go | 3 +- + internal/config/toml_test.go | 1 + + internal/modifier/csv.go | 1 + + internal/platform-support/tegra/csv.go | 62 +++++++++++++++++------- + internal/platform-support/tegra/tegra.go | 8 +++ + pkg/nvcdi/lib-csv.go | 1 + + pkg/nvcdi/lib.go | 1 + + pkg/nvcdi/options.go | 8 +++ + 9 files changed, 74 insertions(+), 18 deletions(-) + +diff --git a/cmd/nvidia-ctk/cdi/generate/generate.go b/cmd/nvidia-ctk/cdi/generate/generate.go +index fd46962..89ff4cc 100644 +--- a/cmd/nvidia-ctk/cdi/generate/generate.go ++++ b/cmd/nvidia-ctk/cdi/generate/generate.go +@@ -52,6 +52,7 @@ type options struct { + class string + + librarySearchPaths cli.StringSlice ++ altRoots cli.StringSlice + + csv struct { + files cli.StringSlice +@@ -118,6 +119,11 @@ func (m command) build() *cli.Command { + Usage: "Specify the path to search for libraries when discovering the entities that should be included in the CDI specification.\n\tNote: This option only applies to CSV mode.", + Destination: &opts.librarySearchPaths, + }, ++ &cli.StringSliceFlag{ ++ Name: "alt-roots", ++ Usage: "Specify alternate passthrough root to search for files when discovering the entities that should be included in the CDI specification.\n\tNote: This option only applies to CSV mode.", ++ Destination: &opts.altRoots, ++ }, + &cli.StringFlag{ + Name: "nvidia-ctk-path", + Usage: "Specify the path to use for the nvidia-ctk in the generated CDI specification. If this is left empty, the path will be searched.", +@@ -241,6 +247,7 @@ func (m command) generateSpec(opts *options) (spec.Interface, error) { + nvcdi.WithDeviceNamer(deviceNamer), + nvcdi.WithMode(string(opts.mode)), + nvcdi.WithLibrarySearchPaths(opts.librarySearchPaths.Value()), ++ nvcdi.WithAltRoots(opts.altRoots.Value()), + nvcdi.WithCSVFiles(opts.csv.files.Value()), + nvcdi.WithCSVIgnorePatterns(opts.csv.ignorePatterns.Value()), + ) +diff --git a/internal/config/runtime.go b/internal/config/runtime.go +index ed9ea64..356a9e7 100644 +--- a/internal/config/runtime.go ++++ b/internal/config/runtime.go +@@ -43,7 +43,8 @@ type cdiModeConfig struct { + } + + type csvModeConfig struct { +- MountSpecPath string `toml:"mount-spec-path"` ++ MountSpecPath string `toml:"mount-spec-path"` ++ AltRoots []string `toml:"alt-roots"` + } + + // GetDefaultRuntimeConfig defines the default values for the config +diff --git a/internal/config/toml_test.go b/internal/config/toml_test.go +index e017db1..d0c47a0 100644 +--- a/internal/config/toml_test.go ++++ b/internal/config/toml_test.go +@@ -72,6 +72,7 @@ default-kind = "nvidia.com/gpu" + spec-dirs = ["/etc/cdi", "/var/run/cdi"] + + [nvidia-container-runtime.modes.csv] ++alt-roots = [] + mount-spec-path = "/etc/nvidia-container-runtime/host-files-for-container.d" + + [nvidia-container-runtime-hook] +diff --git a/internal/modifier/csv.go b/internal/modifier/csv.go +index 56adcdc..c55b6f7 100644 +--- a/internal/modifier/csv.go ++++ b/internal/modifier/csv.go +@@ -72,6 +72,7 @@ func NewCSVModifier(logger logger.Interface, cfg *config.Config, image image.CUD + nvcdi.WithNVIDIACTKPath(cfg.NVIDIACTKConfig.Path), + nvcdi.WithMode(nvcdi.ModeCSV), + nvcdi.WithCSVFiles(csvFiles), ++ nvcdi.WithAltRoots(cfg.NVIDIAContainerRuntimeConfig.Modes.CSV.AltRoots), + ) + if err != nil { + return nil, fmt.Errorf("failed to construct CDI library: %v", err) +diff --git a/internal/platform-support/tegra/csv.go b/internal/platform-support/tegra/csv.go +index ff2f493..45a5dca 100644 +--- a/internal/platform-support/tegra/csv.go ++++ b/internal/platform-support/tegra/csv.go +@@ -43,38 +43,66 @@ func (o tegraOptions) newDiscovererFromCSVFiles() (discover.Discover, error) { + targetsByType[csv.MountSpecDev], + ) + +- directories := discover.NewMounts( ++ var directories []discover.Discover ++ var libraries []discover.Discover ++ var symlinks []discover.Discover ++ ++ symlinkTargets := o.ignorePatterns.Apply(targetsByType[csv.MountSpecSym]...) ++ o.logger.Debugf("Filtered symlink targets: %v", symlinkTargets) ++ ++ for _, altRoot := range o.altRoots { ++ directories = append(directories, discover.NewMounts( ++ o.logger, ++ lookup.NewDirectoryLocator(lookup.WithLogger(o.logger), lookup.WithRoot(altRoot)), ++ altRoot, ++ targetsByType[csv.MountSpecDir], ++ )) ++ ++ // Libraries and symlinks use the same locator. ++ libraries = append(libraries, discover.NewMounts( ++ o.logger, ++ lookup.NewSymlinkLocator(lookup.WithLogger(o.logger), lookup.WithRoot(altRoot)), ++ altRoot, ++ targetsByType[csv.MountSpecLib], ++ )) ++ ++ symlinks = append(symlinks, discover.NewMounts( ++ o.logger, ++ lookup.NewSymlinkLocator(lookup.WithLogger(o.logger), lookup.WithRoot(altRoot)), ++ altRoot, ++ symlinkTargets, ++ )) ++ } ++ directories = append(directories, discover.NewMounts( + o.logger, + lookup.NewDirectoryLocator(lookup.WithLogger(o.logger), lookup.WithRoot(o.driverRoot)), + o.driverRoot, + targetsByType[csv.MountSpecDir], +- ) ++ )) + + // Libraries and symlinks use the same locator. +- libraries := discover.NewMounts( ++ librariesInDriverRoot := discover.NewMounts( + o.logger, + o.symlinkLocator, + o.driverRoot, + targetsByType[csv.MountSpecLib], + ) +- +- symlinkTargets := o.ignorePatterns.Apply(targetsByType[csv.MountSpecSym]...) +- o.logger.Debugf("Filtered symlink targets: %v", symlinkTargets) +- symlinks := discover.NewMounts( ++ libraries = append(libraries, librariesInDriverRoot) ++ symlinks = append(symlinks, discover.NewMounts( + o.logger, + o.symlinkLocator, + o.driverRoot, + symlinkTargets, +- ) +- createSymlinks := o.createCSVSymlinkHooks(symlinkTargets, libraries) +- +- d := discover.Merge( +- devices, +- directories, +- libraries, +- symlinks, +- createSymlinks, +- ) ++ )) ++ createSymlinks := o.createCSVSymlinkHooks(symlinkTargets, librariesInDriverRoot) ++ ++ var allDiscoverers []discover.Discover ++ allDiscoverers = append(allDiscoverers, devices) ++ allDiscoverers = append(allDiscoverers, directories...) ++ allDiscoverers = append(allDiscoverers, libraries...) ++ allDiscoverers = append(allDiscoverers, symlinks...) ++ allDiscoverers = append(allDiscoverers, createSymlinks) ++ d := discover.Merge(allDiscoverers...) + + return d, nil + } +diff --git a/internal/platform-support/tegra/tegra.go b/internal/platform-support/tegra/tegra.go +index ad5c5b6..12ccfce 100644 +--- a/internal/platform-support/tegra/tegra.go ++++ b/internal/platform-support/tegra/tegra.go +@@ -29,6 +29,7 @@ type tegraOptions struct { + logger logger.Interface + csvFiles []string + driverRoot string ++ altRoots []string + nvidiaCTKPath string + librarySearchPaths []string + ignorePatterns ignoreMountSpecPatterns +@@ -113,6 +114,13 @@ func WithDriverRoot(driverRoot string) Option { + } + } + ++// WithAltRoots sets alternate roots for file/lib/symlink lookups in the discoverer. ++func WithAltRoots(altRoots []string) Option { ++ return func(o *tegraOptions) { ++ o.altRoots = altRoots ++ } ++} ++ + // WithCSVFiles sets the CSV files for the discoverer. + func WithCSVFiles(csvFiles []string) Option { + return func(o *tegraOptions) { +diff --git a/pkg/nvcdi/lib-csv.go b/pkg/nvcdi/lib-csv.go +index 09f0b14..9cc3666 100644 +--- a/pkg/nvcdi/lib-csv.go ++++ b/pkg/nvcdi/lib-csv.go +@@ -43,6 +43,7 @@ func (l *csvlib) GetAllDeviceSpecs() ([]specs.Device, error) { + d, err := tegra.New( + tegra.WithLogger(l.logger), + tegra.WithDriverRoot(l.driverRoot), ++ tegra.WithAltRoots(l.altRoots), + tegra.WithNVIDIACTKPath(l.nvidiaCTKPath), + tegra.WithCSVFiles(l.csvFiles), + tegra.WithLibrarySearchPaths(l.librarySearchPaths...), +diff --git a/pkg/nvcdi/lib.go b/pkg/nvcdi/lib.go +index f8a52c1..44e7544 100644 +--- a/pkg/nvcdi/lib.go ++++ b/pkg/nvcdi/lib.go +@@ -44,6 +44,7 @@ type nvcdilib struct { + devicelib device.Interface + deviceNamer DeviceNamer + driverRoot string ++ altRoots []string + nvidiaCTKPath string + librarySearchPaths []string + +diff --git a/pkg/nvcdi/options.go b/pkg/nvcdi/options.go +index 61c4c95..0157a3b 100644 +--- a/pkg/nvcdi/options.go ++++ b/pkg/nvcdi/options.go +@@ -118,3 +118,11 @@ func WithLibrarySearchPaths(paths []string) Option { + o.librarySearchPaths = paths + } + } ++ ++// WithAltRoots sets the alternate pass-through roots. ++// This is currently only used for CSV-mode. ++func WithAltRoots(altRoots []string) Option { ++ return func(o *nvcdilib) { ++ o.altRoots = altRoots ++ } ++} +-- +2.34.1 + diff --git a/external/virtualization-layer/recipes-containers/nvidia-container-toolkit/nvidia-container-toolkit/0001-Fix-cgo-LDFLAGS-for-go-1.21-and-later.patch b/external/virtualization-layer/recipes-containers/nvidia-container-toolkit/nvidia-container-toolkit/0001-Fix-cgo-LDFLAGS-for-go-1.21-and-later.patch deleted file mode 100644 index 4b06dd9a..00000000 --- a/external/virtualization-layer/recipes-containers/nvidia-container-toolkit/nvidia-container-toolkit/0001-Fix-cgo-LDFLAGS-for-go-1.21-and-later.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 20cbd3337c7fcda12eb5e5d38c92ad23f63a9270 Mon Sep 17 00:00:00 2001 -From: Matt Madison -Date: Sun, 17 Mar 2024 09:33:12 -0700 -Subject: [PATCH 1/2] Fix cgo LDFLAGS for go 1.21 and later - -Upstream-Status: Pending - -Signed-off-by: Matt Madison ---- - internal/cuda/cuda.go | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/internal/cuda/cuda.go b/internal/cuda/cuda.go -index 2c70a82..3fc7952 100644 ---- a/internal/cuda/cuda.go -+++ b/internal/cuda/cuda.go -@@ -23,7 +23,7 @@ import ( - ) - - /* --#cgo LDFLAGS: -Wl,--unresolved-symbols=ignore-in-object-files -+#cgo LDFLAGS: -Wl,--export-dynamic -Wl,--unresolved-symbols=ignore-in-object-files - - #ifdef _WIN32 - #define CUDAAPI __stdcall --- -2.34.1 - diff --git a/external/virtualization-layer/recipes-containers/nvidia-container-toolkit/nvidia-container-toolkit/0002-Fix-cgo-LDFLAGS-for-go-1.21-and-later.patch b/external/virtualization-layer/recipes-containers/nvidia-container-toolkit/nvidia-container-toolkit/0002-Fix-cgo-LDFLAGS-for-go-1.21-and-later.patch new file mode 100644 index 00000000..bd9c67e5 --- /dev/null +++ b/external/virtualization-layer/recipes-containers/nvidia-container-toolkit/nvidia-container-toolkit/0002-Fix-cgo-LDFLAGS-for-go-1.21-and-later.patch @@ -0,0 +1,70 @@ +From 579e83fac59da8520ad4cdc6fb2d722cbeec13bc Mon Sep 17 00:00:00 2001 +From: Matt Madison +Date: Mon, 11 Mar 2024 04:32:52 -0700 +Subject: [PATCH 2/2] cgo LDFLAGS update for go 1.21 and later + +Upstream-Status: Pending [https://github.com/NVIDIA/go-nvml/pull/79] + +Signed-off-by: Matt Madison +--- + internal/cuda/cuda.go | 2 +- + internal/dxcore/dxcore.go | 2 +- + vendor/github.com/NVIDIA/go-nvml/pkg/nvml/const.go | 2 +- + vendor/github.com/NVIDIA/go-nvml/pkg/nvml/nvml.go | 2 +- + 4 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/internal/cuda/cuda.go b/internal/cuda/cuda.go +index 2c70a82..3fc7952 100644 +--- a/internal/cuda/cuda.go ++++ b/internal/cuda/cuda.go +@@ -23,7 +23,7 @@ import ( + ) + + /* +-#cgo LDFLAGS: -Wl,--unresolved-symbols=ignore-in-object-files ++#cgo LDFLAGS: -Wl,--export-dynamic -Wl,--unresolved-symbols=ignore-in-object-files + + #ifdef _WIN32 + #define CUDAAPI __stdcall +diff --git a/internal/dxcore/dxcore.go b/internal/dxcore/dxcore.go +index 76cc53f..05c4b45 100644 +--- a/internal/dxcore/dxcore.go ++++ b/internal/dxcore/dxcore.go +@@ -17,7 +17,7 @@ + package dxcore + + /* +-#cgo LDFLAGS: -Wl,--unresolved-symbols=ignore-in-object-files ++#cgo LDFLAGS: -Wl,--export-dynamic -Wl,--unresolved-symbols=ignore-in-object-files + #include + */ + import "C" +diff --git a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/const.go b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/const.go +index 1a0efaf..a9a3a56 100644 +--- a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/const.go ++++ b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/const.go +@@ -18,7 +18,7 @@ + package nvml + + /* +-#cgo LDFLAGS: -Wl,--unresolved-symbols=ignore-in-object-files ++#cgo LDFLAGS: -Wl,--export-dynamic -Wl,--unresolved-symbols=ignore-in-object-files + #cgo CFLAGS: -DNVML_NO_UNVERSIONED_FUNC_DEFS=1 + #include "nvml.h" + #include +diff --git a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/nvml.go b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/nvml.go +index f63dfe8..bf2d6fc 100644 +--- a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/nvml.go ++++ b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/nvml.go +@@ -18,7 +18,7 @@ + package nvml + + /* +-#cgo LDFLAGS: -Wl,--unresolved-symbols=ignore-in-object-files ++#cgo LDFLAGS: -Wl,--export-dynamic -Wl,--unresolved-symbols=ignore-in-object-files + #cgo CFLAGS: -DNVML_NO_UNVERSIONED_FUNC_DEFS=1 + #include "nvml.h" + #include +-- +2.34.1 + diff --git a/external/virtualization-layer/recipes-containers/nvidia-container-toolkit/nvidia-container-toolkit/generate-config.sh.in b/external/virtualization-layer/recipes-containers/nvidia-container-toolkit/nvidia-container-toolkit/generate-config.sh.in new file mode 100644 index 00000000..ad4fdbeb --- /dev/null +++ b/external/virtualization-layer/recipes-containers/nvidia-container-toolkit/nvidia-container-toolkit/generate-config.sh.in @@ -0,0 +1,4 @@ +#!/bin/sh +RUNTIME_DIRECTORY=${RUNTIME_DIRECTORY:-/run/nvidia-container-runtime} +nvidia-ctk config generate-default -o $RUNTIME_DIRECTORY/config.toml +nvidia-ctk config -c $RUNTIME_DIRECTORY/config.toml -i -set nvidia-container-runtime.modes.csv.alt-roots=@DATADIR@/nvidia-container-passthrough diff --git a/external/virtualization-layer/recipes-containers/nvidia-container-toolkit/nvidia-container-toolkit/nvidia-container-setup.service.in b/external/virtualization-layer/recipes-containers/nvidia-container-toolkit/nvidia-container-toolkit/nvidia-container-setup.service.in new file mode 100644 index 00000000..f094816c --- /dev/null +++ b/external/virtualization-layer/recipes-containers/nvidia-container-toolkit/nvidia-container-toolkit/nvidia-container-setup.service.in @@ -0,0 +1,13 @@ +[Unit] +Description=Generate NVIDIA container runtime configuration +Before=docker.service containerd.service + +[Service] +Type=oneshot +RemainAfterExit=yes +RuntimeDirectory=nvidia-container-runtime +RuntimeDirectoryPreserve=yes +ExecStart=@LIBEXECDIR@/nvidia-container-runtime/generate-config + +[Install] +WantedBy=multi-user.target diff --git a/external/virtualization-layer/recipes-containers/nvidia-container-toolkit/nvidia-container-toolkit_1.11.0.bb b/external/virtualization-layer/recipes-containers/nvidia-container-toolkit/nvidia-container-toolkit_1.14.5.bb similarity index 69% rename from external/virtualization-layer/recipes-containers/nvidia-container-toolkit/nvidia-container-toolkit_1.11.0.bb rename to external/virtualization-layer/recipes-containers/nvidia-container-toolkit/nvidia-container-toolkit_1.14.5.bb index b0a75e30..b65cc3fd 100644 --- a/external/virtualization-layer/recipes-containers/nvidia-container-toolkit/nvidia-container-toolkit_1.11.0.bb +++ b/external/virtualization-layer/recipes-containers/nvidia-container-toolkit/nvidia-container-toolkit_1.14.5.bb @@ -9,19 +9,13 @@ COMPATIBLE_MACHINE = "(tegra)" LICENSE = "Apache-2.0 & MIT & ISC & MPL-2.0 & (Apache-2.0 | MIT)" LIC_FILES_CHKSUM = "file://src/${GO_IMPORT}/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57 \ - file://src/${GO_IMPORT}/vendor/github.com/blang/semver/LICENSE;md5=5a3ade42a900439691ebc22013660cae \ - file://src/${GO_IMPORT}/vendor/github.com/container-orchestrated-devices/container-device-interface/LICENSE;md5=86d3f3a95c324c9479bd8986968f4327 \ + file://src/${GO_IMPORT}/vendor/tags.cncf.io/container-device-interface/LICENSE;md5=86d3f3a95c324c9479bd8986968f4327 \ file://src/${GO_IMPORT}/vendor/github.com/davecgh/go-spew/LICENSE;md5=c06795ed54b2a35ebeeb543cd3a73e56 \ file://src/${GO_IMPORT}/vendor/github.com/fsnotify/fsnotify/LICENSE;md5=68f2948d3c4943313d07e084a362486c \ - file://src/${GO_IMPORT}/vendor/github.com/hashicorp/errwrap/LICENSE;md5=b278a92d2c1509760384428817710378 \ - file://src/${GO_IMPORT}/vendor/github.com/hashicorp/go-multierror/LICENSE;md5=d44fdeb607e2d2614db9464dbedd4094 \ file://src/${GO_IMPORT}/vendor/github.com/NVIDIA/go-nvml/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57 \ - file://src/${GO_IMPORT}/vendor/github.com/opencontainers/runc/LICENSE;md5=435b266b3899aa8a959f17d41c56def8 \ file://src/${GO_IMPORT}/vendor/github.com/opencontainers/runtime-spec/LICENSE;md5=b355a61a394a504dacde901c958f662c \ file://src/${GO_IMPORT}/vendor/github.com/opencontainers/runtime-tools/LICENSE;md5=b355a61a394a504dacde901c958f662c \ - file://src/${GO_IMPORT}/vendor/github.com/opencontainers/selinux/LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e \ file://src/${GO_IMPORT}/vendor/github.com/pelletier/go-toml/LICENSE;md5=e49b63d868761700c5df76e7946d0bd7 \ - file://src/${GO_IMPORT}/vendor/github.com/pkg/errors/LICENSE;md5=6fe682a02df52c6653f33bd0f7126b5a \ file://src/${GO_IMPORT}/vendor/github.com/pmezard/go-difflib/LICENSE;md5=e9a2ebb8de779a07500ddecca806145e \ file://src/${GO_IMPORT}/vendor/github.com/sirupsen/logrus/LICENSE;md5=8dadfef729c08ec4e631c4f6fc5d43a0 \ file://src/${GO_IMPORT}/vendor/github.com/stretchr/testify/LICENSE;md5=188f01994659f3c0d310612333d2a26f \ @@ -35,13 +29,14 @@ LIC_FILES_CHKSUM = "file://src/${GO_IMPORT}/LICENSE;md5=3b83ef96387f14655fc854dd file://src/${GO_IMPORT}/vendor/sigs.k8s.io/yaml/LICENSE;md5=0ceb9ff3b27d3a8cf451ca3785d73c71 \ " -SRC_URI = "git://github.com/NVIDIA/nvidia-container-toolkit.git;protocol=https;branch=main;destsuffix=${GO_SRCURI_DESTSUFFIX}" -SRCREV = "d9de4a09b8fd51a46207398199ecfeb3998ad49d" +SRC_URI = "git://github.com/NVIDIA/nvidia-container-toolkit.git;protocol=https;branch=release-1.14;destsuffix=${GO_SRCURI_DESTSUFFIX}" +SRCREV = "9ea336070134e612145d342e495f2fc616aab063" SRC_URI += "\ - file://0001-Fix-cgo-LDFLAGS-for-go-1.21-and-later.patch;patchdir=src/${GO_IMPORT} \ - file://0002-Add-alt-root-support.patch;patchdir=src/${GO_IMPORT} \ - file://config.toml.in \ + file://0001-Add-support-for-alternate-roots-for-tegra-CSV-handli.patch;patchdir=src/${GO_IMPORT} \ + file://0002-Fix-cgo-LDFLAGS-for-go-1.21-and-later.patch;patchdir=src/${GO_IMPORT} \ + file://generate-config.sh.in \ + file://nvidia-container-setup.service.in \ " GO_IMPORT = "github.com/NVIDIA/nvidia-container-toolkit" @@ -60,26 +55,30 @@ S = "${WORKDIR}/git" REQUIRED_DISTRO_FEATURES = "virtualization" -inherit go-mod gitpkgv features_check +inherit go-mod gitpkgv features_check systemd do_compile() { go_do_compile - sed -e's,!LOCALSTATEDIR!,${localstatedir},g' \ - -e's,!BASE_SBINDIR!,${base_sbindir},g' \ - -e's,!SYSCONFDIR!,${sysconfdir},g' \ - -e's,!DATADIR!,${datadir},g' ${UNPACKDIR}/config.toml.in > ${B}/config.toml + sed -e's,@DATADIR@,${datadir},g' ${UNPACKDIR}/generate-config.sh.in > ${B}/generate-config.sh + sed -e's,@LIBEXECDIR@,${libexecdir},g' ${UNPACKDIR}/nvidia-container-setup.service.in > ${B}/nvidia-container-setup.service } do_install(){ go_do_install - install -m 0644 -D -t ${D}${sysconfdir}/nvidia-container-runtime ${B}/config.toml ln -sf nvidia-container-runtime-hook ${D}${bindir}/nvidia-container-toolkit + install -d ${D}${sysconfdir}/nvidia-container-runtime + install -D -m0755 ${B}/generate-config.sh ${D}${libexecdir}/nvidia-container-runtime/generate-config + install -D -m0644 ${B}/nvidia-container-setup.service ${D}${systemd_system_unitdir}/nvidia-container-setup.service } +SYSTEMD_SERVICE:${PN} = "nvidia-container-setup.service" RDEPENDS:${PN} = "\ libnvidia-container-tools \ docker \ + nv-tegra-release \ tegra-configs-container-csv \ + tegra-libraries-nvml \ + tegra-container-passthrough \ " RDEPENDS:${PN}-dev += "bash make" PACKAGE_ARCH:tegra = "${TEGRA_PKGARCH}"