Merge pull request #37355 from tonistiigi/vendor-containerd

vendor: update containerd to 08f7ee98
diff --git a/vendor.conf b/vendor.conf
index 25f7490..2699a9d 100644
--- a/vendor.conf
+++ b/vendor.conf
@@ -114,7 +114,7 @@
 google.golang.org/genproto 694d95ba50e67b2e363f3483057db5d4910c18f9
 
 # containerd
-github.com/containerd/containerd 63522d9eaa5a0443d225642c4b6f4f5fdedf932b
+github.com/containerd/containerd 08f7ee9828af1783dc98cc5cc1739e915697c667
 github.com/containerd/fifo 3d5202aec260678c48179c56f40e6f38a095738c
 github.com/containerd/continuity d3c23511c1bf5851696cba83143d9cbcd666869b
 github.com/containerd/cgroups fe281dd265766145e943a034aa41086474ea6130
diff --git a/vendor/github.com/containerd/containerd/images/image.go b/vendor/github.com/containerd/containerd/images/image.go
index 35eda26..a96597c 100644
--- a/vendor/github.com/containerd/containerd/images/image.go
+++ b/vendor/github.com/containerd/containerd/images/image.go
@@ -129,11 +129,14 @@
 // this direction because this abstraction is not needed.`
 func Manifest(ctx context.Context, provider content.Provider, image ocispec.Descriptor, platform string) (ocispec.Manifest, error) {
 	var (
-		matcher platforms.Matcher
-		m       *ocispec.Manifest
+		matcher  platforms.Matcher
+		m        *ocispec.Manifest
+		p        ocispec.Platform
+		wasIndex bool
 	)
 	if platform != "" {
-		p, err := platforms.Parse(platform)
+		var err error
+		p, err = platforms.Parse(platform)
 		if err != nil {
 			return ocispec.Manifest{}, err
 		}
@@ -201,6 +204,8 @@
 				}
 			}
 
+			wasIndex = true
+
 			return descs, nil
 
 		}
@@ -210,7 +215,11 @@
 	}
 
 	if m == nil {
-		return ocispec.Manifest{}, errors.Wrapf(errdefs.ErrNotFound, "manifest %v", image.Digest)
+		err := errors.Wrapf(errdefs.ErrNotFound, "manifest %v", image.Digest)
+		if wasIndex {
+			err = errors.Wrapf(errdefs.ErrNotFound, "no match for current platform %s in manifest %v", platforms.Format(p), image.Digest)
+		}
+		return ocispec.Manifest{}, err
 	}
 
 	return *m, nil
diff --git a/vendor/github.com/containerd/containerd/platforms/database.go b/vendor/github.com/containerd/containerd/platforms/database.go
index df9cc23..8e85448 100644
--- a/vendor/github.com/containerd/containerd/platforms/database.go
+++ b/vendor/github.com/containerd/containerd/platforms/database.go
@@ -89,18 +89,21 @@
 	case "x86_64", "x86-64":
 		arch = "amd64"
 		variant = ""
-	case "aarch64":
+	case "aarch64", "arm64":
 		arch = "arm64"
-		variant = "" // v8 is implied
+		switch variant {
+		case "8", "v8":
+			variant = ""
+		}
 	case "armhf":
 		arch = "arm"
-		variant = ""
+		variant = "v7"
 	case "armel":
 		arch = "arm"
 		variant = "v6"
 	case "arm":
 		switch variant {
-		case "v7", "7":
+		case "", "7":
 			variant = "v7"
 		case "5", "6", "8":
 			variant = "v" + variant
diff --git a/vendor/github.com/containerd/containerd/platforms/platforms.go b/vendor/github.com/containerd/containerd/platforms/platforms.go
index 1f91ed2..29b7ad6 100644
--- a/vendor/github.com/containerd/containerd/platforms/platforms.go
+++ b/vendor/github.com/containerd/containerd/platforms/platforms.go
@@ -135,7 +135,7 @@
 // Applications should opt to use `Match` over directly parsing specifiers.
 func NewMatcher(platform specs.Platform) Matcher {
 	return &matcher{
-		Platform: platform,
+		Platform: Normalize(platform),
 	}
 }
 
@@ -197,6 +197,9 @@
 		}
 
 		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
@@ -208,12 +211,18 @@
 		// 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
 	}
diff --git a/vendor/github.com/containerd/containerd/runtime/shim/client/client.go b/vendor/github.com/containerd/containerd/runtime/shim/client/client.go
index f636128..e46d6df 100644
--- a/vendor/github.com/containerd/containerd/runtime/shim/client/client.go
+++ b/vendor/github.com/containerd/containerd/runtime/shim/client/client.go
@@ -136,6 +136,7 @@
 	// will be mounted by the shim
 	cmd.SysProcAttr = getSysProcAttr()
 	cmd.ExtraFiles = append(cmd.ExtraFiles, socket)
+	cmd.Env = append(os.Environ(), "GOMAXPROCS=2")
 	if debug {
 		cmd.Stdout = os.Stdout
 		cmd.Stderr = os.Stderr
diff --git a/vendor/github.com/containerd/containerd/vendor.conf b/vendor/github.com/containerd/containerd/vendor.conf
index 7585e03..2e100c1 100644
--- a/vendor/github.com/containerd/containerd/vendor.conf
+++ b/vendor/github.com/containerd/containerd/vendor.conf
@@ -22,7 +22,6 @@
 github.com/opencontainers/runtime-spec v1.0.1
 github.com/opencontainers/runc 69663f0bd4b60df09991c08812a60108003fa340
 github.com/sirupsen/logrus v1.0.0
-github.com/pmezard/go-difflib v1.0.0
 github.com/urfave/cli 7bc6a0acffa589f415f88aca16cc1de5ffd66f9c
 golang.org/x/net b3756b4b77d7b13260a0a2ec658753cf48922eac
 google.golang.org/grpc v1.12.0
@@ -40,7 +39,7 @@
 golang.org/x/text 19e51611da83d6be54ddafce4a4af510cb3e9ea4
 github.com/stevvooe/ttrpc d4528379866b0ce7e9d71f3eb96f0582fc374577
 github.com/syndtr/gocapability db04d3cc01c8b54962a58ec7e491717d06cfcc16
-github.com/gotestyourself/gotestyourself 44dbf532bbf5767611f6f2a61bded572e337010a
+gotest.tools v2.1.0
 github.com/google/go-cmp v0.1.0
 
 github.com/containerd/cri 8bcb9a95394e8d7845da1d6a994d3ac2a86d22f0