@@ -156,7 +156,7 @@ func (dpc *detectPrunedCacheID) Load(op *pb.Op, md *pb.OpMetadata, opt *solver.V
156
156
157
157
func Load (ctx context.Context , def * pb.Definition , polEngine SourcePolicyEvaluator , opts ... LoadOpt ) (solver.Edge , error ) {
158
158
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 ... )
160
160
if err != nil {
161
161
return nil , err
162
162
}
@@ -234,15 +234,12 @@ func recomputeDigests(ctx context.Context, all map[digest.Digest]*op, visited ma
234
234
return newDgst , nil
235
235
}
236
236
237
+ // op is a private wrapper around pb.Op that includes its metadata.
237
238
type op struct {
238
- pb.Op
239
+ * pb.Op
239
240
Metadata * pb.OpMetadata
240
241
}
241
242
242
- func (o * op ) Unmarshal (data []byte ) error {
243
- return o .Op .UnmarshalVT (data )
244
- }
245
-
246
243
// loadLLB loads LLB.
247
244
// fn is executed sequentially.
248
245
func 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
255
252
var lastDgst digest.Digest
256
253
257
254
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 {
260
257
return solver.Edge {}, errors .Wrap (err , "failed to parse llb proto op" )
261
258
}
262
259
dgst := digest .FromBytes (dt )
263
260
if polEngine != nil {
264
- if _ , err := polEngine .Evaluate (ctx , op .GetSource ()); err != nil {
261
+ if _ , err := polEngine .Evaluate (ctx , pbop .GetSource ()); err != nil {
265
262
return solver.Edge {}, errors .Wrap (err , "error evaluating the source policy" )
266
263
}
267
264
}
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
+ }
271
269
lastDgst = dgst
272
270
}
273
271
@@ -309,7 +307,7 @@ func loadLLB(ctx context.Context, def *pb.Definition, polEngine SourcePolicyEval
309
307
return nil , errors .Errorf ("invalid missing input digest %s" , dgst )
310
308
}
311
309
312
- if err := opsutils .Validate (& op .Op ); err != nil {
310
+ if err := opsutils .Validate (op .Op ); err != nil {
313
311
return nil , err
314
312
}
315
313
0 commit comments