mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-11-03 23:40:03 +00:00 
			
		
		
		
	vendor: cadvisor v0.39.0
Main upgrades: - github.com/opencontainers/runc v1.0.0-rc93 - github.com/containerd/containerd v1.4.4 - github.com/docker/docker v20.10.2 - github.com/mrunalp/fileutils v0.5.0 - github.com/opencontainers/selinux v1.8.0 - github.com/cilium/ebpf v0.2.0
This commit is contained in:
		
							
								
								
									
										20
									
								
								vendor/github.com/containerd/console/.golangci.yml
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								vendor/github.com/containerd/console/.golangci.yml
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
			
		||||
linters:
 | 
			
		||||
  enable:
 | 
			
		||||
    - structcheck
 | 
			
		||||
    - varcheck
 | 
			
		||||
    - staticcheck
 | 
			
		||||
    - unconvert
 | 
			
		||||
    - gofmt
 | 
			
		||||
    - goimports
 | 
			
		||||
    - golint
 | 
			
		||||
    - ineffassign
 | 
			
		||||
    - vet
 | 
			
		||||
    - unused
 | 
			
		||||
    - misspell
 | 
			
		||||
  disable:
 | 
			
		||||
    - errcheck
 | 
			
		||||
 | 
			
		||||
run:
 | 
			
		||||
  timeout: 3m
 | 
			
		||||
  skip-dirs:
 | 
			
		||||
    - vendor
 | 
			
		||||
							
								
								
									
										27
									
								
								vendor/github.com/containerd/console/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										27
									
								
								vendor/github.com/containerd/console/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,27 +0,0 @@
 | 
			
		||||
language: go
 | 
			
		||||
go:
 | 
			
		||||
  - "1.12.x"
 | 
			
		||||
  - "1.13.x"
 | 
			
		||||
 | 
			
		||||
go_import_path: github.com/containerd/console
 | 
			
		||||
 | 
			
		||||
env:
 | 
			
		||||
  - GO111MODULE=on
 | 
			
		||||
 | 
			
		||||
install:
 | 
			
		||||
  - pushd ..; go get -u github.com/vbatts/git-validation; popd
 | 
			
		||||
  - pushd ..; go get -u github.com/kunalkushwaha/ltag; popd
 | 
			
		||||
 | 
			
		||||
before_script:
 | 
			
		||||
  - pushd ..; git clone https://github.com/containerd/project; popd
 | 
			
		||||
 | 
			
		||||
