Skip to content

Commit

Permalink
Unrolled build for rust-lang#130034
Browse files Browse the repository at this point in the history
Rollup merge of rust-lang#130034 - alexcrichton:fix-some-wasm-component-ld-comments, r=onur-ozkan

 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`.

While here I also fixed a typo pointed out in rust-lang#126967 (review)

[comment]: rust-lang#127866 (comment)
  • Loading branch information
rust-timer authored Sep 9, 2024
2 parents 263a3ae + c15469a commit d048925
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 44 deletions.
2 changes: 1 addition & 1 deletion src/bootstrap/src/core/build_steps/compile.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1912,7 +1912,7 @@ impl Step for Assemble {
// 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,
Expand Down
2 changes: 1 addition & 1 deletion src/bootstrap/src/core/build_steps/dist.rs
Original file line number Diff line number Diff line change
Expand Up @@ -473,7 +473,7 @@ impl Step for Rustc {
);
}
}
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));
Expand Down
38 changes: 6 additions & 32 deletions src/bootstrap/src/core/build_steps/tool.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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<'_>) {
Expand Down Expand Up @@ -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<'_>) {
Expand Down Expand Up @@ -821,12 +807,8 @@ impl Step for RustAnalyzerProcMacroSrv {
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"),
)
}

Expand Down Expand Up @@ -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<'_>) {
Expand Down
17 changes: 9 additions & 8 deletions src/bootstrap/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1407,16 +1407,17 @@ Executed at: {executed_at}"#,
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,
}
}

Expand Down
4 changes: 2 additions & 2 deletions src/tools/wasm-component-ld/README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# `wasm-component-ld`

This wrapper is a wrapper around the [`wasm-component-ld`] crates.io crate. That
crate. That crate is itself a thin wrapper around two pieces:
This wrapper is a wrapper around the [`wasm-component-ld`] crates.io crate.
That crate is itself a thin wrapper around two pieces:

* `wasm-ld` - the LLVM-based linker distributed as part of LLD and packaged in
Rust as `rust-lld`.
Expand Down

0 comments on commit d048925

Please sign in to comment.