@@ -99,6 +99,26 @@ _java_gapic_postprocess_srcjar = rule(
99
99
implementation = _java_gapic_postprocess_srcjar_impl ,
100
100
)
101
101
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
+
102
122
def java_gapic_library (
103
123
name ,
104
124
srcs ,
@@ -169,7 +189,7 @@ def java_gapic_library(
169
189
)
170
190
171
191
# General additional deps.
172
- actual_deps = deps + resource_name_deps + [
192
+ actual_deps = resource_name_deps + [
173
193
"@com_google_googleapis//google/rpc:rpc_java_proto" ,
174
194
"@com_google_googleapis//google/longrunning:longrunning_java_proto" ,
175
195
"@com_google_protobuf//:protobuf_java" ,
@@ -187,6 +207,7 @@ def java_gapic_library(
187
207
"@com_google_http_client_google_http_client//jar" ,
188
208
"@javax_annotation_javax_annotation_api//jar" ,
189
209
]
210
+ _append_dep_without_duplicates (actual_deps , deps )
190
211
191
212
native .java_library (
192
213
name = name ,
@@ -196,7 +217,7 @@ def java_gapic_library(
196
217
)
197
218
198
219
# Test deps.
199
- actual_test_deps = test_deps + actual_deps + [
220
+ actual_test_deps = [
200
221
"@com_google_googleapis//google/type:type_java_proto" , # Commonly used.
201
222
"@com_google_api_gax_java//gax-grpc:gax_grpc_testlib" ,
202
223
"@com_google_api_gax_java//gax:gax_testlib" ,
@@ -207,6 +228,8 @@ def java_gapic_library(
207
228
"@io_opencensus_opencensus_contrib_grpc_metrics//jar" ,
208
229
"@junit_junit//jar" ,
209
230
]
231
+ _append_dep_without_duplicates (actual_test_deps , test_deps )
232
+ _append_dep_without_duplicates (actual_test_deps , actual_deps )
210
233
211
234
native .java_library (
212
235
name = "%s_test" % name ,
0 commit comments