Skip to content

gazelle generates and recreates grpc targets that rules_go complains about #1709

Open
@jmhodges

Description

@jmhodges

What version of gazelle are you using?

0.35

What version of rules_go are you using?

0.44.2

What version of Bazel are you using?

6.4.0

Does this issue reproduce with the latest releases of all the above?

Yes for rules_go and gazelle, but I'm not able to test on bazel 7.0.0

What operating system and processor architecture are you using?

macOS 14.2.1

What did you do?

Gazelle 0.35 and rules_go (both 0.44.1 and 0.44.2) disagree on how to create grpc protobuf targets. If you use gazelle to generate targets for a proto3 proto file that contains service to create a GRPC service, it'll generate a go_proto_library target that sets compilers = ["@io_bazel_rules_go//proto:go_grpc"],.

However, rules_go will warn about that:

WARNING: /path/to/proto/BUILD.bazel:12:17: in go_proto_library rule //proto/proto:mytarget_go_proto: target '//proto/mytarget_go_proto' depends on deprecated target '@io_bazel_rules_go//proto:go_grpc': Migrate to //proto:go_grpc_v2 compiler (which you'll get automatically if you use the go_grpc_library() rule).

Which implies that you're supposed to use go_grpc_library as the macro (from load("@io_bazel_rules_go//proto:def.bzl", "go_grpc_library")).

The unfortunate thing here is that if you fix this by hand, gazelle will remove your go_grpc_library call and the load statement and replace it with the go_proto_library target with the compilers set on it.

rules_go seems to have decided on this new pattern a few weeks ago (with a tweak to the deprecation message a bit after that).

What did you expect to see?

Gazelle creating grpc targets without warnings

What did you see instead?

Gazelle creating grpc targets with warnings

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions