diff --git a/bake/bake.go b/bake/bake.go index fc8b9337..b76afb02 100644 --- a/bake/bake.go +++ b/bake/bake.go @@ -14,14 +14,12 @@ import ( "github.com/docker/buildx/bake/hclparser" "github.com/docker/buildx/build" + cbuild "github.com/docker/buildx/controller/build" controllerapi "github.com/docker/buildx/controller/pb" "github.com/docker/buildx/util/buildflags" - "github.com/docker/buildx/util/platformutil" - "github.com/docker/cli/cli/config" "github.com/docker/docker/builder/remotecontext/urlutil" hcl "github.com/hashicorp/hcl/v2" "github.com/moby/buildkit/client/llb" - "github.com/moby/buildkit/session/auth/authprovider" "github.com/pkg/errors" ) @@ -769,7 +767,11 @@ func (t *Target) AddOverrides(overrides map[string]Override) error { func TargetsToBuildOpt(m map[string]*Target, inp *Input) (map[string]build.Options, error) { m2 := make(map[string]build.Options, len(m)) for k, v := range m { - bo, err := toBuildOpt(v, inp) + opts, err := toControllerOpt(v, inp) + if err != nil { + return nil, err + } + bo, err := cbuild.ToBuildOpts(*opts, nil) if err != nil { return nil, err } @@ -778,14 +780,14 @@ func TargetsToBuildOpt(m map[string]*Target, inp *Input) (map[string]build.Optio return m2, nil } -func updateContext(t *build.Inputs, inp *Input) { +func updateContext(t *controllerapi.Inputs, inp *Input) error { if inp == nil || inp.State == nil { - return + return nil } for k, v := range t.NamedContexts { if v.Path == "." { - t.NamedContexts[k] = build.NamedContext{Path: inp.URL} + t.NamedContexts[k] = &controllerapi.NamedContext{Path: inp.URL} } if strings.HasPrefix(v.Path, "cwd://") || strings.HasPrefix(v.Path, "target:") || strings.HasPrefix(v.Path, "docker-image:") { continue @@ -794,27 +796,36 @@ func updateContext(t *build.Inputs, inp *Input) { continue } st := llb.Scratch().File(llb.Copy(*inp.State, v.Path, "/"), llb.WithCustomNamef("set context %s to %s", k, v.Path)) - t.NamedContexts[k] = build.NamedContext{State: &st} + def, err := st.Marshal(context.TODO()) + if err != nil { + return err + } + t.NamedContexts[k] = &controllerapi.NamedContext{Definition: def.ToPB()} } if t.ContextPath == "." { t.ContextPath = inp.URL - return + return nil } if strings.HasPrefix(t.ContextPath, "cwd://") { - return + return nil } if IsRemoteURL(t.ContextPath) { - return + return nil } st := llb.Scratch().File(llb.Copy(*inp.State, t.ContextPath, "/"), llb.WithCustomNamef("set context to %s", t.ContextPath)) - t.ContextState = &st + def, err := st.Marshal(context.TODO()) + if err != nil { + return err + } + t.ContextDefinition = def.ToPB() + return nil } // validateContextsEntitlements is a basic check to ensure contexts do not // escape local directories when loaded from remote sources. This is to be // replaced with proper entitlements support in the future. -func validateContextsEntitlements(t build.Inputs, inp *Input) error { +func validateContextsEntitlements(t controllerapi.Inputs, inp *Input) error { if inp == nil || inp.State == nil { return nil } @@ -823,13 +834,13 @@ func validateContextsEntitlements(t build.Inputs, inp *Input) error { return nil } } - if t.ContextState == nil { + if t.ContextDefinition == nil { if err := checkPath(t.ContextPath); err != nil { return err } } for _, v := range t.NamedContexts { - if v.State != nil { + if v.Definition != nil { continue } if err := checkPath(v.Path); err != nil { @@ -864,7 +875,7 @@ func checkPath(p string) error { return nil } -func toBuildOpt(t *Target, inp *Input) (*build.Options, error) { +func toControllerOpt(t *Target, inp *Input) (*controllerapi.BuildOptions, error) { if v := t.Context; v != nil && *v == "-" { return nil, errors.Errorf("context from stdin not allowed in bake") } @@ -917,9 +928,9 @@ func toBuildOpt(t *Target, inp *Input) (*build.Options, error) { networkMode = *t.NetworkMode } - bi := build.Inputs{ + bi := controllerapi.Inputs{ ContextPath: contextPath, - DockerfilePath: dockerfilePath, + DockerfileName: dockerfilePath, NamedContexts: toNamedContexts(t.Contexts), } if t.DockerfileInline != nil { @@ -931,7 +942,7 @@ func toBuildOpt(t *Target, inp *Input) (*build.Options, error) { } for k, v := range bi.NamedContexts { if strings.HasPrefix(v.Path, "cwd://") { - bi.NamedContexts[k] = build.NamedContext{Path: path.Clean(strings.TrimPrefix(v.Path, "cwd://"))} + bi.NamedContexts[k] = &controllerapi.NamedContext{Path: path.Clean(strings.TrimPrefix(v.Path, "cwd://"))} } } @@ -941,82 +952,55 @@ func toBuildOpt(t *Target, inp *Input) (*build.Options, error) { t.Context = &bi.ContextPath - bo := &build.Options{ - Inputs: bi, + opts := &controllerapi.BuildOptions{ + Inputs: &bi, Tags: t.Tags, BuildArgs: args, Labels: labels, - NoCache: noCache, NoCacheFilter: t.NoCacheFilter, - Pull: pull, NetworkMode: networkMode, - Linked: t.linked, + Opts: &controllerapi.CommonOptions{ + NoCache: noCache, + Pull: pull, + Linked: t.linked, + }, + Platforms: t.Platforms, } + var err error - platforms, err := platformutil.Parse(t.Platforms) - if err != nil { - return nil, err - } - bo.Platforms = platforms - - dockerConfig := config.LoadDefaultConfigFile(os.Stderr) - bo.Session = append(bo.Session, authprovider.NewDockerAuthProvider(dockerConfig)) - - secrets, err := buildflags.ParseSecretSpecs(t.Secrets) - if err != nil { - return nil, err - } - secretAttachment, err := controllerapi.CreateSecrets(secrets) - if err != nil { - return nil, err + if t.Target != nil { + opts.Target = *t.Target } - bo.Session = append(bo.Session, secretAttachment) - sshSpecs, err := buildflags.ParseSSHSpecs(t.SSH) + opts.Secrets, err = buildflags.ParseSecretSpecs(t.Secrets) if err != nil { return nil, err } - if len(sshSpecs) == 0 && buildflags.IsGitSSH(contextPath) { - sshSpecs = append(sshSpecs, &controllerapi.SSH{ID: "default"}) - } - sshAttachment, err := controllerapi.CreateSSH(sshSpecs) + opts.SSH, err = buildflags.ParseSSHSpecs(t.SSH) if err != nil { return nil, err } - bo.Session = append(bo.Session, sshAttachment) - - if t.Target != nil { - bo.Target = *t.Target - } - cacheImports, err := buildflags.ParseCacheEntry(t.CacheFrom) + opts.CacheFrom, err = buildflags.ParseCacheEntry(t.CacheFrom) if err != nil { return nil, err } - bo.CacheFrom = controllerapi.CreateCaches(cacheImports) - - cacheExports, err := buildflags.ParseCacheEntry(t.CacheTo) + opts.CacheTo, err = buildflags.ParseCacheEntry(t.CacheTo) if err != nil { return nil, err } - bo.CacheTo = controllerapi.CreateCaches(cacheExports) - outputs, err := buildflags.ParseExports(t.Outputs) - if err != nil { - return nil, err - } - bo.Exports, err = controllerapi.CreateExports(outputs) + opts.Exports, err = buildflags.ParseExports(t.Outputs) if err != nil { return nil, err } - attests, err := buildflags.ParseAttests(t.Attest) + opts.Attests, err = buildflags.ParseAttests(t.Attest) if err != nil { return nil, err } - bo.Attests = controllerapi.CreateAttestations(attests) - return bo, nil + return opts, nil } func defaultTarget() *Target { @@ -1089,10 +1073,10 @@ func sliceEqual(s1, s2 []string) bool { return true } -func toNamedContexts(m map[string]string) map[string]build.NamedContext { - m2 := make(map[string]build.NamedContext, len(m)) +func toNamedContexts(m map[string]string) map[string]*controllerapi.NamedContext { + m2 := make(map[string]*controllerapi.NamedContext, len(m)) for k, v := range m { - m2[k] = build.NamedContext{Path: v} + m2[k] = &controllerapi.NamedContext{Path: v} } return m2 } diff --git a/commands/build.go b/commands/build.go index fef0b48c..a472bb74 100644 --- a/commands/build.go +++ b/commands/build.go @@ -81,23 +81,32 @@ type buildOptions struct { func (o *buildOptions) toControllerOptions() (controllerapi.BuildOptions, error) { var err error - opts := controllerapi.BuildOptions{ - Allow: o.allow, - BuildArgs: listToMap(o.buildArgs, true), - CgroupParent: o.cgroupParent, + + inputs := controllerapi.Inputs{ ContextPath: o.contextPath, DockerfileName: o.dockerfileName, - ExtraHosts: o.extraHosts, - Labels: listToMap(o.labels, false), - NetworkMode: o.networkMode, - NoCacheFilter: o.noCacheFilter, - Platforms: o.platforms, - PrintFunc: o.printFunc, - ShmSize: int64(o.shmSize), - Tags: o.tags, - Target: o.target, - Ulimits: dockerUlimitToControllerUlimit(o.ulimits), - Opts: &o.CommonOptions, + } + inputs.NamedContexts, err = buildflags.ParseContextNames(o.contexts) + if err != nil { + return controllerapi.BuildOptions{}, err + } + + opts := controllerapi.BuildOptions{ + Inputs: &inputs, + Allow: o.allow, + BuildArgs: listToMap(o.buildArgs, true), + CgroupParent: o.cgroupParent, + ExtraHosts: o.extraHosts, + Labels: listToMap(o.labels, false), + NetworkMode: o.networkMode, + NoCacheFilter: o.noCacheFilter, + Platforms: o.platforms, + PrintFunc: o.printFunc, + ShmSize: int64(o.shmSize), + Tags: o.tags, + Target: o.target, + Ulimits: dockerUlimitToControllerUlimit(o.ulimits), + Opts: &o.CommonOptions, } // TODO: extract env var parsing to a method easily usable by library consumers @@ -119,11 +128,6 @@ func (o *buildOptions) toControllerOptions() (controllerapi.BuildOptions, error) return controllerapi.BuildOptions{}, err } - opts.NamedContexts, err = buildflags.ParseContextNames(o.contexts) - if err != nil { - return controllerapi.BuildOptions{}, err - } - opts.Exports, err = buildflags.ParseExports(o.outputs) if err != nil { return controllerapi.BuildOptions{}, err @@ -669,45 +673,6 @@ func dockerUlimitToControllerUlimit(u *dockeropts.UlimitOpt) *controllerapi.Ulim // resolvePaths resolves all paths contained in controllerapi.BuildOptions // and replaces them to absolute paths. func resolvePaths(options *controllerapi.BuildOptions) (_ *controllerapi.BuildOptions, err error) { - if options.ContextPath != "" && options.ContextPath != "-" { - options.ContextPath, err = filepath.Abs(options.ContextPath) - if err != nil { - return nil, err - } - } - if options.DockerfileName != "" && options.DockerfileName != "-" { - options.DockerfileName, err = filepath.Abs(options.DockerfileName) - if err != nil { - return nil, err - } - } - var contexts map[string]string - for k, v := range options.NamedContexts { - if urlutil.IsGitURL(v) || urlutil.IsURL(v) || strings.HasPrefix(v, "docker-image://") { - // url prefix, this is a remote path - } else if strings.HasPrefix(v, "oci-layout://") { - // oci layout prefix, this is a local path - p := strings.TrimPrefix(v, "oci-layout://") - p, err = filepath.Abs(p) - if err != nil { - return nil, err - } - v = "oci-layout://" + p - } else { - // no prefix, assume local path - v, err = filepath.Abs(v) - if err != nil { - return nil, err - } - } - - if contexts == nil { - contexts = make(map[string]string) - } - contexts[k] = v - } - options.NamedContexts = contexts - var cacheFrom []*controllerapi.CacheOptionsEntry for _, co := range options.CacheFrom { switch co.Type { @@ -819,5 +784,50 @@ func resolvePaths(options *controllerapi.BuildOptions) (_ *controllerapi.BuildOp } } + if options.Inputs == nil { + return options, nil + } + if options.Inputs.ContextPath != "" && options.Inputs.ContextPath != "-" { + options.Inputs.ContextPath, err = filepath.Abs(options.Inputs.ContextPath) + if err != nil { + return nil, err + } + } + if options.Inputs.DockerfileName != "" && options.Inputs.DockerfileName != "-" { + options.Inputs.DockerfileName, err = filepath.Abs(options.Inputs.DockerfileName) + if err != nil { + return nil, err + } + } + var contexts map[string]*controllerapi.NamedContext + for k, v := range options.Inputs.NamedContexts { + v := *v + if v.Definition != nil { + // definition, no path + } else if urlutil.IsGitURL(v.Path) || urlutil.IsURL(v.Path) || strings.HasPrefix(v.Path, "docker-image://") { + // url prefix, this is a remote path + } else if strings.HasPrefix(v.Path, "oci-layout://") { + // oci layout prefix, this is a local path + p := strings.TrimPrefix(v.Path, "oci-layout://") + p, err = filepath.Abs(p) + if err != nil { + return nil, err + } + v.Path = "oci-layout://" + p + } else { + // no prefix, assume local path + v.Path, err = filepath.Abs(v.Path) + if err != nil { + return nil, err + } + } + + if contexts == nil { + contexts = make(map[string]*controllerapi.NamedContext) + } + contexts[k] = &v + } + options.Inputs.NamedContexts = contexts + return options, nil } diff --git a/commands/build_test.go b/commands/build_test.go index 1a7f335e..85694f51 100644 --- a/commands/build_test.go +++ b/commands/build_test.go @@ -21,36 +21,68 @@ func TestResolvePaths(t *testing.T) { want controllerapi.BuildOptions }{ { - name: "contextpath", - options: controllerapi.BuildOptions{ContextPath: "test"}, - want: controllerapi.BuildOptions{ContextPath: filepath.Join(tmpwd, "test")}, + name: "contextpath", + options: controllerapi.BuildOptions{ + Inputs: &controllerapi.Inputs{ContextPath: "test"}, + }, + want: controllerapi.BuildOptions{ + Inputs: &controllerapi.Inputs{ContextPath: filepath.Join(tmpwd, "test")}, + }, }, { - name: "contextpath-cwd", - options: controllerapi.BuildOptions{ContextPath: "."}, - want: controllerapi.BuildOptions{ContextPath: tmpwd}, + name: "contextpath-cwd", + options: controllerapi.BuildOptions{ + Inputs: &controllerapi.Inputs{ContextPath: "."}, + }, + want: controllerapi.BuildOptions{ + Inputs: &controllerapi.Inputs{ContextPath: tmpwd}, + }, }, { - name: "contextpath-dash", - options: controllerapi.BuildOptions{ContextPath: "-"}, - want: controllerapi.BuildOptions{ContextPath: "-"}, + name: "contextpath-dash", + options: controllerapi.BuildOptions{ + Inputs: &controllerapi.Inputs{ContextPath: "-"}, + }, + want: controllerapi.BuildOptions{ + Inputs: &controllerapi.Inputs{ContextPath: "-"}, + }, }, { - name: "dockerfilename", - options: controllerapi.BuildOptions{DockerfileName: "test"}, - want: controllerapi.BuildOptions{DockerfileName: filepath.Join(tmpwd, "test")}, + name: "dockerfilename", + options: controllerapi.BuildOptions{ + Inputs: &controllerapi.Inputs{DockerfileName: "test"}, + }, + want: controllerapi.BuildOptions{ + Inputs: &controllerapi.Inputs{DockerfileName: filepath.Join(tmpwd, "test")}, + }, }, { - name: "dockerfilename-dash", - options: controllerapi.BuildOptions{DockerfileName: "-"}, - want: controllerapi.BuildOptions{DockerfileName: "-"}, + name: "dockerfilename-dash", + options: controllerapi.BuildOptions{ + Inputs: &controllerapi.Inputs{DockerfileName: "-"}, + }, + want: controllerapi.BuildOptions{ + Inputs: &controllerapi.Inputs{DockerfileName: "-"}, + }, }, { name: "contexts", - options: controllerapi.BuildOptions{NamedContexts: map[string]string{"a": "test1", "b": "test2", - "alpine": "docker-image://alpine@sha256:0123456789", "project": "https://github.com/myuser/project.git"}}, - want: controllerapi.BuildOptions{NamedContexts: map[string]string{"a": filepath.Join(tmpwd, "test1"), "b": filepath.Join(tmpwd, "test2"), - "alpine": "docker-image://alpine@sha256:0123456789", "project": "https://github.com/myuser/project.git"}}, + options: controllerapi.BuildOptions{ + Inputs: &controllerapi.Inputs{NamedContexts: map[string]*controllerapi.NamedContext{ + "a": {Path: "test1"}, + "b": {Path: "test2"}, + "alpine": {Path: "docker-image://alpine@sha256:0123456789"}, + "project": {Path: "https://github.com/myuser/project.git"}, + }, + }}, + want: controllerapi.BuildOptions{ + Inputs: &controllerapi.Inputs{NamedContexts: map[string]*controllerapi.NamedContext{ + "a": {Path: filepath.Join(tmpwd, "test1")}, + "b": {Path: filepath.Join(tmpwd, "test2")}, + "alpine": {Path: "docker-image://alpine@sha256:0123456789"}, + "project": {Path: "https://github.com/myuser/project.git"}, + }, + }}, }, { name: "cache-from", diff --git a/controller/build/build.go b/controller/build/build.go index 12fa8580..f6196b58 100644 --- a/controller/build/build.go +++ b/controller/build/build.go @@ -29,6 +29,7 @@ import ( "github.com/docker/docker/pkg/ioutils" "github.com/docker/go-units" "github.com/moby/buildkit/client" + "github.com/moby/buildkit/client/llb" "github.com/moby/buildkit/session/auth/authprovider" "github.com/moby/buildkit/solver/errdefs" "github.com/moby/buildkit/util/grpcerrors" @@ -42,26 +43,82 @@ import ( const defaultTargetName = "default" func RunBuild(ctx context.Context, dockerCli command.Cli, in controllerapi.BuildOptions, inStream io.Reader, progressMode string, statusChan chan *client.SolveStatus) (*client.SolveResponse, *build.ResultContext, error) { + opts, err := ToBuildOpts(in, inStream) + if err != nil { + return nil, nil, err + } + + // key string used for kubernetes "sticky" mode + contextPathHash, err := filepath.Abs(in.Inputs.ContextPath) + if err != nil { + contextPathHash = in.Inputs.ContextPath + } + + b, err := builder.New(dockerCli, + builder.WithName(in.Opts.Builder), + builder.WithContextPathHash(contextPathHash), + ) + if err != nil { + return nil, nil, err + } + if err = updateLastActivity(dockerCli, b.NodeGroup); err != nil { + return nil, nil, errors.Wrapf(err, "failed to update builder last activity time") + } + nodes, err := b.LoadNodes(ctx, false) + if err != nil { + return nil, nil, err + } + + resp, res, err := buildTargets(ctx, dockerCli, b.NodeGroup, nodes, map[string]build.Options{defaultTargetName: *opts}, progressMode, in.Opts.MetadataFile, statusChan) + err = wrapBuildError(err, false) + if err != nil { + return nil, nil, err + } + return resp, res, nil +} + +func ToBuildOpts(in controllerapi.BuildOptions, inStream io.Reader) (*build.Options, error) { if in.Opts.NoCache && len(in.NoCacheFilter) > 0 { - return nil, nil, errors.Errorf("--no-cache and --no-cache-filter cannot currently be used together") + return nil, errors.Errorf("--no-cache and --no-cache-filter cannot currently be used together") + } + + var context *llb.State + if in.Inputs.ContextDefinition != nil { + defop, err := llb.NewDefinitionOp(in.Inputs.ContextDefinition) + if err != nil { + return nil, err + } + st := llb.NewState(defop) + context = &st } contexts := map[string]build.NamedContext{} - for name, path := range in.NamedContexts { - contexts[name] = build.NamedContext{Path: path} + for name, context := range in.Inputs.NamedContexts { + if context.Definition != nil { + defop, err := llb.NewDefinitionOp(context.Definition) + if err != nil { + return nil, err + } + st := llb.NewState(defop) + contexts[name] = build.NamedContext{State: &st} + } else { + contexts[name] = build.NamedContext{Path: context.Path} + } } printFunc, err := parsePrintFunc(in.PrintFunc) if err != nil { - return nil, nil, err + return nil, err } opts := build.Options{ Inputs: build.Inputs{ - ContextPath: in.ContextPath, - DockerfilePath: in.DockerfileName, - InStream: inStream, - NamedContexts: contexts, + ContextPath: in.Inputs.ContextPath, + DockerfilePath: in.Inputs.DockerfileName, + DockerfileInline: in.Inputs.DockerfileInline, + ContextState: context, + InStream: inStream, + NamedContexts: contexts, }, BuildArgs: in.BuildArgs, ExtraHosts: in.ExtraHosts, @@ -79,7 +136,7 @@ func RunBuild(ctx context.Context, dockerCli command.Cli, in controllerapi.Build platforms, err := platformutil.Parse(in.Platforms) if err != nil { - return nil, nil, err + return nil, err } opts.Platforms = platforms @@ -88,27 +145,27 @@ func RunBuild(ctx context.Context, dockerCli command.Cli, in controllerapi.Build secrets, err := controllerapi.CreateSecrets(in.Secrets) if err != nil { - return nil, nil, err + return nil, err } opts.Session = append(opts.Session, secrets) sshSpecs := in.SSH - if len(sshSpecs) == 0 && buildflags.IsGitSSH(in.ContextPath) { + if len(sshSpecs) == 0 && buildflags.IsGitSSH(in.Inputs.ContextPath) { sshSpecs = append(sshSpecs, &controllerapi.SSH{ID: "default"}) } ssh, err := controllerapi.CreateSSH(sshSpecs) if err != nil { - return nil, nil, err + return nil, err } opts.Session = append(opts.Session, ssh) outputs, err := controllerapi.CreateExports(in.Exports) if err != nil { - return nil, nil, err + return nil, err } if in.Opts.ExportPush { if in.Opts.ExportLoad { - return nil, nil, errors.Errorf("push and load may not be set together at the moment") + return nil, errors.Errorf("push and load may not be set together at the moment") } if len(outputs) == 0 { outputs = []client.ExportEntry{{ @@ -122,7 +179,7 @@ func RunBuild(ctx context.Context, dockerCli command.Cli, in controllerapi.Build case "image": outputs[0].Attrs["push"] = "true" default: - return nil, nil, errors.Errorf("push and %q output can't be used together", outputs[0].Type) + return nil, errors.Errorf("push and %q output can't be used together", outputs[0].Type) } } } @@ -136,7 +193,7 @@ func RunBuild(ctx context.Context, dockerCli command.Cli, in controllerapi.Build switch outputs[0].Type { case "docker": default: - return nil, nil, errors.Errorf("load and %q output can't be used together", outputs[0].Type) + return nil, errors.Errorf("load and %q output can't be used together", outputs[0].Type) } } } @@ -149,37 +206,11 @@ func RunBuild(ctx context.Context, dockerCli command.Cli, in controllerapi.Build allow, err := buildflags.ParseEntitlements(in.Allow) if err != nil { - return nil, nil, err + return nil, err } opts.Allow = allow - // key string used for kubernetes "sticky" mode - contextPathHash, err := filepath.Abs(in.ContextPath) - if err != nil { - contextPathHash = in.ContextPath - } - - b, err := builder.New(dockerCli, - builder.WithName(in.Opts.Builder), - builder.WithContextPathHash(contextPathHash), - ) - if err != nil { - return nil, nil, err - } - if err = updateLastActivity(dockerCli, b.NodeGroup); err != nil { - return nil, nil, errors.Wrapf(err, "failed to update builder last activity time") - } - nodes, err := b.LoadNodes(ctx, false) - if err != nil { - return nil, nil, err - } - - resp, res, err := buildTargets(ctx, dockerCli, b.NodeGroup, nodes, map[string]build.Options{defaultTargetName: opts}, progressMode, in.Opts.MetadataFile, statusChan) - err = wrapBuildError(err, false) - if err != nil { - return nil, nil, err - } - return resp, res, nil + return &opts, nil } func buildTargets(ctx context.Context, dockerCli command.Cli, ng *store.NodeGroup, nodes []builder.Node, opts map[string]build.Options, progressMode string, metadataFile string, statusChan chan *client.SolveStatus) (*client.SolveResponse, *build.ResultContext, error) { diff --git a/controller/pb/controller.pb.go b/controller/pb/controller.pb.go index ec675210..ab8708fb 100644 --- a/controller/pb/controller.pb.go +++ b/controller/pb/controller.pb.go @@ -8,6 +8,7 @@ import ( fmt "fmt" proto "github.com/gogo/protobuf/proto" control "github.com/moby/buildkit/api/services/control" + pb "github.com/moby/buildkit/solver/pb" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" @@ -269,30 +270,98 @@ func (m *BuildRequest) GetOptions() *BuildOptions { return nil } +type Inputs struct { + ContextPath string `protobuf:"bytes,1,opt,name=ContextPath,proto3" json:"ContextPath,omitempty"` + DockerfileName string `protobuf:"bytes,2,opt,name=DockerfileName,proto3" json:"DockerfileName,omitempty"` + DockerfileInline string `protobuf:"bytes,3,opt,name=DockerfileInline,proto3" json:"DockerfileInline,omitempty"` + ContextDefinition *pb.Definition `protobuf:"bytes,4,opt,name=ContextDefinition,proto3" json:"ContextDefinition,omitempty"` + NamedContexts map[string]*NamedContext `protobuf:"bytes,5,rep,name=NamedContexts,proto3" json:"NamedContexts,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Inputs) Reset() { *m = Inputs{} } +func (m *Inputs) String() string { return proto.CompactTextString(m) } +func (*Inputs) ProtoMessage() {} +func (*Inputs) Descriptor() ([]byte, []int) { + return fileDescriptor_ed7f10298fa1d90f, []int{6} +} +func (m *Inputs) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Inputs.Unmarshal(m, b) +} +func (m *Inputs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Inputs.Marshal(b, m, deterministic) +} +func (m *Inputs) XXX_Merge(src proto.Message) { + xxx_messageInfo_Inputs.Merge(m, src) +} +func (m *Inputs) XXX_Size() int { + return xxx_messageInfo_Inputs.Size(m) +} +func (m *Inputs) XXX_DiscardUnknown() { + xxx_messageInfo_Inputs.DiscardUnknown(m) +} + +var xxx_messageInfo_Inputs proto.InternalMessageInfo + +func (m *Inputs) GetContextPath() string { + if m != nil { + return m.ContextPath + } + return "" +} + +func (m *Inputs) GetDockerfileName() string { + if m != nil { + return m.DockerfileName + } + return "" +} + +func (m *Inputs) GetDockerfileInline() string { + if m != nil { + return m.DockerfileInline + } + return "" +} + +func (m *Inputs) GetContextDefinition() *pb.Definition { + if m != nil { + return m.ContextDefinition + } + return nil +} + +func (m *Inputs) GetNamedContexts() map[string]*NamedContext { + if m != nil { + return m.NamedContexts + } + return nil +} + type BuildOptions struct { - ContextPath string `protobuf:"bytes,1,opt,name=ContextPath,proto3" json:"ContextPath,omitempty"` - DockerfileName string `protobuf:"bytes,2,opt,name=DockerfileName,proto3" json:"DockerfileName,omitempty"` - PrintFunc string `protobuf:"bytes,3,opt,name=PrintFunc,proto3" json:"PrintFunc,omitempty"` - NamedContexts map[string]string `protobuf:"bytes,4,rep,name=NamedContexts,proto3" json:"NamedContexts,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Allow []string `protobuf:"bytes,5,rep,name=Allow,proto3" json:"Allow,omitempty"` - Attests []*Attest `protobuf:"bytes,6,rep,name=Attests,proto3" json:"Attests,omitempty"` - BuildArgs map[string]string `protobuf:"bytes,7,rep,name=BuildArgs,proto3" json:"BuildArgs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - CacheFrom []*CacheOptionsEntry `protobuf:"bytes,8,rep,name=CacheFrom,proto3" json:"CacheFrom,omitempty"` - CacheTo []*CacheOptionsEntry `protobuf:"bytes,9,rep,name=CacheTo,proto3" json:"CacheTo,omitempty"` - CgroupParent string `protobuf:"bytes,10,opt,name=CgroupParent,proto3" json:"CgroupParent,omitempty"` - Exports []*ExportEntry `protobuf:"bytes,11,rep,name=Exports,proto3" json:"Exports,omitempty"` - ExtraHosts []string `protobuf:"bytes,12,rep,name=ExtraHosts,proto3" json:"ExtraHosts,omitempty"` - Labels map[string]string `protobuf:"bytes,13,rep,name=Labels,proto3" json:"Labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - NetworkMode string `protobuf:"bytes,14,opt,name=NetworkMode,proto3" json:"NetworkMode,omitempty"` - NoCacheFilter []string `protobuf:"bytes,15,rep,name=NoCacheFilter,proto3" json:"NoCacheFilter,omitempty"` - Platforms []string `protobuf:"bytes,16,rep,name=Platforms,proto3" json:"Platforms,omitempty"` - Secrets []*Secret `protobuf:"bytes,17,rep,name=Secrets,proto3" json:"Secrets,omitempty"` - ShmSize int64 `protobuf:"varint,18,opt,name=ShmSize,proto3" json:"ShmSize,omitempty"` - SSH []*SSH `protobuf:"bytes,19,rep,name=SSH,proto3" json:"SSH,omitempty"` - Tags []string `protobuf:"bytes,20,rep,name=Tags,proto3" json:"Tags,omitempty"` - Target string `protobuf:"bytes,21,opt,name=Target,proto3" json:"Target,omitempty"` - Ulimits *UlimitOpt `protobuf:"bytes,22,opt,name=Ulimits,proto3" json:"Ulimits,omitempty"` - Opts *CommonOptions `protobuf:"bytes,24,opt,name=Opts,proto3" json:"Opts,omitempty"` + Inputs *Inputs `protobuf:"bytes,1,opt,name=inputs,proto3" json:"inputs,omitempty"` + PrintFunc string `protobuf:"bytes,2,opt,name=PrintFunc,proto3" json:"PrintFunc,omitempty"` + Allow []string `protobuf:"bytes,3,rep,name=Allow,proto3" json:"Allow,omitempty"` + Attests []*Attest `protobuf:"bytes,4,rep,name=Attests,proto3" json:"Attests,omitempty"` + BuildArgs map[string]string `protobuf:"bytes,5,rep,name=BuildArgs,proto3" json:"BuildArgs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + CacheFrom []*CacheOptionsEntry `protobuf:"bytes,6,rep,name=CacheFrom,proto3" json:"CacheFrom,omitempty"` + CacheTo []*CacheOptionsEntry `protobuf:"bytes,7,rep,name=CacheTo,proto3" json:"CacheTo,omitempty"` + CgroupParent string `protobuf:"bytes,8,opt,name=CgroupParent,proto3" json:"CgroupParent,omitempty"` + Exports []*ExportEntry `protobuf:"bytes,9,rep,name=Exports,proto3" json:"Exports,omitempty"` + ExtraHosts []string `protobuf:"bytes,10,rep,name=ExtraHosts,proto3" json:"ExtraHosts,omitempty"` + Labels map[string]string `protobuf:"bytes,11,rep,name=Labels,proto3" json:"Labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + NetworkMode string `protobuf:"bytes,12,opt,name=NetworkMode,proto3" json:"NetworkMode,omitempty"` + NoCacheFilter []string `protobuf:"bytes,13,rep,name=NoCacheFilter,proto3" json:"NoCacheFilter,omitempty"` + Platforms []string `protobuf:"bytes,14,rep,name=Platforms,proto3" json:"Platforms,omitempty"` + Secrets []*Secret `protobuf:"bytes,15,rep,name=Secrets,proto3" json:"Secrets,omitempty"` + ShmSize int64 `protobuf:"varint,16,opt,name=ShmSize,proto3" json:"ShmSize,omitempty"` + SSH []*SSH `protobuf:"bytes,17,rep,name=SSH,proto3" json:"SSH,omitempty"` + Tags []string `protobuf:"bytes,18,rep,name=Tags,proto3" json:"Tags,omitempty"` + Target string `protobuf:"bytes,19,opt,name=Target,proto3" json:"Target,omitempty"` + Ulimits *UlimitOpt `protobuf:"bytes,20,opt,name=Ulimits,proto3" json:"Ulimits,omitempty"` + Opts *CommonOptions `protobuf:"bytes,21,opt,name=Opts,proto3" json:"Opts,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -302,7 +371,7 @@ func (m *BuildOptions) Reset() { *m = BuildOptions{} } func (m *BuildOptions) String() string { return proto.CompactTextString(m) } func (*BuildOptions) ProtoMessage() {} func (*BuildOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_ed7f10298fa1d90f, []int{6} + return fileDescriptor_ed7f10298fa1d90f, []int{7} } func (m *BuildOptions) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BuildOptions.Unmarshal(m, b) @@ -322,18 +391,11 @@ func (m *BuildOptions) XXX_DiscardUnknown() { var xxx_messageInfo_BuildOptions proto.InternalMessageInfo -func (m *BuildOptions) GetContextPath() string { - if m != nil { - return m.ContextPath - } - return "" -} - -func (m *BuildOptions) GetDockerfileName() string { +func (m *BuildOptions) GetInputs() *Inputs { if m != nil { - return m.DockerfileName + return m.Inputs } - return "" + return nil } func (m *BuildOptions) GetPrintFunc() string { @@ -343,13 +405,6 @@ func (m *BuildOptions) GetPrintFunc() string { return "" } -func (m *BuildOptions) GetNamedContexts() map[string]string { - if m != nil { - return m.NamedContexts - } - return nil -} - func (m *BuildOptions) GetAllow() []string { if m != nil { return m.Allow @@ -496,7 +551,7 @@ func (m *ExportEntry) Reset() { *m = ExportEntry{} } func (m *ExportEntry) String() string { return proto.CompactTextString(m) } func (*ExportEntry) ProtoMessage() {} func (*ExportEntry) Descriptor() ([]byte, []int) { - return fileDescriptor_ed7f10298fa1d90f, []int{7} + return fileDescriptor_ed7f10298fa1d90f, []int{8} } func (m *ExportEntry) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ExportEntry.Unmarshal(m, b) @@ -549,7 +604,7 @@ func (m *CacheOptionsEntry) Reset() { *m = CacheOptionsEntry{} } func (m *CacheOptionsEntry) String() string { return proto.CompactTextString(m) } func (*CacheOptionsEntry) ProtoMessage() {} func (*CacheOptionsEntry) Descriptor() ([]byte, []int) { - return fileDescriptor_ed7f10298fa1d90f, []int{8} + return fileDescriptor_ed7f10298fa1d90f, []int{9} } func (m *CacheOptionsEntry) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CacheOptionsEntry.Unmarshal(m, b) @@ -596,7 +651,7 @@ func (m *Attest) Reset() { *m = Attest{} } func (m *Attest) String() string { return proto.CompactTextString(m) } func (*Attest) ProtoMessage() {} func (*Attest) Descriptor() ([]byte, []int) { - return fileDescriptor_ed7f10298fa1d90f, []int{9} + return fileDescriptor_ed7f10298fa1d90f, []int{10} } func (m *Attest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Attest.Unmarshal(m, b) @@ -649,7 +704,7 @@ func (m *SSH) Reset() { *m = SSH{} } func (m *SSH) String() string { return proto.CompactTextString(m) } func (*SSH) ProtoMessage() {} func (*SSH) Descriptor() ([]byte, []int) { - return fileDescriptor_ed7f10298fa1d90f, []int{10} + return fileDescriptor_ed7f10298fa1d90f, []int{11} } func (m *SSH) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SSH.Unmarshal(m, b) @@ -696,7 +751,7 @@ func (m *Secret) Reset() { *m = Secret{} } func (m *Secret) String() string { return proto.CompactTextString(m) } func (*Secret) ProtoMessage() {} func (*Secret) Descriptor() ([]byte, []int) { - return fileDescriptor_ed7f10298fa1d90f, []int{11} + return fileDescriptor_ed7f10298fa1d90f, []int{12} } func (m *Secret) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Secret.Unmarshal(m, b) @@ -737,6 +792,52 @@ func (m *Secret) GetEnv() string { return "" } +type NamedContext struct { + Path string `protobuf:"bytes,1,opt,name=Path,proto3" json:"Path,omitempty"` + Definition *pb.Definition `protobuf:"bytes,2,opt,name=Definition,proto3" json:"Definition,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *NamedContext) Reset() { *m = NamedContext{} } +func (m *NamedContext) String() string { return proto.CompactTextString(m) } +func (*NamedContext) ProtoMessage() {} +func (*NamedContext) Descriptor() ([]byte, []int) { + return fileDescriptor_ed7f10298fa1d90f, []int{13} +} +func (m *NamedContext) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_NamedContext.Unmarshal(m, b) +} +func (m *NamedContext) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_NamedContext.Marshal(b, m, deterministic) +} +func (m *NamedContext) XXX_Merge(src proto.Message) { + xxx_messageInfo_NamedContext.Merge(m, src) +} +func (m *NamedContext) XXX_Size() int { + return xxx_messageInfo_NamedContext.Size(m) +} +func (m *NamedContext) XXX_DiscardUnknown() { + xxx_messageInfo_NamedContext.DiscardUnknown(m) +} + +var xxx_messageInfo_NamedContext proto.InternalMessageInfo + +func (m *NamedContext) GetPath() string { + if m != nil { + return m.Path + } + return "" +} + +func (m *NamedContext) GetDefinition() *pb.Definition { + if m != nil { + return m.Definition + } + return nil +} + type UlimitOpt struct { Values map[string]*Ulimit `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -748,7 +849,7 @@ func (m *UlimitOpt) Reset() { *m = UlimitOpt{} } func (m *UlimitOpt) String() string { return proto.CompactTextString(m) } func (*UlimitOpt) ProtoMessage() {} func (*UlimitOpt) Descriptor() ([]byte, []int) { - return fileDescriptor_ed7f10298fa1d90f, []int{12} + return fileDescriptor_ed7f10298fa1d90f, []int{14} } func (m *UlimitOpt) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UlimitOpt.Unmarshal(m, b) @@ -788,7 +889,7 @@ func (m *Ulimit) Reset() { *m = Ulimit{} } func (m *Ulimit) String() string { return proto.CompactTextString(m) } func (*Ulimit) ProtoMessage() {} func (*Ulimit) Descriptor() ([]byte, []int) { - return fileDescriptor_ed7f10298fa1d90f, []int{13} + return fileDescriptor_ed7f10298fa1d90f, []int{15} } func (m *Ulimit) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Ulimit.Unmarshal(m, b) @@ -834,9 +935,14 @@ type CommonOptions struct { MetadataFile string `protobuf:"bytes,2,opt,name=MetadataFile,proto3" json:"MetadataFile,omitempty"` NoCache bool `protobuf:"varint,3,opt,name=NoCache,proto3" json:"NoCache,omitempty"` // string Progress: no progress view on server side - Pull bool `protobuf:"varint,4,opt,name=Pull,proto3" json:"Pull,omitempty"` - ExportPush bool `protobuf:"varint,5,opt,name=ExportPush,proto3" json:"ExportPush,omitempty"` - ExportLoad bool `protobuf:"varint,6,opt,name=ExportLoad,proto3" json:"ExportLoad,omitempty"` + Pull bool `protobuf:"varint,4,opt,name=Pull,proto3" json:"Pull,omitempty"` + ExportPush bool `protobuf:"varint,5,opt,name=ExportPush,proto3" json:"ExportPush,omitempty"` + ExportLoad bool `protobuf:"varint,6,opt,name=ExportLoad,proto3" json:"ExportLoad,omitempty"` + // TODO: we should remove Linked from the controllerapi, it's only used to + // produce a single warning. To allow this, we need to move the default + // export detection out from the controller server, as well as load the + // driver on the controller client. + Linked bool `protobuf:"varint,7,opt,name=Linked,proto3" json:"Linked,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -846,7 +952,7 @@ func (m *CommonOptions) Reset() { *m = CommonOptions{} } func (m *CommonOptions) String() string { return proto.CompactTextString(m) } func (*CommonOptions) ProtoMessage() {} func (*CommonOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_ed7f10298fa1d90f, []int{14} + return fileDescriptor_ed7f10298fa1d90f, []int{16} } func (m *CommonOptions) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CommonOptions.Unmarshal(m, b) @@ -908,6 +1014,13 @@ func (m *CommonOptions) GetExportLoad() bool { return false } +func (m *CommonOptions) GetLinked() bool { + if m != nil { + return m.Linked + } + return false +} + type BuildResponse struct { ExporterResponse map[string]string `protobuf:"bytes,1,rep,name=ExporterResponse,proto3" json:"ExporterResponse,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -919,7 +1032,7 @@ func (m *BuildResponse) Reset() { *m = BuildResponse{} } func (m *BuildResponse) String() string { return proto.CompactTextString(m) } func (*BuildResponse) ProtoMessage() {} func (*BuildResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ed7f10298fa1d90f, []int{15} + return fileDescriptor_ed7f10298fa1d90f, []int{17} } func (m *BuildResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BuildResponse.Unmarshal(m, b) @@ -957,7 +1070,7 @@ func (m *DisconnectRequest) Reset() { *m = DisconnectRequest{} } func (m *DisconnectRequest) String() string { return proto.CompactTextString(m) } func (*DisconnectRequest) ProtoMessage() {} func (*DisconnectRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_ed7f10298fa1d90f, []int{16} + return fileDescriptor_ed7f10298fa1d90f, []int{18} } func (m *DisconnectRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DisconnectRequest.Unmarshal(m, b) @@ -994,7 +1107,7 @@ func (m *DisconnectResponse) Reset() { *m = DisconnectResponse{} } func (m *DisconnectResponse) String() string { return proto.CompactTextString(m) } func (*DisconnectResponse) ProtoMessage() {} func (*DisconnectResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ed7f10298fa1d90f, []int{17} + return fileDescriptor_ed7f10298fa1d90f, []int{19} } func (m *DisconnectResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DisconnectResponse.Unmarshal(m, b) @@ -1025,7 +1138,7 @@ func (m *ListRequest) Reset() { *m = ListRequest{} } func (m *ListRequest) String() string { return proto.CompactTextString(m) } func (*ListRequest) ProtoMessage() {} func (*ListRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_ed7f10298fa1d90f, []int{18} + return fileDescriptor_ed7f10298fa1d90f, []int{20} } func (m *ListRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ListRequest.Unmarshal(m, b) @@ -1063,7 +1176,7 @@ func (m *ListResponse) Reset() { *m = ListResponse{} } func (m *ListResponse) String() string { return proto.CompactTextString(m) } func (*ListResponse) ProtoMessage() {} func (*ListResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ed7f10298fa1d90f, []int{19} + return fileDescriptor_ed7f10298fa1d90f, []int{21} } func (m *ListResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ListResponse.Unmarshal(m, b) @@ -1104,7 +1217,7 @@ func (m *InputMessage) Reset() { *m = InputMessage{} } func (m *InputMessage) String() string { return proto.CompactTextString(m) } func (*InputMessage) ProtoMessage() {} func (*InputMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_ed7f10298fa1d90f, []int{20} + return fileDescriptor_ed7f10298fa1d90f, []int{22} } func (m *InputMessage) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_InputMessage.Unmarshal(m, b) @@ -1178,7 +1291,7 @@ func (m *InputInitMessage) Reset() { *m = InputInitMessage{} } func (m *InputInitMessage) String() string { return proto.CompactTextString(m) } func (*InputInitMessage) ProtoMessage() {} func (*InputInitMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_ed7f10298fa1d90f, []int{21} + return fileDescriptor_ed7f10298fa1d90f, []int{23} } func (m *InputInitMessage) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_InputInitMessage.Unmarshal(m, b) @@ -1217,7 +1330,7 @@ func (m *DataMessage) Reset() { *m = DataMessage{} } func (m *DataMessage) String() string { return proto.CompactTextString(m) } func (*DataMessage) ProtoMessage() {} func (*DataMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_ed7f10298fa1d90f, []int{22} + return fileDescriptor_ed7f10298fa1d90f, []int{24} } func (m *DataMessage) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DataMessage.Unmarshal(m, b) @@ -1261,7 +1374,7 @@ func (m *InputResponse) Reset() { *m = InputResponse{} } func (m *InputResponse) String() string { return proto.CompactTextString(m) } func (*InputResponse) ProtoMessage() {} func (*InputResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ed7f10298fa1d90f, []int{23} + return fileDescriptor_ed7f10298fa1d90f, []int{25} } func (m *InputResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_InputResponse.Unmarshal(m, b) @@ -1297,7 +1410,7 @@ func (m *Message) Reset() { *m = Message{} } func (m *Message) String() string { return proto.CompactTextString(m) } func (*Message) ProtoMessage() {} func (*Message) Descriptor() ([]byte, []int) { - return fileDescriptor_ed7f10298fa1d90f, []int{24} + return fileDescriptor_ed7f10298fa1d90f, []int{26} } func (m *Message) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Message.Unmarshal(m, b) @@ -1399,7 +1512,7 @@ func (m *InitMessage) Reset() { *m = InitMessage{} } func (m *InitMessage) String() string { return proto.CompactTextString(m) } func (*InitMessage) ProtoMessage() {} func (*InitMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_ed7f10298fa1d90f, []int{25} + return fileDescriptor_ed7f10298fa1d90f, []int{27} } func (m *InitMessage) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_InitMessage.Unmarshal(m, b) @@ -1459,7 +1572,7 @@ func (m *InvokeConfig) Reset() { *m = InvokeConfig{} } func (m *InvokeConfig) String() string { return proto.CompactTextString(m) } func (*InvokeConfig) ProtoMessage() {} func (*InvokeConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_ed7f10298fa1d90f, []int{26} + return fileDescriptor_ed7f10298fa1d90f, []int{28} } func (m *InvokeConfig) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_InvokeConfig.Unmarshal(m, b) @@ -1555,7 +1668,7 @@ func (m *FdMessage) Reset() { *m = FdMessage{} } func (m *FdMessage) String() string { return proto.CompactTextString(m) } func (*FdMessage) ProtoMessage() {} func (*FdMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_ed7f10298fa1d90f, []int{27} + return fileDescriptor_ed7f10298fa1d90f, []int{29} } func (m *FdMessage) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FdMessage.Unmarshal(m, b) @@ -1608,7 +1721,7 @@ func (m *ResizeMessage) Reset() { *m = ResizeMessage{} } func (m *ResizeMessage) String() string { return proto.CompactTextString(m) } func (*ResizeMessage) ProtoMessage() {} func (*ResizeMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_ed7f10298fa1d90f, []int{28} + return fileDescriptor_ed7f10298fa1d90f, []int{30} } func (m *ResizeMessage) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ResizeMessage.Unmarshal(m, b) @@ -1655,7 +1768,7 @@ func (m *SignalMessage) Reset() { *m = SignalMessage{} } func (m *SignalMessage) String() string { return proto.CompactTextString(m) } func (*SignalMessage) ProtoMessage() {} func (*SignalMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_ed7f10298fa1d90f, []int{29} + return fileDescriptor_ed7f10298fa1d90f, []int{31} } func (m *SignalMessage) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalMessage.Unmarshal(m, b) @@ -1693,7 +1806,7 @@ func (m *StatusRequest) Reset() { *m = StatusRequest{} } func (m *StatusRequest) String() string { return proto.CompactTextString(m) } func (*StatusRequest) ProtoMessage() {} func (*StatusRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_ed7f10298fa1d90f, []int{30} + return fileDescriptor_ed7f10298fa1d90f, []int{32} } func (m *StatusRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_StatusRequest.Unmarshal(m, b) @@ -1734,7 +1847,7 @@ func (m *StatusResponse) Reset() { *m = StatusResponse{} } func (m *StatusResponse) String() string { return proto.CompactTextString(m) } func (*StatusResponse) ProtoMessage() {} func (*StatusResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ed7f10298fa1d90f, []int{31} + return fileDescriptor_ed7f10298fa1d90f, []int{33} } func (m *StatusResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_StatusResponse.Unmarshal(m, b) @@ -1792,7 +1905,7 @@ func (m *InfoRequest) Reset() { *m = InfoRequest{} } func (m *InfoRequest) String() string { return proto.CompactTextString(m) } func (*InfoRequest) ProtoMessage() {} func (*InfoRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_ed7f10298fa1d90f, []int{32} + return fileDescriptor_ed7f10298fa1d90f, []int{34} } func (m *InfoRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_InfoRequest.Unmarshal(m, b) @@ -1823,7 +1936,7 @@ func (m *InfoResponse) Reset() { *m = InfoResponse{} } func (m *InfoResponse) String() string { return proto.CompactTextString(m) } func (*InfoResponse) ProtoMessage() {} func (*InfoResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ed7f10298fa1d90f, []int{33} + return fileDescriptor_ed7f10298fa1d90f, []int{35} } func (m *InfoResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_InfoResponse.Unmarshal(m, b) @@ -1863,7 +1976,7 @@ func (m *BuildxVersion) Reset() { *m = BuildxVersion{} } func (m *BuildxVersion) String() string { return proto.CompactTextString(m) } func (*BuildxVersion) ProtoMessage() {} func (*BuildxVersion) Descriptor() ([]byte, []int) { - return fileDescriptor_ed7f10298fa1d90f, []int{34} + return fileDescriptor_ed7f10298fa1d90f, []int{36} } func (m *BuildxVersion) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BuildxVersion.Unmarshal(m, b) @@ -1911,10 +2024,11 @@ func init() { proto.RegisterType((*DisconnectProcessRequest)(nil), "buildx.controller.v1.DisconnectProcessRequest") proto.RegisterType((*DisconnectProcessResponse)(nil), "buildx.controller.v1.DisconnectProcessResponse") proto.RegisterType((*BuildRequest)(nil), "buildx.controller.v1.BuildRequest") + proto.RegisterType((*Inputs)(nil), "buildx.controller.v1.Inputs") + proto.RegisterMapType((map[string]*NamedContext)(nil), "buildx.controller.v1.Inputs.NamedContextsEntry") proto.RegisterType((*BuildOptions)(nil), "buildx.controller.v1.BuildOptions") proto.RegisterMapType((map[string]string)(nil), "buildx.controller.v1.BuildOptions.BuildArgsEntry") proto.RegisterMapType((map[string]string)(nil), "buildx.controller.v1.BuildOptions.LabelsEntry") - proto.RegisterMapType((map[string]string)(nil), "buildx.controller.v1.BuildOptions.NamedContextsEntry") proto.RegisterType((*ExportEntry)(nil), "buildx.controller.v1.ExportEntry") proto.RegisterMapType((map[string]string)(nil), "buildx.controller.v1.ExportEntry.AttrsEntry") proto.RegisterType((*CacheOptionsEntry)(nil), "buildx.controller.v1.CacheOptionsEntry") @@ -1922,6 +2036,7 @@ func init() { proto.RegisterType((*Attest)(nil), "buildx.controller.v1.Attest") proto.RegisterType((*SSH)(nil), "buildx.controller.v1.SSH") proto.RegisterType((*Secret)(nil), "buildx.controller.v1.Secret") + proto.RegisterType((*NamedContext)(nil), "buildx.controller.v1.NamedContext") proto.RegisterType((*UlimitOpt)(nil), "buildx.controller.v1.UlimitOpt") proto.RegisterMapType((map[string]*Ulimit)(nil), "buildx.controller.v1.UlimitOpt.ValuesEntry") proto.RegisterType((*Ulimit)(nil), "buildx.controller.v1.Ulimit") @@ -1952,119 +2067,127 @@ func init() { func init() { proto.RegisterFile("controller.proto", fileDescriptor_ed7f10298fa1d90f) } var fileDescriptor_ed7f10298fa1d90f = []byte{ - // 1790 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x58, 0xcd, 0x6e, 0x23, 0xc7, - 0x11, 0xce, 0x90, 0x14, 0x7f, 0x8a, 0xa2, 0xac, 0xed, 0x68, 0x8d, 0x31, 0xed, 0x78, 0xb5, 0xb3, - 0x1b, 0x87, 0xc8, 0x06, 0x94, 0x2d, 0xc7, 0x59, 0xaf, 0x77, 0x03, 0x44, 0xa2, 0x44, 0x48, 0xc6, - 0xea, 0x07, 0x4d, 0xed, 0x1a, 0x49, 0x80, 0x18, 0x43, 0xb2, 0x45, 0x0d, 0x38, 0x9c, 0x66, 0xa6, - 0x9b, 0x94, 0x98, 0x53, 0x2e, 0xbe, 0xe6, 0x3d, 0x82, 0x5c, 0x73, 0xcb, 0x29, 0xef, 0x90, 0x07, - 0xc9, 0x23, 0x04, 0x5d, 0xdd, 0x33, 0x9c, 0x11, 0x39, 0x94, 0x14, 0x9f, 0xd8, 0x55, 0xf3, 0x55, - 0x55, 0x57, 0x75, 0xfd, 0x74, 0x13, 0x36, 0x7b, 0x3c, 0x90, 0x21, 0xf7, 0x7d, 0x16, 0x36, 0xc7, - 0x21, 0x97, 0x9c, 0x6c, 0x75, 0x27, 0x9e, 0xdf, 0xbf, 0x69, 0x26, 0x3e, 0x4c, 0xbf, 0xa8, 0xbf, - 0x1e, 0x78, 0xf2, 0x6a, 0xd2, 0x6d, 0xf6, 0xf8, 0x68, 0x67, 0xc4, 0xbb, 0xb3, 0x1d, 0x44, 0x0d, - 0x3d, 0xb9, 0xe3, 0x8e, 0xbd, 0x1d, 0xc1, 0xc2, 0xa9, 0xd7, 0x63, 0x62, 0xc7, 0x08, 0x45, 0xbf, - 0x5a, 0xa5, 0xd3, 0x80, 0xad, 0xb7, 0x9e, 0x90, 0xe7, 0x21, 0xef, 0x31, 0x21, 0x98, 0xa0, 0xec, - 0xcf, 0x13, 0x26, 0x24, 0xd9, 0x84, 0x3c, 0x65, 0x97, 0xb6, 0xb5, 0x6d, 0x35, 0x2a, 0x54, 0x2d, - 0x9d, 0x73, 0x78, 0x7c, 0x0b, 0x29, 0xc6, 0x3c, 0x10, 0x8c, 0xbc, 0x84, 0xb5, 0xe3, 0xe0, 0x92, - 0x0b, 0xdb, 0xda, 0xce, 0x37, 0xaa, 0xbb, 0x4f, 0x9b, 0xcb, 0x76, 0xd9, 0x34, 0x72, 0x0a, 0x49, - 0x35, 0xde, 0x11, 0x50, 0x4d, 0x70, 0xc9, 0x27, 0x50, 0x89, 0xc8, 0x03, 0x63, 0x78, 0xce, 0x20, - 0x6d, 0x58, 0x3f, 0x0e, 0xa6, 0x7c, 0xc8, 0x5a, 0x3c, 0xb8, 0xf4, 0x06, 0x76, 0x6e, 0xdb, 0x6a, - 0x54, 0x77, 0x9d, 0xe5, 0xc6, 0x92, 0x48, 0x9a, 0x92, 0x73, 0xbe, 0x05, 0xfb, 0xc0, 0x13, 0x3d, - 0x1e, 0x04, 0xac, 0x17, 0x39, 0x93, 0xe9, 0x74, 0x7a, 0x4f, 0xb9, 0x5b, 0x7b, 0x72, 0x3e, 0x86, - 0x8f, 0x96, 0xe8, 0xd2, 0x61, 0x71, 0xfe, 0x04, 0xeb, 0xfb, 0x6a, 0x6f, 0xd9, 0xca, 0xdf, 0x40, - 0xe9, 0x6c, 0x2c, 0x3d, 0x1e, 0x88, 0xd5, 0xde, 0xa0, 0x1a, 0x83, 0xa4, 0x91, 0x88, 0xf3, 0x03, - 0x18, 0x03, 0x86, 0x41, 0xb6, 0xa1, 0xda, 0xe2, 0x81, 0x64, 0x37, 0xf2, 0xdc, 0x95, 0x57, 0xc6, - 0x50, 0x92, 0x45, 0x3e, 0x83, 0x8d, 0x03, 0xde, 0x1b, 0xb2, 0xf0, 0xd2, 0xf3, 0xd9, 0xa9, 0x3b, - 0x62, 0xc6, 0xa5, 0x5b, 0x5c, 0xed, 0xb5, 0x17, 0xc8, 0xf6, 0x24, 0xe8, 0xd9, 0xf9, 0xc8, 0x6b, - 0xc3, 0x20, 0x7f, 0x84, 0x9a, 0x42, 0xf5, 0x8d, 0x66, 0x61, 0x17, 0xf0, 0xdc, 0xbf, 0xba, 0x7b, - 0xf3, 0xcd, 0x94, 0xdc, 0x61, 0x20, 0xc3, 0x19, 0x4d, 0xeb, 0x22, 0x5b, 0xb0, 0xb6, 0xe7, 0xfb, - 0xfc, 0xda, 0x5e, 0xdb, 0xce, 0x37, 0x2a, 0x54, 0x13, 0xe4, 0x37, 0x50, 0xda, 0x93, 0x92, 0x09, - 0x29, 0xec, 0x22, 0x1a, 0xfb, 0x64, 0xb9, 0x31, 0x0d, 0xa2, 0x11, 0x98, 0x9c, 0x41, 0x05, 0xed, - 0xef, 0x85, 0x03, 0x61, 0x97, 0x50, 0xf2, 0x8b, 0x7b, 0x6c, 0x33, 0x96, 0xd1, 0x5b, 0x9c, 0xeb, - 0x20, 0x87, 0x50, 0x69, 0xb9, 0xbd, 0x2b, 0xd6, 0x0e, 0xf9, 0xc8, 0x2e, 0xa3, 0xc2, 0x5f, 0x2c, - 0x57, 0x88, 0x30, 0xa3, 0xd0, 0xa8, 0x89, 0x25, 0xc9, 0x1e, 0x94, 0x90, 0xb8, 0xe0, 0x76, 0xe5, - 0x61, 0x4a, 0x22, 0x39, 0xe2, 0xc0, 0x7a, 0x6b, 0x10, 0xf2, 0xc9, 0xf8, 0xdc, 0x0d, 0x59, 0x20, - 0x6d, 0xc0, 0x63, 0x4a, 0xf1, 0xc8, 0x6b, 0x28, 0x1d, 0xde, 0x8c, 0x79, 0x28, 0x85, 0x5d, 0x5d, - 0x55, 0x9b, 0x1a, 0x64, 0x0c, 0x18, 0x09, 0xf2, 0x29, 0xc0, 0xe1, 0x8d, 0x0c, 0xdd, 0x23, 0xae, - 0xc2, 0xbe, 0x8e, 0xc7, 0x91, 0xe0, 0x90, 0x36, 0x14, 0xdf, 0xba, 0x5d, 0xe6, 0x0b, 0xbb, 0x86, - 0xba, 0x9b, 0xf7, 0x08, 0xac, 0x16, 0xd0, 0x86, 0x8c, 0xb4, 0x4a, 0xdb, 0x53, 0x26, 0xaf, 0x79, - 0x38, 0x3c, 0xe1, 0x7d, 0x66, 0x6f, 0xe8, 0xb4, 0x4d, 0xb0, 0xc8, 0x73, 0xa8, 0x9d, 0x72, 0x1d, - 0x3c, 0xcf, 0x97, 0x2c, 0xb4, 0x3f, 0xc0, 0xcd, 0xa4, 0x99, 0x98, 0xb4, 0xbe, 0x2b, 0x2f, 0x79, - 0x38, 0x12, 0xf6, 0x26, 0x22, 0xe6, 0x0c, 0x95, 0x41, 0x1d, 0xd6, 0x0b, 0x99, 0x14, 0xf6, 0xa3, - 0x55, 0x19, 0xa4, 0x41, 0x34, 0x02, 0x13, 0x1b, 0x4a, 0x9d, 0xab, 0x51, 0xc7, 0xfb, 0x0b, 0xb3, - 0xc9, 0xb6, 0xd5, 0xc8, 0xd3, 0x88, 0x24, 0x2f, 0x20, 0xdf, 0xe9, 0x1c, 0xd9, 0x3f, 0x45, 0x6d, - 0x1f, 0x65, 0x68, 0xeb, 0x1c, 0x51, 0x85, 0x22, 0x04, 0x0a, 0x17, 0xee, 0x40, 0xd8, 0x5b, 0xb8, - 0x2f, 0x5c, 0x93, 0x0f, 0xa1, 0x78, 0xe1, 0x86, 0x03, 0x26, 0xed, 0xc7, 0xe8, 0xb3, 0xa1, 0xc8, - 0x2b, 0x28, 0xbd, 0xf3, 0xbd, 0x91, 0x27, 0x85, 0xfd, 0x21, 0xb6, 0x85, 0x27, 0xcb, 0x95, 0x6b, - 0xd0, 0xd9, 0x58, 0xd2, 0x08, 0x4f, 0x5e, 0x42, 0xe1, 0x6c, 0x2c, 0x85, 0x6d, 0xa3, 0xdc, 0xb3, - 0x8c, 0xa4, 0xe2, 0xa3, 0x11, 0x0f, 0xa2, 0x7e, 0x82, 0x02, 0xf5, 0xdf, 0x01, 0x59, 0xac, 0x4d, - 0xd5, 0xb2, 0x86, 0x6c, 0x16, 0xb5, 0xac, 0x21, 0x9b, 0xa9, 0xf2, 0x9c, 0xba, 0xfe, 0x24, 0x6a, - 0x1c, 0x9a, 0xf8, 0x26, 0xf7, 0xb5, 0x55, 0x7f, 0x03, 0x1b, 0xe9, 0xb2, 0x79, 0x90, 0xf4, 0x2b, - 0xa8, 0x26, 0x72, 0xe3, 0x21, 0xa2, 0xce, 0xbf, 0x2d, 0xa8, 0x26, 0x12, 0x18, 0x43, 0x3d, 0x1b, - 0x33, 0x23, 0x8c, 0x6b, 0xb2, 0x0f, 0x6b, 0x7b, 0x52, 0x86, 0xaa, 0xcf, 0xaa, 0xd3, 0xfa, 0xd5, - 0x9d, 0x65, 0xd0, 0x44, 0xb8, 0x4e, 0x54, 0x2d, 0xaa, 0xf2, 0xf4, 0x80, 0x09, 0xe9, 0x05, 0xae, - 0x0a, 0x9c, 0x69, 0x8b, 0x49, 0x56, 0xfd, 0x6b, 0x80, 0xb9, 0xd8, 0x83, 0x7c, 0xf8, 0x87, 0x05, - 0x8f, 0x16, 0x6a, 0x7d, 0xa9, 0x27, 0x47, 0x69, 0x4f, 0x76, 0xef, 0xd9, 0x37, 0x16, 0xfd, 0xf9, - 0x11, 0xbb, 0x3d, 0x85, 0xa2, 0x6e, 0xb0, 0x4b, 0x77, 0x58, 0x87, 0xf2, 0x81, 0x27, 0xdc, 0xae, - 0xcf, 0xfa, 0x28, 0x5a, 0xa6, 0x31, 0x8d, 0xdd, 0x1d, 0x77, 0xaf, 0xa3, 0xa7, 0x09, 0x47, 0x57, - 0x12, 0xd9, 0x80, 0x5c, 0x3c, 0xf8, 0x73, 0xc7, 0x07, 0x0a, 0xac, 0xa6, 0x96, 0x76, 0xb5, 0x42, - 0x35, 0xe1, 0xb4, 0xa1, 0xa8, 0x6b, 0x73, 0x01, 0x5f, 0x87, 0x72, 0xdb, 0xf3, 0x19, 0x0e, 0x3f, - 0xbd, 0xe7, 0x98, 0x56, 0xee, 0x1d, 0x06, 0x53, 0x63, 0x56, 0x2d, 0x9d, 0xbf, 0x5b, 0x50, 0x89, - 0x2b, 0x88, 0xb4, 0xa0, 0x88, 0xfe, 0x45, 0x97, 0x98, 0x17, 0x77, 0x94, 0x5c, 0xf3, 0x3d, 0xa2, - 0x4d, 0x27, 0xd3, 0xa2, 0xf5, 0xef, 0xa0, 0x9a, 0x60, 0x2f, 0x09, 0xe9, 0x6e, 0x32, 0xa4, 0x99, - 0x2d, 0x48, 0x1b, 0x49, 0x06, 0xfc, 0x00, 0x8a, 0x9a, 0xa9, 0x02, 0x8e, 0x73, 0xdb, 0x04, 0x1c, - 0xa7, 0x35, 0x81, 0xc2, 0x91, 0x1b, 0xea, 0x60, 0xe7, 0x29, 0xae, 0x15, 0xaf, 0xc3, 0x2f, 0x25, - 0x3a, 0x9c, 0xa7, 0xb8, 0x76, 0xfe, 0x65, 0x41, 0x2d, 0x55, 0xfb, 0xaa, 0xb9, 0x61, 0xcd, 0xb2, - 0xd0, 0x28, 0x8c, 0x48, 0x35, 0x5d, 0x4e, 0x98, 0x74, 0xfb, 0xae, 0x74, 0x55, 0x0c, 0x4d, 0x3c, - 0x53, 0x3c, 0x25, 0x6d, 0x3a, 0x30, 0x9a, 0x29, 0xd3, 0x88, 0x54, 0xd6, 0xcf, 0x27, 0xbe, 0x6f, - 0x17, 0x90, 0x8d, 0x6b, 0x3d, 0x4e, 0x54, 0x7d, 0x9d, 0x4f, 0xc4, 0x95, 0xbd, 0x86, 0x5f, 0x12, - 0x9c, 0xf9, 0xf7, 0xb7, 0xdc, 0xed, 0xdb, 0xc5, 0xe4, 0x77, 0xc5, 0xc1, 0xdd, 0x9b, 0xfb, 0x94, - 0xb9, 0x77, 0x32, 0xd8, 0xd4, 0xdf, 0x59, 0x18, 0xf1, 0xcc, 0xe9, 0xbd, 0x5a, 0x31, 0x8a, 0x22, - 0x68, 0xf3, 0xb6, 0xac, 0x3e, 0xcb, 0x05, 0x95, 0xf5, 0x16, 0x3c, 0x5e, 0x0a, 0x7d, 0x50, 0xc9, - 0xfc, 0x1c, 0x1e, 0xcd, 0x6f, 0x8a, 0xd9, 0x77, 0xec, 0x2d, 0x20, 0x49, 0x98, 0xb9, 0x49, 0x3e, - 0x81, 0xaa, 0xba, 0x79, 0x67, 0x8b, 0x39, 0xb0, 0xae, 0x01, 0x26, 0x32, 0x04, 0x0a, 0x43, 0x36, - 0xd3, 0xb9, 0x5c, 0xa1, 0xb8, 0x76, 0xfe, 0x66, 0xa9, 0x0b, 0xf4, 0x78, 0x22, 0x4f, 0x98, 0x10, - 0xee, 0x80, 0x91, 0x37, 0x50, 0x38, 0x0e, 0x3c, 0x89, 0x7a, 0xaa, 0xbb, 0x9f, 0x65, 0x5d, 0xa4, - 0xc7, 0x13, 0xa9, 0x60, 0x46, 0xea, 0xe8, 0x27, 0x14, 0xa5, 0xd4, 0xa4, 0x39, 0x70, 0xa5, 0x6b, - 0x32, 0x39, 0xe3, 0x5e, 0xa1, 0x10, 0x09, 0x41, 0x45, 0xee, 0x97, 0xd4, 0x6b, 0x61, 0x3c, 0x91, - 0xce, 0x73, 0xd8, 0xbc, 0xad, 0x7d, 0x89, 0x6b, 0x5f, 0x42, 0x35, 0xa1, 0x05, 0xeb, 0xf8, 0xac, - 0x8d, 0x80, 0x32, 0x55, 0x4b, 0xe5, 0x6b, 0xbc, 0x91, 0x75, 0x6d, 0xc3, 0xf9, 0x00, 0x6a, 0xa8, - 0x3a, 0x8e, 0xe0, 0x5f, 0x73, 0x50, 0x8a, 0x54, 0xbc, 0x4c, 0xf9, 0xfd, 0x34, 0xcb, 0xef, 0x45, - 0x97, 0xbf, 0x82, 0x42, 0x5c, 0x0b, 0x99, 0x43, 0xb9, 0xdd, 0x4f, 0x88, 0x61, 0x99, 0xfc, 0x16, - 0x8a, 0x94, 0x09, 0x75, 0x81, 0xc8, 0xaf, 0x9a, 0xca, 0x1a, 0x33, 0x17, 0x36, 0x42, 0x4a, 0xbc, - 0xe3, 0x0d, 0x02, 0x57, 0x57, 0x53, 0xa6, 0xb8, 0xc6, 0x24, 0xc4, 0x35, 0x63, 0x1e, 0xee, 0x1f, - 0x2c, 0xa8, 0xae, 0x0c, 0xf5, 0xea, 0xb7, 0xce, 0xc2, 0xfb, 0x2b, 0xff, 0x7f, 0xbe, 0xbf, 0xfe, - 0x63, 0xa5, 0x15, 0x61, 0xe1, 0xab, 0x7a, 0x1a, 0x73, 0x2f, 0x90, 0x26, 0x65, 0x13, 0x1c, 0xb5, - 0xd1, 0xd6, 0xa8, 0x6f, 0x86, 0x80, 0x5a, 0xce, 0x9b, 0x79, 0xde, 0x34, 0x73, 0x95, 0x04, 0xef, - 0x04, 0x0b, 0x31, 0x44, 0x15, 0x8a, 0x6b, 0x75, 0xbd, 0x3a, 0xe5, 0xc8, 0xd5, 0xcd, 0xc6, 0x50, - 0xa8, 0xef, 0x5a, 0x77, 0x18, 0xa5, 0xef, 0x1a, 0xa7, 0xd2, 0x29, 0x57, 0xbc, 0x12, 0x02, 0x35, - 0xa1, 0x70, 0x17, 0x72, 0x66, 0x97, 0x75, 0xaa, 0x5d, 0xc8, 0x99, 0x1a, 0x30, 0x94, 0xfb, 0x7e, - 0xd7, 0xed, 0x0d, 0xed, 0x8a, 0x9e, 0x6c, 0x11, 0xed, 0xec, 0x41, 0x25, 0x3e, 0x7a, 0x35, 0x99, - 0xda, 0x7d, 0x0c, 0x6d, 0x8d, 0xe6, 0xda, 0xfd, 0x28, 0x6b, 0x73, 0x8b, 0x59, 0x9b, 0x4f, 0x64, - 0xed, 0x4b, 0xa8, 0xa5, 0x92, 0x40, 0x81, 0x28, 0xbf, 0x16, 0x46, 0x11, 0xae, 0x15, 0xaf, 0xc5, - 0x7d, 0xfd, 0x60, 0xac, 0x51, 0x5c, 0x3b, 0xcf, 0xa0, 0x96, 0x3a, 0xfe, 0x65, 0x53, 0xc2, 0x79, - 0x0a, 0xb5, 0x8e, 0x74, 0xe5, 0x64, 0xc5, 0x0b, 0xff, 0xbf, 0x16, 0x6c, 0x44, 0x18, 0xd3, 0x49, - 0x7e, 0x0d, 0xe5, 0x29, 0x0b, 0x25, 0xbb, 0x89, 0x27, 0xa3, 0xdd, 0x1c, 0xf1, 0xee, 0xac, 0x19, - 0xfd, 0xc7, 0xa0, 0x4e, 0xfb, 0x3d, 0x22, 0x68, 0x8c, 0x24, 0xdf, 0x40, 0x59, 0xa0, 0x1e, 0x16, - 0xdd, 0x53, 0x3e, 0xcd, 0x92, 0x32, 0xf6, 0x62, 0x3c, 0xd9, 0x81, 0x82, 0xcf, 0x07, 0x02, 0x4f, - 0xb7, 0xba, 0xfb, 0x71, 0x96, 0xdc, 0x5b, 0x3e, 0xa0, 0x08, 0x24, 0xaf, 0xa1, 0x7c, 0xed, 0x86, - 0x81, 0x17, 0x0c, 0xa2, 0x97, 0xe8, 0x93, 0x2c, 0xa1, 0xef, 0x34, 0x8e, 0xc6, 0x02, 0x4e, 0x4d, - 0x15, 0xc5, 0x25, 0x37, 0x31, 0x71, 0x7e, 0xaf, 0x72, 0x53, 0x91, 0xc6, 0xfd, 0x63, 0xa8, 0xe9, - 0xfc, 0x7e, 0xcf, 0x42, 0xa1, 0x6e, 0x7d, 0xd6, 0xaa, 0x1a, 0xdc, 0x4f, 0x42, 0x69, 0x5a, 0xd2, - 0xf9, 0xde, 0x8c, 0xaf, 0x88, 0xa1, 0xc6, 0xe7, 0xd8, 0xed, 0x0d, 0xdd, 0x41, 0x74, 0x4e, 0x11, - 0xa9, 0xbe, 0x4c, 0x8d, 0x3d, 0x5d, 0x86, 0x11, 0xa9, 0x32, 0x30, 0x64, 0x53, 0x4f, 0xcc, 0x2f, - 0xa0, 0x31, 0xbd, 0xfb, 0xcf, 0x22, 0x40, 0x2b, 0xde, 0x0f, 0x39, 0x87, 0x35, 0xb4, 0x47, 0x9c, - 0x95, 0xc3, 0x10, 0xfd, 0xae, 0x3f, 0xbb, 0xc7, 0xc0, 0x24, 0xef, 0xa0, 0xa8, 0x4f, 0x8b, 0x64, - 0xf5, 0xa0, 0x64, 0x7e, 0xd5, 0x9f, 0xaf, 0x06, 0x69, 0xa5, 0x9f, 0x5b, 0x84, 0x9a, 0x0e, 0x45, - 0x9c, 0x15, 0x23, 0xc8, 0x64, 0x76, 0xd6, 0x46, 0x53, 0xdd, 0xbe, 0x61, 0x91, 0x6f, 0xa1, 0xa8, - 0x7b, 0x0c, 0xf9, 0xd9, 0x72, 0x81, 0x48, 0xdf, 0xea, 0xcf, 0x0d, 0xeb, 0x73, 0x8b, 0x9c, 0x40, - 0x41, 0x0d, 0x57, 0x92, 0x31, 0x29, 0x12, 0x93, 0xb9, 0xee, 0xac, 0x82, 0x98, 0x28, 0x7e, 0x0f, - 0x30, 0x1f, 0xf1, 0x24, 0xe3, 0xdd, 0xbf, 0x70, 0x57, 0xa8, 0x37, 0xee, 0x06, 0x1a, 0x03, 0x27, - 0x6a, 0xbe, 0x5d, 0x72, 0x92, 0x39, 0xd9, 0xe2, 0x74, 0xaf, 0x3b, 0xab, 0x20, 0x46, 0xdd, 0x15, - 0xd4, 0x52, 0x7f, 0xfb, 0x91, 0x5f, 0x66, 0x3b, 0x79, 0xfb, 0x5f, 0xc4, 0xfa, 0x8b, 0x7b, 0x61, - 0x8d, 0x25, 0x99, 0xbc, 0x23, 0x99, 0xcf, 0xa4, 0x79, 0x97, 0xdf, 0xe9, 0xbf, 0xf0, 0xea, 0x3b, - 0xf7, 0xc6, 0x6b, 0xab, 0xfb, 0x85, 0x3f, 0xe4, 0xc6, 0xdd, 0x6e, 0x11, 0xff, 0x0d, 0xfd, 0xf2, - 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x41, 0x5d, 0x93, 0xf2, 0x74, 0x15, 0x00, 0x00, + // 1913 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x58, 0xcd, 0x72, 0x1b, 0xb9, + 0x11, 0xce, 0x90, 0x14, 0x7f, 0x9a, 0xa2, 0x56, 0x46, 0xe4, 0xd4, 0x2c, 0xd7, 0x59, 0xcb, 0x63, + 0x67, 0xa3, 0x5a, 0x6f, 0x91, 0xbb, 0xda, 0x4d, 0x6c, 0xaf, 0x9d, 0x83, 0xfe, 0x58, 0xd2, 0x96, + 0xfe, 0x0a, 0xb2, 0xbd, 0x95, 0x1c, 0xb2, 0x35, 0x24, 0x41, 0x6a, 0x8a, 0xc3, 0xc1, 0x64, 0x00, + 0x52, 0x52, 0x4e, 0xb9, 0xe4, 0x9a, 0xf7, 0x48, 0xe5, 0x9a, 0x5b, 0x4e, 0x79, 0x85, 0x24, 0x0f, + 0x92, 0x6b, 0x6e, 0x29, 0x34, 0x30, 0xe4, 0x8c, 0xc8, 0x19, 0xc9, 0xc9, 0x89, 0x40, 0xcf, 0xf7, + 0x35, 0xd0, 0x8d, 0x46, 0x77, 0x83, 0xb0, 0xde, 0xe3, 0x81, 0x8c, 0xb8, 0xef, 0xb3, 0xa8, 0x15, + 0x46, 0x5c, 0x72, 0xb2, 0xd1, 0x9d, 0x78, 0x7e, 0xff, 0xba, 0x95, 0xf8, 0x30, 0xfd, 0xaa, 0xf9, + 0x7a, 0xe8, 0xc9, 0xcb, 0x49, 0xb7, 0xd5, 0xe3, 0xe3, 0xf6, 0x98, 0x77, 0x6f, 0xda, 0x88, 0x1a, + 0x79, 0xb2, 0xed, 0x86, 0x5e, 0x5b, 0xb0, 0x68, 0xea, 0xf5, 0x98, 0x68, 0x1b, 0x52, 0xfc, 0xab, + 0x55, 0x36, 0xbf, 0xc8, 0x24, 0x0b, 0xee, 0x4f, 0x59, 0xd4, 0x0e, 0xbb, 0x6d, 0x1e, 0x0a, 0x8d, + 0x76, 0xb6, 0x60, 0xe3, 0xd8, 0x13, 0xf2, 0x3c, 0xe2, 0x3d, 0x26, 0x04, 0x13, 0x94, 0xfd, 0x6e, + 0xc2, 0x84, 0x24, 0xeb, 0x50, 0xa4, 0x6c, 0x60, 0x5b, 0x9b, 0xd6, 0x56, 0x8d, 0xaa, 0xa1, 0x73, + 0x0e, 0x0f, 0x6f, 0x21, 0x45, 0xc8, 0x03, 0xc1, 0xc8, 0x0b, 0x58, 0x39, 0x0a, 0x06, 0x5c, 0xd8, + 0xd6, 0x66, 0x71, 0xab, 0xbe, 0xfd, 0xa4, 0xb5, 0xcc, 0xa6, 0x96, 0xe1, 0x29, 0x24, 0xd5, 0x78, + 0x47, 0x40, 0x3d, 0x21, 0x25, 0x8f, 0xa0, 0x16, 0x4f, 0xf7, 0xcd, 0xc2, 0x73, 0x01, 0xe9, 0xc0, + 0xea, 0x51, 0x30, 0xe5, 0x23, 0xb6, 0xc7, 0x83, 0x81, 0x37, 0xb4, 0x0b, 0x9b, 0xd6, 0x56, 0x7d, + 0xdb, 0x59, 0xbe, 0x58, 0x12, 0x49, 0x53, 0x3c, 0xe7, 0x3b, 0xb0, 0xf7, 0x3d, 0xd1, 0xe3, 0x41, + 0xc0, 0x7a, 0xb1, 0x31, 0x99, 0x46, 0xa7, 0xf7, 0x54, 0xb8, 0xb5, 0x27, 0xe7, 0x13, 0xf8, 0x78, + 0x89, 0x2e, 0xed, 0x16, 0xe7, 0xb7, 0xb0, 0xba, 0xab, 0xf6, 0x96, 0xad, 0xfc, 0x0d, 0x54, 0xce, + 0x42, 0xe9, 0xf1, 0x40, 0xe4, 0x5b, 0x83, 0x6a, 0x0c, 0x92, 0xc6, 0x14, 0xe7, 0x3f, 0x05, 0x28, + 0x1f, 0x05, 0xe1, 0x44, 0x0a, 0xb2, 0x09, 0xf5, 0x3d, 0x1e, 0x48, 0x76, 0x2d, 0xcf, 0x5d, 0x79, + 0x69, 0x96, 0x48, 0x8a, 0xc8, 0x67, 0xb0, 0xb6, 0xcf, 0x7b, 0x23, 0x16, 0x0d, 0x3c, 0x9f, 0x9d, + 0xba, 0x63, 0x66, 0x8c, 0xb9, 0x25, 0x25, 0x9f, 0xc3, 0xfa, 0x5c, 0x72, 0x14, 0xf8, 0x5e, 0xc0, + 0xec, 0x22, 0x22, 0x17, 0xe4, 0xe4, 0x0d, 0x3c, 0x30, 0x4b, 0xec, 0xb3, 0x81, 0x17, 0x78, 0x6a, + 0x5b, 0x76, 0x09, 0x0d, 0x59, 0x6b, 0x85, 0xdd, 0xd6, 0x5c, 0x4a, 0x17, 0x81, 0xe4, 0x1d, 0x34, + 0xd4, 0x8a, 0x7d, 0xf3, 0x45, 0xd8, 0x2b, 0x18, 0x3d, 0xed, 0xac, 0x03, 0x55, 0x86, 0xb6, 0x52, + 0x8c, 0x83, 0x40, 0x46, 0x37, 0x34, 0xad, 0xa5, 0xd9, 0x07, 0xb2, 0x08, 0x52, 0xbe, 0x1f, 0xb1, + 0x9b, 0xd8, 0xf7, 0x23, 0x76, 0x43, 0x5e, 0xc2, 0xca, 0xd4, 0xf5, 0x27, 0x2c, 0xdf, 0xf3, 0x49, + 0x55, 0x54, 0x13, 0xbe, 0x2d, 0xbc, 0xb4, 0x9c, 0x7f, 0x54, 0xcd, 0xe1, 0x9a, 0xc3, 0x20, 0xdf, + 0x40, 0xd9, 0xc3, 0x2d, 0xe2, 0x1a, 0xf5, 0xed, 0x47, 0x79, 0x66, 0x50, 0x83, 0xd5, 0xd1, 0xe5, + 0x05, 0xb2, 0x33, 0x09, 0x7a, 0xf3, 0xe8, 0x32, 0x02, 0xb2, 0x01, 0x2b, 0x3b, 0xbe, 0xcf, 0xaf, + 0xec, 0xe2, 0x66, 0x71, 0xab, 0x46, 0xf5, 0x84, 0xfc, 0x12, 0x2a, 0x3b, 0x52, 0x32, 0x21, 0x85, + 0x5d, 0x42, 0x8f, 0x65, 0x2c, 0xa5, 0x41, 0x34, 0x06, 0x93, 0x33, 0xa8, 0xe1, 0x8e, 0x77, 0xa2, + 0x61, 0xec, 0xeb, 0xaf, 0xee, 0x0e, 0xb7, 0xd6, 0x8c, 0xa3, 0xbd, 0x3d, 0xd7, 0x41, 0x0e, 0xa0, + 0xb6, 0xe7, 0xf6, 0x2e, 0x59, 0x27, 0xe2, 0x63, 0xbb, 0x8c, 0x0a, 0x7f, 0xbe, 0x5c, 0x21, 0xc2, + 0x8c, 0x42, 0xa3, 0x66, 0xc6, 0x24, 0x3b, 0x50, 0xc1, 0xc9, 0x5b, 0x6e, 0x57, 0x3e, 0x4c, 0x49, + 0xcc, 0x23, 0x0e, 0xac, 0xee, 0x0d, 0x23, 0x3e, 0x09, 0xcf, 0xdd, 0x88, 0x05, 0xd2, 0xae, 0xa2, + 0x27, 0x53, 0x32, 0xf2, 0x1a, 0x2a, 0x07, 0xd7, 0x21, 0x8f, 0xa4, 0xb0, 0x6b, 0x79, 0x69, 0x4a, + 0x83, 0xcc, 0x02, 0x86, 0x41, 0x3e, 0x05, 0x38, 0xb8, 0x96, 0x91, 0x7b, 0xc8, 0x95, 0xdb, 0x01, + 0x8f, 0x23, 0x21, 0x21, 0x1d, 0x28, 0x1f, 0xbb, 0x5d, 0xe6, 0x0b, 0xbb, 0x8e, 0xba, 0x5b, 0xf7, + 0x70, 0xac, 0x26, 0xe8, 0x85, 0x0c, 0x5b, 0xdd, 0xe3, 0x53, 0x26, 0xaf, 0x78, 0x34, 0x3a, 0xe1, + 0x7d, 0x66, 0xaf, 0xea, 0x7b, 0x9c, 0x10, 0x91, 0x67, 0xd0, 0x38, 0xe5, 0xda, 0x79, 0x9e, 0x2f, + 0x59, 0x64, 0x37, 0x70, 0x33, 0x69, 0x21, 0xc6, 0x95, 0xef, 0xca, 0x01, 0x8f, 0xc6, 0xc2, 0x5e, + 0x43, 0xc4, 0x5c, 0xa0, 0x22, 0xe8, 0x82, 0xf5, 0x22, 0x26, 0x85, 0xfd, 0x51, 0x5e, 0x04, 0x69, + 0x10, 0x8d, 0xc1, 0xc4, 0x86, 0xca, 0xc5, 0xe5, 0xf8, 0xc2, 0xfb, 0x3d, 0xb3, 0xd7, 0x37, 0xad, + 0xad, 0x22, 0x8d, 0xa7, 0xe4, 0x39, 0x14, 0x2f, 0x2e, 0x0e, 0xed, 0x07, 0xa8, 0xed, 0xe3, 0x0c, + 0x6d, 0x17, 0x87, 0x54, 0xa1, 0x08, 0x81, 0xd2, 0x5b, 0x77, 0x28, 0x6c, 0x82, 0xfb, 0xc2, 0x31, + 0xf9, 0x09, 0x94, 0xdf, 0xba, 0xd1, 0x90, 0x49, 0xfb, 0xc7, 0x68, 0xb3, 0x99, 0x91, 0x57, 0x50, + 0x79, 0xe7, 0x7b, 0x63, 0x4f, 0x0a, 0x7b, 0x03, 0xef, 0xd5, 0xe3, 0xe5, 0xca, 0x35, 0xe8, 0x2c, + 0x94, 0x34, 0xc6, 0x93, 0x17, 0x50, 0x3a, 0x0b, 0xa5, 0xb0, 0x1f, 0x22, 0xef, 0x69, 0x46, 0x50, + 0xf1, 0xf1, 0x98, 0x07, 0x71, 0x6a, 0x45, 0x42, 0xf3, 0x0d, 0xac, 0xa5, 0x83, 0x7e, 0x49, 0xf6, + 0xd8, 0x48, 0x66, 0x8f, 0x5a, 0x22, 0x33, 0x34, 0x5f, 0x41, 0x3d, 0x71, 0xb2, 0x1f, 0x42, 0x75, + 0xfe, 0x6e, 0x41, 0x3d, 0x11, 0x7e, 0xe8, 0xa8, 0x9b, 0x90, 0x19, 0x32, 0x8e, 0xc9, 0x2e, 0xac, + 0xec, 0x48, 0x19, 0xa9, 0x82, 0xa1, 0x7c, 0xfd, 0xc5, 0x9d, 0x41, 0xdc, 0x42, 0xb8, 0x0e, 0x33, + 0x4d, 0x55, 0x51, 0xb6, 0xcf, 0x84, 0xf4, 0x02, 0x17, 0x33, 0xb6, 0x4e, 0xef, 0x49, 0x51, 0xf3, + 0x25, 0xc0, 0x9c, 0xf6, 0x41, 0x36, 0xfc, 0xc5, 0x82, 0x07, 0x0b, 0x37, 0x75, 0xa9, 0x25, 0x87, + 0x69, 0x4b, 0xb6, 0xef, 0x79, 0xeb, 0x17, 0xed, 0xf9, 0x3f, 0x76, 0x7b, 0x0a, 0x65, 0x9d, 0x1e, + 0x97, 0xee, 0xb0, 0x09, 0xd5, 0x7d, 0x4f, 0xb8, 0x5d, 0x9f, 0xf5, 0x91, 0x5a, 0xa5, 0xb3, 0x39, + 0xe6, 0x66, 0xdc, 0xbd, 0xf6, 0x9e, 0x9e, 0x38, 0xfa, 0x1e, 0x90, 0x35, 0x28, 0xcc, 0x3a, 0x98, + 0xc2, 0xd1, 0xbe, 0x02, 0xab, 0x22, 0xac, 0x4d, 0xad, 0x51, 0x3d, 0x71, 0x3a, 0x50, 0xd6, 0x37, + 0x6b, 0x01, 0xdf, 0x84, 0x6a, 0xc7, 0xf3, 0x19, 0xd6, 0x72, 0xbd, 0xe7, 0xd9, 0x5c, 0x99, 0x77, + 0x10, 0x4c, 0xcd, 0xb2, 0x6a, 0xe8, 0x50, 0x58, 0x4d, 0x96, 0x29, 0x65, 0x4a, 0xa2, 0x0b, 0xc0, + 0x31, 0x69, 0x01, 0x24, 0x6a, 0x74, 0x61, 0x69, 0x8d, 0x4e, 0x20, 0x9c, 0x3f, 0x5b, 0x50, 0x9b, + 0xdd, 0x29, 0xb2, 0x07, 0x65, 0xf4, 0x59, 0xdc, 0xe1, 0x3d, 0xbf, 0xe3, 0x12, 0xb6, 0xde, 0x23, + 0xda, 0xe4, 0x36, 0x4d, 0x6d, 0x7e, 0x0f, 0xf5, 0x84, 0x78, 0xc9, 0x31, 0x6d, 0xa7, 0x2b, 0xf2, + 0xa3, 0xbc, 0x45, 0x92, 0x87, 0xb8, 0x0f, 0x65, 0x2d, 0x54, 0x96, 0x63, 0x6b, 0x63, 0x2c, 0xc7, + 0x86, 0x86, 0x40, 0xe9, 0xd0, 0x8d, 0xf4, 0x01, 0x16, 0x29, 0x8e, 0x95, 0xec, 0x82, 0x0f, 0x24, + 0x3a, 0xb1, 0x48, 0x71, 0xec, 0xfc, 0xd3, 0x82, 0x46, 0x2a, 0x1b, 0xa8, 0x74, 0x87, 0x79, 0x80, + 0x45, 0x46, 0x61, 0x3c, 0x55, 0xf5, 0xe6, 0x84, 0x49, 0xb7, 0xef, 0x4a, 0x57, 0x9d, 0x8b, 0x39, + 0xa3, 0x94, 0x4c, 0xb1, 0x4d, 0x4e, 0xc6, 0x65, 0xaa, 0x34, 0x9e, 0xe2, 0xf9, 0x4c, 0x7c, 0x1f, + 0x3b, 0xa5, 0x2a, 0xc5, 0xb1, 0x2e, 0x30, 0xea, 0xce, 0x9e, 0x4f, 0xc4, 0xa5, 0xbd, 0x82, 0x5f, + 0x12, 0x92, 0xf9, 0xf7, 0x63, 0xee, 0xf6, 0xed, 0x72, 0xf2, 0xbb, 0x92, 0xa8, 0xfc, 0x79, 0xec, + 0x05, 0x23, 0xd6, 0xb7, 0x2b, 0xf8, 0xcd, 0xcc, 0x9c, 0xbf, 0x59, 0xd0, 0x30, 0x4d, 0xa8, 0x69, + 0xd6, 0x19, 0xac, 0x6b, 0x1e, 0x8b, 0x62, 0x99, 0x39, 0xd5, 0x57, 0x39, 0x45, 0x2b, 0x86, 0xb6, + 0x6e, 0x73, 0xf5, 0x19, 0x2f, 0xa8, 0x6c, 0xee, 0xc1, 0xc3, 0xa5, 0xd0, 0x0f, 0xba, 0x9e, 0x3f, + 0x83, 0x07, 0xf3, 0xf6, 0x3a, 0xfb, 0x61, 0xb2, 0x01, 0x24, 0x09, 0x33, 0xed, 0xf7, 0x63, 0xa8, + 0xab, 0xe7, 0x4a, 0x36, 0xcd, 0x81, 0x55, 0x0d, 0x30, 0x9e, 0x21, 0x50, 0x1a, 0xb1, 0x1b, 0x1d, + 0xe3, 0x35, 0x8a, 0x63, 0xe7, 0x4f, 0x96, 0x7a, 0x75, 0x84, 0x13, 0x79, 0xc2, 0x84, 0x70, 0x87, + 0xaa, 0xe7, 0x2d, 0x1d, 0x05, 0x9e, 0x34, 0x5d, 0xde, 0x67, 0x39, 0x5d, 0x9e, 0x82, 0x19, 0xd6, + 0xe1, 0x8f, 0x28, 0xb2, 0x54, 0x4d, 0xda, 0x77, 0xa5, 0x6b, 0x22, 0x3c, 0xa3, 0x03, 0x51, 0x88, + 0x04, 0x51, 0x4d, 0x77, 0x2b, 0xea, 0x89, 0x15, 0x4e, 0xa4, 0xf3, 0x0c, 0xd6, 0x6f, 0x6b, 0x5f, + 0x62, 0xda, 0xd7, 0x50, 0x4f, 0x68, 0xc1, 0x9c, 0x71, 0xd6, 0x41, 0x40, 0x95, 0xaa, 0xa1, 0xb2, + 0x75, 0xb6, 0x91, 0x55, 0xbd, 0x86, 0xf3, 0x11, 0x34, 0x50, 0xf5, 0xcc, 0x83, 0x7f, 0x28, 0x40, + 0x25, 0x56, 0xf1, 0x22, 0x65, 0xf7, 0x93, 0x2c, 0xbb, 0x17, 0x4d, 0xfe, 0x05, 0x94, 0x66, 0x77, + 0x24, 0xb3, 0x7c, 0x77, 0xfa, 0x09, 0x1a, 0x5e, 0x9f, 0x5f, 0x41, 0x99, 0x32, 0xa1, 0x5a, 0x8d, + 0x62, 0x5e, 0xfd, 0xd6, 0x98, 0x39, 0xd9, 0x90, 0x14, 0xfd, 0xc2, 0x1b, 0x06, 0xae, 0x6f, 0xde, + 0x23, 0x19, 0x74, 0x8d, 0x49, 0xd0, 0xb5, 0x60, 0xee, 0xee, 0x3f, 0x5a, 0x50, 0xcf, 0x75, 0x75, + 0xfe, 0x03, 0x71, 0xe1, 0xd1, 0x5a, 0xfc, 0x1f, 0x1f, 0xad, 0xff, 0xb2, 0xd2, 0x8a, 0x30, 0x21, + 0xa8, 0xfb, 0x14, 0x72, 0x2f, 0x90, 0x26, 0x64, 0x13, 0x12, 0xb5, 0xd1, 0xbd, 0x71, 0xdf, 0x14, + 0x1c, 0x35, 0x9c, 0x17, 0x8e, 0xa2, 0x29, 0x1c, 0x2a, 0x08, 0xde, 0x09, 0x16, 0xa1, 0x8b, 0x6a, + 0x14, 0xc7, 0x2a, 0x91, 0x9c, 0x72, 0x94, 0xea, 0x24, 0x64, 0x66, 0xa8, 0xef, 0x4a, 0x67, 0x1e, + 0xa5, 0xef, 0x0a, 0x2b, 0xe0, 0x29, 0x57, 0x32, 0x9d, 0x71, 0xf4, 0x44, 0xe1, 0xde, 0xca, 0x1b, + 0xec, 0xc0, 0xab, 0x54, 0x0d, 0x55, 0x31, 0xa3, 0xdc, 0xf7, 0xbb, 0x6e, 0x6f, 0x64, 0xd7, 0x74, + 0x15, 0x8d, 0xe7, 0xce, 0x0e, 0xd4, 0x66, 0x47, 0xaf, 0xaa, 0x60, 0xa7, 0x8f, 0xae, 0x6d, 0xd0, + 0x42, 0xa7, 0x1f, 0x47, 0x6d, 0x61, 0x31, 0x6a, 0x8b, 0x89, 0xa8, 0x7d, 0x01, 0x8d, 0x54, 0x10, + 0x28, 0x10, 0xe5, 0x57, 0xc2, 0x28, 0xc2, 0xb1, 0x92, 0xed, 0x71, 0x5f, 0xbf, 0xb2, 0x1b, 0x14, + 0xc7, 0xce, 0x53, 0x68, 0xa4, 0x8e, 0x7f, 0x59, 0xf5, 0x70, 0x9e, 0x40, 0xe3, 0x42, 0xba, 0x72, + 0x92, 0xf3, 0xb7, 0xc8, 0xbf, 0x2d, 0x58, 0x8b, 0x31, 0x26, 0x93, 0x7c, 0x03, 0xd5, 0x29, 0x8b, + 0x24, 0xbb, 0x9e, 0x55, 0x4c, 0xbb, 0x35, 0xe6, 0xdd, 0x9b, 0x56, 0xfc, 0x4f, 0x8c, 0x3a, 0xed, + 0xf7, 0x88, 0xa0, 0x33, 0x24, 0xf9, 0x16, 0xaa, 0x02, 0xf5, 0xb0, 0xb8, 0x27, 0xfa, 0x34, 0x8b, + 0x65, 0xd6, 0x9b, 0xe1, 0x49, 0x1b, 0x4a, 0x3e, 0x1f, 0x0a, 0x3c, 0xdd, 0xfa, 0xf6, 0x27, 0x59, + 0xbc, 0x63, 0x3e, 0xa4, 0x08, 0x24, 0xaf, 0xa1, 0x7a, 0xe5, 0x46, 0x81, 0x17, 0x0c, 0xe3, 0x67, + 0xe4, 0xe3, 0x2c, 0xd2, 0xf7, 0x1a, 0x47, 0x67, 0x04, 0xa7, 0xa1, 0x2e, 0xc5, 0x80, 0x1b, 0x9f, + 0x38, 0xbf, 0x56, 0xb1, 0xa9, 0xa6, 0xc6, 0xfc, 0x23, 0x68, 0xe8, 0xf8, 0x7e, 0xcf, 0x22, 0xa1, + 0xfa, 0x0d, 0x2b, 0xef, 0x0e, 0xee, 0x26, 0xa1, 0x34, 0xcd, 0x74, 0x7e, 0x30, 0xe5, 0x2b, 0x16, + 0xa8, 0xb2, 0x1a, 0xba, 0xbd, 0x91, 0x3b, 0x8c, 0xcf, 0x29, 0x9e, 0xaa, 0x2f, 0x53, 0xb3, 0x9e, + 0xbe, 0x86, 0xf1, 0x54, 0x45, 0x60, 0xc4, 0xa6, 0x9e, 0x98, 0x37, 0xbb, 0xb3, 0xf9, 0xf6, 0x5f, + 0xcb, 0x00, 0x7b, 0xb3, 0xfd, 0x90, 0x73, 0x58, 0xc1, 0xf5, 0x88, 0x93, 0x5b, 0x0c, 0xd1, 0xee, + 0xe6, 0xd3, 0x7b, 0x14, 0x4c, 0xf2, 0x0e, 0xca, 0xfa, 0xb4, 0x48, 0x56, 0x0e, 0x4a, 0xc6, 0x57, + 0xf3, 0x59, 0x3e, 0x48, 0x2b, 0xfd, 0xd2, 0x22, 0xd4, 0x64, 0x28, 0xe2, 0xe4, 0x94, 0x20, 0x13, + 0xd9, 0x59, 0x1b, 0x4d, 0x65, 0xfb, 0x2d, 0x8b, 0x7c, 0x07, 0x65, 0x9d, 0x63, 0xc8, 0x4f, 0x97, + 0x13, 0x62, 0x7d, 0xf9, 0x9f, 0xb7, 0xac, 0x2f, 0x2d, 0x72, 0x02, 0x25, 0x55, 0x5c, 0x49, 0x46, + 0xa5, 0x48, 0x54, 0xe6, 0xa6, 0x93, 0x07, 0x31, 0x5e, 0xfc, 0x01, 0x60, 0x5e, 0xe2, 0x49, 0xc6, + 0x3f, 0x04, 0x0b, 0xbd, 0x42, 0x73, 0xeb, 0x6e, 0xa0, 0x59, 0xe0, 0x44, 0xd5, 0xb7, 0x01, 0x27, + 0x99, 0x95, 0x6d, 0x16, 0xee, 0x4d, 0x27, 0x0f, 0x62, 0xd4, 0x5d, 0x42, 0x23, 0xf5, 0x5f, 0x29, + 0xf9, 0x3c, 0xdb, 0xc8, 0xdb, 0x7f, 0xbd, 0x36, 0x9f, 0xdf, 0x0b, 0x6b, 0x56, 0x92, 0xc9, 0x1e, + 0xc9, 0x7c, 0x26, 0xad, 0xbb, 0xec, 0x4e, 0xff, 0xef, 0xd9, 0x6c, 0xdf, 0x1b, 0xaf, 0x57, 0xdd, + 0x2d, 0xfd, 0xa6, 0x10, 0x76, 0xbb, 0x65, 0xfc, 0x0b, 0xf9, 0xeb, 0xff, 0x06, 0x00, 0x00, 0xff, + 0xff, 0x6f, 0xa9, 0xd4, 0x1e, 0xd7, 0x16, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/controller/pb/controller.proto b/controller/pb/controller.proto index 944bbc26..518a4bf0 100644 --- a/controller/pb/controller.proto +++ b/controller/pb/controller.proto @@ -3,6 +3,7 @@ syntax = "proto3"; package buildx.controller.v1; import "github.com/moby/buildkit/api/services/control/control.proto"; +import "github.com/moby/buildkit/solver/pb/ops.proto"; option go_package = "pb"; @@ -44,32 +45,39 @@ message BuildRequest { BuildOptions Options = 2; } -message BuildOptions { +message Inputs { string ContextPath = 1; string DockerfileName = 2; - string PrintFunc = 3; - map NamedContexts = 4; - - repeated string Allow = 5; - repeated Attest Attests = 6; - map BuildArgs = 7; - repeated CacheOptionsEntry CacheFrom = 8; - repeated CacheOptionsEntry CacheTo = 9; - string CgroupParent = 10; - repeated ExportEntry Exports = 11; - repeated string ExtraHosts = 12; - map Labels = 13; - string NetworkMode = 14; - repeated string NoCacheFilter = 15; - repeated string Platforms = 16; - repeated Secret Secrets = 17; - int64 ShmSize = 18; - repeated SSH SSH = 19; - repeated string Tags = 20; - string Target = 21; - UlimitOpt Ulimits = 22; - - CommonOptions Opts = 24; + string DockerfileInline = 3; + pb.Definition ContextDefinition = 4; + map NamedContexts = 5; + // io.Reader InStream = ???; +} + +message BuildOptions { + Inputs inputs = 1; + string PrintFunc = 2; + + repeated string Allow = 3; + repeated Attest Attests = 4; + map BuildArgs = 5; + repeated CacheOptionsEntry CacheFrom = 6; + repeated CacheOptionsEntry CacheTo = 7; + string CgroupParent = 8; + repeated ExportEntry Exports = 9; + repeated string ExtraHosts = 10; + map Labels = 11; + string NetworkMode = 12; + repeated string NoCacheFilter = 13; + repeated string Platforms = 14; + repeated Secret Secrets = 15; + int64 ShmSize = 16; + repeated SSH SSH = 17; + repeated string Tags = 18; + string Target = 19; + UlimitOpt Ulimits = 20; + + CommonOptions Opts = 21; } message ExportEntry { @@ -100,6 +108,11 @@ message Secret { string Env = 3; } +message NamedContext { + string Path = 1; + pb.Definition Definition = 2; +} + message UlimitOpt { map values = 1; } @@ -118,6 +131,11 @@ message CommonOptions { bool Pull = 4; bool ExportPush = 5; bool ExportLoad = 6; + // TODO: we should remove Linked from the controllerapi, it's only used to + // produce a single warning. To allow this, we need to move the default + // export detection out from the controller server, as well as load the + // driver on the controller client. + bool Linked = 7; } message BuildResponse { diff --git a/util/buildflags/context.go b/util/buildflags/context.go index e67fb97c..73d8c1c2 100644 --- a/util/buildflags/context.go +++ b/util/buildflags/context.go @@ -3,15 +3,16 @@ package buildflags import ( "strings" + controllerapi "github.com/docker/buildx/controller/pb" "github.com/docker/distribution/reference" "github.com/pkg/errors" ) -func ParseContextNames(values []string) (map[string]string, error) { +func ParseContextNames(values []string) (map[string]*controllerapi.NamedContext, error) { if len(values) == 0 { return nil, nil } - result := make(map[string]string, len(values)) + result := make(map[string]*controllerapi.NamedContext, len(values)) for _, value := range values { kv := strings.SplitN(value, "=", 2) if len(kv) != 2 { @@ -22,7 +23,7 @@ func ParseContextNames(values []string) (map[string]string, error) { return nil, errors.Wrapf(err, "invalid context name %s", kv[0]) } name := strings.TrimSuffix(reference.FamiliarString(named), ":latest") - result[name] = kv[1] + result[name] = &controllerapi.NamedContext{Path: kv[1]} } return result, nil }