@@ -156,7 +156,7 @@ func (dpc *detectPrunedCacheID) Load(op *pb.Op, md *pb.OpMetadata, opt *solver.V
156156
157157func Load (ctx context.Context , def * pb.Definition , polEngine SourcePolicyEvaluator , opts ... LoadOpt ) (solver.Edge , error ) {
158158 return loadLLB (ctx , def , polEngine , func (dgst digest.Digest , op * op , load func (digest.Digest ) (solver.Vertex , error )) (solver.Vertex , error ) {
159- vtx , err := newVertex (dgst , & op .Op , op .Metadata , load , opts ... )
159+ vtx , err := newVertex (dgst , op .Op , op .Metadata , load , opts ... )
160160 if err != nil {
161161 return nil , err
162162 }
@@ -234,15 +234,12 @@ func recomputeDigests(ctx context.Context, all map[digest.Digest]*op, visited ma
234234 return newDgst , nil
235235}
236236
237+ // op is a private wrapper around pb.Op that includes its metadata.
237238type op struct {
238- pb.Op
239+ * pb.Op
239240 Metadata * pb.OpMetadata
240241}
241242
242- func (o * op ) Unmarshal (data []byte ) error {
243- return o .Op .UnmarshalVT (data )
244- }
245-
246243// loadLLB loads LLB.
247244// fn is executed sequentially.
248245func loadLLB (ctx context.Context , def * pb.Definition , polEngine SourcePolicyEvaluator , fn func (digest.Digest , * op , func (digest.Digest ) (solver.Vertex , error )) (solver.Vertex , error )) (solver.Edge , error ) {
@@ -255,19 +252,20 @@ func loadLLB(ctx context.Context, def *pb.Definition, polEngine SourcePolicyEval
255252 var lastDgst digest.Digest
256253
257254 for _ , dt := range def .Def {
258- var op op
259- if err := op .Unmarshal (dt ); err != nil {
255+ var pbop pb. Op
256+ if err := pbop .Unmarshal (dt ); err != nil {
260257 return solver.Edge {}, errors .Wrap (err , "failed to parse llb proto op" )
261258 }
262259 dgst := digest .FromBytes (dt )
263260 if polEngine != nil {
264- if _ , err := polEngine .Evaluate (ctx , op .GetSource ()); err != nil {
261+ if _ , err := polEngine .Evaluate (ctx , pbop .GetSource ()); err != nil {
265262 return solver.Edge {}, errors .Wrap (err , "error evaluating the source policy" )
266263 }
267264 }
268- op .Metadata = def .Metadata [string (dgst )]
269-
270- allOps [dgst ] = & op
265+ allOps [dgst ] = & op {
266+ Op : & pbop ,
267+ Metadata : def .Metadata [string (dgst )],
268+ }
271269 lastDgst = dgst
272270 }
273271
@@ -309,7 +307,7 @@ func loadLLB(ctx context.Context, def *pb.Definition, polEngine SourcePolicyEval
309307 return nil , errors .Errorf ("invalid missing input digest %s" , dgst )
310308 }
311309
312- if err := opsutils .Validate (& op .Op ); err != nil {
310+ if err := opsutils .Validate (op .Op ); err != nil {
313311 return nil , err
314312 }
315313
0 commit comments