Start bazel support for protobuf models and p4runtime build
Change-Id: Ib3beb70c1b401854444b106b4af3723cd40635e4
diff --git a/tools/build/bazel/google_RPC_BUILD b/tools/build/bazel/google_RPC_BUILD
new file mode 100644
index 0000000..698693b
--- /dev/null
+++ b/tools/build/bazel/google_RPC_BUILD
@@ -0,0 +1,17 @@
+package(default_visibility = ["//visibility:public"])
+
+proto_library(
+ name = "status_proto",
+ srcs = [ "//:google/rpc/status.proto" ],
+ deps = [
+ "@com_google_protobuf//:any_proto",
+ ],
+)
+
+proto_library(
+ name = "code_proto",
+ srcs = [ "//:google/rpc/code.proto" ],
+ deps = [
+ "@com_google_protobuf//:any_proto",
+ ],
+)
diff --git a/tools/build/bazel/osgi-java-library.bzl b/tools/build/bazel/osgi-java-library.bzl
index e47c3d7..c3ed9b3 100644
--- a/tools/build/bazel/osgi-java-library.bzl
+++ b/tools/build/bazel/osgi-java-library.bzl
@@ -36,6 +36,9 @@
# determine the dependencies and build the class path
for dep in ctx.attr.deps:
+ if len(dep.java.outputs.jars) == 0:
+ continue
+
file = dep.java.outputs.jars[0].class_jar
if cp:
diff --git a/tools/build/bazel/p4lang_BUILD b/tools/build/bazel/p4lang_BUILD
new file mode 100644
index 0000000..52d7082
--- /dev/null
+++ b/tools/build/bazel/p4lang_BUILD
@@ -0,0 +1,40 @@
+package(default_visibility = ["//visibility:public"])
+
+proto_library(
+ name = "p4types_proto",
+ srcs = [ "//:p4/p4types.proto" ],
+ deps = [
+ "@com_google_protobuf//:any_proto",
+ ],
+)
+
+proto_library(
+ name = "p4config_proto",
+ srcs = [ "//:p4/config/p4info.proto" ],
+ deps = [
+ "@com_google_protobuf//:any_proto",
+ ":p4types_proto",
+ ],
+)
+
+proto_library(
+ name = "p4_tmp_config_proto",
+ srcs = [ "//:p4/tmp/p4config.proto" ],
+ deps = [
+ "@com_google_protobuf//:any_proto",
+ ":p4types_proto",
+ ],
+)
+
+proto_library(
+ name = "p4_runtime_proto",
+ srcs = [ "//:p4/p4runtime.proto" ],
+ deps = [
+ "@com_google_protobuf//:any_proto",
+ "@google_rpc//:status_proto",
+ "@google_rpc//:code_proto",
+ ":p4types_proto",
+ ":p4config_proto",
+ ":p4_tmp_config_proto",
+ ],
+)
\ No newline at end of file
diff --git a/tools/build/bazel/p4lang_workspace.bzl b/tools/build/bazel/p4lang_workspace.bzl
new file mode 100644
index 0000000..03b4e40
--- /dev/null
+++ b/tools/build/bazel/p4lang_workspace.bzl
@@ -0,0 +1,36 @@
+GITHUB_BASE_URL = "https://github.com"
+
+PI_COMMIT_SHORT = "219b3d6"
+PI_COMMIT = "219b3d67299ec09b49f433d7341049256ab5f512"
+PI_REPO = "p4lang/PI"
+
+GOOGLE_RPC_COMMIT_SHORT = "932f273"
+GOOGLE_RPC_COMMIT = "master"
+GOOGLE_RPC_REPO = "googleapis/googleapis"
+
+def _format_github_url(repo, commit):
+ return GITHUB_BASE_URL + "/{0}/tarball/{1}".format(repo, commit)
+
+def generate_p4lang():
+ native.http_archive(
+ name = "com_google_protobuf",
+ sha256 = "cef7f1b5a7c5fba672bec2a319246e8feba471f04dcebfe362d55930ee7c1c30",
+ strip_prefix = "protobuf-3.5.0",
+ urls = ["https://github.com/google/protobuf/archive/v3.5.0.zip"],
+ )
+
+ native.new_http_archive(
+ name = "p4lang_pi",
+ urls = [_format_github_url(PI_REPO, PI_COMMIT)],
+ build_file = "//tools/build/bazel:p4lang_BUILD",
+ strip_prefix = "p4lang-PI-" + PI_COMMIT_SHORT + "/proto",
+ type = "tar.gz",
+ )
+
+ native.new_http_archive(
+ name = "google_rpc",
+ urls = [_format_github_url(GOOGLE_RPC_REPO, GOOGLE_RPC_COMMIT)],
+ build_file = "//tools/build/bazel:google_RPC_BUILD",
+ strip_prefix = "googleapis-googleapis-" + GOOGLE_RPC_COMMIT_SHORT,
+ type = "tar.gz",
+ )
diff --git a/tools/build_rules/prelude_bazel b/tools/build_rules/prelude_bazel
index 138126c..2662c07 100644
--- a/tools/build_rules/prelude_bazel
+++ b/tools/build_rules/prelude_bazel
@@ -1,7 +1,7 @@
load("//tools/build/bazel:generate_workspace.bzl",
"generated_java_libraries", "COMPILE", "CORE_DEPS", "JACKSON",
- "TEST_ADAPTERS", "TEST", "TEST_REST", "METRICS", "KRYO", "NETTY")
+ "TEST_ADAPTERS", "TEST", "TEST_REST", "METRICS", "KRYO", "NETTY", "GRPC_1_3")
-load("//tools/build/bazel:osgi-java-library.bzl", "osgi_jar_with_tests", "osgi_jar")
+load("//tools/build/bazel:osgi-java-library.bzl", "osgi_jar_with_tests", "osgi_jar", "wrapped_osgi_library")
generated_java_libraries()