** Description changed: Disco updated golang-goprotobuf-dev to version 1.2.0-1. The protoc-gen- go binary included with it generates grpc code that requires google.golang.org/grpc version 1.8.0 or newer. Disco and eoan contain golang-google-grpc-dev version 1.6.0-3. Since the source includes code that is regenerated during building it fails to build from source. (This also means that any developers using golang-goprotobuf-dev and golang-google-grpc-dev from disco or eoan are unable to build their generated code, but fixing the FTBFS also fixes their problems.) As a little background explanation, google.golang.org/grpc introduced two new API methods in 1.8.0: ClientConn.Invoke and ClientConn.NewStream, deprecating grpc.Invoke and grpc.NewClientStream, respectively: https://github.com/grpc/grpc- go/commit/a5986a5c88227370a9c0a82e5277167229c034cd github.com/golang/protobuf dropped use of the deprecated functions in generated grpc code in favor of the new ones in 1.2.0: https://github.com/golang/protobuf/commit/7c4add53b497798e7fd7b204f28e41ab409bdbb7 + Additionally, github.com/golang/protobuf disallows use of unkeyed struct + literals since version 1.1.0: + https://github.com/golang/protobuf/commit/8cc9e46429bfb16289d40d30b2ee3f4923b47345 + #diff-8c603013608023320d5242916c4ea03bR1973. This causes some examples + in this package to fail to compile. This was fixed upstream in version + 1.10.0: https://github.com/grpc/grpc- + go/commit/82e9f61ddde02833789fdca2123b576151db8654 + + The attached debdiff fixes the first issue by adding wrapper functions + which match the signature of the new API and call the old API + internally. The second issue is fixed by pulling the upstream patch to + remove use of unkeyed struct literals. + [Test Case] golang-google-grpc-dev fails to build from source on disco and eoan. See https://launchpad.net/ubuntu/+source/golang-google- grpc/1.6.0-3ubuntu0.19.04.1/+build/16729837 (although that build included a proposed patch, the same failure occurs without it). An alternative, minimal test case: 1. sudo apt install golang-google-grpc-dev 2. Copy simple.proto from the bug attachments to an empty directory. 3. protoc simple.proto --go_out=plugins=grpc:. 4. GOPATH=/usr/share/gocode/ go build simple.pb.go Expected output: Nothing Actual output: # command-line-arguments ./simple.pb.go:86:13: c.cc.Invoke undefined (type *grpc.ClientConn has no field or method Invoke) ./simple.pb.go:94:21: c.cc.NewStream undefined (type *grpc.ClientConn has no field or method NewStream) - Without updating golang-google-grpc-dev to at least version 1.8.0, I can - see two possible workarounds. + [Regression Potential] - The first is to apply a patch to golang-goprotobuf-dev that reverts - 7c4add53b497798e7fd7b204f28e41ab409bdbb7. + The added wrapper functions emulate an API no yet available in 1.6.0 by + calling an older one internally. It is possible that this can result in + unexpected behavior when invoking the wrapper functions. However this + regression is not very likely, since the functionality behind the two + API-s is exactly the same even to this day: the deprecated API calls the + new one internally. - The second is to patch golang-google-grpc-dev to include - ClientConn.Invoke and ClientConn.NewStream wrapper functions that call - the old API internally. + The second fix of using keyed struct literals has no regression + potential. It removes ambiguity by explicitly marking which value + should be assigned to which field and is required by new versions of + goprotobuf. Release: Ubuntu 19.04 Release: Ubuntu 19.10 (development branch) Package: golang-google-grpc 1.6.0-3
-- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1828230 Title: FTBFS due to too new golang-goprotobuf-dev To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/golang-google-grpc/+bug/1828230/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
