Skip to content

Commit cff92a6

Browse files
authored
protodoc: Fix aspect and speedup api/rst build (#21576)
Signed-off-by: Ryan Northey <ryan@synca.io>
1 parent a734340 commit cff92a6

File tree

3 files changed

+31
-29
lines changed

3 files changed

+31
-29
lines changed

docs/BUILD

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,8 @@ genrule(
7272
],
7373
)
7474

75+
# These `proto_srcs` need to match the srcs in //tools/protodoc:api_v3_protodoc
76+
# TODO: figure a way to automate these queries from the `protodoc_rule`
7577
genquery(
7678
name = "v3_proto_srcs",
7779
expression = "labels(srcs, labels(deps, @envoy_api//:v3_protos))",
@@ -84,6 +86,18 @@ genquery(
8486
scope = ["@envoy_api//:xds_protos"],
8587
)
8688

89+
genrule(
90+
name = "proto_srcs",
91+
outs = ["proto_srcs.txt"],
92+
cmd = """
93+
cat $(location :v3_proto_srcs) $(location :xds_proto_srcs) > $@
94+
""",
95+
tools = [
96+
":v3_proto_srcs",
97+
":xds_proto_srcs",
98+
],
99+
)
100+
87101
genrule(
88102
name = "empty_protos_rst",
89103
srcs = [":empty_extensions.json"],
@@ -99,26 +113,12 @@ genrule(
99113
name = "api_rst",
100114
srcs = [
101115
"//tools/protodoc:api_v3_protodoc",
102-
":v3_proto_srcs",
116+
":proto_srcs",
103117
],
104118
outs = ["api_rst.tar"],
105119
cmd = """
106120
$(location //tools/docs:generate_api_rst) \\
107-
$(location v3_proto_srcs) $(locations //tools/protodoc:api_v3_protodoc) $@
108-
""",
109-
tools = ["//tools/docs:generate_api_rst"],
110-
)
111-
112-
genrule(
113-
name = "xds_rst",
114-
srcs = [
115-
"//tools/protodoc:xds_protodoc",
116-
":xds_proto_srcs",
117-
],
118-
outs = ["xds_rst.tar"],
119-
cmd = """
120-
$(location //tools/docs:generate_api_rst) \\
121-
$(location xds_proto_srcs) $(locations //tools/protodoc:xds_protodoc) $@
121+
$(location proto_srcs) $(locations //tools/protodoc:api_v3_protodoc) $@
122122
""",
123123
tools = ["//tools/docs:generate_api_rst"],
124124
)
@@ -202,7 +202,6 @@ pkg_tar(
202202
":extensions_security_rst",
203203
":external_deps_rst",
204204
":version_history_rst",
205-
":xds_rst",
206205
],
207206
)
208207

tools/protodoc/BUILD

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -113,12 +113,10 @@ py_binary(
113113

114114
protodoc_rule(
115115
name = "api_v3_protodoc",
116-
deps = ["@envoy_api//:v3_protos"],
117-
)
118-
119-
protodoc_rule(
120-
name = "xds_protodoc",
121-
deps = ["@envoy_api//:xds_protos"],
116+
deps = [
117+
"@envoy_api//:v3_protos",
118+
"@envoy_api//:xds_protos",
119+
],
122120
)
123121

124122
py_library(

tools/protodoc/protodoc.bzl

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,21 @@ def _protodoc_impl(target, ctx):
1515
protodoc_aspect = api_proto_plugin_aspect("//tools/protodoc", _protodoc_impl)
1616

1717
def _protodoc_rule_impl(ctx):
18+
deps = []
19+
for dep in ctx.attr.deps:
20+
for path in dep[OutputGroupInfo].rst.to_list():
21+
envoy_api = (
22+
path.short_path.startswith("../envoy_api") or
23+
path.short_path.startswith("../com_github_cncf_udpa")
24+
)
25+
if envoy_api:
26+
deps.append(path)
27+
1828
return [
1929
DefaultInfo(
2030
files = depset(
2131
transitive = [
22-
depset([
23-
x
24-
for x in ctx.attr.deps[0][OutputGroupInfo].rst.to_list()
25-
if (x.short_path.startswith("../envoy_api") or
26-
x.short_path.startswith("../com_github_cncf_udpa"))
27-
]),
32+
depset(deps),
2833
],
2934
),
3035
),

0 commit comments

Comments
 (0)