mirror of https://github.com/docker/buildx.git
bake: fix linking to targets with entitlements
When linked target requires entitlement, same entitlement is also needed by the caller. Otherwise, the request will fail when the build is processed. Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
This commit is contained in:
parent
056cf8a7ca
commit
c60afbb25b
|
@ -7,6 +7,7 @@ import (
|
||||||
"path"
|
"path"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"regexp"
|
"regexp"
|
||||||
|
"slices"
|
||||||
"sort"
|
"sort"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -502,6 +503,14 @@ func (c Config) loadLinks(name string, t *Target, m map[string]*Target, o map[st
|
||||||
if err := c.loadLinks(target, t2, m, o, visited); err != nil {
|
if err := c.loadLinks(target, t2, m, o, visited); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// entitlements are inherited from linked targets
|
||||||
|
for _, ent := range t2.Entitlements {
|
||||||
|
if !slices.Contains(t.Entitlements, ent) {
|
||||||
|
t.Entitlements = append(t.Entitlements, ent)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if len(t.Platforms) > 1 && len(t2.Platforms) > 1 {
|
if len(t.Platforms) > 1 && len(t2.Platforms) > 1 {
|
||||||
if !sliceEqual(t.Platforms, t2.Platforms) {
|
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)
|
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)
|
||||||
|
|
Loading…
Reference in New Issue