mirror of https://github.com/docker/cli.git
Merge pull request #4470 from thaJeztah/bump_containerd_1.6.22
vendor: github.com/containerd/containerd v1.6.22
This commit is contained in:
commit
bb0e232605
|
@ -9,7 +9,7 @@ go 1.18
|
||||||
require (
|
require (
|
||||||
dario.cat/mergo v1.0.0
|
dario.cat/mergo v1.0.0
|
||||||
github.com/container-orchestrated-devices/container-device-interface v0.6.0
|
github.com/container-orchestrated-devices/container-device-interface v0.6.0
|
||||||
github.com/containerd/containerd v1.6.21
|
github.com/containerd/containerd v1.6.22
|
||||||
github.com/creack/pty v1.1.18
|
github.com/creack/pty v1.1.18
|
||||||
github.com/docker/distribution v2.8.2+incompatible
|
github.com/docker/distribution v2.8.2+incompatible
|
||||||
github.com/docker/docker v24.0.0-rc.2.0.20230714195812-dab9ffb25218+incompatible // master (v25.0.0-dev)
|
github.com/docker/docker v24.0.0-rc.2.0.20230714195812-dab9ffb25218+incompatible // master (v25.0.0-dev)
|
||||||
|
|
|
@ -36,8 +36,8 @@ github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoC
|
||||||
github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI=
|
github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI=
|
||||||
github.com/container-orchestrated-devices/container-device-interface v0.6.0 h1:aWwcz/Ep0Fd7ZuBjQGjU/jdPloM7ydhMW13h85jZNvk=
|
github.com/container-orchestrated-devices/container-device-interface v0.6.0 h1:aWwcz/Ep0Fd7ZuBjQGjU/jdPloM7ydhMW13h85jZNvk=
|
||||||
github.com/container-orchestrated-devices/container-device-interface v0.6.0/go.mod h1:OQlgtJtDrOxSQ1BWODC8OZK1tzi9W69wek+Jy17ndzo=
|
github.com/container-orchestrated-devices/container-device-interface v0.6.0/go.mod h1:OQlgtJtDrOxSQ1BWODC8OZK1tzi9W69wek+Jy17ndzo=
|
||||||
github.com/containerd/containerd v1.6.21 h1:eSTAmnvDKRPWan+MpSSfNyrtleXd86ogK9X8fMWpe/Q=
|
github.com/containerd/containerd v1.6.22 h1:rGTIBxPJusM0evF6wKgIzuD+tV70nmx9eEjzHVm1JzI=
|
||||||
github.com/containerd/containerd v1.6.21/go.mod h1:apei1/i5Ux2FzrK6+DM/suEsGuK/MeVOfy8tR2q7Wnw=
|
github.com/containerd/containerd v1.6.22/go.mod h1:BQAJdahvGz8xboAvxKg9hsDYIovn79Ea318anowQ1/o=
|
||||||
github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
|
github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
|
||||||
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
|
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
|
||||||
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
||||||
|
|
|
@ -18,6 +18,7 @@ package log
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
@ -35,6 +36,12 @@ var (
|
||||||
|
|
||||||
type (
|
type (
|
||||||
loggerKey struct{}
|
loggerKey struct{}
|
||||||
|
|
||||||
|
// Fields type to pass to `WithFields`, alias from `logrus`.
|
||||||
|
Fields = logrus.Fields
|
||||||
|
|
||||||
|
// Level is a logging level
|
||||||
|
Level = logrus.Level
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -47,8 +54,52 @@ const (
|
||||||
|
|
||||||
// JSONFormat represents the JSON logging format
|
// JSONFormat represents the JSON logging format
|
||||||
JSONFormat = "json"
|
JSONFormat = "json"
|
||||||
|
|
||||||
|
// TraceLevel level.
|
||||||
|
TraceLevel = logrus.TraceLevel
|
||||||
|
|
||||||
|
// DebugLevel level.
|
||||||
|
DebugLevel = logrus.DebugLevel
|
||||||
|
|
||||||
|
// InfoLevel level.
|
||||||
|
InfoLevel = logrus.InfoLevel
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// SetLevel sets log level globally.
|
||||||
|
func SetLevel(level string) error {
|
||||||
|
lvl, err := logrus.ParseLevel(level)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
logrus.SetLevel(lvl)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetLevel returns the current log level.
|
||||||
|
func GetLevel() Level {
|
||||||
|
return logrus.GetLevel()
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetFormat sets log output format
|
||||||
|
func SetFormat(format string) error {
|
||||||
|
switch format {
|
||||||
|
case TextFormat:
|
||||||
|
logrus.SetFormatter(&logrus.TextFormatter{
|
||||||
|
TimestampFormat: RFC3339NanoFixed,
|
||||||
|
FullTimestamp: true,
|
||||||
|
})
|
||||||
|
case JSONFormat:
|
||||||
|
logrus.SetFormatter(&logrus.JSONFormatter{
|
||||||
|
TimestampFormat: RFC3339NanoFixed,
|
||||||
|
})
|
||||||
|
default:
|
||||||
|
return fmt.Errorf("unknown log format: %s", format)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// WithLogger returns a new context with the provided logger. Use in
|
// WithLogger returns a new context with the provided logger. Use in
|
||||||
// combination with logger.WithField(s) for great effect.
|
// combination with logger.WithField(s) for great effect.
|
||||||
func WithLogger(ctx context.Context, logger *logrus.Entry) context.Context {
|
func WithLogger(ctx context.Context, logger *logrus.Entry) context.Context {
|
||||||
|
|
|
@ -17,14 +17,9 @@
|
||||||
package platforms
|
package platforms
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bufio"
|
|
||||||
"fmt"
|
|
||||||
"os"
|
|
||||||
"runtime"
|
"runtime"
|
||||||
"strings"
|
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/containerd/containerd/errdefs"
|
|
||||||
"github.com/containerd/containerd/log"
|
"github.com/containerd/containerd/log"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -37,95 +32,12 @@ var cpuVariantOnce sync.Once
|
||||||
func cpuVariant() string {
|
func cpuVariant() string {
|
||||||
cpuVariantOnce.Do(func() {
|
cpuVariantOnce.Do(func() {
|
||||||
if isArmArch(runtime.GOARCH) {
|
if isArmArch(runtime.GOARCH) {
|
||||||
cpuVariantValue = getCPUVariant()
|
var err error
|
||||||
|
cpuVariantValue, err = getCPUVariant()
|
||||||
|
if err != nil {
|
||||||
|
log.L.Errorf("Error getCPUVariant for OS %s: %v", runtime.GOOS, err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
return cpuVariantValue
|
return cpuVariantValue
|
||||||
}
|
}
|
||||||
|
|
||||||
// For Linux, the kernel has already detected the ABI, ISA and Features.
|
|
||||||
// So we don't need to access the ARM registers to detect platform information
|
|
||||||
// by ourselves. We can just parse these information from /proc/cpuinfo
|
|
||||||
func getCPUInfo(pattern string) (info string, err error) {
|
|
||||||
if !isLinuxOS(runtime.GOOS) {
|
|
||||||
return "", fmt.Errorf("getCPUInfo for OS %s: %w", runtime.GOOS, errdefs.ErrNotImplemented)
|
|
||||||
}
|
|
||||||
|
|
||||||
cpuinfo, err := os.Open("/proc/cpuinfo")
|
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
defer cpuinfo.Close()
|
|
||||||
|
|
||||||
// Start to Parse the Cpuinfo line by line. For SMP SoC, we parse
|
|
||||||
// the first core is enough.
|
|
||||||
scanner := bufio.NewScanner(cpuinfo)
|
|
||||||
for scanner.Scan() {
|
|
||||||
newline := scanner.Text()
|
|
||||||
list := strings.Split(newline, ":")
|
|
||||||
|
|
||||||
if len(list) > 1 && strings.EqualFold(strings.TrimSpace(list[0]), pattern) {
|
|
||||||
return strings.TrimSpace(list[1]), nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check whether the scanner encountered errors
|
|
||||||
err = scanner.Err()
|
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
|
|
||||||
return "", fmt.Errorf("getCPUInfo for pattern: %s: %w", pattern, errdefs.ErrNotFound)
|
|
||||||
}
|
|
||||||
|
|
||||||
func getCPUVariant() string {
|
|
||||||
if runtime.GOOS == "windows" || runtime.GOOS == "darwin" {
|
|
||||||
// Windows/Darwin only supports v7 for ARM32 and v8 for ARM64 and so we can use
|
|
||||||
// runtime.GOARCH to determine the variants
|
|
||||||
var variant string
|
|
||||||
switch runtime.GOARCH {
|
|
||||||
case "arm64":
|
|
||||||
variant = "v8"
|
|
||||||
case "arm":
|
|
||||||
variant = "v7"
|
|
||||||
default:
|
|
||||||
variant = "unknown"
|
|
||||||
}
|
|
||||||
|
|
||||||
return variant
|
|
||||||
}
|
|
||||||
|
|
||||||
variant, err := getCPUInfo("Cpu architecture")
|
|
||||||
if err != nil {
|
|
||||||
log.L.WithError(err).Error("failure getting variant")
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
// handle edge case for Raspberry Pi ARMv6 devices (which due to a kernel quirk, report "CPU architecture: 7")
|
|
||||||
// https://www.raspberrypi.org/forums/viewtopic.php?t=12614
|
|
||||||
if runtime.GOARCH == "arm" && variant == "7" {
|
|
||||||
model, err := getCPUInfo("model name")
|
|
||||||
if err == nil && strings.HasPrefix(strings.ToLower(model), "armv6-compatible") {
|
|
||||||
variant = "6"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
switch strings.ToLower(variant) {
|
|
||||||
case "8", "aarch64":
|
|
||||||
variant = "v8"
|
|
||||||
case "7", "7m", "?(12)", "?(13)", "?(14)", "?(15)", "?(16)", "?(17)":
|
|
||||||
variant = "v7"
|
|
||||||
case "6", "6tej":
|
|
||||||
variant = "v6"
|
|
||||||
case "5", "5t", "5te", "5tej":
|
|
||||||
variant = "v5"
|
|
||||||
case "4", "4t":
|
|
||||||
variant = "v4"
|
|
||||||
case "3":
|
|
||||||
variant = "v3"
|
|
||||||
default:
|
|
||||||
variant = "unknown"
|
|
||||||
}
|
|
||||||
|
|
||||||
return variant
|
|
||||||
}
|
|
||||||
|
|
161
vendor/github.com/containerd/containerd/platforms/cpuinfo_linux.go
generated
vendored
Normal file
161
vendor/github.com/containerd/containerd/platforms/cpuinfo_linux.go
generated
vendored
Normal file
|
@ -0,0 +1,161 @@
|
||||||
|
/*
|
||||||
|
Copyright The containerd Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package platforms
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"bytes"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"runtime"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/containerd/containerd/errdefs"
|
||||||
|
"golang.org/x/sys/unix"
|
||||||
|
)
|
||||||
|
|
||||||
|
// getMachineArch retrieves the machine architecture through system call
|
||||||
|
func getMachineArch() (string, error) {
|
||||||
|
var uname unix.Utsname
|
||||||
|
err := unix.Uname(&uname)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
arch := string(uname.Machine[:bytes.IndexByte(uname.Machine[:], 0)])
|
||||||
|
|
||||||
|
return arch, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// For Linux, the kernel has already detected the ABI, ISA and Features.
|
||||||
|
// So we don't need to access the ARM registers to detect platform information
|
||||||
|
// by ourselves. We can just parse these information from /proc/cpuinfo
|
||||||
|
func getCPUInfo(pattern string) (info string, err error) {
|
||||||
|
|
||||||
|
cpuinfo, err := os.Open("/proc/cpuinfo")
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
defer cpuinfo.Close()
|
||||||
|
|
||||||
|
// Start to Parse the Cpuinfo line by line. For SMP SoC, we parse
|
||||||
|
// the first core is enough.
|
||||||
|
scanner := bufio.NewScanner(cpuinfo)
|
||||||
|
for scanner.Scan() {
|
||||||
|
newline := scanner.Text()
|
||||||
|
list := strings.Split(newline, ":")
|
||||||
|
|
||||||
|
if len(list) > 1 && strings.EqualFold(strings.TrimSpace(list[0]), pattern) {
|
||||||
|
return strings.TrimSpace(list[1]), nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check whether the scanner encountered errors
|
||||||
|
err = scanner.Err()
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
return "", fmt.Errorf("getCPUInfo for pattern %s: %w", pattern, errdefs.ErrNotFound)
|
||||||
|
}
|
||||||
|
|
||||||
|
// getCPUVariantFromArch get CPU variant from arch through a system call
|
||||||
|
func getCPUVariantFromArch(arch string) (string, error) {
|
||||||
|
|
||||||
|
var variant string
|
||||||
|
|
||||||
|
arch = strings.ToLower(arch)
|
||||||
|
|
||||||
|
if arch == "aarch64" {
|
||||||
|
variant = "8"
|
||||||
|
} else if arch[0:4] == "armv" && len(arch) >= 5 {
|
||||||
|
//Valid arch format is in form of armvXx
|
||||||
|
switch arch[3:5] {
|
||||||
|
case "v8":
|
||||||
|
variant = "8"
|
||||||
|
case "v7":
|
||||||
|
variant = "7"
|
||||||
|
case "v6":
|
||||||
|
variant = "6"
|
||||||
|
case "v5":
|
||||||
|
variant = "5"
|
||||||
|
case "v4":
|
||||||
|
variant = "4"
|
||||||
|
case "v3":
|
||||||
|
variant = "3"
|
||||||
|
default:
|
||||||
|
variant = "unknown"
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return "", fmt.Errorf("getCPUVariantFromArch invalid arch: %s, %w", arch, errdefs.ErrInvalidArgument)
|
||||||
|
}
|
||||||
|
return variant, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// getCPUVariant returns cpu variant for ARM
|
||||||
|
// We first try reading "Cpu architecture" field from /proc/cpuinfo
|
||||||
|
// If we can't find it, then fall back using a system call
|
||||||
|
// This is to cover running ARM in emulated environment on x86 host as this field in /proc/cpuinfo
|
||||||
|
// was not present.
|
||||||
|
func getCPUVariant() (string, error) {
|
||||||
|
|
||||||
|
variant, err := getCPUInfo("Cpu architecture")
|
||||||
|
if err != nil {
|
||||||
|
if errdefs.IsNotFound(err) {
|
||||||
|
//Let's try getting CPU variant from machine architecture
|
||||||
|
arch, err := getMachineArch()
|
||||||
|
if err != nil {
|
||||||
|
return "", fmt.Errorf("failure getting machine architecture: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
variant, err = getCPUVariantFromArch(arch)
|
||||||
|
if err != nil {
|
||||||
|
return "", fmt.Errorf("failure getting CPU variant from machine architecture: %v", err)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return "", fmt.Errorf("failure getting CPU variant: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// handle edge case for Raspberry Pi ARMv6 devices (which due to a kernel quirk, report "CPU architecture: 7")
|
||||||
|
// https://www.raspberrypi.org/forums/viewtopic.php?t=12614
|
||||||
|
if runtime.GOARCH == "arm" && variant == "7" {
|
||||||
|
model, err := getCPUInfo("model name")
|
||||||
|
if err == nil && strings.HasPrefix(strings.ToLower(model), "armv6-compatible") {
|
||||||
|
variant = "6"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
switch strings.ToLower(variant) {
|
||||||
|
case "8", "aarch64":
|
||||||
|
variant = "v8"
|
||||||
|
case "7", "7m", "?(12)", "?(13)", "?(14)", "?(15)", "?(16)", "?(17)":
|
||||||
|
variant = "v7"
|
||||||
|
case "6", "6tej":
|
||||||
|
variant = "v6"
|
||||||
|
case "5", "5t", "5te", "5tej":
|
||||||
|
variant = "v5"
|
||||||
|
case "4", "4t":
|
||||||
|
variant = "v4"
|
||||||
|
case "3":
|
||||||
|
variant = "v3"
|
||||||
|
default:
|
||||||
|
variant = "unknown"
|
||||||
|
}
|
||||||
|
|
||||||
|
return variant, nil
|
||||||
|
}
|
60
vendor/github.com/containerd/containerd/platforms/cpuinfo_other.go
generated
vendored
Normal file
60
vendor/github.com/containerd/containerd/platforms/cpuinfo_other.go
generated
vendored
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
//go:build !linux
|
||||||
|
// +build !linux
|
||||||
|
|
||||||
|
/*
|
||||||
|
Copyright The containerd Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package platforms
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"runtime"
|
||||||
|
|
||||||
|
"github.com/containerd/containerd/errdefs"
|
||||||
|
)
|
||||||
|
|
||||||
|
func getCPUVariant() (string, error) {
|
||||||
|
|
||||||
|
var variant string
|
||||||
|
|
||||||
|
if runtime.GOOS == "windows" || runtime.GOOS == "darwin" {
|
||||||
|
// Windows/Darwin only supports v7 for ARM32 and v8 for ARM64 and so we can use
|
||||||
|
// runtime.GOARCH to determine the variants
|
||||||
|
switch runtime.GOARCH {
|
||||||
|
case "arm64":
|
||||||
|
variant = "v8"
|
||||||
|
case "arm":
|
||||||
|
variant = "v7"
|
||||||
|
default:
|
||||||
|
variant = "unknown"
|
||||||
|
}
|
||||||
|
} else if runtime.GOOS == "freebsd" {
|
||||||
|
// FreeBSD supports ARMv6 and ARMv7 as well as ARMv4 and ARMv5 (though deprecated)
|
||||||
|
// detecting those variants is currently unimplemented
|
||||||
|
switch runtime.GOARCH {
|
||||||
|
case "arm64":
|
||||||
|
variant = "v8"
|
||||||
|
default:
|
||||||
|
variant = "unknown"
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
return "", fmt.Errorf("getCPUVariant for OS %s: %v", runtime.GOOS, errdefs.ErrNotImplemented)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return variant, nil
|
||||||
|
}
|
|
@ -21,13 +21,6 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
// isLinuxOS returns true if the operating system is Linux.
|
|
||||||
//
|
|
||||||
// The OS value should be normalized before calling this function.
|
|
||||||
func isLinuxOS(os string) bool {
|
|
||||||
return os == "linux"
|
|
||||||
}
|
|
||||||
|
|
||||||
// These function are generated from https://golang.org/src/go/build/syslist.go.
|
// These function are generated from https://golang.org/src/go/build/syslist.go.
|
||||||
//
|
//
|
||||||
// We use switch statements because they are slightly faster than map lookups
|
// We use switch statements because they are slightly faster than map lookups
|
||||||
|
|
|
@ -21,8 +21,8 @@ github.com/cespare/xxhash/v2
|
||||||
# github.com/container-orchestrated-devices/container-device-interface v0.6.0
|
# github.com/container-orchestrated-devices/container-device-interface v0.6.0
|
||||||
## explicit; go 1.17
|
## explicit; go 1.17
|
||||||
github.com/container-orchestrated-devices/container-device-interface/pkg/parser
|
github.com/container-orchestrated-devices/container-device-interface/pkg/parser
|
||||||
# github.com/containerd/containerd v1.6.21
|
# github.com/containerd/containerd v1.6.22
|
||||||
## explicit; go 1.17
|
## explicit; go 1.18
|
||||||
github.com/containerd/containerd/errdefs
|
github.com/containerd/containerd/errdefs
|
||||||
github.com/containerd/containerd/log
|
github.com/containerd/containerd/log
|
||||||
github.com/containerd/containerd/pkg/userns
|
github.com/containerd/containerd/pkg/userns
|
||||||
|
|
Loading…
Reference in New Issue