Do not set unavailable C++ toolchain tool paths to `"None"`
Due to a missing check for `None`, the auto-configured Unix C++ toolchain would set `tool_paths` to the string literal `"None"` for missing tools, which resulted in confusing error messages e.g. if `llvm-cov` isn't found and the coverage script attempts to execute `None`.
Closes #21193.
PiperOrigin-RevId: 604780521
Change-Id: I859aa8952cae38d97b35070527d402ff8671da81
diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock
index eb5261d..b48d282 100644
--- a/MODULE.bazel.lock
+++ b/MODULE.bazel.lock
@@ -2741,7 +2741,7 @@
"general": {
"bzlTransitiveDigest": "wiyY30lgHvAgghminN0h4lxMWexDIg/6r/+eOIA5bPU=",
"accumulatedFileDigests": {
- "@@//src/test/tools/bzlmod:MODULE.bazel.lock": "ce05b19e5797eeb041153a783455ae7b822676eb25c1e813f7e1f65c389920b0",
+ "@@//src/test/tools/bzlmod:MODULE.bazel.lock": "ed93fcc527529036d5c4ddf2a35e451ce53d47d9ee2e3d838c1c68bf1422c8eb",
"@@//:MODULE.bazel": "4d4b578dd607ef6ca79369c6c5d896c09e9aaa0fa4787f7865333fb2303d5b70"
},
"envVariables": {},
diff --git a/src/test/tools/bzlmod/MODULE.bazel.lock b/src/test/tools/bzlmod/MODULE.bazel.lock
index 84c1cef..6bfb220b 100644
--- a/src/test/tools/bzlmod/MODULE.bazel.lock
+++ b/src/test/tools/bzlmod/MODULE.bazel.lock
@@ -1004,7 +1004,7 @@
},
"@@bazel_tools//tools/cpp:cc_configure.bzl%cc_configure_extension": {
"general": {
- "bzlTransitiveDigest": "R+z/o9z6DUWAxJKuQZet/vuZ78BjspYvMfHxTQ3VEb4=",
+ "bzlTransitiveDigest": "XWy8pzw7/6RclAFWd6/VfUdoXn2SdSpmHOrbfEFJ1ao=",
"accumulatedFileDigests": {},
"envVariables": {},
"generatedRepoSpecs": {
diff --git a/tools/cpp/unix_cc_configure.bzl b/tools/cpp/unix_cc_configure.bzl
index 67ee079..365e78c 100644
--- a/tools/cpp/unix_cc_configure.bzl
+++ b/tools/cpp/unix_cc_configure.bzl
@@ -592,7 +592,7 @@
False,
)),
"%{tool_paths}": ",\n ".join(
- ['"%s": "%s"' % (k, v) for k, v in tool_paths.items()],
+ ['"%s": "%s"' % (k, v) for k, v in tool_paths.items() if v != None],
),
"%{cxx_builtin_include_directories}": get_starlark_list(builtin_include_directories),
"%{compile_flags}": get_starlark_list(
diff --git a/tools/cpp/unix_cc_toolchain_config.bzl b/tools/cpp/unix_cc_toolchain_config.bzl
index ed5d2d3..4273a2f 100644
--- a/tools/cpp/unix_cc_toolchain_config.bzl
+++ b/tools/cpp/unix_cc_toolchain_config.bzl
@@ -185,26 +185,29 @@
]
action_configs = []
- llvm_cov_action = action_config(
- action_name = ACTION_NAMES.llvm_cov,
- tools = [
- tool(
- path = ctx.attr.tool_paths["llvm-cov"],
- ),
- ],
- )
+ llvm_cov = ctx.attr.tool_paths.get("llvm-cov")
+ if llvm_cov:
+ llvm_cov_action = action_config(
+ action_name = ACTION_NAMES.llvm_cov,
+ tools = [
+ tool(
+ path = llvm_cov,
+ ),
+ ],
+ )
+ action_configs.append(llvm_cov_action)
- objcopy_action = action_config(
- action_name = ACTION_NAMES.objcopy_embed_data,
- tools = [
- tool(
- path = ctx.attr.tool_paths["objcopy"],
- ),
- ],
- )
-
- action_configs.append(llvm_cov_action)
- action_configs.append(objcopy_action)
+ objcopy = ctx.attr.tool_paths.get("objcopy")
+ if objcopy:
+ objcopy_action = action_config(
+ action_name = ACTION_NAMES.objcopy_embed_data,
+ tools = [
+ tool(
+ path = objcopy,
+ ),
+ ],
+ )
+ action_configs.append(objcopy_action)
supports_pic_feature = feature(
name = "supports_pic",