xref: /aosp_15_r20/external/googleapis/WORKSPACE (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
1workspace(
2    name = "com_google_googleapis",
3)
4
5load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
6
7##############################################################################
8# Common
9##############################################################################
10
11load("//:repository_rules.bzl", "switched_rules_by_language")
12
13switched_rules_by_language(
14    name = "com_google_googleapis_imports",
15    cc = True,
16    csharp = True,
17    gapic = True,
18    go = True,
19    grpc = True,
20    java = True,
21    nodejs = True,
22    php = True,
23    python = True,
24    ruby = True,
25)
26
27_bazel_skylib_version = "1.4.0"
28
29_bazel_skylib_sha256 = "f24ab666394232f834f74d19e2ff142b0af17466ea0c69a3f4c276ee75f6efce"
30
31http_archive(
32    name = "bazel_skylib",
33    sha256 = _bazel_skylib_sha256,
34    urls = ["https://github.com/bazelbuild/bazel-skylib/releases/download/{0}/bazel-skylib-{0}.tar.gz".format(_bazel_skylib_version)],
35)
36
37_bazel_features_version = "1.2.0"
38
39_bazel_features_sha256 = "b8789c83c893d7ef3041d3f2795774936b27ff61701a705df52fd41d6ddbf692"
40
41http_archive(
42    name = "bazel_features",
43    sha256 = _bazel_features_sha256,
44    strip_prefix = "bazel_features-%s" % _bazel_features_version,
45    url = "https://github.com/bazel-contrib/bazel_features/releases/download/v{0}/bazel_features-v{0}.tar.gz".format(_bazel_features_version),
46)
47
48# Protobuf depends on very old version of rules_jvm_external.
49# Importing older version of rules_jvm_external first (this is one of the things that protobuf_deps() call
50# below will do) breaks the Java client library generation process, so importing the proper version explicitly before calling protobuf_deps().
51RULES_JVM_EXTERNAL_TAG = "4.5"
52
53RULES_JVM_EXTERNAL_SHA = "b17d7388feb9bfa7f2fa09031b32707df529f26c91ab9e5d909eb1676badd9a6"
54
55http_archive(
56    name = "rules_jvm_external",
57    sha256 = RULES_JVM_EXTERNAL_SHA,
58    strip_prefix = "rules_jvm_external-%s" % RULES_JVM_EXTERNAL_TAG,
59    url = "https://github.com/bazelbuild/rules_jvm_external/archive/%s.zip" % RULES_JVM_EXTERNAL_TAG,
60)
61
62load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps")
63
64rules_jvm_external_deps()
65
66load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup")
67
68rules_jvm_external_setup()
69
70# Python rules should go early in the dependencies list, otherwise a wrong
71# version of the library will be selected as a transitive dependency of gRPC.
72_rules_python_version = "0.26.0"
73
74_rules_python_sha256 = "9d04041ac92a0985e344235f5d946f71ac543f1b1565f2cdbc9a2aaee8adf55b"
75
76http_archive(
77    name = "rules_python",
78    sha256 = _rules_python_sha256,
79    strip_prefix = "rules_python-{}".format(_rules_python_version),
80    url = "https://github.com/bazelbuild/rules_python/archive/{}.tar.gz".format(_rules_python_version),
81)
82
83http_archive(
84    name = "rules_pkg",
85    sha256 = "8a298e832762eda1830597d64fe7db58178aa84cd5926d76d5b744d6558941c2",
86    urls = [
87        "https://mirror.bazel.build/github.com/bazelbuild/rules_pkg/releases/download/0.7.0/rules_pkg-0.7.0.tar.gz",
88        "https://github.com/bazelbuild/rules_pkg/releases/download/0.7.0/rules_pkg-0.7.0.tar.gz",
89    ],
90)
91
92load("@rules_pkg//:deps.bzl", "rules_pkg_dependencies")
93
94rules_pkg_dependencies()
95
96# This and gazelle must be above the download of gRPC (in C++ section) and
97# rules_gapic_repositories because both depend on them and we need to manage
98# our versions explicitly rather than depend on the version those bring in
99# transitively.
100_io_bazel_rules_go_version = "0.46.0"
101
102http_archive(
103    name = "io_bazel_rules_go",
104    sha256 = "80a98277ad1311dacd837f9b16db62887702e9f1d1c4c9f796d0121a46c8e184",
105    urls = [
106        "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v{0}/rules_go-v{0}.zip".format(_io_bazel_rules_go_version),
107        "https://github.com/bazelbuild/rules_go/releases/download/v{0}/rules_go-v{0}.zip".format(_io_bazel_rules_go_version),
108    ],
109)
110
111_bazel_gazelle_version = "0.36.0"
112
113http_archive(
114    name = "bazel_gazelle",
115    sha256 = "75df288c4b31c81eb50f51e2e14f4763cb7548daae126817247064637fd9ea62",
116    urls = [
117        "https://mirror.bazel.build/github.com/bazelbuild/bazel-gazelle/releases/download/v{0}/bazel-gazelle-v{0}.tar.gz".format(_bazel_gazelle_version),
118        "https://github.com/bazelbuild/bazel-gazelle/releases/download/v{0}/bazel-gazelle-v{0}.tar.gz".format(_bazel_gazelle_version),
119    ],
120)
121
122##############################################################################
123# C++
124##############################################################################
125# C++ must go before everything else, since the key dependencies (protobuf and gRPC)
126# are C++ repositories and they have the highest chance to have the correct versions of the
127# transitive dependencies (for those dependencies which are shared by many other repositories
128# imported in this workspace).
129#
130# This comes before Protobuf's section, meaning we prioritize gRPC's dependencies
131# (including upb and absl) over Protobuf's. Because the gRPC team prioritizes their
132# own dependencies when they test gRPC and Protobuf compatibility, gRPC's dependencies have
133# better chance to make it work.
134#
135# Note, even though protobuf and gRPC are mostly written in C++, they are used to generate stuff
136# for most of the other languages as well, so they can be considered as the core cross-language
137# dependencies.
138
139_grpc_version = "1.60.0"
140
141_grpc_sha256 = "09640607a340ff0d97407ed22fe4adb177e5bb85329821122084359cd57c3dea"
142
143http_archive(
144    name = "com_github_grpc_grpc",
145    sha256 = _grpc_sha256,
146    strip_prefix = "grpc-%s" % _grpc_version,
147    urls = ["https://github.com/grpc/grpc/archive/v%s.zip" % _grpc_version],
148)
149
150# Explicitly declaring Protobuf version, while Protobuf dependency is already
151# instantiated in grpc_deps().
152_protobuf_version = "25.3"
153
154_protobuf_sha256 = "d19643d265b978383352b3143f04c0641eea75a75235c111cc01a1350173180e"
155
156http_archive(
157    name = "com_google_protobuf",
158    sha256 = _protobuf_sha256,
159    strip_prefix = "protobuf-%s" % _protobuf_version,
160    urls = ["https://github.com/protocolbuffers/protobuf/archive/v%s.tar.gz" % _protobuf_version],
161)
162
163load("@com_github_grpc_grpc//bazel:grpc_deps.bzl", "grpc_deps")
164
165grpc_deps()
166
167load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps", "PROTOBUF_MAVEN_ARTIFACTS")
168# This is actually already done within grpc_deps but calling this for Bazel convention.
169protobuf_deps()
170
171# gRPC enforces a specific version of Go toolchain which conflicts with our build.
172# All the relevant parts of grpc_extra_deps() are imported in this  WORKSPACE file
173# explicitly, that is why we do not call grpc_extra_deps() here and call
174# apple_rules_dependencies and apple_support_dependencies macros explicitly.
175
176load("@build_bazel_rules_apple//apple:repositories.bzl", "apple_rules_dependencies")
177
178apple_rules_dependencies()
179
180load("@build_bazel_apple_support//lib:repositories.bzl", "apple_support_dependencies")
181
182apple_support_dependencies()
183
184# End of C++ section
185
186http_archive(
187    name = "rules_proto",
188    sha256 = "602e7161d9195e50246177e7c55b2f39950a9cf7366f74ed5f22fd45750cd208",
189    strip_prefix = "rules_proto-97d8af4dc474595af3900dd85cb3a29ad28cc313",
190    urls = [
191        "https://mirror.bazel.build/github.com/bazelbuild/rules_proto/archive/97d8af4dc474595af3900dd85cb3a29ad28cc313.tar.gz",
192        "https://github.com/bazelbuild/rules_proto/archive/97d8af4dc474595af3900dd85cb3a29ad28cc313.tar.gz",
193    ],
194)
195
196load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies", "rules_proto_toolchains")
197
198rules_proto_dependencies()
199
200rules_proto_toolchains()
201
202##############################################################################
203# Go
204##############################################################################
205
206# rules_gapic also depends on rules_go, so it must come after our own dependency on rules_go.
207# It must also come before gapic-generator-go so as to ensure that it does not bring in an old
208# version of rules_gapic.
209_rules_gapic_version = "1.0.0"
210
211
212http_archive(
213    name = "rules_gapic",
214    strip_prefix = "rules_gapic-%s" % _rules_gapic_version,
215    urls = ["https://github.com/googleapis/rules_gapic/archive/v%s.tar.gz" % _rules_gapic_version],
216)
217
218_gapic_generator_go_version = "0.41.3"
219
220http_archive(
221    name = "com_googleapis_gapic_generator_go",
222    strip_prefix = "gapic-generator-go-%s" % _gapic_generator_go_version,
223    urls = ["https://github.com/googleapis/gapic-generator-go/archive/v%s.tar.gz" % _gapic_generator_go_version],
224)
225
226load("@com_googleapis_gapic_generator_go//:repositories.bzl", "com_googleapis_gapic_generator_go_repositories")
227
228com_googleapis_gapic_generator_go_repositories()
229
230# rules_go and gazelle dependencies are loaded after gapic-generator-go
231# dependencies to ensure that they do not override any of the go_repository
232# dependencies of gapic-generator-go.
233load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies")
234
235go_register_toolchains(version = "1.19.13")
236
237go_rules_dependencies()
238
239load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies")
240
241gazelle_dependencies()
242
243load("@rules_gapic//:repositories.bzl", "rules_gapic_repositories")
244
245rules_gapic_repositories()
246
247##############################################################################
248# Java
249##############################################################################
250
251# Starting in protobuf 3.19, protobuf project started to provide
252# PROTOBUF_MAVEN_ARTIFACTS variable so that Bazel users can resolve their
253# dependencies through maven_install.
254# https://github.com/protocolbuffers/protobuf/issues/9132
255
256load("@rules_jvm_external//:defs.bzl", "maven_install")
257
258maven_install(
259    artifacts = PROTOBUF_MAVEN_ARTIFACTS,
260    generate_compat_repositories = True,
261    repositories = [
262        "https://repo.maven.apache.org/maven2/",
263    ],
264)
265
266_gapic_generator_java_version = "2.39.0"
267
268maven_install(
269    artifacts = [
270        "com.google.api:gapic-generator-java:" + _gapic_generator_java_version,
271    ],
272    #Update this False for local development
273    fail_on_missing_checksum = True,
274    repositories = [
275        "m2Local",
276        "https://repo.maven.apache.org/maven2/",
277    ]
278)
279
280http_archive(
281    name = "gapic_generator_java",
282    strip_prefix = "sdk-platform-java-%s" % _gapic_generator_java_version,
283    urls = ["https://github.com/googleapis/sdk-platform-java/archive/v%s.zip" % _gapic_generator_java_version],
284)
285
286# gax-java is part of sdk-platform-java repository
287http_archive(
288    name = "com_google_api_gax_java",
289    strip_prefix = "sdk-platform-java-%s/gax-java" % _gapic_generator_java_version,
290    urls = ["https://github.com/googleapis/sdk-platform-java/archive/v%s.zip" % _gapic_generator_java_version],
291)
292
293load("@com_google_api_gax_java//:repository_rules.bzl", "com_google_api_gax_java_properties")
294
295com_google_api_gax_java_properties(
296    name = "com_google_api_gax_java_properties",
297    file = "@com_google_api_gax_java//:dependencies.properties",
298)
299
300load("@com_google_api_gax_java//:repositories.bzl", "com_google_api_gax_java_repositories")
301
302com_google_api_gax_java_repositories()
303
304load("@io_grpc_grpc_java//:repositories.bzl", "grpc_java_repositories")
305
306grpc_java_repositories()
307
308##############################################################################
309# Python
310##############################################################################
311load("@rules_gapic//python:py_gapic_repositories.bzl", "py_gapic_repositories")
312
313py_gapic_repositories()
314
315_gapic_generator_python_version = "1.16.1"
316
317http_archive(
318    name = "gapic_generator_python",
319    strip_prefix = "gapic-generator-python-%s" % _gapic_generator_python_version,
320    urls = ["https://github.com/googleapis/gapic-generator-python/archive/v%s.zip" % _gapic_generator_python_version],
321)
322
323load(
324    "@gapic_generator_python//:repositories.bzl",
325    "gapic_generator_python",
326    "gapic_generator_register_toolchains",
327)
328
329load("@rules_python//python:repositories.bzl", "py_repositories")
330
331py_repositories()
332
333load("@rules_python//python:pip.bzl", "pip_parse")
334
335pip_parse(
336    name = "gapic_generator_python_pip_deps",
337    requirements_lock = "@gapic_generator_python//:requirements.txt",
338)
339
340load("@gapic_generator_python_pip_deps//:requirements.bzl", "install_deps")
341
342install_deps()
343
344gapic_generator_python()
345
346gapic_generator_register_toolchains()
347
348##############################################################################
349# TypeScript
350##############################################################################
351
352_gapic_generator_typescript_version = "4.5.0"
353
354_gapic_generator_typescript_sha256 = "e37a2b34a7df6ef51aa69b9be2ed45f4a6edabbe6505cfc4beff1f7f2039d1c2"
355
356### TypeScript generator
357http_archive(
358    name = "gapic_generator_typescript",
359    sha256 = _gapic_generator_typescript_sha256,
360    strip_prefix = "gapic-generator-typescript-%s" % _gapic_generator_typescript_version,
361    urls = ["https://github.com/googleapis/gapic-generator-typescript/archive/v%s.tar.gz" % _gapic_generator_typescript_version],
362)
363
364load("@gapic_generator_typescript//:repositories.bzl", "gapic_generator_typescript_repositories", "NODE_VERSION")
365gapic_generator_typescript_repositories()
366
367load("@aspect_rules_js//js:repositories.bzl", "rules_js_dependencies")
368rules_js_dependencies()
369
370load("@aspect_rules_ts//ts:repositories.bzl", "rules_ts_dependencies")
371rules_ts_dependencies(
372    ts_version_from = "@gapic_generator_typescript//:package.json",
373)
374
375load("@rules_nodejs//nodejs:repositories.bzl", "nodejs_register_toolchains")
376nodejs_register_toolchains(
377  name = "nodejs",
378  node_version = NODE_VERSION,
379)
380
381load("@aspect_rules_js//npm:npm_import.bzl", "npm_translate_lock", "pnpm_repository")
382npm_translate_lock(
383  name = "npm",
384  pnpm_lock = "@gapic_generator_typescript//:pnpm-lock.yaml",
385  data = ["@gapic_generator_typescript//:package.json"],
386)
387
388load("@npm//:repositories.bzl", "npm_repositories")
389npm_repositories()
390pnpm_repository(name = "pnpm")
391
392##############################################################################
393# PHP
394##############################################################################
395
396# PHP micro-generator
397_gapic_generator_php_version = "1.12.1"
398
399http_archive(
400    name = "gapic_generator_php",
401    strip_prefix = "gapic-generator-php-%s" % _gapic_generator_php_version,
402    urls = ["https://github.com/googleapis/gapic-generator-php/archive/v%s.zip" % _gapic_generator_php_version],
403)
404
405load("@rules_gapic//php:php_gapic_repositories.bzl", "php_gapic_repositories")
406
407php_gapic_repositories()
408
409load("@gapic_generator_php//:repositories.bzl", "gapic_generator_php_repositories")
410
411gapic_generator_php_repositories()
412
413##############################################################################
414# C#
415##############################################################################
416
417# Required to access the C#-specific common resources config.
418_gax_dotnet_version = "Google.Api.Gax-3.3.0"
419
420_gax_dotnet_sha256 = "c4d31345a226987e8551cb81afa685c9322d3f806077d9f02011676cf00c15d9"
421
422http_archive(
423    name = "gax_dotnet",
424    build_file_content = "exports_files([\"Google.Api.Gax/ResourceNames/CommonResourcesConfig.json\"])",
425    sha256 = _gax_dotnet_sha256,
426    strip_prefix = "gax-dotnet-%s" % _gax_dotnet_version,
427    urls = ["https://github.com/googleapis/gax-dotnet/archive/refs/tags/%s.tar.gz" % _gax_dotnet_version],
428)
429
430_gapic_generator_csharp_version = "1.4.27"
431_gapic_generator_csharp_sha256 = "039d975d38bd403ebf1b3f0ba5d1fb6c2d66a9cd9228c53466f59d36a75c83a6"
432
433http_archive(
434    name = "gapic_generator_csharp",
435    sha256 = _gapic_generator_csharp_sha256,
436    strip_prefix = "gapic-generator-csharp-%s" % _gapic_generator_csharp_version,
437    urls = ["https://github.com/googleapis/gapic-generator-csharp/archive/refs/tags/v%s.tar.gz" % _gapic_generator_csharp_version],
438)
439
440load("@gapic_generator_csharp//:repositories.bzl", "gapic_generator_csharp_repositories")
441
442gapic_generator_csharp_repositories()
443
444##############################################################################
445# Ruby
446##############################################################################
447
448_gapic_generator_ruby_version = "v0.29.0"
449
450_gapic_generator_ruby_sha256 = "21d8c448e99eef6a2d8182f0422c70f8adddf9fc333d6c739e47720702ce52df"
451
452http_archive(
453    name = "gapic_generator_ruby",
454    sha256 = _gapic_generator_ruby_sha256,
455    strip_prefix = "gapic-generator-ruby-gapic-generator-%s" % _gapic_generator_ruby_version,
456    urls = ["https://github.com/googleapis/gapic-generator-ruby/archive/refs/tags/gapic-generator/%s.tar.gz" % _gapic_generator_ruby_version],
457)
458
459load("@gapic_generator_ruby//rules_ruby_gapic:repositories.bzl", "gapic_generator_ruby_repositories")
460
461gapic_generator_ruby_repositories()
462
463##############################################################################
464# Discovery
465##############################################################################
466
467_disco_to_proto3_converter_version = "8163e5ea8d8dbcf0899534d2895819ab135ffab5"
468
469http_archive(
470    name = "com_google_disco_to_proto3_converter",
471    strip_prefix = "disco-to-proto3-converter-%s" % _disco_to_proto3_converter_version,
472    urls = ["https://github.com/googleapis/disco-to-proto3-converter/archive/%s.zip" % _disco_to_proto3_converter_version],
473)
474
475load("@com_google_disco_to_proto3_converter//:repository_rules.bzl", "com_google_disco_to_proto3_converter_properties")
476
477com_google_disco_to_proto3_converter_properties(
478    name = "com_google_disco_to_proto3_converter_properties",
479    file = "@com_google_disco_to_proto3_converter//:pom.xml",
480)
481
482load("@com_google_disco_to_proto3_converter//:repositories.bzl", "com_google_disco_to_proto3_converter_repositories")
483
484com_google_disco_to_proto3_converter_repositories()
485