From 7ef4fe45b18f3999c48af7db0b868d6fca18f025 Mon Sep 17 00:00:00 2001 From: Henner Zeller Date: Fri, 27 Sep 2024 16:28:11 -0700 Subject: [PATCH] Use single-header json implementation. clang-tidy complains if a symbol is not in a header directly included with the [misc-include-cleaner] check. Since the multi-header does one indirection, this results in these warnings. Using the single-header library helps. Patch upostream bzlmod package to provide that. TODO: check with bzlmod mintainer for nlohmann_json to maybe provide a target for that. --- MODULE.bazel | 9 ++++++++- bazel/nlohmann_module.patch | 23 +++++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 bazel/nlohmann_module.patch diff --git a/MODULE.bazel b/MODULE.bazel index 81f58cec1..f1dc33971 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -61,10 +61,17 @@ single_version_override( patches = ["//bazel:absl.patch"], ) +# Json module only provide the multi-header target, but that will +# make misc-inlude-cleaner complain about not direct includes. +bazel_dep(name = "nlohmann_json", version = "3.11.3", repo_name="jsonhpp") +single_version_override( + module_name = "nlohmann_json", + patches = ["//bazel:nlohmann_module.patch"], +) + bazel_dep(name = "re2", version = "2023-09-01", repo_name="com_googlesource_code_re2") # Newer versions require bazel 7, so this is the last we can use currently. bazel_dep(name = "googletest", version = "1.14.0.bcr.1", repo_name="com_google_googletest") bazel_dep(name = "protobuf", version = "26.0", repo_name="com_google_protobuf") -bazel_dep(name = "nlohmann_json", version = "3.11.3", repo_name="jsonhpp") bazel_dep(name = "zlib", version = "1.3.1") diff --git a/bazel/nlohmann_module.patch b/bazel/nlohmann_module.patch new file mode 100644 index 000000000..9f6ddd231 --- /dev/null +++ b/bazel/nlohmann_module.patch @@ -0,0 +1,23 @@ +--- BUILD.bazel 2024-09-27 08:43:50.907170239 -0700 ++++ BUILD.bazel 2024-09-27 08:46:27.441297623 -0700 +@@ -1,5 +1,5 @@ + cc_library( +- name = "json", ++ name = "json-multiheader", + hdrs = [ + "include/nlohmann/adl_serializer.hpp", + "include/nlohmann/byte_container_with_subtype.hpp", +@@ -51,3 +51,13 @@ + visibility = ["//visibility:public"], + alwayslink = True, + ) ++cc_library( ++ name = "json", ++ hdrs = [ ++ "single_include/nlohmann/json.hpp", ++ ], ++ includes = ["single_include"], ++ visibility = ["//visibility:public"], ++ copts = ["-fexceptions"], ++ features = ["-use_header_modules"], # precompiled headers incompatible with -fexceptions. ++)