Allow building third-party apps based on gRPC

By publishing the repackaged grpc and protobuf artifacts

Change-Id: Ib3af7dba4f64948132aa70be31922de61d6f6ab2
diff --git a/protocols/gnmi/ctl/BUILD b/protocols/gnmi/ctl/BUILD
index e12a8ce..482a37f 100644
--- a/protocols/gnmi/ctl/BUILD
+++ b/protocols/gnmi/ctl/BUILD
@@ -3,18 +3,18 @@
     "//protocols/gnmi/stub:onos-protocols-gnmi-stub",
     "//protocols/grpc/api:onos-protocols-grpc-api",
     "//protocols/grpc/ctl:onos-protocols-grpc-ctl",
-    "//protocols/grpc:grpc-core",
-    "@com_google_protobuf//:protobuf_java",
-    "@io_grpc_grpc_java//netty",
-    "@io_grpc_grpc_java//protobuf-lite",
-    "@io_grpc_grpc_java//stub",
+    "//lib:io_grpc_grpc_core_context",
+    "//lib:com_google_protobuf_protobuf_java",
+    "//lib:io_grpc_grpc_netty",
+    "//lib:io_grpc_grpc_protobuf_lite",
+    "//lib:io_grpc_grpc_stub",
     "@com_google_api_grpc_proto_google_common_protos//jar",
 ]
 
 TEST_DEPS = TEST + [
     "@minimal_json//jar",
-    "@io_grpc_grpc_java//core:inprocess",
-    "@io_grpc_grpc_java//protobuf-lite",
+    "//lib:io_grpc_grpc_core_context",
+    "//lib:io_grpc_grpc_protobuf_lite",
 ]
 
 osgi_jar_with_tests(
diff --git a/protocols/gnoi/ctl/BUILD b/protocols/gnoi/ctl/BUILD
index 9fdb3a8..84322ba 100644
--- a/protocols/gnoi/ctl/BUILD
+++ b/protocols/gnoi/ctl/BUILD
@@ -3,18 +3,18 @@
     "//protocols/gnoi/stub:onos-protocols-gnoi-stub",
     "//protocols/grpc/api:onos-protocols-grpc-api",
     "//protocols/grpc/ctl:onos-protocols-grpc-ctl",
-    "//protocols/grpc:grpc-core",
-    "@com_google_protobuf//:protobuf_java",
-    "@io_grpc_grpc_java//netty",
-    "@io_grpc_grpc_java//protobuf-lite",
-    "@io_grpc_grpc_java//stub",
+    "//lib:io_grpc_grpc_core_context",
+    "//lib:com_google_protobuf_protobuf_java",
+    "//lib:io_grpc_grpc_netty",
+    "//lib:io_grpc_grpc_protobuf_lite",
+    "//lib:io_grpc_grpc_stub",
     "@com_google_api_grpc_proto_google_common_protos//jar",
 ]
 
 TEST_DEPS = TEST + [
     "@minimal_json//jar",
-    "@io_grpc_grpc_java//core:inprocess",
-    "@io_grpc_grpc_java//protobuf-lite",
+    "//lib:io_grpc_grpc_core_context",
+    "//lib:io_grpc_grpc_protobuf_lite",
 ]
 
 osgi_jar_with_tests(
diff --git a/protocols/grpc/BUILD b/protocols/grpc/BUILD
index 3dd1084..59a99f0 100644
--- a/protocols/grpc/BUILD
+++ b/protocols/grpc/BUILD
@@ -1,19 +1,15 @@
-load("//tools/build/bazel:osgi_java_library.bzl", "wrapped_osgi_jar")
-load("//tools/build/bazel:variables.bzl", "GRPC_JAVA_VERSION")
-load("//tools/build/bazel:variables.bzl", "PROTOBUF_VERSION")
-
 BUNDLES = [
     "//protocols/grpc/api:onos-protocols-grpc-api",
     "//protocols/grpc/ctl:onos-protocols-grpc-ctl",
     "//protocols/grpc/utils:onos-protocols-grpc-utils",
     # gRPC dependencies (with patched core)
-    ":grpc-core",
-    ":grpc-stub",
-    ":grpc-netty",
-    ":grpc-auth",
-    ":grpc-protobuf",
-    ":grpc-protobuf-lite",
-    ":protobuf-java",
+    "//lib:io_grpc_grpc_core_context",
+    "//lib:io_grpc_grpc_stub",
+    "//lib:io_grpc_grpc_netty",
+    "//lib:io_grpc_grpc_auth",
+    "//lib:io_grpc_grpc_protobuf",
+    "//lib:io_grpc_grpc_protobuf_lite",
+    "//lib:com_google_protobuf_protobuf_java",
     "@com_google_api_grpc_proto_google_common_protos//jar",
     "@com_google_errorprone_error_prone_annotations//jar",
     "@com_google_auth_google_auth_library_credentials//jar",
@@ -30,83 +26,3 @@
     title = "gRPC Protocol Subsystem",
     url = "ttp://onosproject.org",
 )
-
-# Wrap protobuf and grpc-related JARs in OSGi-compatible ones, since the
-# original ones are built with Bazel and NOT imported via mvn.
-
-# FIXME: consider moving these rules somewhere else as other apps depend on it
-#  (e.g. openstacktelemetry and kafka-integration) but they don't directly
-#  depend on any onos-protocols-grpc-* module.
-
-GRPC_GROUP_ID = "io.grpc"
-
-PROTOBUF_GROUP_ID = "com.google.protobuf"
-
-wrapped_osgi_jar(
-    # Differently from the official "grpc-core" package, here we also include
-    # "grpc-context" to solve the OSGI split-brain problem:
-    # https://github.com/grpc/grpc-java/issues/2727
-    # We use patched Bazel BUILD files to package together core and context (see
-    # tools/build/bazel/grpc_workspace.bzl). If you need grpc-context as a
-    # compile-time dependency, please use this one.
-    name = "grpc-core",
-    group = GRPC_GROUP_ID,
-    jar = "@io_grpc_grpc_java//core",
-    version = GRPC_JAVA_VERSION,
-    visibility = ["//visibility:public"],
-    deps = [],
-)
-
-wrapped_osgi_jar(
-    name = "grpc-stub",
-    group = GRPC_GROUP_ID,
-    jar = "@io_grpc_grpc_java//stub",
-    version = GRPC_JAVA_VERSION,
-    visibility = ["//visibility:public"],
-    deps = [],
-)
-
-wrapped_osgi_jar(
-    name = "grpc-netty",
-    group = GRPC_GROUP_ID,
-    jar = "@io_grpc_grpc_java//netty",
-    version = GRPC_JAVA_VERSION,
-    visibility = ["//visibility:public"],
-    deps = [],
-)
-
-wrapped_osgi_jar(
-    name = "grpc-auth",
-    group = GRPC_GROUP_ID,
-    jar = "@io_grpc_grpc_java//auth",
-    version = GRPC_JAVA_VERSION,
-    visibility = ["//visibility:public"],
-    deps = [],
-)
-
-wrapped_osgi_jar(
-    name = "grpc-protobuf",
-    group = GRPC_GROUP_ID,
-    jar = "@io_grpc_grpc_java//protobuf",
-    version = GRPC_JAVA_VERSION,
-    visibility = ["//visibility:public"],
-    deps = [],
-)
-
-wrapped_osgi_jar(
-    name = "grpc-protobuf-lite",
-    group = GRPC_GROUP_ID,
-    jar = "@io_grpc_grpc_java//protobuf-lite",
-    version = GRPC_JAVA_VERSION,
-    visibility = ["//visibility:public"],
-    deps = [],
-)
-
-wrapped_osgi_jar(
-    name = "protobuf-java",
-    group = PROTOBUF_GROUP_ID,
-    jar = "@com_google_protobuf//:protobuf_java",
-    version = PROTOBUF_VERSION,
-    visibility = ["//visibility:public"],
-    deps = [],
-)
diff --git a/protocols/grpc/api/BUILD b/protocols/grpc/api/BUILD
index 55e2b4a..5a2b2d7 100644
--- a/protocols/grpc/api/BUILD
+++ b/protocols/grpc/api/BUILD
@@ -1,3 +1,3 @@
 osgi_jar(
-    deps = CORE_DEPS + ["@io_grpc_grpc_java//core"],
+    deps = CORE_DEPS + ["//lib:io_grpc_grpc_core_context"],
 )
diff --git a/protocols/grpc/ctl/BUILD b/protocols/grpc/ctl/BUILD
index fa10ff3..16676c5 100644
--- a/protocols/grpc/ctl/BUILD
+++ b/protocols/grpc/ctl/BUILD
@@ -1,9 +1,9 @@
 COMPILE_DEPS = CORE_DEPS + [
     "//protocols/grpc/api:onos-protocols-grpc-api",
-    "@io_grpc_grpc_java//core",
-    "@io_grpc_grpc_java//netty",
-    "@io_grpc_grpc_java//protobuf-lite",
-    "@com_google_protobuf//:protobuf_java",
+    "//lib:io_grpc_grpc_core_context",
+    "//lib:io_grpc_grpc_netty",
+    "//lib:io_grpc_grpc_protobuf_lite",
+    "//lib:com_google_protobuf_protobuf_java",
     "@com_google_api_grpc_proto_google_common_protos//jar",
     "@io_netty_netty_handler//jar",
 ]
diff --git a/protocols/grpc/utils/BUILD b/protocols/grpc/utils/BUILD
index 7baaf52..25a78ad 100644
--- a/protocols/grpc/utils/BUILD
+++ b/protocols/grpc/utils/BUILD
@@ -1,6 +1,6 @@
 COMPILE_DEPS = CORE_DEPS + [
     "//protocols/grpc/api:onos-protocols-grpc-api",
-    "@io_grpc_grpc_java//core",
+    "//lib:io_grpc_grpc_core_context",
 ]
 
 osgi_jar(
diff --git a/protocols/p4runtime/api/BUILD b/protocols/p4runtime/api/BUILD
index 2fb15ba..47a4dd2 100644
--- a/protocols/p4runtime/api/BUILD
+++ b/protocols/p4runtime/api/BUILD
@@ -1,6 +1,6 @@
 COMPILE_DEPS = CORE_DEPS + [
     "//protocols/grpc/api:onos-protocols-grpc-api",
-    "@io_grpc_grpc_java//core",
+    "//lib:io_grpc_grpc_core_context",
 ]
 
 TEST_DEPS = TEST + [
diff --git a/protocols/p4runtime/ctl/BUILD b/protocols/p4runtime/ctl/BUILD
index 31cd184..628d162 100644
--- a/protocols/p4runtime/ctl/BUILD
+++ b/protocols/p4runtime/ctl/BUILD
@@ -4,18 +4,18 @@
     "//protocols/grpc/ctl:onos-protocols-grpc-ctl",
     "//protocols/p4runtime/api:onos-protocols-p4runtime-api",
     "//protocols/p4runtime/proto:onos-protocols-p4runtime-proto",
-    "@com_google_protobuf//:protobuf_java",
-    "//protocols/grpc:grpc-core",
-    "@io_grpc_grpc_java//netty",
-    "@io_grpc_grpc_java//protobuf-lite",
-    "@io_grpc_grpc_java//stub",
+    "//lib:com_google_protobuf_protobuf_java",
+    "//lib:io_grpc_grpc_core_context",
+    "//lib:io_grpc_grpc_netty",
+    "//lib:io_grpc_grpc_protobuf_lite",
+    "//lib:io_grpc_grpc_stub",
     "@com_google_api_grpc_proto_google_common_protos//jar",
 ]
 
 TEST_DEPS = TEST + [
     "@minimal_json//jar",
-    "@io_grpc_grpc_java//core:inprocess",
-    "@io_grpc_grpc_java//protobuf-lite",
+    "//lib:io_grpc_grpc_core_context",
+    "//lib:io_grpc_grpc_protobuf_lite",
 ]
 
 osgi_jar_with_tests(
diff --git a/protocols/p4runtime/model/BUILD b/protocols/p4runtime/model/BUILD
index 619d8ee..9e36b6d 100644
--- a/protocols/p4runtime/model/BUILD
+++ b/protocols/p4runtime/model/BUILD
@@ -1,6 +1,6 @@
 COMPILE_DEPS = CORE_DEPS + [
     "//protocols/p4runtime/proto:onos-protocols-p4runtime-proto",
-    "@com_google_protobuf//:protobuf_java",
+    "//lib:com_google_protobuf_protobuf_java",
 ]
 
 osgi_jar_with_tests(