mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-08-21 11:15:44 +08:00
build: fix multiple named contexts pointing to same bake target
Contexts using target: schema are replaced by input: pointing
to previous build result before build request is sent. Currently
this replacement did not work if multiple contexts pointed to
the same target name.
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
(cherry picked from commit f8c6a97edc
)
This commit is contained in:

committed by
Jonathan A. Sternberg

parent
f6830f3b86
commit
3f1aaa68d5
@@ -784,11 +784,11 @@ func calculateChildTargets(reqs map[string][]*reqForNode, opt map[string]Options
|
||||
}
|
||||
|
||||
func waitContextDeps(ctx context.Context, index int, results *waitmap.Map, so *client.SolveOpt) error {
|
||||
m := map[string]string{}
|
||||
m := map[string][]string{}
|
||||
for k, v := range so.FrontendAttrs {
|
||||
if strings.HasPrefix(k, "context:") && strings.HasPrefix(v, "target:") {
|
||||
target := resultKey(index, strings.TrimPrefix(v, "target:"))
|
||||
m[target] = k
|
||||
m[target] = append(m[target], k)
|
||||
}
|
||||
}
|
||||
if len(m) == 0 {
|
||||
@@ -803,7 +803,7 @@ func waitContextDeps(ctx context.Context, index int, results *waitmap.Map, so *c
|
||||
return err
|
||||
}
|
||||
|
||||
for k, v := range m {
|
||||
for k, contexts := range m {
|
||||
r, ok := res[k]
|
||||
if !ok {
|
||||
continue
|
||||
@@ -818,6 +818,8 @@ func waitContextDeps(ctx context.Context, index int, results *waitmap.Map, so *c
|
||||
if so.FrontendInputs == nil {
|
||||
so.FrontendInputs = map[string]llb.State{}
|
||||
}
|
||||
|
||||
for _, v := range contexts {
|
||||
if len(rr.Refs) > 0 {
|
||||
for platform, r := range rr.Refs {
|
||||
st, err := r.ToState()
|
||||
@@ -866,6 +868,7 @@ func waitContextDeps(ctx context.Context, index int, results *waitmap.Map, so *c
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user