Skip to content

Commit 9a718ee

Browse files
authored
fix: append Bazel input deps without dupes (#578)
1 parent 4ad53df commit 9a718ee

File tree

1 file changed

+25
-2
lines changed

1 file changed

+25
-2
lines changed

rules_java_gapic/java_gapic.bzl

+25-2
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,26 @@ _java_gapic_postprocess_srcjar = rule(
9999
implementation = _java_gapic_postprocess_srcjar_impl,
100100
)
101101

102+
def _extract_common_proto_dep(dep):
103+
return dep[dep.index("/"):] if "//google" in dep else dep
104+
105+
def _append_dep_without_duplicates(dest_deps, new_deps):
106+
"""
107+
Appends new_deps into dest_deps only if elements in new_deps
108+
are not already present in dest_deps.
109+
A workaround for the lack of sets in skylark.
110+
"""
111+
112+
# Naive dep checking, since the source (i.e. prefixed) repo can vary.
113+
# Examine only "//google"-prefixed targets, since common proto deps
114+
# are more likely to be duplicated.
115+
processed_dest_deps = [_extract_common_proto_dep(dep) for dep in dest_deps]
116+
processed_new_deps = [_extract_common_proto_dep(dep) for dep in new_deps]
117+
for i in range(len(new_deps)):
118+
if processed_new_deps[i] not in processed_dest_deps:
119+
dest_deps.append(new_deps[i])
120+
return dest_deps
121+
102122
def java_gapic_library(
103123
name,
104124
srcs,
@@ -169,7 +189,7 @@ def java_gapic_library(
169189
)
170190

171191
# General additional deps.
172-
actual_deps = deps + resource_name_deps + [
192+
actual_deps = resource_name_deps + [
173193
"@com_google_googleapis//google/rpc:rpc_java_proto",
174194
"@com_google_googleapis//google/longrunning:longrunning_java_proto",
175195
"@com_google_protobuf//:protobuf_java",
@@ -187,6 +207,7 @@ def java_gapic_library(
187207
"@com_google_http_client_google_http_client//jar",
188208
"@javax_annotation_javax_annotation_api//jar",
189209
]
210+
_append_dep_without_duplicates(actual_deps, deps)
190211

191212
native.java_library(
192213
name = name,
@@ -196,7 +217,7 @@ def java_gapic_library(
196217
)
197218

198219
# Test deps.
199-
actual_test_deps = test_deps + actual_deps + [
220+
actual_test_deps = [
200221
"@com_google_googleapis//google/type:type_java_proto", # Commonly used.
201222
"@com_google_api_gax_java//gax-grpc:gax_grpc_testlib",
202223
"@com_google_api_gax_java//gax:gax_testlib",
@@ -207,6 +228,8 @@ def java_gapic_library(
207228
"@io_opencensus_opencensus_contrib_grpc_metrics//jar",
208229
"@junit_junit//jar",
209230
]
231+
_append_dep_without_duplicates(actual_test_deps, test_deps)
232+
_append_dep_without_duplicates(actual_test_deps, actual_deps)
210233

211234
native.java_library(
212235
name = "%s_test" % name,

0 commit comments

Comments
 (0)