Remove ODR violation from WKT codegen (#12406) (#12419)
* Remove ODR violation from WKT codegen (#12406)
Closes #12406
COPYBARA_INTEGRATE_REVIEW=https://github.com/protocolbuffers/protobuf/pull/12406 from mkruskal-google:wkt 1c6748e6aabf55da929558c56b1314c52932153b
PiperOrigin-RevId: 522418175
* Removed legacy target.
---------
Co-authored-by: Mike Kruskal <mkruskal@google.com>
diff --git a/BUILD.bazel b/BUILD.bazel
index 3f8e563..5b50753 100644
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -322,7 +322,7 @@
"//:descriptor_proto",
],
command_line = "--cpp_out=$(OUT)",
- runtime = ":protobuf",
+ runtime = "//src/google/protobuf:protobuf_nowkt",
visibility = ["//visibility:public"],
)
diff --git a/conformance/BUILD.bazel b/conformance/BUILD.bazel
index ac00795..3ab5666 100644
--- a/conformance/BUILD.bazel
+++ b/conformance/BUILD.bazel
@@ -138,6 +138,9 @@
includes = ["."],
deps = [
":conformance_cc_proto",
+ "//src/google/protobuf/util:differencer",
+ "//src/google/protobuf/util:json_util",
+ "//src/google/protobuf/util:type_resolver_util",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:str_format",
],
diff --git a/examples/BUILD.bazel b/examples/BUILD.bazel
index d5a719c..265a0b9 100644
--- a/examples/BUILD.bazel
+++ b/examples/BUILD.bazel
@@ -36,13 +36,19 @@
cc_binary(
name = "add_person_cpp",
srcs = ["add_person.cc"],
- deps = [":addressbook_cc_proto"],
+ deps = [
+ ":addressbook_cc_proto",
+ "@com_google_protobuf//:protobuf",
+ ],
)
cc_binary(
name = "list_people_cpp",
srcs = ["list_people.cc"],
- deps = [":addressbook_cc_proto"],
+ deps = [
+ ":addressbook_cc_proto",
+ "@com_google_protobuf//:protobuf",
+ ],
)
# Similar to cc_proto_library but for Java.
diff --git a/pkg/BUILD.bazel b/pkg/BUILD.bazel
index 4edda57..1903a6f 100644
--- a/pkg/BUILD.bazel
+++ b/pkg/BUILD.bazel
@@ -380,7 +380,7 @@
deps = [
"//src/google/protobuf:arena_align",
"//src/google/protobuf:protobuf_nowkt",
- "//src/google/protobuf:wkt_cc_proto",
+ "//src/google/protobuf:cmake_wkt_cc_proto",
"//src/google/protobuf/compiler:importer",
"//src/google/protobuf/json",
"//src/google/protobuf/util:delimited_message_util",
@@ -416,7 +416,7 @@
testonly = 1,
tags = ["manual"],
deps = ["//src/google/protobuf:lite_test_util"],
- dist_deps = [":protobuf_lite"],
+ dist_deps = [":protobuf"],
)
cc_dist_library(
diff --git a/src/google/protobuf/BUILD.bazel b/src/google/protobuf/BUILD.bazel
index d986479..aec8130 100644
--- a/src/google/protobuf/BUILD.bazel
+++ b/src/google/protobuf/BUILD.bazel
@@ -107,6 +107,18 @@
"wrappers",
]
+proto_library(
+ name = "wkt_proto",
+ visibility = ["//visibility:private"],
+ deps = [wkt + "_proto" for wkt in WELL_KNOWN_TYPES],
+)
+
+cc_proto_library(
+ name = "wkt_cc_proto",
+ visibility = ["//pkg:__pkg__"],
+ deps = ["wkt_proto"],
+)
+
# When we generate code for the well-known types, we put the resulting files in
# wkt/google/protobuf and add ./wkt to the include paths below. This is a
# somewhat strange setup but is necessary to satisfy these two constraints:
@@ -121,12 +133,12 @@
["wkt/google/protobuf/" + wkt + ".pb.h" for wkt in WELL_KNOWN_TYPES] +
["wkt/google/protobuf/" + wkt + ".pb.cc" for wkt in WELL_KNOWN_TYPES],
cmd = """
- $(execpath //src/google/protobuf/compiler:protoc_nowkt) \
+ $(execpath //:protoc) \
--cpp_out=dllexport_decl=PROTOBUF_EXPORT:$(RULEDIR)/wkt \
--proto_path=$$(dirname $$(dirname $$(dirname $(location any.proto)))) \
$(SRCS)
""",
- exec_tools = ["//src/google/protobuf/compiler:protoc_nowkt"],
+ exec_tools = ["//:protoc"],
visibility = ["//visibility:private"],
)
@@ -139,8 +151,11 @@
tags = ["manual"],
)
+# This is necessary for our generated cmake configs to pick up the checked in
+# WKT files.
+# TODO(b/246826624) Remove this once we generate WKT code from cmake.
cc_library(
- name = "wkt_cc_proto",
+ name = "cmake_wkt_cc_proto",
srcs = ["wkt/google/protobuf/" + wkt + ".pb.cc" for wkt in WELL_KNOWN_TYPES],
hdrs = ["wkt/google/protobuf/" + wkt + ".pb.h" for wkt in WELL_KNOWN_TYPES],
copts = COPTS,
@@ -425,6 +440,7 @@
include_prefix = "google/protobuf",
linkopts = LINK_OPTS,
visibility = [
+ "//:__pkg__",
"//pkg:__pkg__",
"//src/google/protobuf:__subpackages__",
],
@@ -784,6 +800,7 @@
visibility = ["//:__subpackages__"],
deps = [
"//src/google/protobuf/io",
+ "//src/google/protobuf/util:differencer",
"@com_google_googletest//:gtest",
],
)
@@ -935,9 +952,11 @@
":cc_test_protos",
":protobuf",
":test_util",
+ ":test_util2",
"//src/google/protobuf/io",
"//src/google/protobuf/stubs",
"//src/google/protobuf/testing",
+ "//src/google/protobuf/util:differencer",
"@com_google_googletest//:gtest",
"@com_google_googletest//:gtest_main",
],
@@ -1057,6 +1076,9 @@
":cc_test_protos",
":protobuf",
":test_util",
+ ":test_util2",
+ "//src/google/protobuf/util:differencer",
+ "//src/google/protobuf/util:time_util",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/container:flat_hash_set",
"@com_google_googletest//:gtest",
@@ -1078,6 +1100,7 @@
"//src/google/protobuf/io",
"//src/google/protobuf/stubs",
"//src/google/protobuf/testing",
+ "//src/google/protobuf/util:differencer",
"@com_google_absl//absl/log:scoped_mock_log",
"@com_google_googletest//:gtest",
"@com_google_googletest//:gtest_main",
@@ -1235,6 +1258,7 @@
"//src/google/protobuf/io",
"//src/google/protobuf/stubs",
"//src/google/protobuf/testing",
+ "@com_google_absl//absl/log:die_if_null",
"@com_google_absl//absl/log:scoped_mock_log",
"@com_google_googletest//:gtest",
"@com_google_googletest//:gtest_main",
@@ -1296,6 +1320,7 @@
"//src/google/protobuf/io",
"//src/google/protobuf/stubs",
"//src/google/protobuf/testing",
+ "//src/google/protobuf/util:differencer",
"@com_google_absl//absl/log:scoped_mock_log",
"@com_google_googletest//:gtest",
"@com_google_googletest//:gtest_main",
@@ -1308,7 +1333,9 @@
deps = [
":cc_test_protos",
":protobuf",
+ "//src/google/protobuf/compiler:importer",
"//src/google/protobuf/compiler:retention",
+ "//src/google/protobuf/util:differencer",
"@com_google_googletest//:gtest_main",
],
)
diff --git a/src/google/protobuf/compiler/BUILD.bazel b/src/google/protobuf/compiler/BUILD.bazel
index 1977211..e92add6 100644
--- a/src/google/protobuf/compiler/BUILD.bazel
+++ b/src/google/protobuf/compiler/BUILD.bazel
@@ -99,11 +99,15 @@
)
cc_library(
- name = "protoc_lib_nowkt",
+ name = "protoc_lib",
srcs = [
"main.cc",
],
copts = COPTS,
+ visibility = [
+ "//:__pkg__",
+ "//pkg:__pkg__",
+ ],
deps = [
":code_generator",
":command_line_interface",
@@ -120,29 +124,6 @@
],
)
-cc_binary(
- name = "protoc_nowkt",
- copts = COPTS,
- linkopts = LINK_OPTS,
- visibility = [
- "//src/google/protobuf:__pkg__",
- ],
- deps = [":protoc_lib_nowkt"],
-)
-
-cc_library(
- name = "protoc_lib",
- copts = COPTS,
- visibility = [
- "//:__pkg__",
- "//pkg:__pkg__",
- ],
- deps = [
- ":protoc_lib_nowkt",
- "//:protobuf",
- ],
-)
-
# Note: this is an alias for now. In the future, this rule will become the
# cc_binary for protoc, and //:protoc will become an alias.
alias(
diff --git a/src/google/protobuf/util/BUILD.bazel b/src/google/protobuf/util/BUILD.bazel
index 609a86a..716aeb4 100644
--- a/src/google/protobuf/util/BUILD.bazel
+++ b/src/google/protobuf/util/BUILD.bazel
@@ -213,15 +213,6 @@
testonly = 1,
srcs = ["json_format.proto"],
strip_import_prefix = "/src",
- deps = [
- "//:any_proto",
- "//:duration_proto",
- "//:field_mask_proto",
- "//:struct_proto",
- "//:test_protos",
- "//:timestamp_proto",
- "//:wrappers_proto",
- ],
)
cc_proto_library(
diff --git a/src/google/protobuf/util/json_format.proto b/src/google/protobuf/util/json_format.proto
index a2703ce..26c53dd 100644
--- a/src/google/protobuf/util/json_format.proto
+++ b/src/google/protobuf/util/json_format.proto
@@ -38,9 +38,6 @@
package protobuf_unittest;
-import "google/protobuf/any.proto";
-import "google/protobuf/struct.proto";
-
message TestFlagsAndStrings {
required int32 A = 1;
repeated group RepeatedGroup = 2 {