Merge pull request #517 from tonistiigi/llb-caps

llb: add caps support
docker-18.09
Tibor Vass 2018-07-19 17:21:50 -07:00 committed by GitHub
commit 71e3c24df1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 603 additions and 81 deletions

View File

@ -142,6 +142,23 @@ func (e *ExecOp) Marshal(c *Constraints) (digest.Digest, []byte, *pb.OpMetadata,
FtpProxy: p.FtpProxy, FtpProxy: p.FtpProxy,
NoProxy: p.NoProxy, NoProxy: p.NoProxy,
} }
addCap(&e.constraints, pb.CapExecMetaProxy)
}
addCap(&e.constraints, pb.CapExecMetaBase)
for _, m := range e.mounts {
if m.selector != "" {
addCap(&e.constraints, pb.CapExecMountSelector)
}
if m.cacheID != "" {
addCap(&e.constraints, pb.CapExecMountCache)
addCap(&e.constraints, pb.CapExecMountCacheSharing)
} else if m.tmpfs {
addCap(&e.constraints, pb.CapExecMountTmpfs)
} else if m.source != nil {
addCap(&e.constraints, pb.CapExecMountBind)
}
} }
pop, md := MarshalConstraints(c, &e.constraints) pop, md := MarshalConstraints(c, &e.constraints)

View File

@ -3,6 +3,7 @@ package llbbuild
import ( import (
"github.com/moby/buildkit/client/llb" "github.com/moby/buildkit/client/llb"
"github.com/moby/buildkit/solver/pb" "github.com/moby/buildkit/solver/pb"
"github.com/moby/buildkit/util/apicaps"
digest "github.com/opencontainers/go-digest" digest "github.com/opencontainers/go-digest"
) )
@ -61,6 +62,11 @@ func (b *build) Marshal(c *llb.Constraints) (digest.Digest, []byte, *pb.OpMetada
pbo.Attrs[pb.AttrLLBDefinitionFilename] = b.info.DefinitionFilename pbo.Attrs[pb.AttrLLBDefinitionFilename] = b.info.DefinitionFilename
} }
if b.constraints.Metadata.Caps == nil {
b.constraints.Metadata.Caps = make(map[apicaps.CapID]bool)
}
b.constraints.Metadata.Caps[pb.CapBuildOpLLBFileName] = true
pop, md := llb.MarshalConstraints(c, &b.constraints) pop, md := llb.MarshalConstraints(c, &b.constraints)
pop.Op = &pb.Op_Build{ pop.Op = &pb.Op_Build{
Build: pbo, Build: pbo,

View File

@ -10,6 +10,7 @@ import (
"github.com/docker/distribution/reference" "github.com/docker/distribution/reference"
"github.com/moby/buildkit/solver/pb" "github.com/moby/buildkit/solver/pb"
"github.com/moby/buildkit/util/apicaps"
digest "github.com/opencontainers/go-digest" digest "github.com/opencontainers/go-digest"
"github.com/pkg/errors" "github.com/pkg/errors"
) )
@ -58,6 +59,7 @@ func (s *SourceOp) Marshal(constraints *Constraints) (digest.Digest, []byte, *pb
uid = constraints.LocalUniqueID uid = constraints.LocalUniqueID
} }
s.attrs[pb.AttrLocalUniqueID] = uid s.attrs[pb.AttrLocalUniqueID] = uid
addCap(&s.constraints, pb.CapSourceLocalUnique)
} }
} }
proto, md := MarshalConstraints(constraints, &s.constraints) proto, md := MarshalConstraints(constraints, &s.constraints)
@ -96,6 +98,9 @@ func Image(ref string, opts ...ImageOption) State {
for _, opt := range opts { for _, opt := range opts {
opt.SetImageOption(&info) opt.SetImageOption(&info)
} }
addCap(&info.Constraints, pb.CapSourceImage)
src := NewSource("docker-image://"+ref, nil, info.Constraints) // controversial src := NewSource("docker-image://"+ref, nil, info.Constraints) // controversial
if err != nil { if err != nil {
src.err = err src.err = err
@ -174,10 +179,15 @@ func Git(remote, ref string, opts ...GitOption) State {
attrs := map[string]string{} attrs := map[string]string{}
if gi.KeepGitDir { if gi.KeepGitDir {
attrs[pb.AttrKeepGitDir] = "true" attrs[pb.AttrKeepGitDir] = "true"
addCap(&gi.Constraints, pb.CapSourceGitKeepDir)
} }
if url != "" { if url != "" {
attrs[pb.AttrFullRemoteURL] = url attrs[pb.AttrFullRemoteURL] = url
addCap(&gi.Constraints, pb.CapSourceGitFullURL)
} }
addCap(&gi.Constraints, pb.CapSourceGit)
source := NewSource("git://"+id, attrs, gi.Constraints) source := NewSource("git://"+id, attrs, gi.Constraints)
return NewState(source.Output()) return NewState(source.Output())
} }
@ -215,20 +225,27 @@ func Local(name string, opts ...LocalOption) State {
attrs := map[string]string{} attrs := map[string]string{}
if gi.SessionID != "" { if gi.SessionID != "" {
attrs[pb.AttrLocalSessionID] = gi.SessionID attrs[pb.AttrLocalSessionID] = gi.SessionID
addCap(&gi.Constraints, pb.CapSourceLocalSessionID)
} }
if gi.IncludePatterns != "" { if gi.IncludePatterns != "" {
attrs[pb.AttrIncludePatterns] = gi.IncludePatterns attrs[pb.AttrIncludePatterns] = gi.IncludePatterns
addCap(&gi.Constraints, pb.CapSourceLocalIncludePatterns)
} }
if gi.FollowPaths != "" { if gi.FollowPaths != "" {
attrs[pb.AttrFollowPaths] = gi.FollowPaths attrs[pb.AttrFollowPaths] = gi.FollowPaths
addCap(&gi.Constraints, pb.CapSourceLocalFollowPaths)
} }
if gi.ExcludePatterns != "" { if gi.ExcludePatterns != "" {
attrs[pb.AttrExcludePatterns] = gi.ExcludePatterns attrs[pb.AttrExcludePatterns] = gi.ExcludePatterns
addCap(&gi.Constraints, pb.CapSourceLocalExcludePatterns)
} }
if gi.SharedKeyHint != "" { if gi.SharedKeyHint != "" {
attrs[pb.AttrSharedKeyHint] = gi.SharedKeyHint attrs[pb.AttrSharedKeyHint] = gi.SharedKeyHint
addCap(&gi.Constraints, pb.CapSourceLocalSharedKeyHint)
} }
addCap(&gi.Constraints, pb.CapSourceLocal)
source := NewSource("local://"+name, attrs, gi.Constraints) source := NewSource("local://"+name, attrs, gi.Constraints)
return NewState(source.Output()) return NewState(source.Output())
} }
@ -305,20 +322,25 @@ func HTTP(url string, opts ...HTTPOption) State {
attrs := map[string]string{} attrs := map[string]string{}
if hi.Checksum != "" { if hi.Checksum != "" {
attrs[pb.AttrHTTPChecksum] = hi.Checksum.String() attrs[pb.AttrHTTPChecksum] = hi.Checksum.String()
addCap(&hi.Constraints, pb.CapSourceHTTPChecksum)
} }
if hi.Filename != "" { if hi.Filename != "" {
attrs[pb.AttrHTTPFilename] = hi.Filename attrs[pb.AttrHTTPFilename] = hi.Filename
} }
if hi.Perm != 0 { if hi.Perm != 0 {
attrs[pb.AttrHTTPPerm] = "0" + strconv.FormatInt(int64(hi.Perm), 8) attrs[pb.AttrHTTPPerm] = "0" + strconv.FormatInt(int64(hi.Perm), 8)
addCap(&hi.Constraints, pb.CapSourceHTTPPerm)
} }
if hi.UID != 0 { if hi.UID != 0 {
attrs[pb.AttrHTTPUID] = strconv.Itoa(hi.UID) attrs[pb.AttrHTTPUID] = strconv.Itoa(hi.UID)
addCap(&hi.Constraints, pb.CapSourceHTTPUIDGID)
} }
if hi.UID != 0 { if hi.GID != 0 {
attrs[pb.AttrHTTPGID] = strconv.Itoa(hi.GID) attrs[pb.AttrHTTPGID] = strconv.Itoa(hi.GID)
addCap(&hi.Constraints, pb.CapSourceHTTPUIDGID)
} }
addCap(&hi.Constraints, pb.CapSourceHTTP)
source := NewSource(url, attrs, hi.Constraints) source := NewSource(url, attrs, hi.Constraints)
return NewState(source.Output()) return NewState(source.Output())
} }
@ -370,3 +392,10 @@ func Chown(uid, gid int) HTTPOption {
func platformSpecificSource(id string) bool { func platformSpecificSource(id string) bool {
return strings.HasPrefix(id, "docker-image://") return strings.HasPrefix(id, "docker-image://")
} }
func addCap(c *Constraints, id apicaps.CapID) {
if c.Metadata.Caps == nil {
c.Metadata.Caps = make(map[apicaps.CapID]bool)
}
c.Metadata.Caps[id] = true
}

View File

@ -6,6 +6,7 @@ import (
"github.com/containerd/containerd/platforms" "github.com/containerd/containerd/platforms"
"github.com/moby/buildkit/identity" "github.com/moby/buildkit/identity"
"github.com/moby/buildkit/solver/pb" "github.com/moby/buildkit/solver/pb"
"github.com/moby/buildkit/util/apicaps"
"github.com/moby/buildkit/util/system" "github.com/moby/buildkit/util/system"
digest "github.com/opencontainers/go-digest" digest "github.com/opencontainers/go-digest"
specs "github.com/opencontainers/image-spec/specs-go/v1" specs "github.com/opencontainers/image-spec/specs-go/v1"
@ -100,6 +101,28 @@ func (s State) Marshal(co ...ConstraintsOpt) (*Definition, error) {
return def, err return def, err
} }
def.Def = append(def.Def, dt) def.Def = append(def.Def, dt)
dgst := digest.FromBytes(dt)
md := def.Metadata[dgst]
md.Caps = map[apicaps.CapID]bool{
pb.CapConstraints: true,
pb.CapPlatform: true,
}
for _, m := range def.Metadata {
if m.IgnoreCache {
md.Caps[pb.CapMetaIgnoreCache] = true
}
if m.Description != nil {
md.Caps[pb.CapMetaDescription] = true
}
if m.ExportCache != nil {
md.Caps[pb.CapMetaExportCache] = true
}
}
def.Metadata[dgst] = md
return def, nil return def, nil
} }
@ -310,6 +333,13 @@ func mergeMetadata(m1, m2 pb.OpMetadata) pb.OpMetadata {
m1.ExportCache = m2.ExportCache m1.ExportCache = m2.ExportCache
} }
for k := range m2.Caps {
if m1.Caps == nil {
m1.Caps = make(map[apicaps.CapID]bool, len(m2.Caps))
}
m1.Caps[k] = true
}
return m1 return m1
} }

