aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Anderson <ejona@google.com>2018-04-03 15:22:55 -0700
committerGitHub <noreply@github.com>2018-04-03 15:22:55 -0700
commitbace06fe9f027d67bc00a4a621346929a3267a51 (patch)
tree4f55c77659880896632375badb6f970b157699f7
parentb1d91b9f60c33019ffe36073b4b2a4dbbe95ec67 (diff)
downloadgrpc-grpc-java-bace06fe9f027d67bc00a4a621346929a3267a51.tar.gz
java_grpc_library: Add support for protobuf lite
gRPC's protobuf-lite auto-selects between full and lite protobuf based on the value of crosstool_top. If the user is specifying their own --android_crosstool_top, then it will not auto-detect correctly. One day, platforms will fix problems like this, but for the moment it seems we get to live with it.
-rw-r--r--java_grpc_library.bzl9
-rw-r--r--protobuf-lite/BUILD.bazel22
-rw-r--r--protobuf/BUILD.bazel2
-rw-r--r--repositories.bzl12
4 files changed, 35 insertions, 10 deletions
diff --git a/java_grpc_library.bzl b/java_grpc_library.bzl
index 2a8abb12d..bd3f9b769 100644
--- a/java_grpc_library.bzl
+++ b/java_grpc_library.bzl
@@ -109,14 +109,15 @@ def java_grpc_library(name, srcs, deps, flavor=None,
added_deps = [
"@io_grpc_grpc_java//core",
"@io_grpc_grpc_java//stub",
- "@io_grpc_grpc_java//protobuf",
"@com_google_guava_guava//jar",
]
if flavor == "normal":
- added_deps += ["@com_google_protobuf//:protobuf_java"]
+ added_deps += [
+ "@com_google_protobuf//:protobuf_java",
+ "@io_grpc_grpc_java//protobuf",
+ ]
elif flavor == "lite":
- # TODO: This is currently blocked on https://github.com/google/protobuf/issues/2762
- added_deps += ["@com_google_protobuf_java_lite//:protobuf_java_lite"]
+ added_deps += ["@io_grpc_grpc_java//protobuf-lite"]
else:
fail("Unknown flavor type", "flavor")
diff --git a/protobuf-lite/BUILD.bazel b/protobuf-lite/BUILD.bazel
index 99e3a56cb..cd97b0747 100644
--- a/protobuf-lite/BUILD.bazel
+++ b/protobuf-lite/BUILD.bazel
@@ -1,14 +1,26 @@
java_library(
- name = "protobuf_lite",
+ name = "protobuf-lite",
srcs = glob([
"src/main/java/**/*.java",
]),
- # TOOD(zdapeng): fix visibility and deps (https://github.com/google/protobuf/issues/2762)
- visibility = ["//protobuf:__pkg__"],
+ visibility = ["//visibility:public"],
deps = [
"//core",
"@com_google_code_findbugs_jsr305//jar",
"@com_google_guava_guava//jar",
- "@com_google_protobuf//:protobuf_java",
- ],
+ ] + select({
+ ":android": ["@com_google_protobuf_javalite//:protobuf_java_lite"],
+ "//conditions:default": ["@com_google_protobuf//:protobuf_java"],
+ }),
+)
+
+# This config is not fully-reliable. If it breaks, it is probably because you
+# are changing --android_crosstool_top. Instead of doing that, you can bind
+# your own toolchain on top of the default android/crosstool, as mentioned at
+# https://github.com/bazelbuild/bazel/issues/3924#issuecomment-338704582
+config_setting(
+ name = "android",
+ values = {
+ "crosstool_top": "//external:android/crosstool",
+ },
)
diff --git a/protobuf/BUILD.bazel b/protobuf/BUILD.bazel
index ea611308d..1c583ef0a 100644
--- a/protobuf/BUILD.bazel
+++ b/protobuf/BUILD.bazel
@@ -6,7 +6,7 @@ java_library(
visibility = ["//visibility:public"],
deps = [
"//core",
- "//protobuf-lite:protobuf_lite",
+ "//protobuf-lite",
"@com_google_api_grpc_proto_google_common_protos//jar",
"@com_google_code_findbugs_jsr305//jar",
"@com_google_guava_guava//jar",
diff --git a/repositories.bzl b/repositories.bzl
index 857063b6e..3329d09c6 100644
--- a/repositories.bzl
+++ b/repositories.bzl
@@ -9,6 +9,7 @@ def grpc_java_repositories(
omit_com_google_guava=False,
omit_com_google_protobuf=False,
omit_com_google_protobuf_java=False,
+ omit_com_google_protobuf_javalite=False,
omit_com_google_protobuf_nano_protobuf_javanano=False,
omit_com_google_truth_truth=False,
omit_com_squareup_okhttp=False,
@@ -45,6 +46,8 @@ def grpc_java_repositories(
com_google_protobuf()
if omit_com_google_protobuf_java:
fail("omit_com_google_protobuf_java is no longer supported and must be not be passed to grpc_java_repositories()")
+ if not omit_com_google_protobuf_javalite:
+ com_google_protobuf_javalite()
if not omit_com_google_protobuf_nano_protobuf_javanano:
com_google_protobuf_nano_protobuf_javanano()
if not omit_com_google_truth_truth:
@@ -146,6 +149,15 @@ def com_google_protobuf():
urls = ["https://github.com/google/protobuf/archive/v3.5.1.zip"],
)
+def com_google_protobuf_javalite():
+ # java_lite_proto_library rules implicitly depend on @com_google_protobuf_javalite
+ native.http_archive(
+ name = "com_google_protobuf_javalite",
+ sha256 = "d8a2fed3708781196f92e1e7e7e713cf66804bd2944894401057214aff4f468e",
+ strip_prefix = "protobuf-5e8916e881c573c5d83980197a6f783c132d4276",
+ urls = ["https://github.com/google/protobuf/archive/5e8916e881c573c5d83980197a6f783c132d4276.zip"],
+ )
+
def com_google_protobuf_nano_protobuf_javanano():
native.maven_jar(
name = "com_google_protobuf_nano_protobuf_javanano",