From dc97c25fabb53f95c4f0826db2323008e22505fd Mon Sep 17 00:00:00 2001 From: Klaus Aehlig Date: Fri, 5 Apr 2024 10:56:49 +0200 Subject: grpc: hide dependency on google_rpc_status grpc is used in the toolchain defaults for proto servive libraries. Still, it is typically built on its own, with its own toolchain, flags, etc. Now, grpc, however has a public dependency on a the rpc-status proto library, that the user may well use on their own, however building in their own way which can yield conflicts. To solve this, we hide the dependency on that proto library, as infrastructure libs should not make assumptions on user-servicable libraries. - First, we note that the dependency can be made a private one, which already solves the conflict on header files (which will essentially be the same, but might be defined in a different way). - Next, we note that the library at linking basically only acts as a default implementation; if the user provides their own version of the rpc-status library, we should prefer that anyway. As infrastructure is linked last, we have that default character anyway; the only thing to do is to rename the library that no staging conflict occurs. --- etc/import/TARGETS.google_apis | 2 ++ etc/import/src/core/TARGETS.grpc | 12 +++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) (limited to 'etc') diff --git a/etc/import/TARGETS.google_apis b/etc/import/TARGETS.google_apis index 1df5319c..e07f15be 100644 --- a/etc/import/TARGETS.google_apis +++ b/etc/import/TARGETS.google_apis @@ -70,6 +70,8 @@ , "name": ["google_rpc_status_proto"] , "srcs": ["google/rpc/status.proto"] } +, "google/rpc/status.proto": + {"type": "export", "target": ["FILE", null, "google/rpc/status.proto"]} , "google_longrunning_operations_proto": { "type": "export" , "target": "google_longrunning_operations_proto (unexported)" diff --git a/etc/import/src/core/TARGETS.grpc b/etc/import/src/core/TARGETS.grpc index 9d152959..0f5bb6a7 100644 --- a/etc/import/src/core/TARGETS.grpc +++ b/etc/import/src/core/TARGETS.grpc @@ -157,13 +157,22 @@ , "hdrs": ["lib/gprpp/construct_destruct.h"] , "deps": [["", "gpr_platform"]] } +, "rpc_status_grpc_internal_default_proto": + { "type": ["@", "rules", "proto", "library"] + , "name": ["rpc_status_grpc_internal_default_proto"] + , "srcs": [["@", "google_apis", "", "google/rpc/status.proto"]] + } +, "status_helper_private_proto_deps": + { "type": ["@", "rules", "CC", "library"] + , "name": ["status_helper_private_proto_deps"] + , "proto": ["rpc_status_grpc_internal_default_proto"] + } , "status_helper": { "type": ["@", "rules", "CC", "library"] , "name": ["status_helper"] , "stage": ["src", "core"] , "srcs": ["lib/gprpp/status_helper.cc"] , "hdrs": ["lib/gprpp/status_helper.h"] - , "proto": [["@", "google_apis", "", "google_rpc_status_proto"]] , "deps": [ "percent_encoding" , "slice" @@ -177,6 +186,7 @@ , ["third_party/upb", "upb"] , ["src/core/ext/upb-generated", "upb-generated-lib"] ] + , "private-deps": ["status_helper_private_proto_deps"] } , "unique_type_name": { "type": ["@", "rules", "CC", "library"] -- cgit v1.2.3