Skip to content

Commit 9513a03

Browse files
authored
fix(bazel): make pgv compiler usable (#766) #patch
It wasn't using absolute labels, so the pgv_go_proto_library macro tries to reference non-existent labels in the users workspace. Also define the go_proto_compiler rule once, rather than one per go_proto_library.
1 parent eedc4ac commit 9513a03

File tree

2 files changed

+26
-11
lines changed

2 files changed

+26
-11
lines changed

bazel/go/BUILD

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
"""Define our protoc plugin in a rule that can be provided to go_proto_library#compilers
2+
3+
This is in a separate BUILD file from /bazel/BUILD to avoid a dependency on rules_go for all users who load from it.
4+
5+
If you use Gazelle, you can use a directive so that the pgv_plugin_go is automatically added to generated go_proto_library rules.
6+
See https://github.com/bazelbuild/bazel-gazelle#directives
7+
8+
For example, in some/BUILD.bazel:
9+
# gazelle:go_grpc_compilers @com_envoyproxy_protoc_gen_validate//bazel/go:pgv_plugin_go, @io_bazel_rules_go//proto:go_grpc
10+
"""
11+
load("@io_bazel_rules_go//proto:compiler.bzl", "go_proto_compiler")
12+
13+
go_proto_compiler(
14+
name = "pgv_plugin_go",
15+
suffix = ".pb.validate.go",
16+
valid_archive = False,
17+
plugin = "@com_envoyproxy_protoc_gen_validate//:protoc-gen-validate",
18+
options = ["lang=go"],
19+
visibility = ["//visibility:public"],
20+
)

bazel/pgv_proto_library.bzl

+6-11
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,17 @@
1-
load("@io_bazel_rules_go//proto:compiler.bzl", "go_proto_compiler")
21
load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library")
32
load("@rules_cc//cc:defs.bzl", "cc_library")
43
load(":protobuf.bzl", "cc_proto_gen_validate", "java_proto_gen_validate")
54

6-
def pgv_go_proto_library(name, proto = None, deps = [], **kwargs):
7-
go_proto_compiler(
8-
name = "pgv_plugin_go",
9-
suffix = ".pb.validate.go",
10-
valid_archive = False,
11-
plugin = "//:protoc-gen-validate",
12-
options = ["lang=go"],
13-
)
5+
_DEFAULT_GO_PROTOC = ["@io_bazel_rules_go//proto:go_proto"]
146

7+
def pgv_go_proto_library(name, compilers = _DEFAULT_GO_PROTOC, proto = None, deps = [], **kwargs):
158
go_proto_library(
169
name = name,
1710
proto = proto,
18-
deps = ["//validate:go_default_library"] + deps,
19-
compilers = ["@io_bazel_rules_go//proto:go_proto", "pgv_plugin_go"],
11+
deps = ["@com_envoyproxy_protoc_gen_validate//validate:validate"] + deps,
12+
compilers = compilers + [
13+
"@com_envoyproxy_protoc_gen_validate//bazel/go:pgv_plugin_go",
14+
],
2015
visibility = ["//visibility:public"],
2116
**kwargs
2217
)

0 commit comments

Comments
 (0)