From 9d14ce18144fd3d85a790580c4c31bd0fd05b055 Mon Sep 17 00:00:00 2001 From: Alexander Grund <alexander.grund@tu-dresden.de> Date: Mon, 19 Oct 2020 15:12:25 +0200 Subject: [PATCH] Use upstream WELL_KNOWN_PROTO_MAP to include dependencies --- third_party/systemlibs/protobuf.BUILD | 109 ++++++-------------------- 1 file changed, 24 insertions(+), 85 deletions(-) diff --git a/third_party/systemlibs/protobuf.BUILD b/third_party/systemlibs/protobuf.BUILD index ccf2ab4dc7d..09d8e77146b 100644 --- a/third_party/systemlibs/protobuf.BUILD +++ b/third_party/systemlibs/protobuf.BUILD @@ -12,24 +12,28 @@ filegroup( visibility = ["//visibility:public"], ) -PROTO_FILES = [ - "google/protobuf/any.proto", - "google/protobuf/api.proto", - "google/protobuf/compiler/plugin.proto", - "google/protobuf/descriptor.proto", - "google/protobuf/duration.proto", - "google/protobuf/empty.proto", - "google/protobuf/field_mask.proto", - "google/protobuf/source_context.proto", - "google/protobuf/struct.proto", - "google/protobuf/timestamp.proto", - "google/protobuf/type.proto", - "google/protobuf/wrappers.proto", -] +# Map of all well known protos. +# name => (include path, imports) +WELL_KNOWN_PROTO_MAP = { + "any" : ("google/protobuf/any.proto", []), + "api" : ("google/protobuf/api.proto", ["source_context", "type"]), + "compiler_plugin" : ("google/protobuf/compiler/plugin.proto", ["descriptor"]), + "descriptor" : ("google/protobuf/descriptor.proto", []), + "duration" : ("google/protobuf/duration.proto", []), + "empty" : ("google/protobuf/empty.proto", []), + "field_mask" : ("google/protobuf/field_mask.proto", []), + "source_context" : ("google/protobuf/source_context.proto", []), + "struct" : ("google/protobuf/struct.proto", []), + "timestamp" : ("google/protobuf/timestamp.proto", []), + "type" : ("google/protobuf/type.proto", ["any", "source_context"]), + "wrappers" : ("google/protobuf/wrappers.proto", []), +} + +RELATIVE_WELL_KNOWN_PROTOS = [proto[1][0] for proto in WELL_KNOWN_PROTO_MAP.items()] genrule( name = "link_proto_files", - outs = PROTO_FILES, + outs = RELATIVE_WELL_KNOWN_PROTOS, cmd = """ for i in $(OUTS); do f=$${i#$(@D)/} @@ -85,74 +89,9 @@ py_library( visibility = ["//visibility:public"], ) -proto_library( - name = "any_proto", - srcs = ["google/protobuf/any.proto"], +[proto_library( + name = proto[0] + "_proto", + srcs = [proto[1][0]], + deps = [dep + "_proto" for dep in proto[1][1]], visibility = ["//visibility:public"], -) - -proto_library( - name = "api_proto", - srcs = ["google/protobuf/api.proto"], - visibility = ["//visibility:public"], -) - -proto_library( - name = "compiler_plugin_proto", - srcs = ["google/protobuf/compiler/plugin.proto"], - visibility = ["//visibility:public"], -) - -proto_library( - name = "descriptor_proto", - srcs = ["google/protobuf/descriptor.proto"], - visibility = ["//visibility:public"], -) - -proto_library( - name = "duration_proto", - srcs = ["google/protobuf/duration.proto"], - visibility = ["//visibility:public"], -) - -proto_library( - name = "empty_proto", - srcs = ["google/protobuf/empty.proto"], - visibility = ["//visibility:public"], -) - -proto_library( - name = "field_mask_proto", - srcs = ["google/protobuf/field_mask.proto"], - visibility = ["//visibility:public"], -) - -proto_library( - name = "source_context_proto", - srcs = ["google/protobuf/source_context.proto"], - visibility = ["//visibility:public"], -) - -proto_library( - name = "struct_proto", - srcs = ["google/protobuf/struct.proto"], - visibility = ["//visibility:public"], -) - -proto_library( - name = "timestamp_proto", - srcs = ["google/protobuf/timestamp.proto"], - visibility = ["//visibility:public"], -) - -proto_library( - name = "type_proto", - srcs = ["google/protobuf/type.proto"], - visibility = ["//visibility:public"], -) - -proto_library( - name = "wrappers_proto", - srcs = ["google/protobuf/wrappers.proto"], - visibility = ["//visibility:public"], -) + ) for proto in WELL_KNOWN_PROTO_MAP.items()]