From a73a7166c06fe835d275c119c2f5ebb91e524cf5 Mon Sep 17 00:00:00 2001 From: Steffen Smolka Date: Sat, 11 Apr 2026 11:56:21 -0700 Subject: [PATCH] bazel: add java_proto_library targets for all protos MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add first-class `java_proto_library` wrappers for `p4info_proto`, `p4types_proto`, `p4data_proto`, and `p4runtime_proto` alongside the existing cc/py/go targets. This lets Kotlin/Java consumers depend directly on the generated Java classes without having to define their own wrappers. Under Bazel rule sets like rules_kotlin with `strict_kotlin_deps = "error"`, users need a direct `java_proto_library` dep for every proto whose generated classes their code references — transitively-materialized Java classes don't satisfy the check. Today every Kotlin consumer of p4runtime (e.g. 4ward, DVaaS, sonic-pins) has to define these wrappers locally and duplicate them package by package; shipping them upstream removes that boilerplate. Signed-off-by: Steffen Smolka --- proto/p4/config/v1/BUILD.bazel | 13 +++++++++++++ proto/p4/v1/BUILD.bazel | 13 +++++++++++++ 2 files changed, 26 insertions(+) diff --git a/proto/p4/config/v1/BUILD.bazel b/proto/p4/config/v1/BUILD.bazel index 3e8f7a4b..7085f333 100644 --- a/proto/p4/config/v1/BUILD.bazel +++ b/proto/p4/config/v1/BUILD.bazel @@ -1,6 +1,7 @@ load("@bazel_skylib//rules:build_test.bzl", "build_test") load("@grpc//bazel:python_rules.bzl", "py_proto_library") load("@protobuf//bazel:cc_proto_library.bzl", "cc_proto_library") +load("@protobuf//bazel:java_proto_library.bzl", "java_proto_library") load("@protobuf//bazel:proto_library.bzl", "proto_library") load("@rules_go//proto:def.bzl", "go_proto_library") @@ -35,6 +36,16 @@ cc_proto_library( deps = [":p4info_proto"], ) +java_proto_library( + name = "p4types_java_proto", + deps = [":p4types_proto"], +) + +java_proto_library( + name = "p4info_java_proto", + deps = [":p4info_proto"], +) + py_proto_library( name = "p4types_py_proto", deps = [":p4types_proto"], @@ -61,6 +72,8 @@ build_test( ":p4types_proto", ":p4types_cc_proto", ":p4info_cc_proto", + ":p4types_java_proto", + ":p4info_java_proto", ":p4types_py_proto", ":p4info_py_proto", ":p4info_go_proto", diff --git a/proto/p4/v1/BUILD.bazel b/proto/p4/v1/BUILD.bazel index 2a3be94f..d969a465 100644 --- a/proto/p4/v1/BUILD.bazel +++ b/proto/p4/v1/BUILD.bazel @@ -2,6 +2,7 @@ load("@bazel_skylib//rules:build_test.bzl", "build_test") load("@grpc//bazel:cc_grpc_library.bzl", "cc_grpc_library") load("@grpc//bazel:python_rules.bzl", "py_grpc_library", "py_proto_library") load("@protobuf//bazel:cc_proto_library.bzl", "cc_proto_library") +load("@protobuf//bazel:java_proto_library.bzl", "java_proto_library") load("@protobuf//bazel:proto_library.bzl", "proto_library") load("@rules_go//proto:def.bzl", "go_proto_library") @@ -37,6 +38,16 @@ cc_proto_library( deps = [":p4runtime_proto"], ) +java_proto_library( + name = "p4data_java_proto", + deps = [":p4data_proto"], +) + +java_proto_library( + name = "p4runtime_java_proto", + deps = [":p4runtime_proto"], +) + py_proto_library( name = "p4data_py_proto", deps = [":p4data_proto"], @@ -81,6 +92,8 @@ build_test( ":p4runtime_proto", ":p4data_cc_proto", ":p4runtime_cc_proto", + ":p4data_java_proto", + ":p4runtime_java_proto", ":p4data_py_proto", ":p4runtime_py_proto", ":p4runtime_go_proto",