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