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 <me@jedevc.com>
This commit is contained in:
Justin Chadwell
2022-07-05 14:43:37 +01:00
parent 10a334f5bd
commit d709afdb96

View File

@@ -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 {