diff --git a/cmd/buildx/main.go b/cmd/buildx/main.go index f7fb26e0..381846e4 100644 --- a/cmd/buildx/main.go +++ b/cmd/buildx/main.go @@ -7,7 +7,6 @@ import ( "path/filepath" "github.com/docker/buildx/commands" - controllererrors "github.com/docker/buildx/controller/errdefs" "github.com/docker/buildx/util/desktop" "github.com/docker/buildx/version" "github.com/docker/cli/cli" @@ -112,11 +111,6 @@ func main() { var ebr *desktop.ErrorWithBuildRef if errors.As(err, &ebr) { ebr.Print(cmd.Err()) - } else { - var be *controllererrors.BuildError - if errors.As(err, &be) { - be.PrintBuildDetails(cmd.Err()) - } } os.Exit(1) diff --git a/commands/build.go b/commands/build.go index 107e0b61..7c902758 100644 --- a/commands/build.go +++ b/commands/build.go @@ -470,7 +470,6 @@ func runControllerBuild(ctx context.Context, dockerCli command.Cli, opts *cbuild if err != nil { var be *controllererrors.BuildError if errors.As(err, &be) { - ref = be.SessionID retErr = err // We can proceed to monitor } else { diff --git a/controller/errdefs/build.go b/controller/errdefs/build.go index d289d574..acc17c11 100644 --- a/controller/errdefs/build.go +++ b/controller/errdefs/build.go @@ -1,48 +1,20 @@ package errdefs -import ( - "io" - - "github.com/containerd/typeurl/v2" - "github.com/docker/buildx/util/desktop" - "github.com/moby/buildkit/util/grpcerrors" -) - -func init() { - typeurl.Register((*Build)(nil), "github.com/docker/buildx", "errdefs.Build+json") -} - type BuildError struct { - *Build - error + err error } func (e *BuildError) Unwrap() error { - return e.error + return e.err } -func (e *BuildError) ToProto() grpcerrors.TypedErrorProto { - return e.Build +func (e *BuildError) Error() string { + return e.err.Error() } -func (e *BuildError) PrintBuildDetails(w io.Writer) error { - if e.Ref == "" { - return nil - } - ebr := &desktop.ErrorWithBuildRef{ - Ref: e.Ref, - Err: e.error, - } - return ebr.Print(w) -} - -func WrapBuild(err error, sessionID string, ref string) error { +func WrapBuild(err error) error { if err == nil { return nil } - return &BuildError{Build: &Build{SessionID: sessionID, Ref: ref}, error: err} -} - -func (b *Build) WrapError(err error) error { - return &BuildError{error: err, Build: b} + return &BuildError{err: err} } diff --git a/controller/errdefs/errdefs.pb.go b/controller/errdefs/errdefs.pb.go deleted file mode 100644 index 353c7827..00000000 --- a/controller/errdefs/errdefs.pb.go +++ /dev/null @@ -1,141 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.35.2 -// protoc v3.11.4 -// source: github.com/docker/buildx/controller/errdefs/errdefs.proto - -package errdefs - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -type Build struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - SessionID string `protobuf:"bytes,1,opt,name=SessionID,proto3" json:"SessionID,omitempty"` - Ref string `protobuf:"bytes,2,opt,name=Ref,proto3" json:"Ref,omitempty"` -} - -func (x *Build) Reset() { - *x = Build{} - mi := &file_github_com_docker_buildx_controller_errdefs_errdefs_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *Build) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Build) ProtoMessage() {} - -func (x *Build) ProtoReflect() protoreflect.Message { - mi := &file_github_com_docker_buildx_controller_errdefs_errdefs_proto_msgTypes[0] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Build.ProtoReflect.Descriptor instead. -func (*Build) Descriptor() ([]byte, []int) { - return file_github_com_docker_buildx_controller_errdefs_errdefs_proto_rawDescGZIP(), []int{0} -} - -func (x *Build) GetSessionID() string { - if x != nil { - return x.SessionID - } - return "" -} - -func (x *Build) GetRef() string { - if x != nil { - return x.Ref - } - return "" -} - -var File_github_com_docker_buildx_controller_errdefs_errdefs_proto protoreflect.FileDescriptor - -var file_github_com_docker_buildx_controller_errdefs_errdefs_proto_rawDesc = []byte{ - 0x0a, 0x39, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x6f, 0x63, - 0x6b, 0x65, 0x72, 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x78, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2f, 0x65, 0x72, 0x72, 0x64, 0x65, 0x66, 0x73, 0x2f, 0x65, 0x72, - 0x72, 0x64, 0x65, 0x66, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15, 0x64, 0x6f, 0x63, - 0x6b, 0x65, 0x72, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x78, 0x2e, 0x65, 0x72, 0x72, 0x64, 0x65, - 0x66, 0x73, 0x22, 0x37, 0x0a, 0x05, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x53, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x10, 0x0a, 0x03, 0x52, 0x65, 0x66, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x52, 0x65, 0x66, 0x42, 0x2d, 0x5a, 0x2b, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, - 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x78, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, - 0x65, 0x72, 0x2f, 0x65, 0x72, 0x72, 0x64, 0x65, 0x66, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, -} - -var ( - file_github_com_docker_buildx_controller_errdefs_errdefs_proto_rawDescOnce sync.Once - file_github_com_docker_buildx_controller_errdefs_errdefs_proto_rawDescData = file_github_com_docker_buildx_controller_errdefs_errdefs_proto_rawDesc -) - -func file_github_com_docker_buildx_controller_errdefs_errdefs_proto_rawDescGZIP() []byte { - file_github_com_docker_buildx_controller_errdefs_errdefs_proto_rawDescOnce.Do(func() { - file_github_com_docker_buildx_controller_errdefs_errdefs_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_docker_buildx_controller_errdefs_errdefs_proto_rawDescData) - }) - return file_github_com_docker_buildx_controller_errdefs_errdefs_proto_rawDescData -} - -var file_github_com_docker_buildx_controller_errdefs_errdefs_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_github_com_docker_buildx_controller_errdefs_errdefs_proto_goTypes = []any{ - (*Build)(nil), // 0: docker.buildx.errdefs.Build -} -var file_github_com_docker_buildx_controller_errdefs_errdefs_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_github_com_docker_buildx_controller_errdefs_errdefs_proto_init() } -func file_github_com_docker_buildx_controller_errdefs_errdefs_proto_init() { - if File_github_com_docker_buildx_controller_errdefs_errdefs_proto != nil { - return - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_github_com_docker_buildx_controller_errdefs_errdefs_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_github_com_docker_buildx_controller_errdefs_errdefs_proto_goTypes, - DependencyIndexes: file_github_com_docker_buildx_controller_errdefs_errdefs_proto_depIdxs, - MessageInfos: file_github_com_docker_buildx_controller_errdefs_errdefs_proto_msgTypes, - }.Build() - File_github_com_docker_buildx_controller_errdefs_errdefs_proto = out.File - file_github_com_docker_buildx_controller_errdefs_errdefs_proto_rawDesc = nil - file_github_com_docker_buildx_controller_errdefs_errdefs_proto_goTypes = nil - file_github_com_docker_buildx_controller_errdefs_errdefs_proto_depIdxs = nil -} diff --git a/controller/errdefs/errdefs.proto b/controller/errdefs/errdefs.proto deleted file mode 100644 index a1b903f8..00000000 --- a/controller/errdefs/errdefs.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -package docker.buildx.errdefs; - -option go_package = "github.com/docker/buildx/controller/errdefs"; - -message Build { - string SessionID = 1; - string Ref = 2; -} diff --git a/controller/errdefs/errdefs_vtproto.pb.go b/controller/errdefs/errdefs_vtproto.pb.go deleted file mode 100644 index c6fe19b5..00000000 --- a/controller/errdefs/errdefs_vtproto.pb.go +++ /dev/null @@ -1,241 +0,0 @@ -// Code generated by protoc-gen-go-vtproto. DO NOT EDIT. -// protoc-gen-go-vtproto version: v0.6.1-0.20240319094008-0393e58bdf10 -// source: github.com/docker/buildx/controller/errdefs/errdefs.proto - -package errdefs - -import ( - fmt "fmt" - protohelpers "github.com/planetscale/vtprotobuf/protohelpers" - proto "google.golang.org/protobuf/proto" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - io "io" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -func (m *Build) CloneVT() *Build { - if m == nil { - return (*Build)(nil) - } - r := new(Build) - r.SessionID = m.SessionID - r.Ref = m.Ref - if len(m.unknownFields) > 0 { - r.unknownFields = make([]byte, len(m.unknownFields)) - copy(r.unknownFields, m.unknownFields) - } - return r -} - -func (m *Build) CloneMessageVT() proto.Message { - return m.CloneVT() -} - -func (this *Build) EqualVT(that *Build) bool { - if this == that { - return true - } else if this == nil || that == nil { - return false - } - if this.SessionID != that.SessionID { - return false - } - if this.Ref != that.Ref { - return false - } - return string(this.unknownFields) == string(that.unknownFields) -} - -func (this *Build) EqualMessageVT(thatMsg proto.Message) bool { - that, ok := thatMsg.(*Build) - if !ok { - return false - } - return this.EqualVT(that) -} -func (m *Build) MarshalVT() (dAtA []byte, err error) { - if m == nil { - return nil, nil - } - size := m.SizeVT() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBufferVT(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *Build) MarshalToVT(dAtA []byte) (int, error) { - size := m.SizeVT() - return m.MarshalToSizedBufferVT(dAtA[:size]) -} - -func (m *Build) MarshalToSizedBufferVT(dAtA []byte) (int, error) { - if m == nil { - return 0, nil - } - i := len(dAtA) - _ = i - var l int - _ = l - if m.unknownFields != nil { - i -= len(m.unknownFields) - copy(dAtA[i:], m.unknownFields) - } - if len(m.Ref) > 0 { - i -= len(m.Ref) - copy(dAtA[i:], m.Ref) - i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Ref))) - i-- - dAtA[i] = 0x12 - } - if len(m.SessionID) > 0 { - i -= len(m.SessionID) - copy(dAtA[i:], m.SessionID) - i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.SessionID))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *Build) SizeVT() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.SessionID) - if l > 0 { - n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) - } - l = len(m.Ref) - if l > 0 { - n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) - } - n += len(m.unknownFields) - return n -} - -func (m *Build) UnmarshalVT(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protohelpers.ErrIntOverflow - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Build: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Build: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SessionID", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protohelpers.ErrIntOverflow - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protohelpers.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protohelpers.ErrInvalidLength - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.SessionID = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Ref", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protohelpers.ErrIntOverflow - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protohelpers.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protohelpers.ErrInvalidLength - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Ref = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := protohelpers.Skip(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return protohelpers.ErrInvalidLength - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} diff --git a/controller/local/controller.go b/controller/local/controller.go index 44e85382..174a002c 100644 --- a/controller/local/controller.go +++ b/controller/local/controller.go @@ -11,7 +11,6 @@ import ( controllererrors "github.com/docker/buildx/controller/errdefs" controllerapi "github.com/docker/buildx/controller/pb" "github.com/docker/buildx/controller/processes" - "github.com/docker/buildx/util/desktop" "github.com/docker/buildx/util/ioset" "github.com/docker/buildx/util/progress" "github.com/docker/cli/cli/command" @@ -55,12 +54,7 @@ func (b *localController) Build(ctx context.Context, options *cbuild.Options, in buildOptions: options, } if buildErr != nil { - var ref string - var ebr *desktop.ErrorWithBuildRef - if errors.As(buildErr, &ebr) { - ref = ebr.Ref - } - buildErr = controllererrors.WrapBuild(buildErr, "", ref) + buildErr = controllererrors.WrapBuild(buildErr) } } if buildErr != nil { diff --git a/go.mod b/go.mod index fa25088f..fb70d8fe 100644 --- a/go.mod +++ b/go.mod @@ -13,7 +13,6 @@ require ( github.com/containerd/errdefs v1.0.0 github.com/containerd/log v0.1.0 github.com/containerd/platforms v1.0.0-rc.1 - github.com/containerd/typeurl/v2 v2.2.3 github.com/creack/pty v1.1.24 github.com/davecgh/go-spew v1.1.1 github.com/distribution/reference v0.6.0 @@ -92,6 +91,7 @@ require ( github.com/containerd/containerd/api v1.8.0 // indirect github.com/containerd/errdefs/pkg v0.3.0 // indirect github.com/containerd/ttrpc v1.2.7 // indirect + github.com/containerd/typeurl/v2 v2.2.3 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.6 // indirect github.com/docker/distribution v2.8.3+incompatible // indirect github.com/docker/docker-credential-helpers v0.9.3 // indirect