about summary refs log tree commit diff
diff options
context:
space:
mode:
authorStypox <stypox@pm.me>2025-06-12 13:53:22 +0200
committerStypox <stypox@pm.me>2025-06-12 13:58:38 +0200
commit17f69bfda0f38939bd3f2a8ae697ad8a7d5004f7 (patch)
tree591f1d85ffc662daaae71f3381428ed43088df2f
parent8dac423f827611ae3090078cdb2b3f54b677d8eb (diff)
downloadrust-17f69bfda0f38939bd3f2a8ae697ad8a7d5004f7.tar.gz
rust-17f69bfda0f38939bd3f2a8ae697ad8a7d5004f7.zip
Rename tool-config to tool and add docs
-rw-r--r--bootstrap.example.toml5
-rw-r--r--src/bootstrap/src/core/build_steps/tool.rs15
-rw-r--r--src/bootstrap/src/core/config/config.rs10
-rw-r--r--src/bootstrap/src/core/config/toml/build.rs5
-rw-r--r--src/bootstrap/src/utils/change_tracker.rs2
5 files changed, 20 insertions, 17 deletions
diff --git a/bootstrap.example.toml b/bootstrap.example.toml
index 17044816c01..19cf360b0fb 100644
--- a/bootstrap.example.toml
+++ b/bootstrap.example.toml
@@ -382,12 +382,13 @@
 #]
 
 # Specify build configuration specific for some tool, such as enabled features.
+# This option has no effect on which tools are enabled: refer to the `tools` option for that.
 #
-# For example, to build Miri with tracing support, use `tool-config.miri.features = ["tracing"]`
+# For example, to build Miri with tracing support, use `tool.miri.features = ["tracing"]`
 #
 # The default value for the `features` array is `[]`. However, please note that other flags in
 # `bootstrap.toml` might influence the features enabled for some tools.
-#tool-config.TOOL_NAME.features = [FEATURE1, FEATURE2]
+#tool.TOOL_NAME.features = [FEATURE1, FEATURE2]
 
 # Verbosity level: 0 == not verbose, 1 == verbose, 2 == very verbose, 3 == print environment variables on each rustc invocation
 #verbose = 0
diff --git a/src/bootstrap/src/core/build_steps/tool.rs b/src/bootstrap/src/core/build_steps/tool.rs
index 102e96a4144..0c2446acc4e 100644
--- a/src/bootstrap/src/core/build_steps/tool.rs
+++ b/src/bootstrap/src/core/build_steps/tool.rs
@@ -136,17 +136,16 @@ impl Step for ToolBuild {
             _ => panic!("unexpected Mode for tool build"),
         }
 
-        // build.tool-config.TOOL_NAME.features in bootstrap.toml allows specifying which features
-        // to enable for a specific tool. `extra_features` instead is not controlled by the toml
-        // instead provides features that are always enabled for a specific tool (e.g.
-        // "in-rust-tree" for rust-analyzer). Finally, `prepare_tool_cargo` might add more features
-        // to adapt the build to the chosen flags (e.g. "all-static" for cargo if
-        // `cargo_native_static` is true).
+        // build.tool.TOOL_NAME.features in bootstrap.toml allows specifying which features to
+        // enable for a specific tool. `extra_features` instead is not controlled by the toml and
+        // provides features that are always enabled for a specific tool (e.g. "in-rust-tree" for
+        // rust-analyzer). Finally, `prepare_tool_cargo` might add more features to adapt the build
+        // to the chosen flags (e.g. "all-static" for cargo if `cargo_native_static` is true).
         let mut features = builder
             .config
-            .tool_config
+            .tool
             .get(self.tool)
-            .and_then(|tool_config| tool_config.features.clone())
+            .and_then(|tool| tool.features.clone())
             .unwrap_or_default();
         features.extend(self.extra_features.clone());
 
