Skip to content

Commit bf0c4b9

Browse files
fm966mhzmhala-tolar
authored andcommitted
Move extra dependencies out of WORKSPACE to its own macro.
This could be useful for projects that use gRPC as an external repository. This could not be done within the same grpc_deps.bzl due to the problem discussed in - bazelbuild/bazel#1550 - bazelbuild/bazel#1943
1 parent c1d1765 commit bf0c4b9

File tree

3 files changed

+53
-21
lines changed

3 files changed

+53
-21
lines changed

WORKSPACE

+4-20
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ grpc_deps()
88

99
grpc_test_only_deps()
1010

11+
load("//bazel:grpc_extra_deps.bzl", "grpc_extra_deps")
12+
13+
grpc_extra_deps()
14+
1115
register_execution_platforms(
1216
"//third_party/toolchains:local",
1317
"//third_party/toolchains:local_large",
@@ -50,23 +54,3 @@ load("@io_bazel_rules_python//python:pip.bzl", "pip_repositories")
5054
load("@grpc_python_dependencies//:requirements.bzl", "pip_install")
5155
pip_repositories()
5256
pip_install()
53-
54-
load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
55-
protobuf_deps()
56-
57-
load("@upb//bazel:workspace_deps.bzl", "upb_deps")
58-
upb_deps()
59-
60-
load("@envoy_api//bazel:repositories.bzl", "api_dependencies")
61-
api_dependencies()
62-
63-
load("@io_bazel_rules_go//go:deps.bzl", "go_rules_dependencies", "go_register_toolchains")
64-
go_rules_dependencies()
65-
go_register_toolchains()
66-
67-
68-
load("@build_bazel_rules_apple//apple:repositories.bzl", "apple_rules_dependencies")
69-
apple_rules_dependencies()
70-
71-
load("@build_bazel_apple_support//lib:repositories.bzl", "apple_support_dependencies")
72-
apple_support_dependencies()

bazel/grpc_deps.bzl

+9-1
Original file line numberDiff line numberDiff line change
@@ -230,8 +230,16 @@ def grpc_deps():
230230
sha256 = "bdc8e66e70b8a75da23b79f1f8c6207356df07d041d96d2189add7ee0780cf4e",
231231
)
232232

233-
grpc_python_deps()
233+
if "build_bazel_apple_support" not in native.existing_rules():
234+
http_archive(
235+
name = "build_bazel_apple_support",
236+
urls = [
237+
"https://github.com/bazelbuild/apple_support/releases/download/0.7.1/apple_support.0.7.1.tar.gz",
238+
],
239+
sha256 = "122ebf7fe7d1c8e938af6aeaee0efe788a3a2449ece5a8d6a428cb18d6f88033",
240+
)
234241

242+
grpc_python_deps()
235243

236244
# TODO: move some dependencies from "grpc_deps" here?
237245
def grpc_test_only_deps():

bazel/grpc_extra_deps.bzl

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
"""Loads the dependencies necessary for the external repositories defined in grpc_deps.bzl."""
2+
3+
load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
4+
load("@upb//bazel:workspace_deps.bzl", "upb_deps")
5+
load("@envoy_api//bazel:repositories.bzl", "api_dependencies")
6+
load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies")
7+
load("@build_bazel_rules_apple//apple:repositories.bzl", "apple_rules_dependencies")
8+
load("@build_bazel_apple_support//lib:repositories.bzl", "apple_support_dependencies")
9+
10+
def grpc_extra_deps():
11+
"""Loads the extra dependencies.
12+
13+
These are necessary for using the external repositories defined in
14+
grpc_deps.bzl. Projects that depend on gRPC as an external repository need
15+
to call both grpc_deps and grpc_extra_deps, if they have not already loaded
16+
the extra dependencies. For example, they can do the following in their
17+
WORKSPACE
18+
```
19+
load("@com_github_grpc_grpc//bazel:grpc_deps.bzl", "grpc_deps", "grpc_test_only_deps")
20+
grpc_deps()
21+
22+
grpc_test_only_deps()
23+
24+
load("@com_github_grpc_grpc//bazel:grpc_extra_deps.bzl", "grpc_extra_deps")
25+
26+
grpc_extra_deps()
27+
```
28+
"""
29+
protobuf_deps()
30+
31+
upb_deps()
32+
33+
api_dependencies()
34+
35+
go_rules_dependencies()
36+
go_register_toolchains()
37+
38+
apple_rules_dependencies()
39+
40+
apple_support_dependencies()

0 commit comments

Comments
 (0)