View File

@ -453,7 +453,7 @@ func (lbf *llbBridgeForwarder) Ping(context.Context, *pb.PingRequest) (*pb.PongR
return &pb.PongResponse{ return &pb.PongResponse{
FrontendAPICaps: pb.Caps.All(), FrontendAPICaps: pb.Caps.All(),
Workers: pbWorkers, Workers: pbWorkers,
// TODO: add LLB info LLBCaps: opspb.Caps.All(),
}, nil }, nil
} }

View File

@ -44,6 +44,10 @@ func current() (*grpcClient, error) {
resp.FrontendAPICaps = defaultCaps() resp.FrontendAPICaps = defaultCaps()
} }
if resp.LLBCaps == nil {
resp.LLBCaps = defaultLLBCaps()
}
return &grpcClient{ return &grpcClient{
client: c, client: c,
opts: opts(), opts: opts(),
@ -51,6 +55,7 @@ func current() (*grpcClient, error) {
workers: workers(), workers: workers(),
product: product(), product: product(),
caps: pb.Caps.CapSet(resp.FrontendAPICaps), caps: pb.Caps.CapSet(resp.FrontendAPICaps),
llbCaps: opspb.Caps.CapSet(resp.LLBCaps),
requests: map[string]*pb.SolveRequest{}, requests: map[string]*pb.SolveRequest{},
}, nil }, nil
} }
@ -162,6 +167,42 @@ func defaultCaps() []apicaps.PBCap {
} }
} }
// defaultLLBCaps returns the LLB capabilities that were implemented when capabilities
// support was added. This list is frozen and should never be changed.
func defaultLLBCaps() []apicaps.PBCap {
return []apicaps.PBCap{
{ID: string(opspb.CapSourceImage), Enabled: true},
{ID: string(opspb.CapSourceLocal), Enabled: true},
{ID: string(opspb.CapSourceLocalUnique), Enabled: true},
{ID: string(opspb.CapSourceLocalSessionID), Enabled: true},
{ID: string(opspb.CapSourceLocalIncludePatterns), Enabled: true},
{ID: string(opspb.CapSourceLocalFollowPaths), Enabled: true},
{ID: string(opspb.CapSourceLocalExcludePatterns), Enabled: true},
{ID: string(opspb.CapSourceLocalSharedKeyHint), Enabled: true},
{ID: string(opspb.CapSourceGit), Enabled: true},
{ID: string(opspb.CapSourceGitKeepDir), Enabled: true},
{ID: string(opspb.CapSourceGitFullURL), Enabled: true},
{ID: string(opspb.CapSourceHTTP), Enabled: true},
{ID: string(opspb.CapSourceHTTPChecksum), Enabled: true},
{ID: string(opspb.CapSourceHTTPPerm), Enabled: true},
{ID: string(opspb.CapSourceHTTPUIDGID), Enabled: true},
{ID: string(opspb.CapBuildOpLLBFileName), Enabled: true},
{ID: string(opspb.CapExecMetaBase), Enabled: true},
{ID: string(opspb.CapExecMetaProxy), Enabled: true},
{ID: string(opspb.CapExecMountBind), Enabled: true},
{ID: string(opspb.CapExecMountCache), Enabled: true},
{ID: string(opspb.CapExecMountCacheSharing), Enabled: true},
{ID: string(opspb.CapExecMountSelector), Enabled: true},
{ID: string(opspb.CapExecMountTmpfs), Enabled: true},
{ID: string(opspb.CapMountSecret), Enabled: true},
{ID: string(opspb.CapConstraints), Enabled: true},
{ID: string(opspb.CapPlatform), Enabled: true},
{ID: string(opspb.CapMetaIgnoreCache), Enabled: true},
{ID: string(opspb.CapMetaDescription), Enabled: true},
{ID: string(opspb.CapMetaExportCache), Enabled: true},
}
}
type grpcClient struct { type grpcClient struct {
client pb.LLBBridgeClient client pb.LLBBridgeClient
opts map[string]string opts map[string]string
@ -169,6 +210,7 @@ type grpcClient struct {
product string product string
workers []client.WorkerInfo workers []client.WorkerInfo
caps apicaps.CapSet caps apicaps.CapSet
llbCaps apicaps.CapSet
requests map[string]*pb.SolveRequest requests map[string]*pb.SolveRequest
} }
@ -194,6 +236,14 @@ func (c *grpcClient) requestForRef(ref client.Reference) (*pb.SolveRequest, erro
} }
func (c *grpcClient) Solve(ctx context.Context, creq client.SolveRequest) (*client.Result, error) { func (c *grpcClient) Solve(ctx context.Context, creq client.SolveRequest) (*client.Result, error) {
for _, md := range creq.Definition.Metadata {
for cap := range md.Caps {
if err := c.llbCaps.Supports(cap); err != nil {
return nil, err
}
}
}
req := &pb.SolveRequest{ req := &pb.SolveRequest{
Definition: creq.Definition, Definition: creq.Definition,
Frontend: creq.Frontend, Frontend: creq.Frontend,

View File

@ -73,7 +73,7 @@ func (b *llbBridge) Solve(ctx context.Context, req frontend.SolveRequest) (res *
} }
if req.Definition != nil && req.Definition.Def != nil { if req.Definition != nil && req.Definition.Def != nil {
edge, err := Load(req.Definition, WithCacheSources(cms), RuntimePlatforms(b.platforms)) edge, err := Load(req.Definition, WithCacheSources(cms), RuntimePlatforms(b.platforms), WithValidateCaps())
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@ -42,6 +42,20 @@ func (v *vertex) Name() string {
type LoadOpt func(*pb.Op, *pb.OpMetadata, *solver.VertexOptions) error type LoadOpt func(*pb.Op, *pb.OpMetadata, *solver.VertexOptions) error
func WithValidateCaps() LoadOpt {
cs := pb.Caps.CapSet(pb.Caps.All())
return func(_ *pb.Op, md *pb.OpMetadata, opt *solver.VertexOptions) error {
if md != nil {
for c := range md.Caps {
if err := cs.Supports(c); err != nil {
return err
}
}
}
return nil
}
}
func WithCacheSources(cms []solver.CacheManager) LoadOpt { func WithCacheSources(cms []solver.CacheManager) LoadOpt {
return func(_ *pb.Op, _ *pb.OpMetadata, opt *solver.VertexOptions) error { return func(_ *pb.Op, _ *pb.OpMetadata, opt *solver.VertexOptions) error {
opt.CacheSources = cms opt.CacheSources = cms

224
solver/pb/caps.go Normal file
View File

@ -0,0 +1,224 @@
package pb
import "github.com/moby/buildkit/util/apicaps"
var Caps apicaps.CapList
// Every backwards or forwards non-compatible change needs to add a new capability row.
// By default new capabilities should be experimental. After merge a capability is
// considered immutable. After a capability is marked stable it should not be disabled.
const (
CapSourceImage apicaps.CapID = "source.image"
CapSourceLocal apicaps.CapID = "source.local"
CapSourceLocalUnique apicaps.CapID = "source.local.unique"
CapSourceLocalSessionID apicaps.CapID = "source.local.sessionid"
CapSourceLocalIncludePatterns apicaps.CapID = "source.local.includepatterns"
CapSourceLocalFollowPaths apicaps.CapID = "source.local.followpaths"
CapSourceLocalExcludePatterns apicaps.CapID = "source.local.excludepatterns"
CapSourceLocalSharedKeyHint apicaps.CapID = "source.local.sharedkeyhint"
CapSourceGit apicaps.CapID = "source.git"
CapSourceGitKeepDir apicaps.CapID = "source.git.keepgitdir"
CapSourceGitFullURL apicaps.CapID = "source.git.fullurl"
CapSourceHTTP apicaps.CapID = "source.http"
CapSourceHTTPChecksum apicaps.CapID = "source.http.checksum"
CapSourceHTTPPerm apicaps.CapID = "source.http.perm"
CapSourceHTTPUIDGID apicaps.CapID = "soruce.http.uidgid"
CapBuildOpLLBFileName apicaps.CapID = "source.buildop.llbfilename"
CapExecMetaBase apicaps.CapID = "exec.meta.base"
CapExecMetaProxy apicaps.CapID = "exec.meta.proxyenv"
CapExecMountBind apicaps.CapID = "exec.mount.bind"
CapExecMountCache apicaps.CapID = "exec.mount.cache"
CapExecMountCacheSharing apicaps.CapID = "exec.mount.cache.sharing"
CapExecMountSelector apicaps.CapID = "exec.mount.selector"
CapExecMountTmpfs apicaps.CapID = "exec.mount.tmpfs"
CapMountSecret apicaps.CapID = "exec.mount.secret"
CapConstraints apicaps.CapID = "constraints"
CapPlatform apicaps.CapID = "platform"
CapMetaIgnoreCache apicaps.CapID = "meta.ignorecache"
CapMetaDescription apicaps.CapID = "meta.description"
CapMetaExportCache apicaps.CapID = "meta.exportcache"
)
func init() {
Caps.Init(apicaps.Cap{
ID: CapSourceImage,
Enabled: true,
Status: apicaps.CapStatusExperimental,
})
Caps.Init(apicaps.Cap{
ID: CapSourceLocal,
Enabled: true,
Status: apicaps.CapStatusExperimental,
})
Caps.Init(apicaps.Cap{
ID: CapSourceLocalUnique,
Enabled: true,
Status: apicaps.CapStatusExperimental,
})
Caps.Init(apicaps.Cap{
ID: CapSourceLocalSessionID,
Enabled: true,
Status: apicaps.CapStatusExperimental,
})
Caps.Init(apicaps.Cap{
ID: CapSourceLocalIncludePatterns,
Enabled: true,
Status: apicaps.CapStatusExperimental,
})
Caps.Init(apicaps.Cap{
ID: CapSourceLocalFollowPaths,
Enabled: true,
Status: apicaps.CapStatusExperimental,
})
Caps.Init(apicaps.Cap{
ID: CapSourceLocalExcludePatterns,
Enabled: true,
Status: apicaps.CapStatusExperimental,
})
Caps.Init(apicaps.Cap{
ID: CapSourceLocalSharedKeyHint,
Enabled: true,
Status: apicaps.CapStatusExperimental,
})
Caps.Init(apicaps.Cap{
ID: CapSourceGit,
Enabled: true,
Status: apicaps.CapStatusExperimental,
})
Caps.Init(apicaps.Cap{
ID: CapSourceGitKeepDir,
Enabled: true,
Status: apicaps.CapStatusExperimental,
})
Caps.Init(apicaps.Cap{
ID: CapSourceGitFullURL,
Enabled: true,
Status: apicaps.CapStatusExperimental,
})
Caps.Init(apicaps.Cap{
ID: CapSourceHTTP,
Enabled: true,
Status: apicaps.CapStatusExperimental,
})
Caps.Init(apicaps.Cap{
ID: CapSourceHTTPChecksum,
Enabled: true,
Status: apicaps.CapStatusExperimental,
})
Caps.Init(apicaps.Cap{
ID: CapSourceHTTPPerm,
Enabled: true,
Status: apicaps.CapStatusExperimental,
})
Caps.Init(apicaps.Cap{
ID: CapSourceHTTPUIDGID,
Enabled: true,
Status: apicaps.CapStatusExperimental,
})
Caps.Init(apicaps.Cap{
ID: CapBuildOpLLBFileName,
Enabled: true,
Status: apicaps.CapStatusExperimental,
})
Caps.Init(apicaps.Cap{
ID: CapExecMetaBase,
Enabled: true,
Status: apicaps.CapStatusExperimental,
})
Caps.Init(apicaps.Cap{
ID: CapExecMetaProxy,
Enabled: true,
Status: apicaps.CapStatusExperimental,
})
Caps.Init(apicaps.Cap{
ID: CapExecMountBind,
Enabled: true,
Status: apicaps.CapStatusExperimental,
})
Caps.Init(apicaps.Cap{
ID: CapExecMountCache,
Enabled: true,
Status: apicaps.CapStatusExperimental,
})
Caps.Init(apicaps.Cap{
ID: CapExecMountCacheSharing,
Enabled: true,
Status: apicaps.CapStatusExperimental,
})
Caps.Init(apicaps.Cap{
ID: CapExecMountSelector,
Enabled: true,
Status: apicaps.CapStatusExperimental,
})
Caps.Init(apicaps.Cap{
ID: CapExecMountTmpfs,
Enabled: true,
Status: apicaps.CapStatusExperimental,
})
Caps.Init(apicaps.Cap{
ID: CapMountSecret,
Enabled: false, // example for future
Status: apicaps.CapStatusExperimental,
})
Caps.Init(apicaps.Cap{
ID: CapConstraints,
Enabled: true,
Status: apicaps.CapStatusExperimental,
})
Caps.Init(apicaps.Cap{
ID: CapPlatform,
Enabled: true,
Status: apicaps.CapStatusExperimental,
})
Caps.Init(apicaps.Cap{
ID: CapMetaIgnoreCache,
Enabled: true,
Status: apicaps.CapStatusExperimental,
})
Caps.Init(apicaps.Cap{
ID: CapMetaDescription,
Enabled: true,
Status: apicaps.CapStatusExperimental,
})
Caps.Init(apicaps.Cap{
ID: CapMetaExportCache,
Enabled: true,
Status: apicaps.CapStatusExperimental,
})
}

View File

@ -37,6 +37,7 @@ import math "math"
import _ "github.com/gogo/protobuf/gogoproto" import _ "github.com/gogo/protobuf/gogoproto"
import github_com_opencontainers_go_digest "github.com/opencontainers/go-digest" import github_com_opencontainers_go_digest "github.com/opencontainers/go-digest"
import github_com_moby_buildkit_util_apicaps "github.com/moby/buildkit/util/apicaps"
import io "io" import io "io"
@ -662,6 +663,7 @@ type OpMetadata struct {
// index 3 reserved for WorkerConstraint in previous versions // index 3 reserved for WorkerConstraint in previous versions
// WorkerConstraint worker_constraint = 3; // WorkerConstraint worker_constraint = 3;
ExportCache *ExportCache `protobuf:"bytes,4,opt,name=export_cache,json=exportCache" json:"export_cache,omitempty"` ExportCache *ExportCache `protobuf:"bytes,4,opt,name=export_cache,json=exportCache" json:"export_cache,omitempty"`
Caps map[github_com_moby_buildkit_util_apicaps.CapID]bool `protobuf:"bytes,5,rep,name=caps,castkey=github.com/moby/buildkit/util/apicaps.CapID" json:"caps" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
} }
func (m *OpMetadata) Reset() { *m = OpMetadata{} } func (m *OpMetadata) Reset() { *m = OpMetadata{} }
@ -690,6 +692,13 @@ func (m *OpMetadata) GetExportCache() *ExportCache {
return nil return nil
} }
func (m *OpMetadata) GetCaps() map[github_com_moby_buildkit_util_apicaps.CapID]bool {
if m != nil {
return m.Caps
}
return nil
}
type ExportCache struct { type ExportCache struct {
Value bool `protobuf:"varint,1,opt,name=Value,proto3" json:"Value,omitempty"` Value bool `protobuf:"varint,1,opt,name=Value,proto3" json:"Value,omitempty"`
} }
@ -1476,6 +1485,27 @@ func (m *OpMetadata) MarshalTo(dAtA []byte) (int, error) {
} }
i += n13 i += n13
} }
if len(m.Caps) > 0 {
for k, _ := range m.Caps {
dAtA[i] = 0x2a
i++
v := m.Caps[k]
mapSize := 1 + len(k) + sovOps(uint64(len(k))) + 1 + 1
i = encodeVarintOps(dAtA, i, uint64(mapSize))
dAtA[i] = 0xa
i++
i = encodeVarintOps(dAtA, i, uint64(len(k)))
i += copy(dAtA[i:], k)
dAtA[i] = 0x10
i++
if v {
dAtA[i] = 1
} else {
dAtA[i] = 0
}
i++
}
}
return i, nil return i, nil
} }
@ -1940,6 +1970,14 @@ func (m *OpMetadata) Size() (n int) {
l = m.ExportCache.Size() l = m.ExportCache.Size()
n += 1 + l + sovOps(uint64(l)) n += 1 + l + sovOps(uint64(l))
} }
if len(m.Caps) > 0 {
for k, v := range m.Caps {
_ = k
_ = v
mapEntrySize := 1 + len(k) + sovOps(uint64(len(k))) + 1 + 1
n += mapEntrySize + 1 + sovOps(uint64(mapEntrySize))
}
}
return n return n
} }
@ -4234,6 +4272,115 @@ func (m *OpMetadata) Unmarshal(dAtA []byte) error {
return err return err
} }
iNdEx = postIndex iNdEx = postIndex
case 5:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Caps", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowOps
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= (int(b) & 0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthOps
}
postIndex := iNdEx + msglen
if postIndex > l {
return io.ErrUnexpectedEOF
}
if m.Caps == nil {
m.Caps = make(map[github_com_moby_buildkit_util_apicaps.CapID]bool)
}
var mapkey github_com_moby_buildkit_util_apicaps.CapID
var mapvalue bool
for iNdEx < postIndex {
entryPreIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowOps
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= (uint64(b) & 0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
if fieldNum == 1 {
var stringLenmapkey uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowOps
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLenmapkey |= (uint64(b) & 0x7F) << shift
if b < 0x80 {
break
}
}
intStringLenmapkey := int(stringLenmapkey)
if intStringLenmapkey < 0 {
return ErrInvalidLengthOps
}
postStringIndexmapkey := iNdEx + intStringLenmapkey
if postStringIndexmapkey > l {
return io.ErrUnexpectedEOF
}
mapkey = github_com_moby_buildkit_util_apicaps.CapID(dAtA[iNdEx:postStringIndexmapkey])
iNdEx = postStringIndexmapkey
} else if fieldNum == 2 {
var mapvaluetemp int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowOps
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
mapvaluetemp |= (int(b) & 0x7F) << shift
if b < 0x80 {
break
}
}
mapvalue = bool(mapvaluetemp != 0)
} else {
iNdEx = entryPreIndex
skippy, err := skipOps(dAtA[iNdEx:])
if err != nil {
return err
}
if skippy < 0 {
return ErrInvalidLengthOps
}
if (iNdEx + skippy) > postIndex {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
m.Caps[github_com_moby_buildkit_util_apicaps.CapID(mapkey)] = mapvalue
iNdEx = postIndex
default: default:
iNdEx = preIndex iNdEx = preIndex
skippy, err := skipOps(dAtA[iNdEx:]) skippy, err := skipOps(dAtA[iNdEx:])
@ -4880,81 +5027,84 @@ var (
func init() { proto.RegisterFile("ops.proto", fileDescriptorOps) } func init() { proto.RegisterFile("ops.proto", fileDescriptorOps) }
var fileDescriptorOps = []byte{ var fileDescriptorOps = []byte{
// 1203 bytes of a gzipped FileDescriptorProto // 1264 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0x4d, 0x8f, 0x1b, 0x45, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0x4d, 0x6f, 0xdb, 0x46,
0x13, 0xde, 0x19, 0x7f, 0xcd, 0xd4, 0x6c, 0x36, 0x7e, 0x3b, 0x79, 0x83, 0x59, 0xc2, 0xae, 0x99, 0x13, 0x36, 0xa9, 0x2f, 0x72, 0xe8, 0x38, 0x7a, 0x37, 0x79, 0x53, 0xd5, 0x4d, 0x6d, 0x95, 0x29,
0x20, 0xe4, 0x7c, 0xac, 0x57, 0x32, 0x52, 0x88, 0x38, 0x44, 0xac, 0x3f, 0xa2, 0x35, 0x21, 0x38, 0x0a, 0x25, 0x8e, 0x25, 0x40, 0x01, 0x92, 0xa0, 0x87, 0xa0, 0xd6, 0x47, 0x60, 0x35, 0x4d, 0x15,
0x6a, 0xaf, 0x96, 0x63, 0x34, 0x1e, 0xb7, 0xbd, 0xa3, 0x78, 0xa7, 0x47, 0x3d, 0xed, 0xb0, 0x3e, 0xac, 0x0c, 0xf7, 0x18, 0x50, 0xd4, 0x4a, 0x26, 0x22, 0x73, 0x09, 0x72, 0x99, 0x5a, 0x87, 0x16,
0x80, 0x44, 0x7e, 0x01, 0x12, 0x12, 0x77, 0x7e, 0x08, 0xf7, 0x1c, 0xb9, 0xc2, 0x21, 0xa0, 0x20, 0x68, 0x7e, 0x41, 0x81, 0x02, 0xbd, 0xf7, 0x87, 0xf4, 0x9e, 0x63, 0xaf, 0xed, 0x21, 0x2d, 0xd2,
0xf1, 0x3b, 0x50, 0x75, 0xb7, 0x67, 0x66, 0x93, 0x20, 0x25, 0x82, 0x93, 0xbb, 0xab, 0x9e, 0x7a, 0x3f, 0x52, 0xcc, 0xee, 0x8a, 0x64, 0x9c, 0x14, 0x4d, 0xd0, 0x9e, 0xb8, 0x3b, 0xf3, 0xcc, 0xec,
0xba, 0xea, 0xe9, 0x9a, 0x6a, 0x83, 0xcb, 0x93, 0xb4, 0x9d, 0x08, 0x2e, 0x39, 0xb1, 0x93, 0xc9, 0xcc, 0x33, 0xb3, 0xb3, 0x04, 0x9b, 0x47, 0x49, 0x3b, 0x8a, 0xb9, 0xe0, 0xc4, 0x8c, 0xa6, 0xdb,
0xf6, 0xde, 0x3c, 0x92, 0x27, 0xcb, 0x49, 0x3b, 0xe4, 0xa7, 0xfb, 0x73, 0x3e, 0xe7, 0xfb, 0xca, 0xfb, 0x8b, 0x40, 0x9c, 0xa4, 0xd3, 0xb6, 0xcf, 0x4f, 0x3b, 0x0b, 0xbe, 0xe0, 0x1d, 0xa9, 0x9a,
0x35, 0x59, 0xce, 0xd4, 0x4e, 0x6d, 0xd4, 0x4a, 0x87, 0xf8, 0x3f, 0xd9, 0x60, 0x8f, 0x12, 0xf2, 0xa6, 0x73, 0xb9, 0x93, 0x1b, 0xb9, 0x52, 0x26, 0xee, 0x4f, 0x26, 0x98, 0xe3, 0x88, 0x7c, 0x04,
0x01, 0x54, 0xa3, 0x38, 0x59, 0xca, 0xb4, 0x61, 0x35, 0x4b, 0x2d, 0xaf, 0xe3, 0xb6, 0x93, 0x49, 0xd5, 0x20, 0x8c, 0x52, 0x91, 0x34, 0x8c, 0x66, 0xa9, 0xe5, 0x74, 0xed, 0x76, 0x34, 0x6d, 0x8f,
0x7b, 0x88, 0x16, 0x6a, 0x1c, 0xa4, 0x09, 0x65, 0x76, 0xc6, 0xc2, 0x86, 0xdd, 0xb4, 0x5a, 0x5e, 0x50, 0x42, 0xb5, 0x82, 0x34, 0xa1, 0xcc, 0xce, 0x98, 0xdf, 0x30, 0x9b, 0x46, 0xcb, 0xe9, 0x02,
0x07, 0x10, 0x30, 0x38, 0x63, 0xe1, 0x28, 0x39, 0xdc, 0xa0, 0xca, 0x43, 0x3e, 0x82, 0x6a, 0xca, 0x02, 0x86, 0x67, 0xcc, 0x1f, 0x47, 0x87, 0x1b, 0x54, 0x6a, 0xc8, 0x27, 0x50, 0x4d, 0x78, 0x1a,
0x97, 0x22, 0x64, 0x8d, 0x92, 0xc2, 0x6c, 0x22, 0x66, 0xac, 0x2c, 0x0a, 0x65, 0xbc, 0xc8, 0x14, 0xfb, 0xac, 0x51, 0x92, 0x98, 0x4d, 0xc4, 0x4c, 0xa4, 0x44, 0xa2, 0xb4, 0x16, 0x3d, 0xf9, 0x3c,
0xf2, 0x64, 0xd5, 0x28, 0xe7, 0x4c, 0x3d, 0x9e, 0xac, 0x34, 0x13, 0x7a, 0xc8, 0x35, 0xa8, 0x4c, 0x5a, 0x35, 0xca, 0xb9, 0xa7, 0x3e, 0x8f, 0x56, 0xca, 0x13, 0x6a, 0xc8, 0x35, 0xa8, 0x4c, 0xd3,
0x96, 0xd1, 0x62, 0xda, 0xa8, 0x28, 0x88, 0x87, 0x90, 0x2e, 0x1a, 0x14, 0x46, 0xfb, 0x48, 0x0b, 0x60, 0x39, 0x6b, 0x54, 0x24, 0xc4, 0x41, 0x48, 0x0f, 0x05, 0x12, 0xa3, 0x74, 0xa4, 0x05, 0x56,
0x9c, 0x64, 0x11, 0xc8, 0x19, 0x17, 0xa7, 0x0d, 0xc8, 0x0f, 0x7c, 0x68, 0x6c, 0x34, 0xf3, 0x92, 0xb4, 0xf4, 0xc4, 0x9c, 0xc7, 0xa7, 0x0d, 0xc8, 0x0f, 0x7c, 0xa4, 0x65, 0x34, 0xd3, 0x92, 0x3b,
0x4f, 0xc0, 0x0b, 0x79, 0x9c, 0x4a, 0x11, 0x44, 0xb1, 0x4c, 0x1b, 0x9e, 0x02, 0xff, 0x1f, 0xc1, 0xe0, 0xf8, 0x3c, 0x4c, 0x44, 0xec, 0x05, 0xa1, 0x48, 0x1a, 0x8e, 0x04, 0xff, 0x1f, 0xc1, 0x5f,
0x5f, 0x71, 0xf1, 0x98, 0x89, 0x5e, 0xee, 0xa4, 0x45, 0x64, 0xb7, 0x0c, 0x36, 0x4f, 0xfc, 0x1f, 0xf1, 0xf8, 0x09, 0x8b, 0xfb, 0xb9, 0x92, 0x16, 0x91, 0xbd, 0x32, 0x98, 0x3c, 0x72, 0x7f, 0x34,
0x2d, 0x70, 0xd6, 0xac, 0xc4, 0x87, 0xcd, 0x03, 0x11, 0x9e, 0x44, 0x92, 0x85, 0x72, 0x29, 0x58, 0xc0, 0x5a, 0x7b, 0x25, 0x2e, 0x6c, 0x1e, 0xc4, 0xfe, 0x49, 0x20, 0x98, 0x2f, 0xd2, 0x98, 0x35,
0xc3, 0x6a, 0x5a, 0x2d, 0x97, 0x9e, 0xb3, 0x91, 0x2d, 0xb0, 0x47, 0x63, 0x25, 0x94, 0x4b, 0xed, 0x8c, 0xa6, 0xd1, 0xb2, 0xe9, 0x2b, 0x32, 0xb2, 0x05, 0xe6, 0x78, 0x22, 0x89, 0xb2, 0xa9, 0x39,
0xd1, 0x98, 0x34, 0xa0, 0x76, 0x1c, 0x88, 0x28, 0x88, 0xa5, 0x52, 0xc6, 0xa5, 0xeb, 0x2d, 0xb9, 0x9e, 0x90, 0x06, 0xd4, 0x8e, 0xbd, 0x38, 0xf0, 0x42, 0x21, 0x99, 0xb1, 0xe9, 0x7a, 0x4b, 0xae,
0x0a, 0xee, 0x68, 0x7c, 0xcc, 0x44, 0x1a, 0xf1, 0x58, 0xe9, 0xe1, 0xd2, 0xdc, 0x40, 0x76, 0x00, 0x82, 0x3d, 0x9e, 0x1c, 0xb3, 0x38, 0x09, 0x78, 0x28, 0xf9, 0xb0, 0x69, 0x2e, 0x20, 0x3b, 0x00,
0x46, 0xe3, 0x7b, 0x2c, 0x40, 0xd2, 0xb4, 0x51, 0x69, 0x96, 0x5a, 0x2e, 0x2d, 0x58, 0xfc, 0x6f, 0xe3, 0xc9, 0x7d, 0xe6, 0xa1, 0xd3, 0xa4, 0x51, 0x69, 0x96, 0x5a, 0x36, 0x2d, 0x48, 0xdc, 0x6f,
0xa1, 0xa2, 0xee, 0x88, 0x7c, 0x0e, 0xd5, 0x69, 0x34, 0x67, 0xa9, 0xd4, 0xe9, 0x74, 0x3b, 0xcf, 0xa1, 0x22, 0x6b, 0x44, 0x3e, 0x87, 0xea, 0x2c, 0x58, 0xb0, 0x44, 0xa8, 0x70, 0x7a, 0xdd, 0xe7,
0x9e, 0xef, 0x6e, 0xfc, 0xf6, 0x7c, 0xf7, 0x46, 0xa1, 0x19, 0x78, 0xc2, 0xe2, 0x90, 0xc7, 0x32, 0x2f, 0x76, 0x37, 0x7e, 0x7b, 0xb1, 0x7b, 0xa3, 0xd0, 0x0c, 0x3c, 0x62, 0xa1, 0xcf, 0x43, 0xe1,
0x88, 0x62, 0x26, 0xd2, 0xfd, 0x39, 0xdf, 0xd3, 0x21, 0xed, 0xbe, 0xfa, 0xa1, 0x86, 0x81, 0x5c, 0x05, 0x21, 0x8b, 0x93, 0xce, 0x82, 0xef, 0x2b, 0x93, 0xf6, 0x40, 0x7e, 0xa8, 0xf6, 0x40, 0xae,
0x87, 0x4a, 0x14, 0x4f, 0xd9, 0x99, 0xca, 0xbf, 0xd4, 0xbd, 0x64, 0xa8, 0xbc, 0xd1, 0x52, 0x26, 0x43, 0x25, 0x08, 0x67, 0xec, 0x4c, 0xc6, 0x5f, 0xea, 0x5d, 0xd2, 0xae, 0x9c, 0x71, 0x2a, 0xa2,
0x4b, 0x39, 0x44, 0x17, 0xd5, 0x08, 0x7f, 0x08, 0x55, 0xdd, 0x02, 0xe4, 0x2a, 0x94, 0x4f, 0x99, 0x54, 0x8c, 0x50, 0x45, 0x15, 0xc2, 0x1d, 0x41, 0x55, 0xb5, 0x00, 0xb9, 0x0a, 0xe5, 0x53, 0x26,
0x0c, 0xd4, 0xf1, 0x5e, 0xc7, 0x41, 0x69, 0x1f, 0x30, 0x19, 0x50, 0x65, 0xc5, 0xee, 0x3a, 0xe5, 0x3c, 0x79, 0xbc, 0xd3, 0xb5, 0x90, 0xda, 0x87, 0x4c, 0x78, 0x54, 0x4a, 0xb1, 0xbb, 0x4e, 0x79,
0x4b, 0x94, 0xde, 0xce, 0xbb, 0xeb, 0x01, 0x5a, 0xa8, 0x71, 0xf8, 0xdf, 0x40, 0x19, 0x03, 0x08, 0x8a, 0xd4, 0x9b, 0x79, 0x77, 0x3d, 0x44, 0x09, 0xd5, 0x0a, 0xf7, 0x1b, 0x28, 0xa3, 0x01, 0x21,
0x81, 0x72, 0x20, 0xe6, 0xba, 0x0d, 0x5d, 0xaa, 0xd6, 0xa4, 0x0e, 0x25, 0x16, 0x3f, 0x51, 0xb1, 0x50, 0xf6, 0xe2, 0x85, 0x6a, 0x43, 0x9b, 0xca, 0x35, 0xa9, 0x43, 0x89, 0x85, 0x4f, 0xa5, 0xad,
0x2e, 0xc5, 0x25, 0x5a, 0xc2, 0xaf, 0xa7, 0x46, 0x4c, 0x5c, 0x62, 0xdc, 0x32, 0x65, 0xc2, 0x68, 0x4d, 0x71, 0x89, 0x12, 0xff, 0xeb, 0x99, 0x26, 0x13, 0x97, 0x68, 0x97, 0x26, 0x2c, 0xd6, 0x1c,
0xa8, 0xd6, 0xe4, 0x3a, 0xb8, 0x89, 0xe0, 0x67, 0xab, 0x47, 0x18, 0x5d, 0x29, 0x74, 0x08, 0x1a, 0xca, 0x35, 0xb9, 0x0e, 0x76, 0x14, 0xf3, 0xb3, 0xd5, 0x63, 0xb4, 0xae, 0x14, 0x3a, 0x04, 0x85,
0x07, 0xf1, 0x13, 0xea, 0x24, 0x66, 0xe5, 0x7f, 0x67, 0x43, 0x45, 0x25, 0x44, 0x5a, 0x58, 0x7e, 0xc3, 0xf0, 0x29, 0xb5, 0x22, 0xbd, 0x72, 0xbf, 0x33, 0xa1, 0x22, 0x03, 0x22, 0x2d, 0x4c, 0x3f,
0xb2, 0xd4, 0x4a, 0x96, 0xba, 0xc4, 0x94, 0x0f, 0x4a, 0xe8, 0xac, 0x7a, 0x14, 0x7d, 0x1b, 0x9c, 0x4a, 0x15, 0x93, 0xa5, 0x1e, 0xd1, 0xe9, 0x83, 0x24, 0x3a, 0xcb, 0x1e, 0x49, 0xdf, 0x06, 0x2b,
0x94, 0x2d, 0x58, 0x28, 0xb9, 0x30, 0x77, 0x9d, 0xed, 0x31, 0x9d, 0x29, 0x5e, 0x87, 0xce, 0x50, 0x61, 0x4b, 0xe6, 0x0b, 0x1e, 0xeb, 0x5a, 0x67, 0x7b, 0x0c, 0x67, 0x86, 0xe5, 0x50, 0x11, 0xca,
0xad, 0xc9, 0x4d, 0xa8, 0x72, 0xa5, 0xa1, 0x4a, 0xf2, 0x1f, 0x94, 0x35, 0x10, 0x24, 0x17, 0x2c, 0x35, 0xd9, 0x83, 0x2a, 0x97, 0x1c, 0xca, 0x20, 0xff, 0x86, 0x59, 0x0d, 0x41, 0xe7, 0x31, 0xf3,
0x98, 0xf2, 0x78, 0xb1, 0x52, 0xa9, 0x3b, 0x34, 0xdb, 0x93, 0x9b, 0xe0, 0x2a, 0xd5, 0x8e, 0x56, 0x66, 0x3c, 0x5c, 0xae, 0x64, 0xe8, 0x16, 0xcd, 0xf6, 0x64, 0x0f, 0x6c, 0xc9, 0xda, 0xd1, 0x2a,
0x09, 0x6b, 0x54, 0x9b, 0x56, 0x6b, 0xab, 0x73, 0x21, 0x53, 0x14, 0x8d, 0x34, 0xf7, 0xe3, 0x57, 0x62, 0x8d, 0x6a, 0xd3, 0x68, 0x6d, 0x75, 0x2f, 0x64, 0x8c, 0xa2, 0x90, 0xe6, 0x7a, 0xbc, 0x25,
0x12, 0x06, 0xe1, 0x09, 0x1b, 0x25, 0xb2, 0x71, 0x39, 0xd7, 0xa0, 0x67, 0x6c, 0x34, 0xf3, 0xfa, 0xbe, 0xe7, 0x9f, 0xb0, 0x71, 0x24, 0x1a, 0x97, 0x73, 0x0e, 0xfa, 0x5a, 0x46, 0x33, 0xad, 0x3b,
0x43, 0x70, 0xd6, 0x56, 0xec, 0xe0, 0x61, 0xdf, 0xf4, 0xb6, 0x3d, 0xec, 0x93, 0x3d, 0xa8, 0xa5, 0x02, 0x6b, 0x2d, 0xc5, 0x0e, 0x1e, 0x0d, 0x74, 0x6f, 0x9b, 0xa3, 0x01, 0xd9, 0x87, 0x5a, 0x72,
0x27, 0x81, 0x88, 0xe2, 0xb9, 0x2a, 0x75, 0xab, 0x73, 0x29, 0x23, 0x19, 0x6b, 0x3b, 0x72, 0xad, 0xe2, 0xc5, 0x41, 0xb8, 0x90, 0xa9, 0x6e, 0x75, 0x2f, 0x65, 0x4e, 0x26, 0x4a, 0x8e, 0xbe, 0xd6,
0x31, 0xfe, 0x5d, 0xa8, 0xea, 0x2f, 0x9a, 0x34, 0xa1, 0x94, 0x8a, 0xd0, 0x4c, 0x95, 0xad, 0xf5, 0x18, 0xf7, 0x1e, 0x54, 0xd5, 0x8d, 0x26, 0x4d, 0x28, 0x25, 0xb1, 0xaf, 0xa7, 0xca, 0xd6, 0xfa,
0xa7, 0xae, 0x87, 0x02, 0x45, 0x57, 0x26, 0x95, 0x9d, 0x4b, 0xe5, 0x53, 0x80, 0x1c, 0xf6, 0xdf, 0xaa, 0xab, 0xa1, 0x40, 0x51, 0x95, 0x51, 0x65, 0xe6, 0x54, 0xb9, 0x14, 0x20, 0x87, 0xfd, 0x37,
0x5c, 0x89, 0xff, 0x83, 0x05, 0xce, 0x7a, 0x18, 0xe1, 0x97, 0x15, 0x4d, 0x59, 0x2c, 0xa3, 0x59, 0x25, 0x71, 0x7f, 0x30, 0xc0, 0x5a, 0x0f, 0x23, 0xbc, 0x59, 0xc1, 0x8c, 0x85, 0x22, 0x98, 0x07,
0xc4, 0x84, 0xa9, 0xb3, 0x60, 0x21, 0x7b, 0x50, 0x09, 0xa4, 0x14, 0xeb, 0x86, 0x7d, 0xa7, 0x38, 0x2c, 0xd6, 0x79, 0x16, 0x24, 0x64, 0x1f, 0x2a, 0x9e, 0x10, 0xf1, 0xba, 0x61, 0xdf, 0x2b, 0x4e,
0xc9, 0xda, 0x07, 0xe8, 0x19, 0xc4, 0x52, 0xac, 0xa8, 0x46, 0x6d, 0xdf, 0x01, 0xc8, 0x8d, 0xd8, 0xb2, 0xf6, 0x01, 0x6a, 0x86, 0xa1, 0x88, 0x57, 0x54, 0xa1, 0xb6, 0xef, 0x02, 0xe4, 0x42, 0xec,
0x9d, 0x8f, 0xd9, 0xca, 0xb0, 0xe2, 0x92, 0x5c, 0x86, 0xca, 0x93, 0x60, 0xb1, 0x64, 0x26, 0x29, 0xce, 0x27, 0x6c, 0xa5, 0xbd, 0xe2, 0x92, 0x5c, 0x86, 0xca, 0x53, 0x6f, 0x99, 0x32, 0x1d, 0x94,
0xbd, 0xf9, 0xd4, 0xbe, 0x63, 0xf9, 0x3f, 0xdb, 0x50, 0x33, 0x93, 0x8d, 0xdc, 0x82, 0x9a, 0x9a, 0xda, 0x7c, 0x6a, 0xde, 0x35, 0xdc, 0x9f, 0x4d, 0xa8, 0xe9, 0xc9, 0x46, 0x6e, 0x42, 0x4d, 0x4e,
0x6c, 0x26, 0xa3, 0xd7, 0x57, 0xba, 0x86, 0x90, 0xfd, 0x6c, 0x64, 0x17, 0x72, 0x34, 0x54, 0x7a, 0x36, 0x1d, 0xd1, 0x9b, 0x33, 0x5d, 0x43, 0x48, 0x27, 0x1b, 0xd9, 0x85, 0x18, 0xb5, 0x2b, 0x35,
0x74, 0x9b, 0x1c, 0xf3, 0x01, 0x5e, 0x9a, 0xb2, 0x99, 0x99, 0xcd, 0xea, 0x2a, 0xfa, 0x6c, 0x16, 0xba, 0x75, 0x8c, 0xf9, 0x00, 0x2f, 0xcd, 0xd8, 0x5c, 0xcf, 0x66, 0x59, 0x8a, 0x01, 0x9b, 0x07,
0xc5, 0x91, 0x8c, 0x78, 0x4c, 0xd1, 0x45, 0x6e, 0xad, 0xab, 0x2e, 0x2b, 0xc6, 0x2b, 0x45, 0xc6, 0x61, 0x20, 0x02, 0x1e, 0x52, 0x54, 0x91, 0x9b, 0xeb, 0xac, 0xcb, 0xd2, 0xe3, 0x95, 0xa2, 0xc7,
0x57, 0x8b, 0x1e, 0x82, 0x57, 0x38, 0xe6, 0x35, 0x55, 0x7f, 0x58, 0xac, 0xda, 0x1c, 0xa9, 0xe8, 0xd7, 0x93, 0x1e, 0x81, 0x53, 0x38, 0xe6, 0x0d, 0x59, 0x7f, 0x5c, 0xcc, 0x5a, 0x1f, 0x29, 0xdd,
0xf4, 0xc3, 0x92, 0xab, 0xf0, 0x2f, 0xf4, 0xbb, 0x0d, 0x90, 0x53, 0xbe, 0x79, 0xa7, 0xf8, 0x7f, 0xa9, 0x87, 0x25, 0x67, 0xe1, 0x5f, 0xf0, 0x77, 0x1b, 0x20, 0x77, 0xf9, 0xf6, 0x9d, 0xe2, 0x3e,
0x59, 0x00, 0xa3, 0x04, 0x47, 0xce, 0x34, 0x50, 0x13, 0x6a, 0x33, 0x9a, 0xc7, 0x5c, 0xb0, 0x47, 0x2b, 0x01, 0x8c, 0x23, 0x1c, 0x39, 0x33, 0x4f, 0x4e, 0xa8, 0xcd, 0x60, 0x11, 0xf2, 0x98, 0x3d,
0xea, 0x73, 0x50, 0xf1, 0x0e, 0xf5, 0xb4, 0x4d, 0xb5, 0x39, 0x39, 0x00, 0x6f, 0xca, 0xd2, 0x50, 0x96, 0xd7, 0x41, 0xda, 0x5b, 0xd4, 0x51, 0x32, 0xd9, 0xe6, 0xe4, 0x00, 0x9c, 0x19, 0x4b, 0xfc,
0x44, 0x09, 0x0a, 0x66, 0x44, 0xdf, 0xc5, 0x9a, 0x72, 0x9e, 0x76, 0x3f, 0x47, 0x68, 0xad, 0x8a, 0x38, 0x88, 0x90, 0x30, 0x4d, 0xfa, 0x2e, 0xe6, 0x94, 0xfb, 0x69, 0x0f, 0x72, 0x84, 0xe2, 0xaa,
0x31, 0xa4, 0x03, 0x9b, 0xec, 0x2c, 0xe1, 0x42, 0x9a, 0x53, 0xf4, 0x03, 0x78, 0x51, 0x3f, 0xa5, 0x68, 0x43, 0xba, 0xb0, 0xc9, 0xce, 0x22, 0x1e, 0x0b, 0x7d, 0x8a, 0x7a, 0x00, 0x2f, 0xaa, 0xa7,
0x68, 0x57, 0x27, 0x51, 0x8f, 0xe5, 0x9b, 0xed, 0xbb, 0x50, 0x7f, 0x99, 0xf4, 0xad, 0x04, 0xba, 0x14, 0xe5, 0xf2, 0x24, 0xea, 0xb0, 0x7c, 0x43, 0x3c, 0x28, 0xfb, 0x5e, 0xa4, 0xa6, 0xbf, 0xd3,
0x06, 0x5e, 0x81, 0x1b, 0x81, 0xc7, 0x0a, 0xa8, 0x2b, 0xd4, 0x1b, 0xff, 0x29, 0xbe, 0x70, 0x66, 0x6d, 0x9c, 0x3b, 0xaf, 0xef, 0x45, 0x8a, 0xb4, 0xde, 0x2d, 0xcc, 0xf5, 0xd9, 0xef, 0xbb, 0x7b,
0x16, 0x92, 0xf7, 0x01, 0x4e, 0xa4, 0x4c, 0x1e, 0xa9, 0xe1, 0x68, 0x0e, 0x71, 0xd1, 0xa2, 0x10, 0x85, 0x91, 0x7f, 0xca, 0xa7, 0xab, 0x8e, 0xec, 0x97, 0x27, 0x81, 0xe8, 0xa4, 0x22, 0x58, 0x76,
0x64, 0x17, 0x3c, 0xdc, 0xa4, 0xc6, 0xaf, 0x0f, 0x54, 0x11, 0xa9, 0x06, 0xbc, 0x07, 0xee, 0x2c, 0xbc, 0x28, 0x40, 0x77, 0x68, 0x38, 0x1a, 0x50, 0xe9, 0x7a, 0xfb, 0x1e, 0xd4, 0xcf, 0xc7, 0xfd,
0x0b, 0xd7, 0x03, 0xd0, 0x99, 0xad, 0xa3, 0xdf, 0x05, 0x27, 0xe6, 0xc6, 0xa7, 0x67, 0x75, 0x2d, 0x2e, 0x35, 0xd8, 0xbe, 0x03, 0x76, 0x16, 0xc7, 0x3f, 0x19, 0x5a, 0xc5, 0xe2, 0x5d, 0x03, 0xa7,
0xe6, 0xca, 0xe5, 0xdf, 0x84, 0xff, 0xbd, 0xf2, 0x1c, 0x93, 0x2b, 0x50, 0x9d, 0x45, 0x0b, 0xa9, 0x90, 0x37, 0x02, 0x8f, 0x25, 0x50, 0xb1, 0xaf, 0x36, 0xee, 0x33, 0x7c, 0x7d, 0xf5, 0x9c, 0x26,
0x3e, 0x09, 0x1c, 0xff, 0x66, 0xe7, 0xff, 0x6a, 0x01, 0xe4, 0xed, 0x8b, 0x8a, 0x60, 0x6f, 0x23, 0x1f, 0x02, 0x9c, 0x08, 0x11, 0x3d, 0x96, 0x83, 0x5b, 0x1f, 0x62, 0xa3, 0x44, 0x22, 0xc8, 0x2e,
0x66, 0x53, 0xf7, 0xf2, 0x02, 0x9c, 0x53, 0x73, 0x2b, 0xe6, 0xae, 0xae, 0x9e, 0x6f, 0xf9, 0xf6, 0x38, 0xb8, 0x49, 0xb4, 0x5e, 0x45, 0x2a, 0x2d, 0x12, 0x05, 0xf8, 0x00, 0xec, 0x79, 0x66, 0xae,
0xfa, 0xd2, 0x94, 0xa6, 0xfa, 0xc9, 0x7c, 0xfa, 0xfb, 0x5b, 0x3d, 0x99, 0xd9, 0x09, 0xdb, 0xf7, 0x86, 0xb3, 0x35, 0x5f, 0x5b, 0xbf, 0x0f, 0x56, 0xc8, 0xb5, 0x4e, 0xbd, 0x23, 0xb5, 0x90, 0x4b,
0xe1, 0xc2, 0x39, 0xba, 0x37, 0xfc, 0x1a, 0xf2, 0xce, 0x29, 0x5c, 0xd9, 0x8d, 0xcf, 0xc0, 0xcd, 0x95, 0xbb, 0x07, 0xff, 0x7b, 0xed, 0x57, 0x81, 0x5c, 0x81, 0xea, 0x3c, 0x58, 0x0a, 0x79, 0x5d,
0x46, 0x39, 0x71, 0xa0, 0xdc, 0x1d, 0x7e, 0xd9, 0xaf, 0x6f, 0x10, 0x80, 0xea, 0x78, 0xd0, 0xa3, 0xf1, 0x69, 0xd2, 0x3b, 0xf7, 0x57, 0x03, 0x20, 0xbf, 0x5a, 0xc8, 0x08, 0xde, 0x3b, 0xc4, 0x6c,
0x83, 0xa3, 0xba, 0x45, 0x6a, 0x50, 0x1a, 0x8f, 0x0f, 0xeb, 0x36, 0x71, 0xa1, 0xd2, 0x3b, 0xe8, 0xaa, 0x7b, 0xb6, 0x04, 0xeb, 0x54, 0x57, 0x50, 0xf7, 0xd1, 0xd5, 0x57, 0xaf, 0x63, 0x7b, 0x5d,
0x1d, 0x0e, 0xea, 0x25, 0x5c, 0x1e, 0x3d, 0x78, 0x78, 0x6f, 0x5c, 0x2f, 0xdf, 0xb8, 0x0d, 0x17, 0x60, 0x55, 0xdb, 0xae, 0xae, 0xed, 0xbb, 0x3c, 0xe7, 0xd9, 0x09, 0xdb, 0x0f, 0xe0, 0xc2, 0x2b,
0x5f, 0x9a, 0xcd, 0x2a, 0xfa, 0xf0, 0x80, 0x0e, 0x90, 0xc9, 0x83, 0xda, 0x43, 0x3a, 0x3c, 0x3e, 0xee, 0xde, 0xf2, 0xa6, 0xe6, 0x5d, 0x56, 0x28, 0xd9, 0x8d, 0xcf, 0xc0, 0xce, 0x9e, 0x19, 0x62,
0x38, 0x1a, 0xd4, 0x2d, 0x74, 0x7c, 0x31, 0xea, 0xdd, 0x1f, 0xf4, 0xeb, 0x76, 0xb7, 0xfe, 0xec, 0x41, 0xb9, 0x37, 0xfa, 0x72, 0x50, 0xdf, 0x20, 0x00, 0xd5, 0xc9, 0xb0, 0x4f, 0x87, 0x47, 0x75,
0xc5, 0x8e, 0xf5, 0xcb, 0x8b, 0x1d, 0xeb, 0x8f, 0x17, 0x3b, 0xd6, 0xf7, 0x7f, 0xee, 0x6c, 0x4c, 0x83, 0xd4, 0xa0, 0x34, 0x99, 0x1c, 0xd6, 0x4d, 0x62, 0x43, 0xa5, 0x7f, 0xd0, 0x3f, 0x1c, 0xd6,
0xaa, 0xea, 0x6f, 0xe2, 0xc7, 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, 0x42, 0x80, 0x11, 0x1b, 0x66, 0x4b, 0xb8, 0x3c, 0x7a, 0xf8, 0xe8, 0xfe, 0xa4, 0x5e, 0xbe, 0x71, 0x1b, 0x2e, 0x9e, 0x7b, 0x37,
0x0a, 0x00, 0x00, 0xa4, 0xf5, 0xe1, 0x01, 0x1d, 0xa2, 0x27, 0x07, 0x6a, 0x8f, 0xe8, 0xe8, 0xf8, 0xe0, 0x68, 0x58,
0x37, 0x50, 0xf1, 0xc5, 0xb8, 0xff, 0x60, 0x38, 0xa8, 0x9b, 0xbd, 0xfa, 0xf3, 0x97, 0x3b, 0xc6,
0x2f, 0x2f, 0x77, 0x8c, 0x3f, 0x5e, 0xee, 0x18, 0xdf, 0xff, 0xb9, 0xb3, 0x31, 0xad, 0xca, 0x5f,
0xd8, 0x5b, 0x7f, 0x05, 0x00, 0x00, 0xff, 0xff, 0x35, 0x35, 0x9f, 0xfe, 0x02, 0x0b, 0x00, 0x00,
} }

View File

@ -137,6 +137,8 @@ message OpMetadata {
// index 3 reserved for WorkerConstraint in previous versions // index 3 reserved for WorkerConstraint in previous versions
// WorkerConstraint worker_constraint = 3; // WorkerConstraint worker_constraint = 3;
ExportCache export_cache = 4; ExportCache export_cache = 4;
map<string, bool> caps = 5 [(gogoproto.castkey) = "github.com/moby/buildkit/util/apicaps.CapID", (gogoproto.nullable) = false];
} }
message ExportCache { message ExportCache {