Closed ed-irl closed 6 months ago
This is fixed by https://github.com/bazelbuild/bazel-gazelle/commit/b3cddc07edbede6dd7a5c311aac7ac06660aecf0, which will be part of the next release. You can also apply the directive manually with a go_deps.gazelle_override
.
I upgraded to bazel-gazelle 0.36.0 (includes the linked PR) and hit a different cycle:
@com_github_envoyproxy_protoc_gen_validate//validate:validate_go_proto (04cc90e496cdac7fb6529f87071abff43883905b506a13324c2953baaa3c48d9)
.-> @io_bazel_rules_go//proto:go_proto (04cc90e496cdac7fb6529f87071abff43883905b506a13324c2953baaa3c48d9)
| @com_github_golang_protobuf//proto:go_default_library (04cc90e496cdac7fb6529f87071abff43883905b506a13324c2953baaa3c48d9)
| @com_github_golang_protobuf//proto:proto (04cc90e496cdac7fb6529f87071abff43883905b506a13324c2953baaa3c48d9)
| @org_golang_google_protobuf//reflect/protodesc:protodesc (04cc90e496cdac7fb6529f87071abff43883905b506a13324c2953baaa3c48d9)
| @org_golang_google_protobuf//types/gofeaturespb:gofeaturespb (04cc90e496cdac7fb6529f87071abff43883905b506a13324c2953baaa3c48d9)
| @org_golang_google_protobuf//types/gofeaturespb:gofeaturespb_go_proto (04cc90e496cdac7fb6529f87071abff43883905b506a13324c2953baaa3c48d9)
`-- @io_bazel_rules_go//proto:go_proto (04cc90e496cdac7fb6529f87071abff43883905b506a13324c2953baaa3c48d9)
The commonality looks like @org_golang_google_protobuf//types/gofeaturespb:gofeaturespb_go_proto
. The package contains generated protobuf code: https://github.com/protocolbuffers/protobuf-go/tree/master/types/gofeaturespb
@jschaf Is this also fixed by adding a go_deps.gazelle_override
with directives = ["gazelle:proto disable"]
for that Go module?
Yes, I'm using a workspaces rather than bzlmod, so the following worked for me:
go_repository(
name = "org_golang_google_protobuf",
build_directives = [
"gazelle:proto disable", # https://github.com/bazelbuild/rules_go/issues/3906
],
build_extra_args = [
"-exclude=**/testdata",
],
importpath = "google.golang.org/protobuf",
sum = "h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=",
version = "v1.33.0",
)
This broke our CI with gazelle:proto disable
. Looks like https://github.com/protocolbuffers/protobuf/issues/16163, so unrelated to this issue. Posting here in case anyone else hits it.
Can confirm, bumping github.com/golang/protobuf to 1.5.4 allows this this change to compile. https://github.com/flipt-io/flipt/pull/2855/files
GoCompilePkg external/com_github_golang_protobuf/protoc-gen-go/descriptor/descriptor.a failed:
(Exit 1): builder failed: error executing command (from target @com_github_golang_protobuf//protoc-gen-go/descriptor:descriptor)
external/go_sdk/builder_reset/builder compilepkg -sdk external/go_sdk -installsuffix darwin_arm64 -src ... (remaining 37 arguments skipped)
external/com_github_golang_protobuf/protoc-gen-go/descriptor/descriptor.pb.go:106:61:
undefined: descriptorpb.Default_FileOptions_PhpGenericServices
What version of rules_go are you using?
0.46.0. I'm using bzlmod too, btw.
What version of gazelle are you using?
0.35.0
What version of Bazel are you using?
7.0.2
Does this issue reproduce with the latest releases of all the above?
Yes
What operating system and processor architecture are you using?
MacOS - M2
Any other potentially useful information about your toolchain?
I'm trying to incorporate a golang app in my monorepo build for the first time. I have no toolchain customizations in place.
What did you do?
Attempting to compile a minimal app (terraform provider) produces a dependency cycle:
Some relevant portions of my files:
Excerpt from
MODULE.bazel
:go.mod
:What did you expect to see?
Project compiles, or a helpful error message.
What did you see instead?
Error message regarding cycle. The source of the cycle appears to be
@@rules_go~0.46.0//proto:go_proto_reset_plugin_
, but this appears to be generated by rules go. Further guidance on debugging would be helpful.