diff options
Diffstat (limited to '0001-Fix-enabling-wasm-component-ld-to-match-other-tools.patch')
| -rw-r--r-- | 0001-Fix-enabling-wasm-component-ld-to-match-other-tools.patch | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/0001-Fix-enabling-wasm-component-ld-to-match-other-tools.patch b/0001-Fix-enabling-wasm-component-ld-to-match-other-tools.patch new file mode 100644 index 0000000..5364012 --- /dev/null +++ b/0001-Fix-enabling-wasm-component-ld-to-match-other-tools.patch @@ -0,0 +1,147 @@ +From c15469a7fec811d1a4f69ff26e18c6f383df41d2 Mon Sep 17 00:00:00 2001 +From: Alex Crichton <alex@alexcrichton.com> +Date: Fri, 6 Sep 2024 09:21:33 -0700 +Subject: [PATCH] Fix enabling wasm-component-ld to match other tools + +It was [pointed out recently][comment] that enabling `wasm-component-ld` +as a host tool is different from other host tools. This commit refactors +the logic to match by deduplicating selection of when to build other +tools and then using the same logic for `wasm-component-ld`. + +[comment]: https://github.com/rust-lang/rust/pull/127866#issuecomment-2333434720 +--- + src/bootstrap/src/core/build_steps/compile.rs | 2 +- + src/bootstrap/src/core/build_steps/dist.rs | 2 +- + src/bootstrap/src/core/build_steps/tool.rs | 38 +++---------------- + src/bootstrap/src/lib.rs | 17 +++++---- + 4 files changed, 17 insertions(+), 42 deletions(-) + +diff --git a/src/bootstrap/src/core/build_steps/compile.rs b/src/bootstrap/src/core/build_steps/compile.rs +index 1936c91ef83c..102c9fd25543 100644 +--- a/src/bootstrap/src/core/build_steps/compile.rs ++++ b/src/bootstrap/src/core/build_steps/compile.rs +@@ -1912,7 +1912,7 @@ fn run(self, builder: &Builder<'_>) -> Compiler { + // delegates to the `rust-lld` binary for linking and then runs + // logic to create the final binary. This is used by the + // `wasm32-wasip2` target of Rust. +- if builder.build_wasm_component_ld() { ++ if builder.tool_enabled("wasm-component-ld") { + let wasm_component_ld_exe = + builder.ensure(crate::core::build_steps::tool::WasmComponentLd { + compiler: build_compiler, +diff --git a/src/bootstrap/src/core/build_steps/dist.rs b/src/bootstrap/src/core/build_steps/dist.rs +index 4957de2e1b79..ccb5656d6716 100644 +--- a/src/bootstrap/src/core/build_steps/dist.rs ++++ b/src/bootstrap/src/core/build_steps/dist.rs +@@ -473,7 +473,7 @@ fn prepare_image(builder: &Builder<'_>, compiler: Compiler, image: &Path) { + ); + } + } +- if builder.build_wasm_component_ld() { ++ if builder.tool_enabled("wasm-component-ld") { + let src_dir = builder.sysroot_libdir(compiler, host).parent().unwrap().join("bin"); + let ld = exe("wasm-component-ld", compiler.host); + builder.copy_link(&src_dir.join(&ld), &dst_dir.join(&ld)); +diff --git a/src/bootstrap/src/core/build_steps/tool.rs b/src/bootstrap/src/core/build_steps/tool.rs +index 3a1eb43b801f..3c2d791c2090 100644 +--- a/src/bootstrap/src/core/build_steps/tool.rs ++++ b/src/bootstrap/src/core/build_steps/tool.rs +@@ -693,14 +693,7 @@ impl Step for Cargo { + + fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> { + let builder = run.builder; +- run.path("src/tools/cargo").default_condition( +- builder.config.extended +- && builder.config.tools.as_ref().map_or( +- true, +- // If `tools` is set, search list for this tool. +- |tools| tools.iter().any(|tool| tool == "cargo"), +- ), +- ) ++ run.path("src/tools/cargo").default_condition(builder.tool_enabled("cargo")) + } + + fn make_run(run: RunConfig<'_>) { +@@ -772,14 +765,7 @@ impl Step for RustAnalyzer { + + fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> { + let builder = run.builder; +- run.path("src/tools/rust-analyzer").default_condition( +- builder.config.extended +- && builder +- .config +- .tools +- .as_ref() +- .map_or(true, |tools| tools.iter().any(|tool| tool == "rust-analyzer")), +- ) ++ run.path("src/tools/rust-analyzer").default_condition(builder.tool_enabled("rust-analyzer")) + } + + fn make_run(run: RunConfig<'_>) { +@@ -821,12 +807,8 @@ fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> { + run.path("src/tools/rust-analyzer") + .path("src/tools/rust-analyzer/crates/proc-macro-srv-cli") + .default_condition( +- builder.config.extended +- && builder.config.tools.as_ref().map_or(true, |tools| { +- tools.iter().any(|tool| { +- tool == "rust-analyzer" || tool == "rust-analyzer-proc-macro-srv" +- }) +- }), ++ builder.tool_enabled("rust-analyzer") ++ || builder.tool_enabled("rust-analyzer-proc-macro-srv"), + ) + } + +@@ -874,16 +856,8 @@ impl Step for LlvmBitcodeLinker { + + fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> { + let builder = run.builder; +- run.path("src/tools/llvm-bitcode-linker").default_condition( +- builder.config.extended +- && builder +- .config +- .tools +- .as_ref() +- .map_or(builder.build.unstable_features(), |tools| { +- tools.iter().any(|tool| tool == "llvm-bitcode-linker") +- }), +- ) ++ run.path("src/tools/llvm-bitcode-linker") ++ .default_condition(builder.tool_enabled("llvm-bitcode-linker")) + } + + fn make_run(run: RunConfig<'_>) { +diff --git a/src/bootstrap/src/lib.rs b/src/bootstrap/src/lib.rs +index c76ce3409562..780024e307ed 100644 +--- a/src/bootstrap/src/lib.rs ++++ b/src/bootstrap/src/lib.rs +@@ -1407,16 +1407,17 @@ fn default_wasi_runner(&self) -> Option<String> { + None + } + +- /// Returns whether it's requested that `wasm-component-ld` is built as part +- /// of the sysroot. This is done either with the `extended` key in +- /// `config.toml` or with the `tools` set. +- fn build_wasm_component_ld(&self) -> bool { +- if self.config.extended { +- return true; ++ /// Returns whether the specified tool is configured as part of this build. ++ /// ++ /// This requires that both the `extended` key is set and the `tools` key is ++ /// either unset or specifically contains the specified tool. ++ fn tool_enabled(&self, tool: &str) -> bool { ++ if !self.config.extended { ++ return false; + } + match &self.config.tools { +- Some(set) => set.contains("wasm-component-ld"), +- None => false, ++ Some(set) => set.contains(tool), ++ None => true, + } + } + +-- +2.46.0 + |
