bake: fix context from target platform matching

Signed-off-by: Arran Walker <arran.walker@fiveturns.org>
This commit is contained in:
Arran Walker
2024-12-19 23:57:42 +00:00
parent 5c5bc510ac
commit 5c169dd878
2 changed files with 27 additions and 12 deletions

View File

@@ -9,7 +9,6 @@ import (
"path/filepath"
"regexp"
"slices"
"sort"
"strconv"
"strings"
"time"
@@ -515,8 +514,8 @@ func (c Config) loadLinks(name string, t *Target, m map[string]*Target, o map[st
}
if len(t.Platforms) > 1 && len(t2.Platforms) > 1 {
if !sliceEqual(t.Platforms, t2.Platforms) {
return errors.Errorf("target %s can't be used by %s because it is defined for different platforms %v and %v", target, name, t2.Platforms, t.Platforms)
if !isSubset(t.Platforms, t2.Platforms) {
return errors.Errorf("target %s can't be used by %s because its platforms %v are not a subset of %v", target, name, t.Platforms, t2.Platforms)
}
}
}
@@ -1516,14 +1515,9 @@ func sanitizeTargetName(target string) string {
return strings.ReplaceAll(target, ".", "_")
}
func sliceEqual(s1, s2 []string) bool {
if len(s1) != len(s2) {
return false
}
sort.Strings(s1)
sort.Strings(s2)
for i := range s1 {
if s1[i] != s2[i] {
func isSubset(s1, s2 []string) bool {
for _, item := range s1 {
if !slices.Contains(s2, item) {
return false
}
}