From d709afdb96f539c49836f5874f7331a11287bee0 Mon Sep 17 00:00:00 2001 From: Justin Chadwell Date: Tue, 5 Jul 2022 14:43:37 +0100 Subject: [PATCH] solver: always respect value of evaluate field Always use the value of the evaluate field to force result generation, which previously was not performed for frontends. This improves API consistency, and ensures the value is used regardless of whether the solver uses a frontend, or a raw definition. Signed-off-by: Justin Chadwell --- solver/llbsolver/bridge.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/solver/llbsolver/bridge.go b/solver/llbsolver/bridge.go index d28fde356..b0ec157b4 100644 --- a/solver/llbsolver/bridge.go +++ b/solver/llbsolver/bridge.go @@ -142,9 +142,6 @@ func (b *llbBridge) Solve(ctx context.Context, req frontend.SolveRequest, sid st if req.Definition != nil && req.Definition.Def != nil { res = &frontend.Result{Ref: newResultProxy(b, req)} - if req.Evaluate { - _, err = res.Ref.Result(ctx) - } } else if req.Frontend != "" { f, ok := b.frontends[req.Frontend] if !ok { @@ -157,6 +154,12 @@ func (b *llbBridge) Solve(ctx context.Context, req frontend.SolveRequest, sid st } else { return &frontend.Result{}, nil } + if req.Evaluate { + err = res.EachRef(func(ref solver.ResultProxy) error { + _, err := res.Ref.Result(ctx) + return err + }) + } if len(res.Refs) > 0 { for p := range res.Refs {