script:
 | 
			
		||||
  - DCO_VERBOSITY=-q ../project/script/validate/dco
 | 
			
		||||
  - ../project/script/validate/fileheader ../project/
 | 
			
		||||
  - travis_wait ../project/script/validate/vendor
 | 
			
		||||
  - go test -race
 | 
			
		||||
  - GOOS=openbsd go build
 | 
			
		||||
  - GOOS=openbsd go test -c
 | 
			
		||||
  - GOOS=solaris go build
 | 
			
		||||
  - GOOS=solaris go test -c
 | 
			
		||||
  - GOOS=windows go test
 | 
			
		||||
							
								
								
									
										22
									
								
								vendor/github.com/containerd/console/console.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								vendor/github.com/containerd/console/console.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -61,18 +61,24 @@ type WinSize struct {
 | 
			
		||||
	y     uint16
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Current returns the current processes console
 | 
			
		||||
func Current() Console {
 | 
			
		||||
	c, err := ConsoleFromFile(os.Stdin)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		// stdin should always be a console for the design
 | 
			
		||||
		// of this function
 | 
			
		||||
		panic(err)
 | 
			
		||||
// Current returns the current process' console
 | 
			
		||||
func Current() (c Console) {
 | 
			
		||||
	var err error
 | 
			
		||||
	// Usually all three streams (stdin, stdout, and stderr)
 | 
			
		||||
	// are open to the same console, but some might be redirected,
 | 
			
		||||
	// so try all three.
 | 
			
		||||
	for _, s := range []*os.File{os.Stderr, os.Stdout, os.Stdin} {
 | 
			
		||||
		if c, err = ConsoleFromFile(s); err == nil {
 | 
			
		||||
			return c
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return c
 | 
			
		||||
	// One of the std streams should always be a console
 | 
			
		||||
	// for the design of this function.
 | 
			
		||||
	panic(err)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ConsoleFromFile returns a console using the provided file
 | 
			
		||||
// nolint:golint
 | 
			
		||||
func ConsoleFromFile(f File) (Console, error) {
 | 
			
		||||
	if err := checkConsole(f); err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								vendor/github.com/containerd/console/console_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/containerd/console/console_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,4 +1,4 @@
 | 
			
		||||
// +build darwin freebsd linux openbsd solaris
 | 
			
		||||
// +build darwin freebsd linux netbsd openbsd solaris
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
   Copyright The containerd Authors.
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								vendor/github.com/containerd/console/go.mod
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/containerd/console/go.mod
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -3,6 +3,6 @@ module github.com/containerd/console
 | 
			
		||||
go 1.13
 | 
			
		||||
 | 
			
		||||
require (
 | 
			
		||||
	github.com/pkg/errors v0.8.1
 | 
			
		||||
	golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e
 | 
			
		||||
	github.com/pkg/errors v0.9.1
 | 
			
		||||
	golang.org/x/sys v0.0.0-20200916030750-2334cc1a136f
 | 
			
		||||
)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								vendor/github.com/containerd/console/go.sum
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								vendor/github.com/containerd/console/go.sum
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,4 +1,4 @@
 | 
			
		||||
github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
 | 
			
		||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 | 
			
		||||
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e h1:N7DeIrjYszNmSW409R3frPPwglRwMkXSBzwVbkOjLLA=
 | 
			
		||||
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
			
		||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
 | 
			
		||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 | 
			
		||||
golang.org/x/sys v0.0.0-20200916030750-2334cc1a136f h1:6Sc1XOXTulBN6imkqo6XoAXDEzoQ4/ro6xy7Vn8+rOM=
 | 
			
		||||
golang.org/x/sys v0.0.0-20200916030750-2334cc1a136f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										11
									
								
								vendor/github.com/containerd/console/tc_darwin.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								vendor/github.com/containerd/console/tc_darwin.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -19,7 +19,6 @@ package console
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"os"
 | 
			
		||||
	"unsafe"
 | 
			
		||||
 | 
			
		||||
	"golang.org/x/sys/unix"
 | 
			
		||||
)
 | 
			
		||||
@@ -29,18 +28,10 @@ const (
 | 
			
		||||
	cmdTcSet = unix.TIOCSETA
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func ioctl(fd, flag, data uintptr) error {
 | 
			
		||||
	if _, _, err := unix.Syscall(unix.SYS_IOCTL, fd, flag, data); err != 0 {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// unlockpt unlocks the slave pseudoterminal device corresponding to the master pseudoterminal referred to by f.
 | 
			
		||||
// unlockpt should be called before opening the slave side of a pty.
 | 
			
		||||
func unlockpt(f *os.File) error {
 | 
			
		||||
	var u int32
 | 
			
		||||
	return ioctl(f.Fd(), unix.TIOCPTYUNLK, uintptr(unsafe.Pointer(&u)))
 | 
			
		||||
	return unix.IoctlSetPointerInt(int(f.Fd()), unix.TIOCPTYUNLK, 0)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ptsname retrieves the name of the first available pts for the given master.
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										11
									
								
								vendor/github.com/containerd/console/tc_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								vendor/github.com/containerd/console/tc_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -19,7 +19,6 @@ package console
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"os"
 | 
			
		||||
	"unsafe"
 | 
			
		||||
 | 
			
		||||
	"golang.org/x/sys/unix"
 | 
			
		||||
)
 | 
			
		||||
@@ -32,17 +31,13 @@ const (
 | 
			
		||||
// unlockpt unlocks the slave pseudoterminal device corresponding to the master pseudoterminal referred to by f.
 | 
			
		||||
// unlockpt should be called before opening the slave side of a pty.
 | 
			
		||||
func unlockpt(f *os.File) error {
 | 
			
		||||
	var u int32
 | 
			
		||||
	if _, _, err := unix.Syscall(unix.SYS_IOCTL, f.Fd(), unix.TIOCSPTLCK, uintptr(unsafe.Pointer(&u))); err != 0 {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
	return unix.IoctlSetPointerInt(int(f.Fd()), unix.TIOCSPTLCK, 0)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ptsname retrieves the name of the first available pts for the given master.
 | 
			
		||||
func ptsname(f *os.File) (string, error) {
 | 
			
		||||
	var u uint32
 | 
			
		||||
	if _, _, err := unix.Syscall(unix.SYS_IOCTL, f.Fd(), unix.TIOCGPTN, uintptr(unsafe.Pointer(&u))); err != 0 {
 | 
			
		||||
	u, err := unix.IoctlGetInt(int(f.Fd()), unix.TIOCGPTN)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return "", err
 | 
			
		||||
	}
 | 
			
		||||
	return fmt.Sprintf("/dev/pts/%d", u), nil
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										45
									
								
								vendor/github.com/containerd/console/tc_netbsd.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								vendor/github.com/containerd/console/tc_netbsd.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,45 @@
 | 
			
		||||
/*
 | 
			
		||||
   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 console
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"bytes"
 | 
			
		||||
	"os"
 | 
			
		||||
 | 
			
		||||
	"golang.org/x/sys/unix"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	cmdTcGet = unix.TIOCGETA
 | 
			
		||||
	cmdTcSet = unix.TIOCSETA
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// unlockpt unlocks the slave pseudoterminal device corresponding to the master pseudoterminal referred to by f.
 | 
			
		||||
// unlockpt should be called before opening the slave side of a pty.
 | 
			
		||||
// This does not exist on NetBSD, it does not allocate controlling terminals on open
 | 
			
		||||
func unlockpt(f *os.File) error {
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ptsname retrieves the name of the first available pts for the given master.
 | 
			
		||||
func ptsname(f *os.File) (string, error) {
 | 
			
		||||
	ptm, err := unix.IoctlGetPtmget(int(f.Fd()), unix.TIOCPTSNAME)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return "", err
 | 
			
		||||
	}
 | 
			
		||||
	return string(ptm.Sn[:bytes.IndexByte(ptm.Sn[:], 0)]), nil
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										2
									
								
								vendor/github.com/containerd/console/tc_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/containerd/console/tc_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,4 +1,4 @@
 | 
			
		||||
// +build darwin freebsd linux openbsd solaris
 | 
			
		||||
// +build darwin freebsd linux netbsd openbsd solaris
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
   Copyright The containerd Authors.
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										64
									
								
								vendor/github.com/containerd/containerd/api/services/containers/v1/containers.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										64
									
								
								vendor/github.com/containerd/containerd/api/services/containers/v1/containers.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -2106,7 +2106,7 @@ func (m *Container) Unmarshal(dAtA []byte) error {
 | 
			
		||||
					if err != nil {
 | 
			
		||||
						return err
 | 
			
		||||
					}
 | 
			
		||||
					if skippy < 0 {
 | 
			
		||||
					if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
						return ErrInvalidLengthContainers
 | 
			
		||||
					}
 | 
			
		||||
					if (iNdEx + skippy) > postIndex {
 | 
			
		||||
@@ -2469,7 +2469,7 @@ func (m *Container) Unmarshal(dAtA []byte) error {
 | 
			
		||||
					if err != nil {
 | 
			
		||||
						return err
 | 
			
		||||
					}
 | 
			
		||||
					if skippy < 0 {
 | 
			
		||||
					if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
						return ErrInvalidLengthContainers
 | 
			
		||||
					}
 | 
			
		||||
					if (iNdEx + skippy) > postIndex {
 | 
			
		||||
@@ -2486,10 +2486,7 @@ func (m *Container) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthContainers
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthContainers
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -2608,10 +2605,7 @@ func (m *Container_Runtime) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthContainers
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthContainers
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -2694,10 +2688,7 @@ func (m *GetContainerRequest) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthContainers
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthContainers
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -2781,10 +2772,7 @@ func (m *GetContainerResponse) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthContainers
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthContainers
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -2867,10 +2855,7 @@ func (m *ListContainersRequest) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthContainers
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthContainers
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -2955,10 +2940,7 @@ func (m *ListContainersResponse) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthContainers
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthContainers
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -3042,10 +3024,7 @@ func (m *CreateContainerRequest) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthContainers
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthContainers
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -3129,10 +3108,7 @@ func (m *CreateContainerResponse) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthContainers
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthContainers
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -3252,10 +3228,7 @@ func (m *UpdateContainerRequest) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthContainers
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthContainers
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -3339,10 +3312,7 @@ func (m *UpdateContainerResponse) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthContainers
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthContainers
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -3425,10 +3395,7 @@ func (m *DeleteContainerRequest) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthContainers
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthContainers
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -3515,10 +3482,7 @@ func (m *ListContainerMessage) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthContainers
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthContainers
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										135
									
								
								vendor/github.com/containerd/containerd/api/services/tasks/v1/tasks.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										135
									
								
								vendor/github.com/containerd/containerd/api/services/tasks/v1/tasks.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -4347,10 +4347,7 @@ func (m *CreateTaskRequest) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -4452,10 +4449,7 @@ func (m *CreateTaskResponse) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -4570,10 +4564,7 @@ func (m *StartRequest) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -4643,10 +4634,7 @@ func (m *StartResponse) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -4729,10 +4717,7 @@ func (m *DeleteTaskRequest) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -4886,10 +4871,7 @@ func (m *DeleteResponse) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -5004,10 +4986,7 @@ func (m *DeleteProcessRequest) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -5122,10 +5101,7 @@ func (m *GetRequest) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -5212,10 +5188,7 @@ func (m *GetResponse) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -5298,10 +5271,7 @@ func (m *ListTasksRequest) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -5386,10 +5356,7 @@ func (m *ListTasksResponse) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -5543,10 +5510,7 @@ func (m *KillRequest) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -5813,10 +5777,7 @@ func (m *ExecProcessRequest) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -5867,10 +5828,7 @@ func (m *ExecProcessResponse) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -6023,10 +5981,7 @@ func (m *ResizePtyRequest) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -6161,10 +6116,7 @@ func (m *CloseIORequest) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -6247,10 +6199,7 @@ func (m *PauseTaskRequest) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -6333,10 +6282,7 @@ func (m *ResumeTaskRequest) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -6419,10 +6365,7 @@ func (m *ListPidsRequest) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -6507,10 +6450,7 @@ func (m *ListPidsResponse) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -6661,10 +6601,7 @@ func (m *CheckpointTaskRequest) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -6749,10 +6686,7 @@ func (m *CheckpointTaskResponse) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -6871,10 +6805,7 @@ func (m *UpdateTaskRequest) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -6957,10 +6888,7 @@ func (m *MetricsRequest) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -7045,10 +6973,7 @@ func (m *MetricsResponse) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -7163,10 +7088,7 @@ func (m *WaitRequest) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -7269,10 +7191,7 @@ func (m *WaitResponse) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthTasks
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										5
									
								
								vendor/github.com/containerd/containerd/api/services/version/v1/version.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/github.com/containerd/containerd/api/services/version/v1/version.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -374,10 +374,7 @@ func (m *VersionResponse) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthVersion
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthVersion
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										7
									
								
								vendor/github.com/containerd/containerd/api/types/descriptor.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								vendor/github.com/containerd/containerd/api/types/descriptor.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -479,7 +479,7 @@ func (m *Descriptor) Unmarshal(dAtA []byte) error {
 | 
			
		||||
					if err != nil {
 | 
			
		||||
						return err
 | 
			
		||||
					}
 | 
			
		||||
					if skippy < 0 {
 | 
			
		||||
					if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
						return ErrInvalidLengthDescriptor
 | 
			
		||||
					}
 | 
			
		||||
					if (iNdEx + skippy) > postIndex {
 | 
			
		||||
@@ -496,10 +496,7 @@ func (m *Descriptor) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthDescriptor
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthDescriptor
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										5
									
								
								vendor/github.com/containerd/containerd/api/types/metrics.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/github.com/containerd/containerd/api/types/metrics.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -348,10 +348,7 @@ func (m *Metric) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthMetrics
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthMetrics
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										5
									
								
								vendor/github.com/containerd/containerd/api/types/mount.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/github.com/containerd/containerd/api/types/mount.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -392,10 +392,7 @@ func (m *Mount) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthMount
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthMount
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										5
									
								
								vendor/github.com/containerd/containerd/api/types/platform.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/github.com/containerd/containerd/api/types/platform.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -333,10 +333,7 @@ func (m *Platform) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthPlatform
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthPlatform
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										10
									
								
								vendor/github.com/containerd/containerd/api/types/task/task.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								vendor/github.com/containerd/containerd/api/types/task/task.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -772,10 +772,7 @@ func (m *Process) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthTask
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthTask
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
@@ -881,10 +878,7 @@ func (m *ProcessInfo) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			if skippy < 0 {
 | 
			
		||||
				return ErrInvalidLengthTask
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) < 0 {
 | 
			
		||||
			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | 
			
		||||
				return ErrInvalidLengthTask
 | 
			
		||||
			}
 | 
			
		||||
			if (iNdEx + skippy) > l {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										60
									
								
								vendor/github.com/containerd/containerd/log/context.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								vendor/github.com/containerd/containerd/log/context.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,60 @@
 | 
			
		||||
/*
 | 
			
		||||
   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 log
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
 | 
			
		||||
	"github.com/sirupsen/logrus"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	// G is an alias for GetLogger.
 | 
			
		||||
	//
 | 
			
		||||
	// We may want to define this locally to a package to get package tagged log
 | 
			
		||||
	// messages.
 | 
			
		||||
	G = GetLogger
 | 
			
		||||
 | 
			
		||||
	// L is an alias for the standard logger.
 | 
			
		||||
	L = logrus.NewEntry(logrus.StandardLogger())
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type (
 | 
			
		||||
	loggerKey struct{}
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// RFC3339NanoFixed is time.RFC3339Nano with nanoseconds padded using zeros to
 | 
			
		||||
// ensure the formatted time is always the same number of characters.
 | 
			
		||||
const RFC3339NanoFixed = "2006-01-02T15:04:05.000000000Z07:00"
 | 
			
		||||
 | 
			
		||||
// WithLogger returns a new context with the provided logger. Use in
 | 
			
		||||
// combination with logger.WithField(s) for great effect.
 | 
			
		||||
func WithLogger(ctx context.Context, logger *logrus.Entry) context.Context {
 | 
			
		||||
	return context.WithValue(ctx, loggerKey{}, logger)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetLogger retrieves the current logger from the context. If no logger is
 | 
			
		||||
// available, the default logger is returned.
 | 
			
		||||
func GetLogger(ctx context.Context) *logrus.Entry {
 | 
			
		||||
	logger := ctx.Value(loggerKey{})
 | 
			
		||||
 | 
			
		||||
	if logger == nil {
 | 
			
		||||
		return L
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return logger.(*logrus.Entry)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										229
									
								
								vendor/github.com/containerd/containerd/platforms/compare.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										229
									
								
								vendor/github.com/containerd/containerd/platforms/compare.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,229 @@
 | 
			
		||||
/*
 | 
			
		||||
   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 specs "github.com/opencontainers/image-spec/specs-go/v1"
 | 
			
		||||
 | 
			
		||||
// MatchComparer is able to match and compare platforms to
 | 
			
		||||
// filter and sort platforms.
 | 
			
		||||
type MatchComparer interface {
 | 
			
		||||
	Matcher
 | 
			
		||||
 | 
			
		||||
	Less(specs.Platform, specs.Platform) bool
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Only returns a match comparer for a single platform
 | 
			
		||||
// using default resolution logic for the platform.
 | 
			
		||||
//
 | 
			
		||||
// For ARMv8, will also match ARMv7, ARMv6 and ARMv5 (for 32bit runtimes)
 | 
			
		||||
// For ARMv7, will also match ARMv6 and ARMv5
 | 
			
		||||
// For ARMv6, will also match ARMv5
 | 
			
		||||
func Only(platform specs.Platform) MatchComparer {
 | 
			
		||||
	platform = Normalize(platform)
 | 
			
		||||
	if platform.Architecture == "arm" {
 | 
			
		||||
		if platform.Variant == "v8" {
 | 
			
		||||
			return orderedPlatformComparer{
 | 
			
		||||
				matchers: []Matcher{
 | 
			
		||||
					&matcher{
 | 
			
		||||
						Platform: platform,
 | 
			
		||||
					},
 | 
			
		||||
					&matcher{
 | 
			
		||||
						Platform: specs.Platform{
 | 
			
		||||
							Architecture: platform.Architecture,
 | 
			
		||||
							OS:           platform.OS,
 | 
			
		||||
							OSVersion:    platform.OSVersion,
 | 
			
		||||
							OSFeatures:   platform.OSFeatures,
 | 
			
		||||
							Variant:      "v7",
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
					&matcher{
 | 
			
		||||
						Platform: specs.Platform{
 | 
			
		||||
							Architecture: platform.Architecture,
 | 
			
		||||
							OS:           platform.OS,
 | 
			
		||||
							OSVersion:    platform.OSVersion,
 | 
			
		||||
							OSFeatures:   platform.OSFeatures,
 | 
			
		||||
							Variant:      "v6",
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
					&matcher{
 | 
			
		||||
						Platform: specs.Platform{
 | 
			
		||||
							Architecture: platform.Architecture,
 | 
			
		||||
							OS:           platform.OS,
 | 
			
		||||
							OSVersion:    platform.OSVersion,
 | 
			
		||||
							OSFeatures:   platform.OSFeatures,
 | 
			
		||||
							Variant:      "v5",
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		if platform.Variant == "v7" {
 | 
			
		||||
			return orderedPlatformComparer{
 | 
			
		||||
				matchers: []Matcher{
 | 
			
		||||
					&matcher{
 | 
			
		||||
						Platform: platform,
 | 
			
		||||
					},
 | 
			
		||||
					&matcher{
 | 
			
		||||
						Platform: specs.Platform{
 | 
			
		||||
							Architecture: platform.Architecture,
 | 
			
		||||
							OS:           platform.OS,
 | 
			
		||||
							OSVersion:    platform.OSVersion,
 | 
			
		||||
							OSFeatures:   platform.OSFeatures,
 | 
			
		||||
							Variant:      "v6",
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
					&matcher{
 | 
			
		||||
						Platform: specs.Platform{
 | 
			
		||||
							Architecture: platform.Architecture,
 | 
			
		||||
							OS:           platform.OS,
 | 
			
		||||
							OSVersion:    platform.OSVersion,
 | 
			
		||||
							OSFeatures:   platform.OSFeatures,
 | 
			
		||||
							Variant:      "v5",
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		if platform.Variant == "v6" {
 | 
			
		||||
			return orderedPlatformComparer{
 | 
			
		||||
				matchers: []Matcher{
 | 
			
		||||
					&matcher{
 | 
			
		||||
						Platform: platform,
 | 
			
		||||
					},
 | 
			
		||||
					&matcher{
 | 
			
		||||
						Platform: specs.Platform{
 | 
			
		||||
							Architecture: platform.Architecture,
 | 
			
		||||
							OS:           platform.OS,
 | 
			
		||||
							OSVersion:    platform.OSVersion,
 | 
			
		||||
							OSFeatures:   platform.OSFeatures,
 | 
			
		||||
							Variant:      "v5",
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return singlePlatformComparer{
 | 
			
		||||
		Matcher: &matcher{
 | 
			
		||||
			Platform: platform,
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Ordered returns a platform MatchComparer which matches any of the platforms
 | 
			
		||||
// but orders them in order they are provided.
 | 
			
		||||
func Ordered(platforms ...specs.Platform) MatchComparer {
 | 
			
		||||
	matchers := make([]Matcher, len(platforms))
 | 
			
		||||
	for i := range platforms {
 | 
			
		||||
		matchers[i] = NewMatcher(platforms[i])
 | 
			
		||||
	}
 | 
			
		||||
	return orderedPlatformComparer{
 | 
			
		||||
		matchers: matchers,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Any returns a platform MatchComparer which matches any of the platforms
 | 
			
		||||
// with no preference for ordering.
 | 
			
		||||
func Any(platforms ...specs.Platform) MatchComparer {
 | 
			
		||||
	matchers := make([]Matcher, len(platforms))
 | 
			
		||||
	for i := range platforms {
 | 
			
		||||
		matchers[i] = NewMatcher(platforms[i])
 | 
			
		||||
	}
 | 
			
		||||
	return anyPlatformComparer{
 | 
			
		||||
		matchers: matchers,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// All is a platform MatchComparer which matches all platforms
 | 
			
		||||
// with preference for ordering.
 | 
			
		||||
var All MatchComparer = allPlatformComparer{}
 | 
			
		||||
 | 
			
		||||
type singlePlatformComparer struct {
 | 
			
		||||
	Matcher
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c singlePlatformComparer) Less(p1, p2 specs.Platform) bool {
 | 
			
		||||
	return c.Match(p1) && !c.Match(p2)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type orderedPlatformComparer struct {
 | 
			
		||||
	matchers []Matcher
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c orderedPlatformComparer) Match(platform specs.Platform) bool {
 | 
			
		||||
	for _, m := range c.matchers {
 | 
			
		||||
		if m.Match(platform) {
 | 
			
		||||
			return true
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c orderedPlatformComparer) Less(p1 specs.Platform, p2 specs.Platform) bool {
 | 
			
		||||
	for _, m := range c.matchers {
 | 
			
		||||
		p1m := m.Match(p1)
 | 
			
		||||
		p2m := m.Match(p2)
 | 
			
		||||
		if p1m && !p2m {
 | 
			
		||||
			return true
 | 
			
		||||
		}
 | 
			
		||||
		if p1m || p2m {
 | 
			
		||||
			return false
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type anyPlatformComparer struct {
 | 
			
		||||
	matchers []Matcher
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c anyPlatformComparer) Match(platform specs.Platform) bool {
 | 
			
		||||
	for _, m := range c.matchers {
 | 
			
		||||
		if m.Match(platform) {
 | 
			
		||||
			return true
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c anyPlatformComparer) Less(p1, p2 specs.Platform) bool {
 | 
			
		||||
	var p1m, p2m bool
 | 
			
		||||
	for _, m := range c.matchers {
 | 
			
		||||
		if !p1m && m.Match(p1) {
 | 
			
		||||
			p1m = true
 | 
			
		||||
		}
 | 
			
		||||
		if !p2m && m.Match(p2) {
 | 
			
		||||
			p2m = true
 | 
			
		||||
		}
 | 
			
		||||
		if p1m && p2m {
 | 
			
		||||
			return false
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	// If one matches, and the other does, sort match first
 | 
			
		||||
	return p1m && !p2m
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type allPlatformComparer struct{}
 | 
			
		||||
 | 
			
		||||
func (allPlatformComparer) Match(specs.Platform) bool {
 | 
			
		||||
	return true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (allPlatformComparer) Less(specs.Platform, specs.Platform) bool {
 | 
			
		||||
	return false
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										122
									
								
								vendor/github.com/containerd/containerd/platforms/cpuinfo.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										122
									
								
								vendor/github.com/containerd/containerd/platforms/cpuinfo.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,122 @@
 | 
			
		||||
/*
 | 
			
		||||
   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"
 | 
			
		||||
	"os"
 | 
			
		||||
	"runtime"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"github.com/containerd/containerd/errdefs"
 | 
			
		||||
	"github.com/containerd/containerd/log"
 | 
			
		||||
	"github.com/pkg/errors"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Present the ARM instruction set architecture, eg: v7, v8
 | 
			
		||||
var cpuVariant string
 | 
			
		||||
 | 
			
		||||
func init() {
 | 
			
		||||
	if isArmArch(runtime.GOARCH) {
 | 
			
		||||
		cpuVariant = getCPUVariant()
 | 
			
		||||
	} else {
 | 
			
		||||
		cpuVariant = ""
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 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 "", errors.Wrapf(errdefs.ErrNotImplemented, "getCPUInfo for OS %s", runtime.GOOS)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	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 "", errors.Wrapf(errdefs.ErrNotFound, "getCPUInfo for pattern: %s", pattern)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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 ""
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	switch strings.ToLower(variant) {
 | 
			
		||||
	case "8", "aarch64":
 | 
			
		||||
		// special case: if running a 32-bit userspace on aarch64, the variant should be "v7"
 | 
			
		||||
		if runtime.GOARCH == "arm" {
 | 
			
		||||
			variant = "v7"
 | 
			
		||||
		} else {
 | 
			
		||||
			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
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										114
									
								
								vendor/github.com/containerd/containerd/platforms/database.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										114
									
								
								vendor/github.com/containerd/containerd/platforms/database.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,114 @@
 | 
			
		||||
/*
 | 
			
		||||
   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 (
 | 
			
		||||
	"runtime"
 | 
			
		||||
	"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.
 | 
			
		||||
//
 | 
			
		||||
// We use switch statements because they are slightly faster than map lookups
 | 
			
		||||
// and use a little less memory.
 | 
			
		||||
 | 
			
		||||
// isKnownOS returns true if we know about the operating system.
 | 
			
		||||
//
 | 
			
		||||
// The OS value should be normalized before calling this function.
 | 
			
		||||
func isKnownOS(os string) bool {
 | 
			
		||||
	switch os {
 | 
			
		||||
	case "aix", "android", "darwin", "dragonfly", "freebsd", "hurd", "illumos", "js", "linux", "nacl", "netbsd", "openbsd", "plan9", "solaris", "windows", "zos":
 | 
			
		||||
		return true
 | 
			
		||||
	}
 | 
			
		||||
	return false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// isArmArch returns true if the architecture is ARM.
 | 
			
		||||
//
 | 
			
		||||
// The arch value should be normalized before being passed to this function.
 | 
			
		||||
func isArmArch(arch string) bool {
 | 
			
		||||
	switch arch {
 | 
			
		||||
	case "arm", "arm64":
 | 
			
		||||
		return true
 | 
			
		||||
	}
 | 
			
		||||
	return false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// isKnownArch returns true if we know about the architecture.
 | 
			
		||||
//
 | 
			
		||||
// The arch value should be normalized before being passed to this function.
 | 
			
		||||
func isKnownArch(arch string) bool {
 | 
			
		||||
	switch arch {
 | 
			
		||||
	case "386", "amd64", "amd64p32", "arm", "armbe", "arm64", "arm64be", "ppc64", "ppc64le", "mips", "mipsle", "mips64", "mips64le", "mips64p32", "mips64p32le", "ppc", "riscv", "riscv64", "s390", "s390x", "sparc", "sparc64", "wasm":
 | 
			
		||||
		return true
 | 
			
		||||
	}
 | 
			
		||||
	return false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func normalizeOS(os string) string {
 | 
			
		||||
	if os == "" {
 | 
			
		||||
		return runtime.GOOS
 | 
			
		||||
	}
 | 
			
		||||
	os = strings.ToLower(os)
 | 
			
		||||
 | 
			
		||||
	switch os {
 | 
			
		||||
	case "macos":
 | 
			
		||||
		os = "darwin"
 | 
			
		||||
	}
 | 
			
		||||
	return os
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// normalizeArch normalizes the architecture.
 | 
			
		||||
func normalizeArch(arch, variant string) (string, string) {
 | 
			
		||||
	arch, variant = strings.ToLower(arch), strings.ToLower(variant)
 | 
			
		||||
	switch arch {
 | 
			
		||||
	case "i386":
 | 
			
		||||
		arch = "386"
 | 
			
		||||
		variant = ""
 | 
			
		||||
	case "x86_64", "x86-64":
 | 
			
		||||
		arch = "amd64"
 | 
			
		||||
		variant = ""
 | 
			
		||||
	case "aarch64", "arm64":
 | 
			
		||||
		arch = "arm64"
 | 
			
		||||
		switch variant {
 | 
			
		||||
		case "8", "v8":
 | 
			
		||||
			variant = ""
 | 
			
		||||
		}
 | 
			
		||||
	case "armhf":
 | 
			
		||||
		arch = "arm"
 | 
			
		||||
		variant = "v7"
 | 
			
		||||
	case "armel":
 | 
			
		||||
		arch = "arm"
 | 
			
		||||
		variant = "v6"
 | 
			
		||||
	case "arm":
 | 
			
		||||
		switch variant {
 | 
			
		||||
		case "", "7":
 | 
			
		||||
			variant = "v7"
 | 
			
		||||
		case "5", "6", "8":
 | 
			
		||||
			variant = "v" + variant
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return arch, variant
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										38
									
								
								vendor/github.com/containerd/containerd/platforms/defaults.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								vendor/github.com/containerd/containerd/platforms/defaults.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,38 @@
 | 
			
		||||
/*
 | 
			
		||||
   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 (
 | 
			
		||||
	"runtime"
 | 
			
		||||
 | 
			
		||||
	specs "github.com/opencontainers/image-spec/specs-go/v1"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// DefaultString returns the default string specifier for the platform.
 | 
			
		||||
func DefaultString() string {
 | 
			
		||||
	return Format(DefaultSpec())
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// DefaultSpec returns the current platform's default platform specification.
 | 
			
		||||
func DefaultSpec() specs.Platform {
 | 
			
		||||
	return specs.Platform{
 | 
			
		||||
		OS:           runtime.GOOS,
 | 
			
		||||
		Architecture: runtime.GOARCH,
 | 
			
		||||
		// The Variant field will be empty if arch != ARM.
 | 
			
		||||
		Variant: cpuVariant,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										24
									
								
								vendor/github.com/containerd/containerd/platforms/defaults_unix.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								vendor/github.com/containerd/containerd/platforms/defaults_unix.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
			
		||||
// +build !windows
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
   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
 | 
			
		||||
 | 
			
		||||
// Default returns the default matcher for the platform.
 | 
			
		||||
func Default() MatchComparer {
 | 
			
		||||
	return Only(DefaultSpec())
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										31
									
								
								vendor/github.com/containerd/containerd/platforms/defaults_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								vendor/github.com/containerd/containerd/platforms/defaults_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,31 @@
 | 
			
		||||
// +build windows
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
   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 (
 | 
			
		||||
	specs "github.com/opencontainers/image-spec/specs-go/v1"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Default returns the default matcher for the platform.
 | 
			
		||||
func Default() MatchComparer {
 | 
			
		||||
	return Ordered(DefaultSpec(), specs.Platform{
 | 
			
		||||
		OS:           "linux",
 | 
			
		||||
		Architecture: "amd64",
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										278
									
								
								vendor/github.com/containerd/containerd/platforms/platforms.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										278
									
								
								vendor/github.com/containerd/containerd/platforms/platforms.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,278 @@
 | 
			
		||||
/*
 | 
			
		||||
   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 provides a toolkit for normalizing, matching and
 | 
			
		||||
// specifying container platforms.
 | 
			
		||||
//
 | 
			
		||||
// Centered around OCI platform specifications, we define a string-based
 | 
			
		||||
// specifier syntax that can be used for user input. With a specifier, users
 | 
			
		||||
// only need to specify the parts of the platform that are relevant to their
 | 
			
		||||
// context, providing an operating system or architecture or both.
 | 
			
		||||
//
 | 
			
		||||
// How do I use this package?
 | 
			
		||||
//
 | 
			
		||||
// The vast majority of use cases should simply use the match function with
 | 
			
		||||
// user input. The first step is to parse a specifier into a matcher:
 | 
			
		||||
//
 | 
			
		||||
//   m, err := Parse("linux")
 | 
			
		||||
//   if err != nil { ... }
 | 
			
		||||
//
 | 
			
		||||
// Once you have a matcher, use it to match against the platform declared by a
 | 
			
		||||
// component, typically from an image or runtime. Since extracting an images
 | 
			
		||||
// platform is a little more involved, we'll use an example against the
 | 
			
		||||
// platform default:
 | 
			
		||||
//
 | 
			
		||||
//   if ok := m.Match(Default()); !ok { /* doesn't match */ }
 | 
			
		||||
//
 | 
			
		||||
// This can be composed in loops for resolving runtimes or used as a filter for
 | 
			
		||||
// fetch and select images.
 | 
			
		||||
//
 | 
			
		||||
// More details of the specifier syntax and platform spec follow.
 | 
			
		||||
//
 | 
			
		||||
// Declaring Platform Support
 | 
			
		||||
//
 | 
			
		||||
// Components that have strict platform requirements should use the OCI
 | 
			
		||||
// platform specification to declare their support. Typically, this will be
 | 
			
		||||
// images and runtimes that should make these declaring which platform they
 | 
			
		||||
// support specifically. This looks roughly as follows:
 | 
			
		||||
//
 | 
			
		||||
//   type Platform struct {
 | 
			
		||||
//	   Architecture string
 | 
			
		||||
//	   OS           string
 | 
			
		||||
//	   Variant      string
 | 
			
		||||
//   }
 | 
			
		||||
//
 | 
			
		||||
// Most images and runtimes should at least set Architecture and OS, according
 | 
			
		||||
// to their GOARCH and GOOS values, respectively (follow the OCI image
 | 
			
		||||
// specification when in doubt). ARM should set variant under certain
 | 
			
		||||
// discussions, which are outlined below.
 | 
			
		||||
//
 | 
			
		||||
// Platform Specifiers
 | 
			
		||||
//
 | 
			
		||||
// While the OCI platform specifications provide a tool for components to
 | 
			
		||||
// specify structured information, user input typically doesn't need the full
 | 
			
		||||
// context and much can be inferred. To solve this problem, we introduced
 | 
			
		||||
// "specifiers". A specifier has the format
 | 
			
		||||
// `<os>|<arch>|<os>/<arch>[/<variant>]`.  The user can provide either the
 | 
			
		||||
// operating system or the architecture or both.
 | 
			
		||||
//
 | 
			
		||||
// An example of a common specifier is `linux/amd64`. If the host has a default
 | 
			
		||||
// of runtime that matches this, the user can simply provide the component that
 | 
			
		||||
// matters. For example, if a image provides amd64 and arm64 support, the
 | 
			
		||||
// operating system, `linux` can be inferred, so they only have to provide
 | 
			
		||||
// `arm64` or `amd64`. Similar behavior is implemented for operating systems,
 | 
			
		||||
// where the architecture may be known but a runtime may support images from
 | 
			
		||||
// different operating systems.
 | 
			
		||||
//
 | 
			
		||||
// Normalization
 | 
			
		||||
//
 | 
			
		||||
// Because not all users are familiar with the way the Go runtime represents
 | 
			
		||||
// platforms, several normalizations have been provided to make this package
 | 
			
		||||
// easier to user.
 | 
			
		||||
//
 | 
			
		||||
// The following are performed for architectures:
 | 
			
		||||
//
 | 
			
		||||
//   Value    Normalized
 | 
			
		||||
//   aarch64  arm64
 | 
			
		||||
//   armhf    arm
 | 
			
		||||
//   armel    arm/v6
 | 
			
		||||
//   i386     386
 | 
			
		||||
//   x86_64   amd64
 | 
			
		||||
//   x86-64   amd64
 | 
			
		||||
//
 | 
			
		||||
// We also normalize the operating system `macos` to `darwin`.
 | 
			
		||||
//
 | 
			
		||||
// ARM Support
 | 
			
		||||
//
 | 
			
		||||
// To qualify ARM architecture, the Variant field is used to qualify the arm
 | 
			
		||||
// version. The most common arm version, v7, is represented without the variant
 | 
			
		||||
// unless it is explicitly provided. This is treated as equivalent to armhf. A
 | 
			
		||||
// previous architecture, armel, will be normalized to arm/v6.
 | 
			
		||||
//
 | 
			
		||||
// While these normalizations are provided, their support on arm platforms has
 | 
			
		||||
// not yet been fully implemented and tested.
 | 
			
		||||
package platforms
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"regexp"
 | 
			
		||||
	"runtime"
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"github.com/containerd/containerd/errdefs"
 | 
			
		||||
	specs "github.com/opencontainers/image-spec/specs-go/v1"
 | 
			
		||||
	"github.com/pkg/errors"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	specifierRe = regexp.MustCompile(`^[A-Za-z0-9_-]+$`)
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Matcher matches platforms specifications, provided by an image or runtime.
 | 
			
		||||
type Matcher interface {
 | 
			
		||||
	Match(platform specs.Platform) bool
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NewMatcher returns a simple matcher based on the provided platform
 | 
			
		||||
// specification. The returned matcher only looks for equality based on os,
 | 
			
		||||
// architecture and variant.
 | 
			
		||||
//
 | 
			
		||||
// One may implement their own matcher if this doesn't provide the required
 | 
			
		||||
// functionality.
 | 
			
		||||
//
 | 
			
		||||
// Applications should opt to use `Match` over directly parsing specifiers.
 | 
			
		||||
func NewMatcher(platform specs.Platform) Matcher {
 | 
			
		||||
	return &matcher{
 | 
			
		||||
		Platform: Normalize(platform),
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type matcher struct {
 | 
			
		||||
	specs.Platform
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m *matcher) Match(platform specs.Platform) bool {
 | 
			
		||||
	normalized := Normalize(platform)
 | 
			
		||||
	return m.OS == normalized.OS &&
 | 
			
		||||
		m.Architecture == normalized.Architecture &&
 | 
			
		||||
		m.Variant == normalized.Variant
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m *matcher) String() string {
 | 
			
		||||
	return Format(m.Platform)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Parse parses the platform specifier syntax into a platform declaration.
 | 
			
		||||
//
 | 
			
		||||
// Platform specifiers are in the format `<os>|<arch>|<os>/<arch>[/<variant>]`.
 | 
			
		||||
// The minimum required information for a platform specifier is the operating
 | 
			
		||||
// system or architecture. If there is only a single string (no slashes), the
 | 
			
		||||
// value will be matched against the known set of operating systems, then fall
 | 
			
		||||
// back to the known set of architectures. The missing component will be
 | 
			
		||||
// inferred based on the local environment.
 | 
			
		||||
func Parse(specifier string) (specs.Platform, error) {
 | 
			
		||||
	if strings.Contains(specifier, "*") {
 | 
			
		||||
		// TODO(stevvooe): need to work out exact wildcard handling
 | 
			
		||||
		return specs.Platform{}, errors.Wrapf(errdefs.ErrInvalidArgument, "%q: wildcards not yet supported", specifier)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	parts := strings.Split(specifier, "/")
 | 
			
		||||
 | 
			
		||||
	for _, part := range parts {
 | 
			
		||||
		if !specifierRe.MatchString(part) {
 | 
			
		||||
			return specs.Platform{}, errors.Wrapf(errdefs.ErrInvalidArgument, "%q is an invalid component of %q: platform specifier component must match %q", part, specifier, specifierRe.String())
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var p specs.Platform
 | 
			
		||||
	switch len(parts) {
 | 
			
		||||
	case 1:
 | 
			
		||||
		// in this case, we will test that the value might be an OS, then look
 | 
			
		||||
		// it up. If it is not known, we'll treat it as an architecture. Since
 | 
			
		||||
		// we have very little information about the platform here, we are
 | 
			
		||||
		// going to be a little more strict if we don't know about the argument
 | 
			
		||||
		// value.
 | 
			
		||||
		p.OS = normalizeOS(parts[0])
 | 
			
		||||
		if isKnownOS(p.OS) {
 | 
			
		||||
			// picks a default architecture
 | 
			
		||||
			p.Architecture = runtime.GOARCH
 | 
			
		||||
			if p.Architecture == "arm" && cpuVariant != "v7" {
 | 
			
		||||
				p.Variant = cpuVariant
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			return p, nil
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		p.Architecture, p.Variant = normalizeArch(parts[0], "")
 | 
			
		||||
		if p.Architecture == "arm" && p.Variant == "v7" {
 | 
			
		||||
			p.Variant = ""
 | 
			
		||||
		}
 | 
			
		||||
		if isKnownArch(p.Architecture) {
 | 
			
		||||
			p.OS = runtime.GOOS
 | 
			
		||||
			return p, nil
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		return specs.Platform{}, errors.Wrapf(errdefs.ErrInvalidArgument, "%q: unknown operating system or architecture", specifier)
 | 
			
		||||
	case 2:
 | 
			
		||||
		// In this case, we treat as a regular os/arch pair. We don't care
 | 
			
		||||
		// about whether or not we know of the platform.
 | 
			
		||||
		p.OS = normalizeOS(parts[0])
 | 
			
		||||
		p.Architecture, p.Variant = normalizeArch(parts[1], "")
 | 
			
		||||
		if p.Architecture == "arm" && p.Variant == "v7" {
 | 
			
		||||
			p.Variant = ""
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		return p, nil
 | 
			
		||||
	case 3:
 | 
			
		||||
		// we have a fully specified variant, this is rare
 | 
			
		||||
		p.OS = normalizeOS(parts[0])
 | 
			
		||||
		p.Architecture, p.Variant = normalizeArch(parts[1], parts[2])
 | 
			
		||||
		if p.Architecture == "arm64" && p.Variant == "" {
 | 
			
		||||
			p.Variant = "v8"
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		return p, nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return specs.Platform{}, errors.Wrapf(errdefs.ErrInvalidArgument, "%q: cannot parse platform specifier", specifier)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// MustParse is like Parses but panics if the specifier cannot be parsed.
 | 
			
		||||
// Simplifies initialization of global variables.
 | 
			
		||||
func MustParse(specifier string) specs.Platform {
 | 
			
		||||
	p, err := Parse(specifier)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		panic("platform: Parse(" + strconv.Quote(specifier) + "): " + err.Error())
 | 
			
		||||
	}
 | 
			
		||||
	return p
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Format returns a string specifier from the provided platform specification.
 | 
			
		||||
func Format(platform specs.Platform) string {
 | 
			
		||||
	if platform.OS == "" {
 | 
			
		||||
		return "unknown"
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return joinNotEmpty(platform.OS, platform.Architecture, platform.Variant)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func joinNotEmpty(s ...string) string {
 | 
			
		||||
	var ss []string
 | 
			
		||||
	for _, s := range s {
 | 
			
		||||
		if s == "" {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		ss = append(ss, s)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return strings.Join(ss, "/")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Normalize validates and translate the platform to the canonical value.
 | 
			
		||||
//
 | 
			
		||||
// For example, if "Aarch64" is encountered, we change it to "arm64" or if
 | 
			
		||||
// "x86_64" is encountered, it becomes "amd64".
 | 
			
		||||
func Normalize(platform specs.Platform) specs.Platform {
 | 
			
		||||
	platform.OS = normalizeOS(platform.OS)
 | 
			
		||||
	platform.Architecture, platform.Variant = normalizeArch(platform.Architecture, platform.Variant)
 | 
			
		||||
 | 
			
		||||
	// these fields are deprecated, remove them
 | 
			
		||||
	platform.OSFeatures = nil
 | 
			
		||||
	platform.OSVersion = ""
 | 
			
		||||
 | 
			
		||||
	return platform
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user