Merge pull request #6455 from tonistiigi/amd64-variants

platforms: add support for matching amd64 variants
This commit is contained in:
Phil Estes 2022-01-27 10:07:49 -05:00 committed by GitHub
commit a43703fcba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 35 additions and 3 deletions

View File

@ -38,12 +38,22 @@ func platformVector(platform specs.Platform) []specs.Platform {
switch platform.Architecture {
case "amd64":
if amd64Version, err := strconv.Atoi(strings.TrimPrefix(platform.Variant, "v")); err == nil && amd64Version > 1 {
for amd64Version--; amd64Version >= 1; amd64Version-- {
vector = append(vector, specs.Platform{
Architecture: platform.Architecture,
OS: platform.OS,
OSVersion: platform.OSVersion,
OSFeatures: platform.OSFeatures,
Variant: "v" + strconv.Itoa(amd64Version),
})
}
}
vector = append(vector, specs.Platform{
Architecture: "386",
OS: platform.OS,
OSVersion: platform.OSVersion,
OSFeatures: platform.OSFeatures,
Variant: platform.Variant,
})
case "arm":
if armVersion, err := strconv.Atoi(strings.TrimPrefix(platform.Variant, "v")); err == nil && armVersion > 5 {

View File

@ -33,6 +33,26 @@ func TestOnly(t *testing.T) {
"linux/386",
},
false: {
"linux/amd64/v2",
"linux/arm/v7",
"linux/arm64",
"windows/amd64",
"windows/arm",
},
},
},
{
platform: "linux/amd64/v2",
matches: map[bool][]string{
true: {
"linux/amd64",
"linux/amd64/v1",
"linux/amd64/v2",
"linux/386",
},
false: {
"linux/amd64/v3",
"linux/amd64/v4",
"linux/arm/v7",
"linux/arm64",
"windows/amd64",

View File

@ -86,9 +86,11 @@ func normalizeArch(arch, variant string) (string, string) {
case "i386":
arch = "386"
variant = ""
case "x86_64", "x86-64":
case "x86_64", "x86-64", "amd64":
arch = "amd64"
if variant == "v1" {
variant = ""
}
case "aarch64", "arm64":
arch = "arm64"
switch variant {