Merge pull request #5711 from thaJeztah/bump_engine_step1
vendor: github.com/docker/docker a72026acbbdf (master, v28.0.0-dev)
This commit is contained in:
commit
3b49deb8fc
@ -59,6 +59,8 @@ linters-settings:
|
|||||||
desc: Use github.com/moby/sys/userns instead.
|
desc: Use github.com/moby/sys/userns instead.
|
||||||
- pkg: "github.com/containerd/containerd/platforms"
|
- pkg: "github.com/containerd/containerd/platforms"
|
||||||
desc: The containerd platforms package was migrated to a separate module. Use github.com/containerd/platforms instead.
|
desc: The containerd platforms package was migrated to a separate module. Use github.com/containerd/platforms instead.
|
||||||
|
- pkg: "github.com/docker/docker/pkg/system"
|
||||||
|
desc: This package should not be used unless strictly necessary.
|
||||||
- pkg: "io/ioutil"
|
- pkg: "io/ioutil"
|
||||||
desc: The io/ioutil package has been deprecated, see https://go.dev/doc/go1.16#ioutil
|
desc: The io/ioutil package has been deprecated, see https://go.dev/doc/go1.16#ioutil
|
||||||
gocyclo:
|
gocyclo:
|
||||||
|
@ -13,7 +13,7 @@ require (
|
|||||||
github.com/distribution/reference v0.6.0
|
github.com/distribution/reference v0.6.0
|
||||||
github.com/docker/cli-docs-tool v0.8.0
|
github.com/docker/cli-docs-tool v0.8.0
|
||||||
github.com/docker/distribution v2.8.3+incompatible
|
github.com/docker/distribution v2.8.3+incompatible
|
||||||
github.com/docker/docker v27.0.2-0.20241220121230-ad6929339acd+incompatible // master (v-next)
|
github.com/docker/docker v27.0.2-0.20241223115700-a72026acbbdf+incompatible // master (v-next)
|
||||||
github.com/docker/docker-credential-helpers v0.8.2
|
github.com/docker/docker-credential-helpers v0.8.2
|
||||||
github.com/docker/go-connections v0.5.0
|
github.com/docker/go-connections v0.5.0
|
||||||
github.com/docker/go-units v0.5.0
|
github.com/docker/go-units v0.5.0
|
||||||
|
@ -51,8 +51,8 @@ github.com/docker/cli-docs-tool v0.8.0/go.mod h1:8TQQ3E7mOXoYUs811LiPdUnAhXrcVsB
|
|||||||
github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
|
github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
|
||||||
github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk=
|
github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk=
|
||||||
github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
|
github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
|
||||||
github.com/docker/docker v27.0.2-0.20241220121230-ad6929339acd+incompatible h1:sQ4Qsqxsm87Q30YfleVm/Sb/Glf9VoQn+5g6Vl5XLXo=
|
github.com/docker/docker v27.0.2-0.20241223115700-a72026acbbdf+incompatible h1:FOlr2DkAdfOdGc3O8YjP27v2XzFGIrYmwtORXMbbxJI=
|
||||||
github.com/docker/docker v27.0.2-0.20241220121230-ad6929339acd+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
|
github.com/docker/docker v27.0.2-0.20241223115700-a72026acbbdf+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
|
||||||
github.com/docker/docker-credential-helpers v0.8.2 h1:bX3YxiGzFP5sOXWc3bTPEXdEaZSeVMrFgOr3T+zrFAo=
|
github.com/docker/docker-credential-helpers v0.8.2 h1:bX3YxiGzFP5sOXWc3bTPEXdEaZSeVMrFgOr3T+zrFAo=
|
||||||
github.com/docker/docker-credential-helpers v0.8.2/go.mod h1:P3ci7E3lwkZg6XiHdRKft1KckHiO9a2rNtyFbZ/ry9M=
|
github.com/docker/docker-credential-helpers v0.8.2/go.mod h1:P3ci7E3lwkZg6XiHdRKft1KckHiO9a2rNtyFbZ/ry9M=
|
||||||
github.com/docker/go v1.5.1-1.0.20160303222718-d30aec9fd63c h1:lzqkGL9b3znc+ZUgi7FlLnqjQhcXxkNM/quxIjBVMD0=
|
github.com/docker/go v1.5.1-1.0.20160303222718-d30aec9fd63c h1:lzqkGL9b3znc+ZUgi7FlLnqjQhcXxkNM/quxIjBVMD0=
|
||||||
|
6
vendor/github.com/docker/docker/pkg/idtools/idtools_windows.go
generated
vendored
6
vendor/github.com/docker/docker/pkg/idtools/idtools_windows.go
generated
vendored
@ -2,8 +2,6 @@ package idtools // import "github.com/docker/docker/pkg/idtools"
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/docker/docker/pkg/system"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -15,10 +13,10 @@ const (
|
|||||||
ContainerUserSidString = "S-1-5-93-2-2"
|
ContainerUserSidString = "S-1-5-93-2-2"
|
||||||
)
|
)
|
||||||
|
|
||||||
// This is currently a wrapper around MkdirAll, however, since currently
|
// This is currently a wrapper around [os.MkdirAll] since currently
|
||||||
// permissions aren't set through this path, the identity isn't utilized.
|
// permissions aren't set through this path, the identity isn't utilized.
|
||||||
// Ownership is handled elsewhere, but in the future could be support here
|
// Ownership is handled elsewhere, but in the future could be support here
|
||||||
// too.
|
// too.
|
||||||
func mkdirAs(path string, _ os.FileMode, _ Identity, _, _ bool) error {
|
func mkdirAs(path string, _ os.FileMode, _ Identity, _, _ bool) error {
|
||||||
return system.MkdirAll(path, 0)
|
return os.MkdirAll(path, 0)
|
||||||
}
|
}
|
||||||
|
16
vendor/github.com/docker/docker/pkg/system/args_windows.go
generated
vendored
16
vendor/github.com/docker/docker/pkg/system/args_windows.go
generated
vendored
@ -1,16 +0,0 @@
|
|||||||
package system // import "github.com/docker/docker/pkg/system"
|
|
||||||
|
|
||||||
import (
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
"golang.org/x/sys/windows"
|
|
||||||
)
|
|
||||||
|
|
||||||
// EscapeArgs makes a Windows-style escaped command line from a set of arguments
|
|
||||||
func EscapeArgs(args []string) string {
|
|
||||||
escapedArgs := make([]string, len(args))
|
|
||||||
for i, a := range args {
|
|
||||||
escapedArgs[i] = windows.EscapeArg(a)
|
|
||||||
}
|
|
||||||
return strings.Join(escapedArgs, " ")
|
|
||||||
}
|
|
48
vendor/github.com/docker/docker/pkg/system/chtimes.go
generated
vendored
48
vendor/github.com/docker/docker/pkg/system/chtimes.go
generated
vendored
@ -1,48 +0,0 @@
|
|||||||
package system // import "github.com/docker/docker/pkg/system"
|
|
||||||
|
|
||||||
import (
|
|
||||||
"os"
|
|
||||||
"syscall"
|
|
||||||
"time"
|
|
||||||
"unsafe"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Used by Chtimes
|
|
||||||
var unixEpochTime, unixMaxTime time.Time
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
unixEpochTime = time.Unix(0, 0)
|
|
||||||
if unsafe.Sizeof(syscall.Timespec{}.Nsec) == 8 {
|
|
||||||
// This is a 64 bit timespec
|
|
||||||
// os.Chtimes limits time to the following
|
|
||||||
//
|
|
||||||
// Note that this intentionally sets nsec (not sec), which sets both sec
|
|
||||||
// and nsec internally in time.Unix();
|
|
||||||
// https://github.com/golang/go/blob/go1.19.2/src/time/time.go#L1364-L1380
|
|
||||||
unixMaxTime = time.Unix(0, 1<<63-1)
|
|
||||||
} else {
|
|
||||||
// This is a 32 bit timespec
|
|
||||||
unixMaxTime = time.Unix(1<<31-1, 0)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Chtimes changes the access time and modified time of a file at the given path.
|
|
||||||
// If the modified time is prior to the Unix Epoch (unixMinTime), or after the
|
|
||||||
// end of Unix Time (unixEpochTime), os.Chtimes has undefined behavior. In this
|
|
||||||
// case, Chtimes defaults to Unix Epoch, just in case.
|
|
||||||
func Chtimes(name string, atime time.Time, mtime time.Time) error {
|
|
||||||
if atime.Before(unixEpochTime) || atime.After(unixMaxTime) {
|
|
||||||
atime = unixEpochTime
|
|
||||||
}
|
|
||||||
|
|
||||||
if mtime.Before(unixEpochTime) || mtime.After(unixMaxTime) {
|
|
||||||
mtime = unixEpochTime
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := os.Chtimes(name, atime, mtime); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
// Take platform specific action for setting create time.
|
|
||||||
return setCTime(name, mtime)
|
|
||||||
}
|
|
14
vendor/github.com/docker/docker/pkg/system/chtimes_nowindows.go
generated
vendored
14
vendor/github.com/docker/docker/pkg/system/chtimes_nowindows.go
generated
vendored
@ -1,14 +0,0 @@
|
|||||||
//go:build !windows
|
|
||||||
|
|
||||||
package system // import "github.com/docker/docker/pkg/system"
|
|
||||||
|
|
||||||
import (
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
// setCTime will set the create time on a file. On Unix, the create
|
|
||||||
// time is updated as a side effect of setting the modified time, so
|
|
||||||
// no action is required.
|
|
||||||
func setCTime(path string, ctime time.Time) error {
|
|
||||||
return nil
|
|
||||||
}
|
|
25
vendor/github.com/docker/docker/pkg/system/chtimes_windows.go
generated
vendored
25
vendor/github.com/docker/docker/pkg/system/chtimes_windows.go
generated
vendored
@ -1,25 +0,0 @@
|
|||||||
package system // import "github.com/docker/docker/pkg/system"
|
|
||||||
|
|
||||||
import (
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"golang.org/x/sys/windows"
|
|
||||||
)
|
|
||||||
|
|
||||||
// setCTime will set the create time on a file. On Windows, this requires
|
|
||||||
// calling SetFileTime and explicitly including the create time.
|
|
||||||
func setCTime(path string, ctime time.Time) error {
|
|
||||||
pathp, err := windows.UTF16PtrFromString(path)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
h, err := windows.CreateFile(pathp,
|
|
||||||
windows.FILE_WRITE_ATTRIBUTES, windows.FILE_SHARE_WRITE, nil,
|
|
||||||
windows.OPEN_EXISTING, windows.FILE_FLAG_BACKUP_SEMANTICS, 0)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
defer windows.Close(h)
|
|
||||||
c := windows.NsecToFiletime(ctime.UnixNano())
|
|
||||||
return windows.SetFileTime(h, &c, nil, nil)
|
|
||||||
}
|
|
6
vendor/github.com/docker/docker/pkg/system/errors.go
generated
vendored
6
vendor/github.com/docker/docker/pkg/system/errors.go
generated
vendored
@ -1,6 +0,0 @@
|
|||||||
package system // import "github.com/docker/docker/pkg/system"
|
|
||||||
|
|
||||||
import "errors"
|
|
||||||
|
|
||||||
// ErrNotSupportedPlatform means the platform is not supported.
|
|
||||||
var ErrNotSupportedPlatform = errors.New("platform and architecture is not supported")
|
|
19
vendor/github.com/docker/docker/pkg/system/filesys.go
generated
vendored
19
vendor/github.com/docker/docker/pkg/system/filesys.go
generated
vendored
@ -1,19 +0,0 @@
|
|||||||
package system
|
|
||||||
|
|
||||||
import (
|
|
||||||
"os"
|
|
||||||
"path/filepath"
|
|
||||||
"strings"
|
|
||||||
)
|
|
||||||
|
|
||||||
// IsAbs is a platform-agnostic wrapper for filepath.IsAbs.
|
|
||||||
//
|
|
||||||
// On Windows, golang filepath.IsAbs does not consider a path \windows\system32
|
|
||||||
// as absolute as it doesn't start with a drive-letter/colon combination. However,
|
|
||||||
// in docker we need to verify things such as WORKDIR /windows/system32 in
|
|
||||||
// a Dockerfile (which gets translated to \windows\system32 when being processed
|
|
||||||
// by the daemon). This SHOULD be treated as absolute from a docker processing
|
|
||||||
// perspective.
|
|
||||||
func IsAbs(path string) bool {
|
|
||||||
return filepath.IsAbs(path) || strings.HasPrefix(path, string(os.PathSeparator))
|
|
||||||
}
|
|
16
vendor/github.com/docker/docker/pkg/system/filesys_unix.go
generated
vendored
16
vendor/github.com/docker/docker/pkg/system/filesys_unix.go
generated
vendored
@ -1,16 +0,0 @@
|
|||||||
//go:build !windows
|
|
||||||
|
|
||||||
package system // import "github.com/docker/docker/pkg/system"
|
|
||||||
|
|
||||||
import "os"
|
|
||||||
|
|
||||||
// MkdirAllWithACL is a wrapper for os.MkdirAll on unix systems.
|
|
||||||
func MkdirAllWithACL(path string, perm os.FileMode, sddl string) error {
|
|
||||||
return os.MkdirAll(path, perm)
|
|
||||||
}
|
|
||||||
|
|
||||||
// MkdirAll creates a directory named path along with any necessary parents,
|
|
||||||
// with permission specified by attribute perm for all dir created.
|
|
||||||
func MkdirAll(path string, perm os.FileMode) error {
|
|
||||||
return os.MkdirAll(path, perm)
|
|
||||||
}
|
|
135
vendor/github.com/docker/docker/pkg/system/filesys_windows.go
generated
vendored
135
vendor/github.com/docker/docker/pkg/system/filesys_windows.go
generated
vendored
@ -1,135 +0,0 @@
|
|||||||
package system // import "github.com/docker/docker/pkg/system"
|
|
||||||
|
|
||||||
import (
|
|
||||||
"os"
|
|
||||||
"regexp"
|
|
||||||
"syscall"
|
|
||||||
"unsafe"
|
|
||||||
|
|
||||||
"golang.org/x/sys/windows"
|
|
||||||
)
|
|
||||||
|
|
||||||
// SddlAdministratorsLocalSystem is local administrators plus NT AUTHORITY\System.
|
|
||||||
const SddlAdministratorsLocalSystem = "D:P(A;OICI;GA;;;BA)(A;OICI;GA;;;SY)"
|
|
||||||
|
|
||||||
// volumePath is a regular expression to check if a path is a Windows
|
|
||||||
// volume path (e.g., "\\?\Volume{4c1b02c1-d990-11dc-99ae-806e6f6e6963}"
|
|
||||||
// or "\\?\Volume{4c1b02c1-d990-11dc-99ae-806e6f6e6963}\").
|
|
||||||
var volumePath = regexp.MustCompile(`^\\\\\?\\Volume{[a-z0-9-]+}\\?$`)
|
|
||||||
|
|
||||||
// MkdirAllWithACL is a custom version of os.MkdirAll modified for use on Windows
|
|
||||||
// so that it is both volume path aware, and can create a directory with
|
|
||||||
// an appropriate SDDL defined ACL.
|
|
||||||
func MkdirAllWithACL(path string, _ os.FileMode, sddl string) error {
|
|
||||||
sa, err := makeSecurityAttributes(sddl)
|
|
||||||
if err != nil {
|
|
||||||
return &os.PathError{Op: "mkdirall", Path: path, Err: err}
|
|
||||||
}
|
|
||||||
return mkdirall(path, sa)
|
|
||||||
}
|
|
||||||
|
|
||||||
// MkdirAll is a custom version of os.MkdirAll that is volume path aware for
|
|
||||||
// Windows. It can be used as a drop-in replacement for os.MkdirAll.
|
|
||||||
func MkdirAll(path string, _ os.FileMode) error {
|
|
||||||
return mkdirall(path, nil)
|
|
||||||
}
|
|
||||||
|
|
||||||
// mkdirall is a custom version of os.MkdirAll modified for use on Windows
|
|
||||||
// so that it is both volume path aware, and can create a directory with
|
|
||||||
// a DACL.
|
|
||||||
func mkdirall(path string, perm *windows.SecurityAttributes) error {
|
|
||||||
if volumePath.MatchString(path) {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// The rest of this method is largely copied from os.MkdirAll and should be kept
|
|
||||||
// as-is to ensure compatibility.
|
|
||||||
|
|
||||||
// Fast path: if we can tell whether path is a directory or file, stop with success or error.
|
|
||||||
dir, err := os.Stat(path)
|
|
||||||
if err == nil {
|
|
||||||
if dir.IsDir() {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return &os.PathError{Op: "mkdir", Path: path, Err: syscall.ENOTDIR}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Slow path: make sure parent exists and then call Mkdir for path.
|
|
||||||
i := len(path)
|
|
||||||
for i > 0 && os.IsPathSeparator(path[i-1]) { // Skip trailing path separator.
|
|
||||||
i--
|
|
||||||
}
|
|
||||||
|
|
||||||
j := i
|
|
||||||
for j > 0 && !os.IsPathSeparator(path[j-1]) { // Scan backward over element.
|
|
||||||
j--
|
|
||||||
}
|
|
||||||
|
|
||||||
if j > 1 {
|
|
||||||
// Create parent.
|
|
||||||
err = mkdirall(fixRootDirectory(path[:j-1]), perm)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Parent now exists; invoke Mkdir and use its result.
|
|
||||||
err = mkdirWithACL(path, perm)
|
|
||||||
if err != nil {
|
|
||||||
// Handle arguments like "foo/." by
|
|
||||||
// double-checking that directory doesn't exist.
|
|
||||||
dir, err1 := os.Lstat(path)
|
|
||||||
if err1 == nil && dir.IsDir() {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// mkdirWithACL creates a new directory. If there is an error, it will be of
|
|
||||||
// type *PathError. .
|
|
||||||
//
|
|
||||||
// This is a modified and combined version of os.Mkdir and windows.Mkdir
|
|
||||||
// in golang to cater for creating a directory am ACL permitting full
|
|
||||||
// access, with inheritance, to any subfolder/file for Built-in Administrators
|
|
||||||
// and Local System.
|
|
||||||
func mkdirWithACL(name string, sa *windows.SecurityAttributes) error {
|
|
||||||
if sa == nil {
|
|
||||||
return os.Mkdir(name, 0)
|
|
||||||
}
|
|
||||||
|
|
||||||
namep, err := windows.UTF16PtrFromString(name)
|
|
||||||
if err != nil {
|
|
||||||
return &os.PathError{Op: "mkdir", Path: name, Err: err}
|
|
||||||
}
|
|
||||||
|
|
||||||
err = windows.CreateDirectory(namep, sa)
|
|
||||||
if err != nil {
|
|
||||||
return &os.PathError{Op: "mkdir", Path: name, Err: err}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// fixRootDirectory fixes a reference to a drive's root directory to
|
|
||||||
// have the required trailing slash.
|
|
||||||
func fixRootDirectory(p string) string {
|
|
||||||
if len(p) == len(`\\?\c:`) {
|
|
||||||
if os.IsPathSeparator(p[0]) && os.IsPathSeparator(p[1]) && p[2] == '?' && os.IsPathSeparator(p[3]) && p[5] == ':' {
|
|
||||||
return p + `\`
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return p
|
|
||||||
}
|
|
||||||
|
|
||||||
func makeSecurityAttributes(sddl string) (*windows.SecurityAttributes, error) {
|
|
||||||
var sa windows.SecurityAttributes
|
|
||||||
sa.Length = uint32(unsafe.Sizeof(sa))
|
|
||||||
sa.InheritHandle = 1
|
|
||||||
var err error
|
|
||||||
sa.SecurityDescriptor, err = windows.SecurityDescriptorFromString(sddl)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return &sa, nil
|
|
||||||
}
|
|
16
vendor/github.com/docker/docker/pkg/system/init_windows.go
generated
vendored
16
vendor/github.com/docker/docker/pkg/system/init_windows.go
generated
vendored
@ -1,16 +0,0 @@
|
|||||||
package system // import "github.com/docker/docker/pkg/system"
|
|
||||||
|
|
||||||
// containerdRuntimeSupported determines if containerd should be the runtime.
|
|
||||||
var containerdRuntimeSupported = false
|
|
||||||
|
|
||||||
// EnableContainerdRuntime sets whether to use containerd for runtime on Windows.
|
|
||||||
func EnableContainerdRuntime(cdPath string) {
|
|
||||||
if len(cdPath) > 0 {
|
|
||||||
containerdRuntimeSupported = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ContainerdRuntimeSupported returns true if the use of containerd runtime is supported.
|
|
||||||
func ContainerdRuntimeSupported() bool {
|
|
||||||
return containerdRuntimeSupported
|
|
||||||
}
|
|
24
vendor/github.com/docker/docker/pkg/system/utimes_unix.go
generated
vendored
24
vendor/github.com/docker/docker/pkg/system/utimes_unix.go
generated
vendored
@ -1,24 +0,0 @@
|
|||||||
//go:build linux || freebsd
|
|
||||||
|
|
||||||
package system // import "github.com/docker/docker/pkg/system"
|
|
||||||
|
|
||||||
import (
|
|
||||||
"syscall"
|
|
||||||
|
|
||||||
"golang.org/x/sys/unix"
|
|
||||||
)
|
|
||||||
|
|
||||||
// LUtimesNano is used to change access and modification time of the specified path.
|
|
||||||
// It's used for symbol link file because unix.UtimesNano doesn't support a NOFOLLOW flag atm.
|
|
||||||
func LUtimesNano(path string, ts []syscall.Timespec) error {
|
|
||||||
uts := []unix.Timespec{
|
|
||||||
unix.NsecToTimespec(syscall.TimespecToNsec(ts[0])),
|
|
||||||
unix.NsecToTimespec(syscall.TimespecToNsec(ts[1])),
|
|
||||||
}
|
|
||||||
err := unix.UtimesNanoAt(unix.AT_FDCWD, path, uts, unix.AT_SYMLINK_NOFOLLOW)
|
|
||||||
if err != nil && err != unix.ENOSYS {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
10
vendor/github.com/docker/docker/pkg/system/utimes_unsupported.go
generated
vendored
10
vendor/github.com/docker/docker/pkg/system/utimes_unsupported.go
generated
vendored
@ -1,10 +0,0 @@
|
|||||||
//go:build !linux && !freebsd
|
|
||||||
|
|
||||||
package system // import "github.com/docker/docker/pkg/system"
|
|
||||||
|
|
||||||
import "syscall"
|
|
||||||
|
|
||||||
// LUtimesNano is only supported on linux and freebsd.
|
|
||||||
func LUtimesNano(path string, ts []syscall.Timespec) error {
|
|
||||||
return ErrNotSupportedPlatform
|
|
||||||
}
|
|
18
vendor/github.com/docker/docker/pkg/system/xattrs.go
generated
vendored
18
vendor/github.com/docker/docker/pkg/system/xattrs.go
generated
vendored
@ -1,18 +0,0 @@
|
|||||||
package system // import "github.com/docker/docker/pkg/system"
|
|
||||||
|
|
||||||
type XattrError struct {
|
|
||||||
Op string
|
|
||||||
Attr string
|
|
||||||
Path string
|
|
||||||
Err error
|
|
||||||
}
|
|
||||||
|
|
||||||
func (e *XattrError) Error() string { return e.Op + " " + e.Attr + " " + e.Path + ": " + e.Err.Error() }
|
|
||||||
|
|
||||||
func (e *XattrError) Unwrap() error { return e.Err }
|
|
||||||
|
|
||||||
// Timeout reports whether this error represents a timeout.
|
|
||||||
func (e *XattrError) Timeout() bool {
|
|
||||||
t, ok := e.Err.(interface{ Timeout() bool })
|
|
||||||
return ok && t.Timeout()
|
|
||||||
}
|
|
47
vendor/github.com/docker/docker/pkg/system/xattrs_linux.go
generated
vendored
47
vendor/github.com/docker/docker/pkg/system/xattrs_linux.go
generated
vendored
@ -1,47 +0,0 @@
|
|||||||
package system // import "github.com/docker/docker/pkg/system"
|
|
||||||
|
|
||||||
import (
|
|
||||||
"golang.org/x/sys/unix"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Lgetxattr retrieves the value of the extended attribute identified by attr
|
|
||||||
// and associated with the given path in the file system.
|
|
||||||
// It returns a nil slice and nil error if the xattr is not set.
|
|
||||||
func Lgetxattr(path string, attr string) ([]byte, error) {
|
|
||||||
sysErr := func(err error) ([]byte, error) {
|
|
||||||
return nil, &XattrError{Op: "lgetxattr", Attr: attr, Path: path, Err: err}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Start with a 128 length byte array
|
|
||||||
dest := make([]byte, 128)
|
|
||||||
sz, errno := unix.Lgetxattr(path, attr, dest)
|
|
||||||
|
|
||||||
for errno == unix.ERANGE {
|
|
||||||
// Buffer too small, use zero-sized buffer to get the actual size
|
|
||||||
sz, errno = unix.Lgetxattr(path, attr, []byte{})
|
|
||||||
if errno != nil {
|
|
||||||
return sysErr(errno)
|
|
||||||
}
|
|
||||||
dest = make([]byte, sz)
|
|
||||||
sz, errno = unix.Lgetxattr(path, attr, dest)
|
|
||||||
}
|
|
||||||
|
|
||||||
switch {
|
|
||||||
case errno == unix.ENODATA:
|
|
||||||
return nil, nil
|
|
||||||
case errno != nil:
|
|
||||||
return sysErr(errno)
|
|
||||||
}
|
|
||||||
|
|
||||||
return dest[:sz], nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Lsetxattr sets the value of the extended attribute identified by attr
|
|
||||||
// and associated with the given path in the file system.
|
|
||||||
func Lsetxattr(path string, attr string, data []byte, flags int) error {
|
|
||||||
err := unix.Lsetxattr(path, attr, data, flags)
|
|
||||||
if err != nil {
|
|
||||||
return &XattrError{Op: "lsetxattr", Attr: attr, Path: path, Err: err}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
13
vendor/github.com/docker/docker/pkg/system/xattrs_unsupported.go
generated
vendored
13
vendor/github.com/docker/docker/pkg/system/xattrs_unsupported.go
generated
vendored
@ -1,13 +0,0 @@
|
|||||||
//go:build !linux
|
|
||||||
|
|
||||||
package system // import "github.com/docker/docker/pkg/system"
|
|
||||||
|
|
||||||
// Lgetxattr is not supported on platforms other than linux.
|
|
||||||
func Lgetxattr(path string, attr string) ([]byte, error) {
|
|
||||||
return nil, ErrNotSupportedPlatform
|
|
||||||
}
|
|
||||||
|
|
||||||
// Lsetxattr is not supported on platforms other than linux.
|
|
||||||
func Lsetxattr(path string, attr string, data []byte, flags int) error {
|
|
||||||
return ErrNotSupportedPlatform
|
|
||||||
}
|
|
3
vendor/modules.txt
vendored
3
vendor/modules.txt
vendored
@ -55,7 +55,7 @@ github.com/docker/distribution/registry/client/transport
|
|||||||
github.com/docker/distribution/registry/storage/cache
|
github.com/docker/distribution/registry/storage/cache
|
||||||
github.com/docker/distribution/registry/storage/cache/memory
|
github.com/docker/distribution/registry/storage/cache/memory
|
||||||
github.com/docker/distribution/uuid
|
github.com/docker/distribution/uuid
|
||||||
# github.com/docker/docker v27.0.2-0.20241220121230-ad6929339acd+incompatible
|
# github.com/docker/docker v27.0.2-0.20241223115700-a72026acbbdf+incompatible
|
||||||
## explicit
|
## explicit
|
||||||
github.com/docker/docker/api
|
github.com/docker/docker/api
|
||||||
github.com/docker/docker/api/types
|
github.com/docker/docker/api/types
|
||||||
@ -94,7 +94,6 @@ github.com/docker/docker/pkg/progress
|
|||||||
github.com/docker/docker/pkg/stdcopy
|
github.com/docker/docker/pkg/stdcopy
|
||||||
github.com/docker/docker/pkg/streamformatter
|
github.com/docker/docker/pkg/streamformatter
|
||||||
github.com/docker/docker/pkg/stringid
|
github.com/docker/docker/pkg/stringid
|
||||||
github.com/docker/docker/pkg/system
|
|
||||||
github.com/docker/docker/registry
|
github.com/docker/docker/registry
|
||||||
# github.com/docker/docker-credential-helpers v0.8.2
|
# github.com/docker/docker-credential-helpers v0.8.2
|
||||||
## explicit; go 1.19
|
## explicit; go 1.19
|
||||||
|
Loading…
x
Reference in New Issue
Block a user