mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Merge pull request #21819 from tophj-ibm/fix-ensure-emptyfs-other-architectures
Fix .ensure-emptyfs on non-x86_64 architectures
This commit is contained in:
commit
3f39035f18
4 changed files with 1 additions and 74 deletions
|
@ -628,9 +628,7 @@ func (p *v2Puller) pullManifestList(ctx context.Context, ref reference.Named, mf
|
|||
// TODO(aaronl): The manifest list spec supports optional
|
||||
// "features" and "variant" fields. These are not yet used.
|
||||
// Once they are, their values should be interpreted here.
|
||||
// TODO(jstarks): Once os.version and os.features are present,
|
||||
// pass these, too.
|
||||
if image.ValidateOSCompatibility(manifestDescriptor.Platform.OS, manifestDescriptor.Platform.Architecture, "", nil) == nil {
|
||||
if manifestDescriptor.Platform.Architecture == runtime.GOARCH && manifestDescriptor.Platform.OS == runtime.GOOS {
|
||||
manifestDigest = manifestDescriptor.Digest
|
||||
break
|
||||
}
|
||||
|
|
|
@ -1,38 +0,0 @@
|
|||
package image
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"runtime"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func archMatches(arch string) bool {
|
||||
// Special case x86_64 as an alias for amd64
|
||||
return arch == runtime.GOARCH || (arch == "x86_64" && runtime.GOARCH == "amd64")
|
||||
}
|
||||
|
||||
// ValidateOSCompatibility validates that an image with the given properties can run on this machine.
|
||||
func ValidateOSCompatibility(os string, arch string, osVersion string, osFeatures []string) error {
|
||||
if os != "" && os != runtime.GOOS {
|
||||
return fmt.Errorf("image is for OS %s, expected %s", os, runtime.GOOS)
|
||||
}
|
||||
if arch != "" && !archMatches(arch) {
|
||||
return fmt.Errorf("image is for architecture %s, expected %s", arch, runtime.GOARCH)
|
||||
}
|
||||
if osVersion != "" {
|
||||
thisOSVersion := getOSVersion()
|
||||
if thisOSVersion != osVersion {
|
||||
return fmt.Errorf("image is for OS version '%s', expected '%s'", osVersion, thisOSVersion)
|
||||
}
|
||||
}
|
||||
var missing []string
|
||||
for _, f := range osFeatures {
|
||||
if !hasOSFeature(f) {
|
||||
missing = append(missing, f)
|
||||
}
|
||||
}
|
||||
if len(missing) > 0 {
|
||||
return fmt.Errorf("image requires missing OS features: %s", strings.Join(missing, ", "))
|
||||
}
|
||||
return nil
|
||||
}
|
|
@ -1,28 +0,0 @@
|
|||
package image
|
||||
|
||||
import (
|
||||
"runtime"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestValidateOSCompatibility(t *testing.T) {
|
||||
err := ValidateOSCompatibility(runtime.GOOS, runtime.GOARCH, getOSVersion(), nil)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
err = ValidateOSCompatibility("DOS", runtime.GOARCH, getOSVersion(), nil)
|
||||
if err == nil {
|
||||
t.Error("expected OS compat error")
|
||||
}
|
||||
|
||||
err = ValidateOSCompatibility(runtime.GOOS, "pdp-11", getOSVersion(), nil)
|
||||
if err == nil {
|
||||
t.Error("expected architecture compat error")
|
||||
}
|
||||
|
||||
err = ValidateOSCompatibility(runtime.GOOS, runtime.GOARCH, "98 SE", nil)
|
||||
if err == nil {
|
||||
t.Error("expected OS version compat error")
|
||||
}
|
||||
}
|
|
@ -127,11 +127,6 @@ func (is *store) Create(config []byte) (ID, error) {
|
|||
return "", errors.New("too many non-empty layers in History section")
|
||||
}
|
||||
|
||||
err = ValidateOSCompatibility(img.OS, img.Architecture, img.OSVersion, img.OSFeatures)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
dgst, err := is.fs.Set(config)
|
||||
if err != nil {
|
||||
return "", err
|
||||
|
|
Loading…
Reference in a new issue