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,
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)

View File

@ -3,6 +3,7 @@ package llbbuild
import (
"github.com/moby/buildkit/client/llb"
"github.com/moby/buildkit/solver/pb"
"github.com/moby/buildkit/util/apicaps"
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
}
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.Op = &pb.Op_Build{
Build: pbo,

View File

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

View File

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

View File

@ -44,6 +44,10 @@ func current() (*grpcClient, error) {
resp.FrontendAPICaps = defaultCaps()
}
if resp.LLBCaps == nil {
resp.LLBCaps = defaultLLBCaps()
}
return &grpcClient{
client: c,
opts: opts(),
@ -51,6 +55,7 @@ func current() (*grpcClient, error) {
workers: workers(),
product: product(),
caps: pb.Caps.CapSet(resp.FrontendAPICaps),
llbCaps: opspb.Caps.CapSet(resp.LLBCaps),
requests: map[string]*pb.SolveRequest{},
}, 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 {
client pb.LLBBridgeClient
opts map[string]string
@ -169,6 +210,7 @@ type grpcClient struct {
product string
workers []client.WorkerInfo
caps apicaps.CapSet
llbCaps apicaps.CapSet
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) {
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{
Definition: creq.Definition,
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 {
edge, err := Load(req.Definition, WithCacheSources(cms), RuntimePlatforms(b.platforms))
edge, err := Load(req.Definition, WithCacheSources(cms), RuntimePlatforms(b.platforms), WithValidateCaps())
if err != nil {
return nil, err
}

View File

@ -42,6 +42,20 @@ func (v *vertex) Name() string {
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 {
return func(_ *pb.Op, _ *pb.OpMetadata, opt *solver.VertexOptions) error {
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_opencontainers_go_digest "github.com/opencontainers/go-digest"
import github_com_moby_buildkit_util_apicaps "github.com/moby/buildkit/util/apicaps"
import io "io"
@ -662,6 +663,7 @@ type OpMetadata struct {
// index 3 reserved for WorkerConstraint in previous versions
// WorkerConstraint worker_constraint = 3;
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{} }
@ -690,6 +692,13 @@ func (m *OpMetadata) GetExportCache() *ExportCache {
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 {
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
}
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
}
@ -1940,6 +1970,14 @@ func (m *OpMetadata) Size() (n int) {
l = m.ExportCache.Size()
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
}
@ -4234,6 +4272,115 @@ func (m *OpMetadata) Unmarshal(dAtA []byte) error {
return err
}
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:
iNdEx = preIndex
skippy, err := skipOps(dAtA[iNdEx:])
@ -4880,81 +5027,84 @@ var (
func init() { proto.RegisterFile("ops.proto", fileDescriptorOps) }
var fileDescriptorOps = []byte{
// 1203 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0x4d, 0x8f, 0x1b, 0x45,
0x13, 0xde, 0x19, 0x7f, 0xcd, 0xd4, 0x6c, 0x36, 0x7e, 0x3b, 0x79, 0x83, 0x59, 0xc2, 0xae, 0x99,
0x20, 0xe4, 0x7c, 0xac, 0x57, 0x32, 0x52, 0x88, 0x38, 0x44, 0xac, 0x3f, 0xa2, 0x35, 0x21, 0x38,
0x6a, 0xaf, 0x96, 0x63, 0x34, 0x1e, 0xb7, 0xbd, 0xa3, 0x78, 0xa7, 0x47, 0x3d, 0xed, 0xb0, 0x3e,
0x80, 0x44, 0x7e, 0x01, 0x12, 0x12, 0x77, 0x7e, 0x08, 0xf7, 0x1c, 0xb9, 0xc2, 0x21, 0xa0, 0x20,
0xf1, 0x3b, 0x50, 0x75, 0xb7, 0x67, 0x66, 0x93, 0x20, 0x25, 0x82, 0x93, 0xbb, 0xab, 0x9e, 0x7a,
0xba, 0xea, 0xe9, 0x9a, 0x6a, 0x83, 0xcb, 0x93, 0xb4, 0x9d, 0x08, 0x2e, 0x39, 0xb1, 0x93, 0xc9,
0xf6, 0xde, 0x3c, 0x92, 0x27, 0xcb, 0x49, 0x3b, 0xe4, 0xa7, 0xfb, 0x73, 0x3e, 0xe7, 0xfb, 0xca,
0x35, 0x59, 0xce, 0xd4, 0x4e, 0x6d, 0xd4, 0x4a, 0x87, 0xf8, 0x3f, 0xd9, 0x60, 0x8f, 0x12, 0xf2,
0x01, 0x54, 0xa3, 0x38, 0x59, 0xca, 0xb4, 0x61, 0x35, 0x4b, 0x2d, 0xaf, 0xe3, 0xb6, 0x93, 0x49,
0x7b, 0x88, 0x16, 0x6a, 0x1c, 0xa4, 0x09, 0x65, 0x76, 0xc6, 0xc2, 0x86, 0xdd, 0xb4, 0x5a, 0x5e,
0x07, 0x10, 0x30, 0x38, 0x63, 0xe1, 0x28, 0x39, 0xdc, 0xa0, 0xca, 0x43, 0x3e, 0x82, 0x6a, 0xca,
0x97, 0x22, 0x64, 0x8d, 0x92, 0xc2, 0x6c, 0x22, 0x66, 0xac, 0x2c, 0x0a, 0x65, 0xbc, 0xc8, 0x14,
0xf2, 0x64, 0xd5, 0x28, 0xe7, 0x4c, 0x3d, 0x9e, 0xac, 0x34, 0x13, 0x7a, 0xc8, 0x35, 0xa8, 0x4c,
0x96, 0xd1, 0x62, 0xda, 0xa8, 0x28, 0x88, 0x87, 0x90, 0x2e, 0x1a, 0x14, 0x46, 0xfb, 0x48, 0x0b,
0x9c, 0x64, 0x11, 0xc8, 0x19, 0x17, 0xa7, 0x0d, 0xc8, 0x0f, 0x7c, 0x68, 0x6c, 0x34, 0xf3, 0x92,
0x4f, 0xc0, 0x0b, 0x79, 0x9c, 0x4a, 0x11, 0x44, 0xb1, 0x4c, 0x1b, 0x9e, 0x02, 0xff, 0x1f, 0xc1,
0x5f, 0x71, 0xf1, 0x98, 0x89, 0x5e, 0xee, 0xa4, 0x45, 0x64, 0xb7, 0x0c, 0x36, 0x4f, 0xfc, 0x1f,
0x2d, 0x70, 0xd6, 0xac, 0xc4, 0x87, 0xcd, 0x03, 0x11, 0x9e, 0x44, 0x92, 0x85, 0x72, 0x29, 0x58,
0xc3, 0x6a, 0x5a, 0x2d, 0x97, 0x9e, 0xb3, 0x91, 0x2d, 0xb0, 0x47, 0x63, 0x25, 0x94, 0x4b, 0xed,
0xd1, 0x98, 0x34, 0xa0, 0x76, 0x1c, 0x88, 0x28, 0x88, 0xa5, 0x52, 0xc6, 0xa5, 0xeb, 0x2d, 0xb9,
0x0a, 0xee, 0x68, 0x7c, 0xcc, 0x44, 0x1a, 0xf1, 0x58, 0xe9, 0xe1, 0xd2, 0xdc, 0x40, 0x76, 0x00,
0x46, 0xe3, 0x7b, 0x2c, 0x40, 0xd2, 0xb4, 0x51, 0x69, 0x96, 0x5a, 0x2e, 0x2d, 0x58, 0xfc, 0x6f,
0xa1, 0xa2, 0xee, 0x88, 0x7c, 0x0e, 0xd5, 0x69, 0x34, 0x67, 0xa9, 0xd4, 0xe9, 0x74, 0x3b, 0xcf,
0x9e, 0xef, 0x6e, 0xfc, 0xf6, 0x7c, 0xf7, 0x46, 0xa1, 0x19, 0x78, 0xc2, 0xe2, 0x90, 0xc7, 0x32,
0x88, 0x62, 0x26, 0xd2, 0xfd, 0x39, 0xdf, 0xd3, 0x21, 0xed, 0xbe, 0xfa, 0xa1, 0x86, 0x81, 0x5c,
0x87, 0x4a, 0x14, 0x4f, 0xd9, 0x99, 0xca, 0xbf, 0xd4, 0xbd, 0x64, 0xa8, 0xbc, 0xd1, 0x52, 0x26,
0x4b, 0x39, 0x44, 0x17, 0xd5, 0x08, 0x7f, 0x08, 0x55, 0xdd, 0x02, 0xe4, 0x2a, 0x94, 0x4f, 0x99,
0x0c, 0xd4, 0xf1, 0x5e, 0xc7, 0x41, 0x69, 0x1f, 0x30, 0x19, 0x50, 0x65, 0xc5, 0xee, 0x3a, 0xe5,
0x4b, 0x94, 0xde, 0xce, 0xbb, 0xeb, 0x01, 0x5a, 0xa8, 0x71, 0xf8, 0xdf, 0x40, 0x19, 0x03, 0x08,
0x81, 0x72, 0x20, 0xe6, 0xba, 0x0d, 0x5d, 0xaa, 0xd6, 0xa4, 0x0e, 0x25, 0x16, 0x3f, 0x51, 0xb1,
0x2e, 0xc5, 0x25, 0x5a, 0xc2, 0xaf, 0xa7, 0x46, 0x4c, 0x5c, 0x62, 0xdc, 0x32, 0x65, 0xc2, 0x68,
0xa8, 0xd6, 0xe4, 0x3a, 0xb8, 0x89, 0xe0, 0x67, 0xab, 0x47, 0x18, 0x5d, 0x29, 0x74, 0x08, 0x1a,
0x07, 0xf1, 0x13, 0xea, 0x24, 0x66, 0xe5, 0x7f, 0x67, 0x43, 0x45, 0x25, 0x44, 0x5a, 0x58, 0x7e,
0xb2, 0xd4, 0x4a, 0x96, 0xba, 0xc4, 0x94, 0x0f, 0x4a, 0xe8, 0xac, 0x7a, 0x14, 0x7d, 0x1b, 0x9c,
0x94, 0x2d, 0x58, 0x28, 0xb9, 0x30, 0x77, 0x9d, 0xed, 0x31, 0x9d, 0x29, 0x5e, 0x87, 0xce, 0x50,
0xad, 0xc9, 0x4d, 0xa8, 0x72, 0xa5, 0xa1, 0x4a, 0xf2, 0x1f, 0x94, 0x35, 0x10, 0x24, 0x17, 0x2c,
0x98, 0xf2, 0x78, 0xb1, 0x52, 0xa9, 0x3b, 0x34, 0xdb, 0x93, 0x9b, 0xe0, 0x2a, 0xd5, 0x8e, 0x56,
0x09, 0x6b, 0x54, 0x9b, 0x56, 0x6b, 0xab, 0x73, 0x21, 0x53, 0x14, 0x8d, 0x34, 0xf7, 0xe3, 0x57,
0x12, 0x06, 0xe1, 0x09, 0x1b, 0x25, 0xb2, 0x71, 0x39, 0xd7, 0xa0, 0x67, 0x6c, 0x34, 0xf3, 0xfa,
0x43, 0x70, 0xd6, 0x56, 0xec, 0xe0, 0x61, 0xdf, 0xf4, 0xb6, 0x3d, 0xec, 0x93, 0x3d, 0xa8, 0xa5,
0x27, 0x81, 0x88, 0xe2, 0xb9, 0x2a, 0x75, 0xab, 0x73, 0x29, 0x23, 0x19, 0x6b, 0x3b, 0x72, 0xad,
0x31, 0xfe, 0x5d, 0xa8, 0xea, 0x2f, 0x9a, 0x34, 0xa1, 0x94, 0x8a, 0xd0, 0x4c, 0x95, 0xad, 0xf5,
0xa7, 0xae, 0x87, 0x02, 0x45, 0x57, 0x26, 0x95, 0x9d, 0x4b, 0xe5, 0x53, 0x80, 0x1c, 0xf6, 0xdf,
0x5c, 0x89, 0xff, 0x83, 0x05, 0xce, 0x7a, 0x18, 0xe1, 0x97, 0x15, 0x4d, 0x59, 0x2c, 0xa3, 0x59,
0xc4, 0x84, 0xa9, 0xb3, 0x60, 0x21, 0x7b, 0x50, 0x09, 0xa4, 0x14, 0xeb, 0x86, 0x7d, 0xa7, 0x38,
0xc9, 0xda, 0x07, 0xe8, 0x19, 0xc4, 0x52, 0xac, 0xa8, 0x46, 0x6d, 0xdf, 0x01, 0xc8, 0x8d, 0xd8,
0x9d, 0x8f, 0xd9, 0xca, 0xb0, 0xe2, 0x92, 0x5c, 0x86, 0xca, 0x93, 0x60, 0xb1, 0x64, 0x26, 0x29,
0xbd, 0xf9, 0xd4, 0xbe, 0x63, 0xf9, 0x3f, 0xdb, 0x50, 0x33, 0x93, 0x8d, 0xdc, 0x82, 0x9a, 0x9a,
0x6c, 0x26, 0xa3, 0xd7, 0x57, 0xba, 0x86, 0x90, 0xfd, 0x6c, 0x64, 0x17, 0x72, 0x34, 0x54, 0x7a,
0x74, 0x9b, 0x1c, 0xf3, 0x01, 0x5e, 0x9a, 0xb2, 0x99, 0x99, 0xcd, 0xea, 0x2a, 0xfa, 0x6c, 0x16,
0xc5, 0x91, 0x8c, 0x78, 0x4c, 0xd1, 0x45, 0x6e, 0xad, 0xab, 0x2e, 0x2b, 0xc6, 0x2b, 0x45, 0xc6,
0x57, 0x8b, 0x1e, 0x82, 0x57, 0x38, 0xe6, 0x35, 0x55, 0x7f, 0x58, 0xac, 0xda, 0x1c, 0xa9, 0xe8,
0xf4, 0xc3, 0x92, 0xab, 0xf0, 0x2f, 0xf4, 0xbb, 0x0d, 0x90, 0x53, 0xbe, 0x79, 0xa7, 0xf8, 0x7f,
0x59, 0x00, 0xa3, 0x04, 0x47, 0xce, 0x34, 0x50, 0x13, 0x6a, 0x33, 0x9a, 0xc7, 0x5c, 0xb0, 0x47,
0xea, 0x73, 0x50, 0xf1, 0x0e, 0xf5, 0xb4, 0x4d, 0xb5, 0x39, 0x39, 0x00, 0x6f, 0xca, 0xd2, 0x50,
0x44, 0x09, 0x0a, 0x66, 0x44, 0xdf, 0xc5, 0x9a, 0x72, 0x9e, 0x76, 0x3f, 0x47, 0x68, 0xad, 0x8a,
0x31, 0xa4, 0x03, 0x9b, 0xec, 0x2c, 0xe1, 0x42, 0x9a, 0x53, 0xf4, 0x03, 0x78, 0x51, 0x3f, 0xa5,
0x68, 0x57, 0x27, 0x51, 0x8f, 0xe5, 0x9b, 0xed, 0xbb, 0x50, 0x7f, 0x99, 0xf4, 0xad, 0x04, 0xba,
0x06, 0x5e, 0x81, 0x1b, 0x81, 0xc7, 0x0a, 0xa8, 0x2b, 0xd4, 0x1b, 0xff, 0x29, 0xbe, 0x70, 0x66,
0x16, 0x92, 0xf7, 0x01, 0x4e, 0xa4, 0x4c, 0x1e, 0xa9, 0xe1, 0x68, 0x0e, 0x71, 0xd1, 0xa2, 0x10,
0x64, 0x17, 0x3c, 0xdc, 0xa4, 0xc6, 0xaf, 0x0f, 0x54, 0x11, 0xa9, 0x06, 0xbc, 0x07, 0xee, 0x2c,
0x0b, 0xd7, 0x03, 0xd0, 0x99, 0xad, 0xa3, 0xdf, 0x05, 0x27, 0xe6, 0xc6, 0xa7, 0x67, 0x75, 0x2d,
0xe6, 0xca, 0xe5, 0xdf, 0x84, 0xff, 0xbd, 0xf2, 0x1c, 0x93, 0x2b, 0x50, 0x9d, 0x45, 0x0b, 0xa9,
0x3e, 0x09, 0x1c, 0xff, 0x66, 0xe7, 0xff, 0x6a, 0x01, 0xe4, 0xed, 0x8b, 0x8a, 0x60, 0x6f, 0x23,
0x66, 0x53, 0xf7, 0xf2, 0x02, 0x9c, 0x53, 0x73, 0x2b, 0xe6, 0xae, 0xae, 0x9e, 0x6f, 0xf9, 0xf6,
0xfa, 0xd2, 0x94, 0xa6, 0xfa, 0xc9, 0x7c, 0xfa, 0xfb, 0x5b, 0x3d, 0x99, 0xd9, 0x09, 0xdb, 0xf7,
0xe1, 0xc2, 0x39, 0xba, 0x37, 0xfc, 0x1a, 0xf2, 0xce, 0x29, 0x5c, 0xd9, 0x8d, 0xcf, 0xc0, 0xcd,
0x46, 0x39, 0x71, 0xa0, 0xdc, 0x1d, 0x7e, 0xd9, 0xaf, 0x6f, 0x10, 0x80, 0xea, 0x78, 0xd0, 0xa3,
0x83, 0xa3, 0xba, 0x45, 0x6a, 0x50, 0x1a, 0x8f, 0x0f, 0xeb, 0x36, 0x71, 0xa1, 0xd2, 0x3b, 0xe8,
0x1d, 0x0e, 0xea, 0x25, 0x5c, 0x1e, 0x3d, 0x78, 0x78, 0x6f, 0x5c, 0x2f, 0xdf, 0xb8, 0x0d, 0x17,
0x5f, 0x9a, 0xcd, 0x2a, 0xfa, 0xf0, 0x80, 0x0e, 0x90, 0xc9, 0x83, 0xda, 0x43, 0x3a, 0x3c, 0x3e,
0x38, 0x1a, 0xd4, 0x2d, 0x74, 0x7c, 0x31, 0xea, 0xdd, 0x1f, 0xf4, 0xeb, 0x76, 0xb7, 0xfe, 0xec,
0xc5, 0x8e, 0xf5, 0xcb, 0x8b, 0x1d, 0xeb, 0x8f, 0x17, 0x3b, 0xd6, 0xf7, 0x7f, 0xee, 0x6c, 0x4c,
0xaa, 0xea, 0x6f, 0xe2, 0xc7, 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, 0x42, 0x80, 0x11, 0x1b, 0x66,
0x0a, 0x00, 0x00,
// 1264 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0x4d, 0x6f, 0xdb, 0x46,
0x13, 0x36, 0xa9, 0x2f, 0x72, 0xe8, 0x38, 0x7a, 0x37, 0x79, 0x53, 0xd5, 0x4d, 0x6d, 0x95, 0x29,
0x0a, 0x25, 0x8e, 0x25, 0x40, 0x01, 0x92, 0xa0, 0x87, 0xa0, 0xd6, 0x47, 0x60, 0x35, 0x4d, 0x15,
0xac, 0x0c, 0xf7, 0x18, 0x50, 0xd4, 0x4a, 0x26, 0x22, 0x73, 0x09, 0x72, 0x99, 0x5a, 0x87, 0x16,
0x68, 0x7e, 0x41, 0x81, 0x02, 0xbd, 0xf7, 0x87, 0xf4, 0x9e, 0x63, 0xaf, 0xed, 0x21, 0x2d, 0xd2,
0x3f, 0x52, 0xcc, 0xee, 0x8a, 0x64, 0x9c, 0x14, 0x4d, 0xd0, 0x9e, 0xb8, 0x3b, 0xf3, 0xcc, 0xec,
0xcc, 0x33, 0xb3, 0xb3, 0x04, 0x9b, 0x47, 0x49, 0x3b, 0x8a, 0xb9, 0xe0, 0xc4, 0x8c, 0xa6, 0xdb,
0xfb, 0x8b, 0x40, 0x9c, 0xa4, 0xd3, 0xb6, 0xcf, 0x4f, 0x3b, 0x0b, 0xbe, 0xe0, 0x1d, 0xa9, 0x9a,
0xa6, 0x73, 0xb9, 0x93, 0x1b, 0xb9, 0x52, 0x26, 0xee, 0x4f, 0x26, 0x98, 0xe3, 0x88, 0x7c, 0x04,
0xd5, 0x20, 0x8c, 0x52, 0x91, 0x34, 0x8c, 0x66, 0xa9, 0xe5, 0x74, 0xed, 0x76, 0x34, 0x6d, 0x8f,
0x50, 0x42, 0xb5, 0x82, 0x34, 0xa1, 0xcc, 0xce, 0x98, 0xdf, 0x30, 0x9b, 0x46, 0xcb, 0xe9, 0x02,
0x02, 0x86, 0x67, 0xcc, 0x1f, 0x47, 0x87, 0x1b, 0x54, 0x6a, 0xc8, 0x27, 0x50, 0x4d, 0x78, 0x1a,
0xfb, 0xac, 0x51, 0x92, 0x98, 0x4d, 0xc4, 0x4c, 0xa4, 0x44, 0xa2, 0xb4, 0x16, 0x3d, 0xf9, 0x3c,
0x5a, 0x35, 0xca, 0xb9, 0xa7, 0x3e, 0x8f, 0x56, 0xca, 0x13, 0x6a, 0xc8, 0x35, 0xa8, 0x4c, 0xd3,
0x60, 0x39, 0x6b, 0x54, 0x24, 0xc4, 0x41, 0x48, 0x0f, 0x05, 0x12, 0xa3, 0x74, 0xa4, 0x05, 0x56,
0xb4, 0xf4, 0xc4, 0x9c, 0xc7, 0xa7, 0x0d, 0xc8, 0x0f, 0x7c, 0xa4, 0x65, 0x34, 0xd3, 0x92, 0x3b,
0xe0, 0xf8, 0x3c, 0x4c, 0x44, 0xec, 0x05, 0xa1, 0x48, 0x1a, 0x8e, 0x04, 0xff, 0x1f, 0xc1, 0x5f,
0xf1, 0xf8, 0x09, 0x8b, 0xfb, 0xb9, 0x92, 0x16, 0x91, 0xbd, 0x32, 0x98, 0x3c, 0x72, 0x7f, 0x34,
0xc0, 0x5a, 0x7b, 0x25, 0x2e, 0x6c, 0x1e, 0xc4, 0xfe, 0x49, 0x20, 0x98, 0x2f, 0xd2, 0x98, 0x35,
0x8c, 0xa6, 0xd1, 0xb2, 0xe9, 0x2b, 0x32, 0xb2, 0x05, 0xe6, 0x78, 0x22, 0x89, 0xb2, 0xa9, 0x39,
0x9e, 0x90, 0x06, 0xd4, 0x8e, 0xbd, 0x38, 0xf0, 0x42, 0x21, 0x99, 0xb1, 0xe9, 0x7a, 0x4b, 0xae,
0x82, 0x3d, 0x9e, 0x1c, 0xb3, 0x38, 0x09, 0x78, 0x28, 0xf9, 0xb0, 0x69, 0x2e, 0x20, 0x3b, 0x00,
0xe3, 0xc9, 0x7d, 0xe6, 0xa1, 0xd3, 0xa4, 0x51, 0x69, 0x96, 0x5a, 0x36, 0x2d, 0x48, 0xdc, 0x6f,
0xa1, 0x22, 0x6b, 0x44, 0x3e, 0x87, 0xea, 0x2c, 0x58, 0xb0, 0x44, 0xa8, 0x70, 0x7a, 0xdd, 0xe7,
0x2f, 0x76, 0x37, 0x7e, 0x7b, 0xb1, 0x7b, 0xa3, 0xd0, 0x0c, 0x3c, 0x62, 0xa1, 0xcf, 0x43, 0xe1,
0x05, 0x21, 0x8b, 0x93, 0xce, 0x82, 0xef, 0x2b, 0x93, 0xf6, 0x40, 0x7e, 0xa8, 0xf6, 0x40, 0xae,
0x43, 0x25, 0x08, 0x67, 0xec, 0x4c, 0xc6, 0x5f, 0xea, 0x5d, 0xd2, 0xae, 0x9c, 0x71, 0x2a, 0xa2,
0x54, 0x8c, 0x50, 0x45, 0x15, 0xc2, 0x1d, 0x41, 0x55, 0xb5, 0x00, 0xb9, 0x0a, 0xe5, 0x53, 0x26,
0x3c, 0x79, 0xbc, 0xd3, 0xb5, 0x90, 0xda, 0x87, 0x4c, 0x78, 0x54, 0x4a, 0xb1, 0xbb, 0x4e, 0x79,
0x8a, 0xd4, 0x9b, 0x79, 0x77, 0x3d, 0x44, 0x09, 0xd5, 0x0a, 0xf7, 0x1b, 0x28, 0xa3, 0x01, 0x21,
0x50, 0xf6, 0xe2, 0x85, 0x6a, 0x43, 0x9b, 0xca, 0x35, 0xa9, 0x43, 0x89, 0x85, 0x4f, 0xa5, 0xad,
0x4d, 0x71, 0x89, 0x12, 0xff, 0xeb, 0x99, 0x26, 0x13, 0x97, 0x68, 0x97, 0x26, 0x2c, 0xd6, 0x1c,
0xca, 0x35, 0xb9, 0x0e, 0x76, 0x14, 0xf3, 0xb3, 0xd5, 0x63, 0xb4, 0xae, 0x14, 0x3a, 0x04, 0x85,
0xc3, 0xf0, 0x29, 0xb5, 0x22, 0xbd, 0x72, 0xbf, 0x33, 0xa1, 0x22, 0x03, 0x22, 0x2d, 0x4c, 0x3f,
0x4a, 0x15, 0x93, 0xa5, 0x1e, 0xd1, 0xe9, 0x83, 0x24, 0x3a, 0xcb, 0x1e, 0x49, 0xdf, 0x06, 0x2b,
0x61, 0x4b, 0xe6, 0x0b, 0x1e, 0xeb, 0x5a, 0x67, 0x7b, 0x0c, 0x67, 0x86, 0xe5, 0x50, 0x11, 0xca,
0x35, 0xd9, 0x83, 0x2a, 0x97, 0x1c, 0xca, 0x20, 0xff, 0x86, 0x59, 0x0d, 0x41, 0xe7, 0x31, 0xf3,
0x66, 0x3c, 0x5c, 0xae, 0x64, 0xe8, 0x16, 0xcd, 0xf6, 0x64, 0x0f, 0x6c, 0xc9, 0xda, 0xd1, 0x2a,
0x62, 0x8d, 0x6a, 0xd3, 0x68, 0x6d, 0x75, 0x2f, 0x64, 0x8c, 0xa2, 0x90, 0xe6, 0x7a, 0xbc, 0x25,
0xbe, 0xe7, 0x9f, 0xb0, 0x71, 0x24, 0x1a, 0x97, 0x73, 0x0e, 0xfa, 0x5a, 0x46, 0x33, 0xad, 0x3b,
0x02, 0x6b, 0x2d, 0xc5, 0x0e, 0x1e, 0x0d, 0x74, 0x6f, 0x9b, 0xa3, 0x01, 0xd9, 0x87, 0x5a, 0x72,
0xe2, 0xc5, 0x41, 0xb8, 0x90, 0xa9, 0x6e, 0x75, 0x2f, 0x65, 0x4e, 0x26, 0x4a, 0x8e, 0xbe, 0xd6,
0x18, 0xf7, 0x1e, 0x54, 0xd5, 0x8d, 0x26, 0x4d, 0x28, 0x25, 0xb1, 0xaf, 0xa7, 0xca, 0xd6, 0xfa,
0xaa, 0xab, 0xa1, 0x40, 0x51, 0x95, 0x51, 0x65, 0xe6, 0x54, 0xb9, 0x14, 0x20, 0x87, 0xfd, 0x37,
0x25, 0x71, 0x7f, 0x30, 0xc0, 0x5a, 0x0f, 0x23, 0xbc, 0x59, 0xc1, 0x8c, 0x85, 0x22, 0x98, 0x07,
0x2c, 0xd6, 0x79, 0x16, 0x24, 0x64, 0x1f, 0x2a, 0x9e, 0x10, 0xf1, 0xba, 0x61, 0xdf, 0x2b, 0x4e,
0xb2, 0xf6, 0x01, 0x6a, 0x86, 0xa1, 0x88, 0x57, 0x54, 0xa1, 0xb6, 0xef, 0x02, 0xe4, 0x42, 0xec,
0xce, 0x27, 0x6c, 0xa5, 0xbd, 0xe2, 0x92, 0x5c, 0x86, 0xca, 0x53, 0x6f, 0x99, 0x32, 0x1d, 0x94,
0xda, 0x7c, 0x6a, 0xde, 0x35, 0xdc, 0x9f, 0x4d, 0xa8, 0xe9, 0xc9, 0x46, 0x6e, 0x42, 0x4d, 0x4e,
0x36, 0x1d, 0xd1, 0x9b, 0x33, 0x5d, 0x43, 0x48, 0x27, 0x1b, 0xd9, 0x85, 0x18, 0xb5, 0x2b, 0x35,
0xba, 0x75, 0x8c, 0xf9, 0x00, 0x2f, 0xcd, 0xd8, 0x5c, 0xcf, 0x66, 0x59, 0x8a, 0x01, 0x9b, 0x07,
0x61, 0x20, 0x02, 0x1e, 0x52, 0x54, 0x91, 0x9b, 0xeb, 0xac, 0xcb, 0xd2, 0xe3, 0x95, 0xa2, 0xc7,
0xd7, 0x93, 0x1e, 0x81, 0x53, 0x38, 0xe6, 0x0d, 0x59, 0x7f, 0x5c, 0xcc, 0x5a, 0x1f, 0x29, 0xdd,
0xa9, 0x87, 0x25, 0x67, 0xe1, 0x5f, 0xf0, 0x77, 0x1b, 0x20, 0x77, 0xf9, 0xf6, 0x9d, 0xe2, 0x3e,
0x2b, 0x01, 0x8c, 0x23, 0x1c, 0x39, 0x33, 0x4f, 0x4e, 0xa8, 0xcd, 0x60, 0x11, 0xf2, 0x98, 0x3d,
0x96, 0xd7, 0x41, 0xda, 0x5b, 0xd4, 0x51, 0x32, 0xd9, 0xe6, 0xe4, 0x00, 0x9c, 0x19, 0x4b, 0xfc,
0x38, 0x88, 0x90, 0x30, 0x4d, 0xfa, 0x2e, 0xe6, 0x94, 0xfb, 0x69, 0x0f, 0x72, 0x84, 0xe2, 0xaa,
0x68, 0x43, 0xba, 0xb0, 0xc9, 0xce, 0x22, 0x1e, 0x0b, 0x7d, 0x8a, 0x7a, 0x00, 0x2f, 0xaa, 0xa7,
0x14, 0xe5, 0xf2, 0x24, 0xea, 0xb0, 0x7c, 0x43, 0x3c, 0x28, 0xfb, 0x5e, 0xa4, 0xa6, 0xbf, 0xd3,
0x6d, 0x9c, 0x3b, 0xaf, 0xef, 0x45, 0x8a, 0xb4, 0xde, 0x2d, 0xcc, 0xf5, 0xd9, 0xef, 0xbb, 0x7b,
0x85, 0x91, 0x7f, 0xca, 0xa7, 0xab, 0x8e, 0xec, 0x97, 0x27, 0x81, 0xe8, 0xa4, 0x22, 0x58, 0x76,
0xbc, 0x28, 0x40, 0x77, 0x68, 0x38, 0x1a, 0x50, 0xe9, 0x7a, 0xfb, 0x1e, 0xd4, 0xcf, 0xc7, 0xfd,
0x2e, 0x35, 0xd8, 0xbe, 0x03, 0x76, 0x16, 0xc7, 0x3f, 0x19, 0x5a, 0xc5, 0xe2, 0x5d, 0x03, 0xa7,
0x90, 0x37, 0x02, 0x8f, 0x25, 0x50, 0xb1, 0xaf, 0x36, 0xee, 0x33, 0x7c, 0x7d, 0xf5, 0x9c, 0x26,
0x1f, 0x02, 0x9c, 0x08, 0x11, 0x3d, 0x96, 0x83, 0x5b, 0x1f, 0x62, 0xa3, 0x44, 0x22, 0xc8, 0x2e,
0x38, 0xb8, 0x49, 0xb4, 0x5e, 0x45, 0x2a, 0x2d, 0x12, 0x05, 0xf8, 0x00, 0xec, 0x79, 0x66, 0xae,
0x86, 0xb3, 0x35, 0x5f, 0x5b, 0xbf, 0x0f, 0x56, 0xc8, 0xb5, 0x4e, 0xbd, 0x23, 0xb5, 0x90, 0x4b,
0x95, 0xbb, 0x07, 0xff, 0x7b, 0xed, 0x57, 0x81, 0x5c, 0x81, 0xea, 0x3c, 0x58, 0x0a, 0x79, 0x5d,
0xf1, 0x69, 0xd2, 0x3b, 0xf7, 0x57, 0x03, 0x20, 0xbf, 0x5a, 0xc8, 0x08, 0xde, 0x3b, 0xc4, 0x6c,
0xaa, 0x7b, 0xb6, 0x04, 0xeb, 0x54, 0x57, 0x50, 0xf7, 0xd1, 0xd5, 0x57, 0xaf, 0x63, 0x7b, 0x5d,
0x60, 0x55, 0xdb, 0xae, 0xae, 0xed, 0xbb, 0x3c, 0xe7, 0xd9, 0x09, 0xdb, 0x0f, 0xe0, 0xc2, 0x2b,
0xee, 0xde, 0xf2, 0xa6, 0xe6, 0x5d, 0x56, 0x28, 0xd9, 0x8d, 0xcf, 0xc0, 0xce, 0x9e, 0x19, 0x62,
0x41, 0xb9, 0x37, 0xfa, 0x72, 0x50, 0xdf, 0x20, 0x00, 0xd5, 0xc9, 0xb0, 0x4f, 0x87, 0x47, 0x75,
0x83, 0xd4, 0xa0, 0x34, 0x99, 0x1c, 0xd6, 0x4d, 0x62, 0x43, 0xa5, 0x7f, 0xd0, 0x3f, 0x1c, 0xd6,
0x4b, 0xb8, 0x3c, 0x7a, 0xf8, 0xe8, 0xfe, 0xa4, 0x5e, 0xbe, 0x71, 0x1b, 0x2e, 0x9e, 0x7b, 0x37,
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
// WorkerConstraint worker_constraint = 3;
ExportCache export_cache = 4;
map<string, bool> caps = 5 [(gogoproto.castkey) = "github.com/moby/buildkit/util/apicaps.CapID", (gogoproto.nullable) = false];
}
message ExportCache {