Update platforms to v1.0.0-rc.0

Signed-off-by: Derek McGowan <derek@mcg.dev>
This commit is contained in:
Derek McGowan 2024-11-04 15:24:52 -08:00
parent c4f797eaba
commit bd10a60965
No known key found for this signature in database
GPG Key ID: F58C5D0A4405ACDB
8 changed files with 90 additions and 13 deletions

2
go.mod
View File

@ -24,7 +24,7 @@ require (
github.com/containerd/log v0.1.0 github.com/containerd/log v0.1.0
github.com/containerd/nri v0.7.0 github.com/containerd/nri v0.7.0
github.com/containerd/otelttrpc v0.0.0-20240305015340-ea5083fda723 github.com/containerd/otelttrpc v0.0.0-20240305015340-ea5083fda723
github.com/containerd/platforms v0.2.1 github.com/containerd/platforms v1.0.0-rc.0
github.com/containerd/plugin v1.0.0 github.com/containerd/plugin v1.0.0
github.com/containerd/ttrpc v1.2.6 github.com/containerd/ttrpc v1.2.6
github.com/containerd/typeurl/v2 v2.2.0 github.com/containerd/typeurl/v2 v2.2.0

4
go.sum
View File

@ -691,8 +691,8 @@ github.com/containerd/nri v0.7.0 h1:scGL9JiBqNaWnghLFFPOzp0GxxWAc1uQtQ7qx8PHdCs=
github.com/containerd/nri v0.7.0/go.mod h1:uSkgBrCdEtAiEz4vnrq8gmAC4EnVAM5Klt0OuK5rZYQ= github.com/containerd/nri v0.7.0/go.mod h1:uSkgBrCdEtAiEz4vnrq8gmAC4EnVAM5Klt0OuK5rZYQ=
github.com/containerd/otelttrpc v0.0.0-20240305015340-ea5083fda723 h1:swk9KxrmARZjSMrHc1Lzb39XhcDwAhYpqkBhinCFLCQ= github.com/containerd/otelttrpc v0.0.0-20240305015340-ea5083fda723 h1:swk9KxrmARZjSMrHc1Lzb39XhcDwAhYpqkBhinCFLCQ=
github.com/containerd/otelttrpc v0.0.0-20240305015340-ea5083fda723/go.mod h1:ZKzztepTSz/LKtbUSzfBNVwgqBEPABVZV9PQF/l53+Q= github.com/containerd/otelttrpc v0.0.0-20240305015340-ea5083fda723/go.mod h1:ZKzztepTSz/LKtbUSzfBNVwgqBEPABVZV9PQF/l53+Q=
github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v1.0.0-rc.0 h1:GuHWSKgVVO3POn6nRBB4sH63uPOLa87yuuhsGLWaXAA=
github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= github.com/containerd/platforms v1.0.0-rc.0/go.mod h1:T1XAzzOdYs3it7l073MNXyxRwQofJfqwi/8cRjufIk4=
github.com/containerd/plugin v1.0.0 h1:c8Kf1TNl6+e2TtMHZt+39yAPDbouRH9WAToRjex483Y= github.com/containerd/plugin v1.0.0 h1:c8Kf1TNl6+e2TtMHZt+39yAPDbouRH9WAToRjex483Y=
github.com/containerd/plugin v1.0.0/go.mod h1:hQfJe5nmWfImiqT1q8Si3jLv3ynMUIBB47bQ+KexvO8= github.com/containerd/plugin v1.0.0/go.mod h1:hQfJe5nmWfImiqT1q8Si3jLv3ynMUIBB47bQ+KexvO8=
github.com/containerd/ttrpc v1.2.2/go.mod h1:sIT6l32Ph/H9cvnJsfXM5drIVzTr5A2flTf1G5tYZak= github.com/containerd/ttrpc v1.2.2/go.mod h1:sIT6l32Ph/H9cvnJsfXM5drIVzTr5A2flTf1G5tYZak=

View File

@ -1,6 +1,6 @@
linters: linters:
enable: enable:
- exportloopref # Checks for pointers to enclosing loop variables - copyloopvar
- gofmt - gofmt
- goimports - goimports
- gosec - gosec
@ -12,14 +12,16 @@ linters:
- tenv # Detects using os.Setenv instead of t.Setenv since Go 1.17 - tenv # Detects using os.Setenv instead of t.Setenv since Go 1.17
- unconvert - unconvert
- unused - unused
- vet - govet
- dupword # Checks for duplicate words in the source code - dupword # Checks for duplicate words in the source code
disable: disable:
- errcheck - errcheck
run: run:
timeout: 5m timeout: 5m
skip-dirs:
issues:
exclude-dirs:
- api - api
- cluster - cluster
- design - design

View File

@ -72,6 +72,66 @@ func platformVector(platform specs.Platform) []specs.Platform {
if variant == "" { if variant == "" {
variant = "v8" variant = "v8"
} }
majorVariant, minorVariant, hasMinor := strings.Cut(variant, ".")
if armMajor, err := strconv.Atoi(strings.TrimPrefix(majorVariant, "v")); err == nil && armMajor >= 8 {
armMinor := 0
if len(variant) == 4 {
if minor, err := strconv.Atoi(minorVariant); err == nil && hasMinor {
armMinor = minor
}
}
if armMajor == 9 {
for minor := armMinor - 1; minor >= 0; minor-- {
arm64Variant := "v" + strconv.Itoa(armMajor) + "." + strconv.Itoa(minor)
if minor == 0 {
arm64Variant = "v" + strconv.Itoa(armMajor)
}
vector = append(vector, specs.Platform{
Architecture: platform.Architecture,
OS: platform.OS,
OSVersion: platform.OSVersion,
OSFeatures: platform.OSFeatures,
Variant: arm64Variant,
})
}
// v9.0 diverged from v8.5, meaning that v9.x is compatible with v8.{x+5} until v9.4/v8.9
armMinor = armMinor + 5
if armMinor > 9 {
armMinor = 9
}
armMajor = 8
vector = append(vector, specs.Platform{
Architecture: platform.Architecture,
OS: platform.OS,
OSVersion: platform.OSVersion,
OSFeatures: platform.OSFeatures,
Variant: "v8." + strconv.Itoa(armMinor),
})
}
for minor := armMinor - 1; minor >= 0; minor-- {
arm64Variant := "v" + strconv.Itoa(armMajor) + "." + strconv.Itoa(minor)
if minor == 0 {
arm64Variant = "v" + strconv.Itoa(armMajor)
}
vector = append(vector, specs.Platform{
Architecture: platform.Architecture,
OS: platform.OS,
OSVersion: platform.OSVersion,
OSFeatures: platform.OSFeatures,
Variant: arm64Variant,
})
}
}
// All arm64/v8.x and arm64/v9.x are compatible with arm/v8 (32-bits) and below.
// There's no arm64 v9 variant, so it's normalized to v8.
if strings.HasPrefix(variant, "v8.") || strings.HasPrefix(variant, "v9.") {
variant = "v8"
}
vector = append(vector, platformVector(specs.Platform{ vector = append(vector, platformVector(specs.Platform{
Architecture: "arm", Architecture: "arm",
OS: platform.OS, OS: platform.OS,
@ -87,6 +147,8 @@ func platformVector(platform specs.Platform) []specs.Platform {
// Only returns a match comparer for a single platform // Only returns a match comparer for a single platform
// using default resolution logic for the platform. // using default resolution logic for the platform.
// //
// For arm64/v9.x, will also match arm64/v9.{0..x-1} and arm64/v8.{0..x+5}
// For arm64/v8.x, will also match arm64/v8.{0..x-1}
// For arm/v8, will also match arm/v7, arm/v6 and arm/v5 // For arm/v8, will also match arm/v7, arm/v6 and arm/v5
// For arm/v7, will also match arm/v6 and arm/v5 // For arm/v7, will also match arm/v6 and arm/v5
// For arm/v6, will also match arm/v5 // For arm/v6, will also match arm/v5

View File

@ -86,9 +86,22 @@ func normalizeArch(arch, variant string) (string, string) {
} }
case "aarch64", "arm64": case "aarch64", "arm64":
arch = "arm64" arch = "arm64"
switch variant { majorVariant, minorVariant, hasMinor := strings.Cut(variant, ".")
case "8", "v8": majorVariant = strings.TrimPrefix(majorVariant, "v")
if minorVariant == "0" {
minorVariant = ""
hasMinor = false
}
if (majorVariant == "" || majorVariant == "8") && !hasMinor {
// normalize v8 to empty string
variant = "" variant = ""
} else {
// otherwise to v8.x or v9 or v9.x
variant = "v" + majorVariant
if hasMinor {
variant = variant + "." + minorVariant
}
} }
case "armhf": case "armhf":
arch = "arm" arch = "arm"

View File

@ -69,9 +69,9 @@ func getOSVersion(osVersionPrefix string) osVersion {
return osVersion{} return osVersion{}
} }
majorVersion, _ := strconv.Atoi(parts[0]) majorVersion, _ := strconv.ParseUint(parts[0], 10, 8)
minorVersion, _ := strconv.Atoi(parts[1]) minorVersion, _ := strconv.ParseUint(parts[1], 10, 8)
buildNumber, _ := strconv.Atoi(parts[2]) buildNumber, _ := strconv.ParseUint(parts[2], 10, 16)
return osVersion{ return osVersion{
MajorVersion: uint8(majorVersion), MajorVersion: uint8(majorVersion),

View File

@ -121,7 +121,7 @@ import (
) )
var ( var (
specifierRe = regexp.MustCompile(`^[A-Za-z0-9_-]+$`) specifierRe = regexp.MustCompile(`^[A-Za-z0-9_.-]+$`)
osAndVersionRe = regexp.MustCompile(`^([A-Za-z0-9_-]+)(?:\(([A-Za-z0-9_.-]*)\))?$`) osAndVersionRe = regexp.MustCompile(`^([A-Za-z0-9_-]+)(?:\(([A-Za-z0-9_.-]*)\))?$`)
) )

2
vendor/modules.txt vendored
View File

@ -183,7 +183,7 @@ github.com/containerd/nri/types/v1
## explicit; go 1.13 ## explicit; go 1.13
github.com/containerd/otelttrpc github.com/containerd/otelttrpc
github.com/containerd/otelttrpc/internal github.com/containerd/otelttrpc/internal
# github.com/containerd/platforms v0.2.1 # github.com/containerd/platforms v1.0.0-rc.0
## explicit; go 1.20 ## explicit; go 1.20
github.com/containerd/platforms github.com/containerd/platforms
# github.com/containerd/plugin v1.0.0 # github.com/containerd/plugin v1.0.0