Public bug reported:

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, github.com/grpc/grpc-go 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

[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.

The first is to apply a patch to golang-goprotobuf-dev that reverts
7c4add53b497798e7fd7b204f28e41ab409bdbb7.

The second is to patch golang-google-grpc-dev to include
ClientConn.Invoke and ClientConn.NewStream wrapper functions that call
the old API internally.

Release: Ubuntu 19.04
Release: Ubuntu 19.10 (development branch)
Package: golang-google-grpc 1.6.0-3

** Affects: golang-google-grpc (Ubuntu)
     Importance: Undecided
         Status: New

** Attachment added: "input file for minimal test case"
   
https://bugs.launchpad.net/bugs/1828230/+attachment/5262334/+files/simple.proto

-- 
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
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to