Activity log for bug #1828230

Date Who What changed Old value New value Message
2019-05-08 12:53:13 Tiit Pikma bug added bug
2019-05-08 12:53:13 Tiit Pikma attachment added input file for minimal test case https://bugs.launchpad.net/bugs/1828230/+attachment/5262334/+files/simple.proto
2019-05-08 13:22:24 Tiit Pikma description 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 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 [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
2019-05-16 11:34:31 Tiit Pikma attachment added golang-google-grpc-ftbfs.patch https://bugs.launchpad.net/ubuntu/+source/golang-google-grpc/+bug/1828230/+attachment/5264232/+files/golang-google-grpc-ftbfs.patch
2019-05-16 12:24:44 Tiit Pikma description 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 [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 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) [Regression Potential] 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 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
2019-05-16 12:25:33 Tiit Pikma bug added subscriber Ubuntu Sponsors Team
2019-05-25 16:11:16 Mathew Hodson tags ftbfs
2019-05-25 16:14:41 Mathew Hodson golang-google-grpc (Ubuntu): importance Undecided Medium
2019-06-25 16:29:53 Simon Quigley removed subscriber Ubuntu Sponsors Team
2019-07-02 17:31:13 Brian Murray golang-google-grpc (Ubuntu Disco): status New Fix Committed
2019-07-02 17:31:14 Brian Murray bug added subscriber Ubuntu Stable Release Updates Team
2019-07-02 17:31:16 Brian Murray bug added subscriber SRU Verification
2019-07-02 17:31:20 Brian Murray tags ftbfs ftbfs verification-needed verification-needed-disco
2019-07-02 17:32:21 Brian Murray golang-google-grpc (Ubuntu): status New Fix Released
2019-07-02 17:32:25 Brian Murray golang-google-grpc (Ubuntu Disco): importance Undecided High
2019-09-09 10:59:06 Tiit Pikma tags ftbfs verification-needed verification-needed-disco ftbfs verification-done verification-done-disco
2019-09-11 01:38:35 Launchpad Janitor golang-google-grpc (Ubuntu Disco): status Fix Committed Fix Released
2019-09-11 01:38:43 Chris Halse Rogers removed subscriber Ubuntu Stable Release Updates Team