diff --git a/src/bootstrap/src/core/config/config.rs b/src/bootstrap/src/core/config/config.rs
index b1af6908c41..de6ba74e195 100644
--- a/src/bootstrap/src/core/config/config.rs
+++ b/src/bootstrap/src/core/config/config.rs
@@ -35,7 +35,7 @@ pub use crate::core::config::flags::Subcommand;
 use crate::core::config::flags::{Color, Flags};
 use crate::core::config::target_selection::TargetSelectionList;
 use crate::core::config::toml::TomlConfig;
-use crate::core::config::toml::build::{Build, ToolConfig};
+use crate::core::config::toml::build::{Build, Tool};
 use crate::core::config::toml::change_id::ChangeId;
 use crate::core::config::toml::rust::{
     LldMode, RustOptimize, check_incompatible_options_for_ci_rustc,
@@ -114,7 +114,9 @@ pub struct Config {
     pub bootstrap_cache_path: Option<PathBuf>,
     pub extended: bool,
     pub tools: Option<HashSet<String>>,
-    pub tool_config: HashMap<String, ToolConfig>,
+    /// Specify build configuration specific for some tool, such as enabled features, see [Tool].
+    /// The key in the map is the name of the tool, and the value is tool-specific configuration.
+    pub tool: HashMap<String, Tool>,
     pub sanitizers: bool,
     pub profiler: bool,
     pub omit_git_hash: bool,
@@ -690,7 +692,7 @@ impl Config {
             bootstrap_cache_path,
             extended,
             tools,
-            tool_config,
+            tool,
             verbose,
             sanitizers,
             profiler,
@@ -837,7 +839,7 @@ impl Config {
         set(&mut config.full_bootstrap, full_bootstrap);
         set(&mut config.extended, extended);
         config.tools = tools;
-        set(&mut config.tool_config, tool_config);
+        set(&mut config.tool, tool);
         set(&mut config.verbose, verbose);
         set(&mut config.sanitizers, sanitizers);
         set(&mut config.profiler, profiler);
diff --git a/src/bootstrap/src/core/config/toml/build.rs b/src/bootstrap/src/core/config/toml/build.rs
index a530843471d..98e1194de72 100644
--- a/src/bootstrap/src/core/config/toml/build.rs
+++ b/src/bootstrap/src/core/config/toml/build.rs
@@ -44,7 +44,7 @@ define_config! {
         bootstrap_cache_path: Option<PathBuf> = "bootstrap-cache-path",
         extended: Option<bool> = "extended",
         tools: Option<HashSet<String>> = "tools",
-        tool_config: Option<HashMap<String, ToolConfig>> = "tool-config",
+        tool: Option<HashMap<String, Tool>> = "tool",
         verbose: Option<usize> = "verbose",
         sanitizers: Option<bool> = "sanitizers",
         profiler: Option<bool> = "profiler",
@@ -75,8 +75,9 @@ define_config! {
 }
 
 define_config! {
+    /// Configuration specific for some tool, e.g. which features to enable during build.
     #[derive(Default, Clone)]
-    struct ToolConfig {
+    struct Tool {
         features: Option<Vec<String>> = "features",
     }
 }
diff --git a/src/bootstrap/src/utils/change_tracker.rs b/src/bootstrap/src/utils/change_tracker.rs
index b6ba4b03add..93e01a58077 100644
--- a/src/bootstrap/src/utils/change_tracker.rs
+++ b/src/bootstrap/src/utils/change_tracker.rs
@@ -424,6 +424,6 @@ pub const CONFIG_CHANGE_HISTORY: &[ChangeInfo] = &[
     ChangeInfo {
         change_id: 142379,
         severity: ChangeSeverity::Info,
-        summary: "Added new option `tool-config.TOOL_NAME.features` to specify the features to compile a tool with",
+        summary: "Added new option `tool.TOOL_NAME.features` to specify the features to compile a tool with",
     },
 ];