Skip to content

Commit 7366064

Browse files
committed
Add run method to BootstrapCommand
This makes it easier to use commands in a "Fluent-API" style, and also removes the need for the `AsMut` trait hack that was used before to allow passing both `BootstrapCommand` and `&mut BootstrapCommand` to `Builder::run`. The `Builder::run` method was still kept and can be used explicitly, if needed for some reason.
1 parent e2cf31a commit 7366064

22 files changed

+288
-288
lines changed

src/bootstrap/src/core/build_steps/clean.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ macro_rules! clean_crate_tree {
8585

8686
// NOTE: doesn't use `run_cargo` because we don't want to save a stamp file,
8787
// and doesn't use `stream_cargo` to avoid passing `--message-format` which `clean` doesn't accept.
88-
builder.run(cargo);
88+
cargo.run(builder);
8989
}
9090
}
9191
)+ }

src/bootstrap/src/core/build_steps/compile.rs

+13-12
Original file line numberDiff line numberDiff line change
@@ -779,14 +779,13 @@ impl Step for StartupObjects {
779779
// a local_rebuild compiler already has stage1 features
780780
cmd.arg("--cfg").arg("bootstrap");
781781
}
782-
builder.run(
783-
cmd.arg("--target")
784-
.arg(target.rustc_target_arg())
785-
.arg("--emit=obj")
786-
.arg("-o")
787-
.arg(dst_file)
788-
.arg(src_file),
789-
);
782+
cmd.arg("--target")
783+
.arg(target.rustc_target_arg())
784+
.arg("--emit=obj")
785+
.arg("-o")
786+
.arg(dst_file)
787+
.arg(src_file)
788+
.run(builder);
790789
}
791790

792791
let target = sysroot_dir.join((*file).to_string() + ".o");
@@ -1491,7 +1490,7 @@ pub fn compiler_file(
14911490
let mut cmd = BootstrapCommand::new(compiler);
14921491
cmd.args(builder.cflags(target, GitRepo::Rustc, c));
14931492
cmd.arg(format!("-print-file-name={file}"));
1494-
let out = builder.run(cmd.capture_stdout()).stdout();
1493+
let out = cmd.capture_stdout().run(builder).stdout();
14951494
PathBuf::from(out.trim())
14961495
}
14971496

@@ -1836,8 +1835,10 @@ impl Step for Assemble {
18361835
let llvm::LlvmResult { llvm_config, .. } =
18371836
builder.ensure(llvm::Llvm { target: target_compiler.host });
18381837
if !builder.config.dry_run() && builder.config.llvm_tools_enabled {
1839-
let llvm_bin_dir = builder
1840-
.run(BootstrapCommand::new(llvm_config).capture_stdout().arg("--bindir"))
1838+
let llvm_bin_dir = BootstrapCommand::new(llvm_config)
1839+
.capture_stdout()
1840+
.arg("--bindir")
1841+
.run(builder)
18411842
.stdout();
18421843
let llvm_bin_dir = Path::new(llvm_bin_dir.trim());
18431844

@@ -2163,7 +2164,7 @@ pub fn strip_debug(builder: &Builder<'_>, target: TargetSelection, path: &Path)
21632164
}
21642165

21652166
let previous_mtime = FileTime::from_last_modification_time(&path.metadata().unwrap());
2166-
builder.run(BootstrapCommand::new("strip").capture().arg("--strip-debug").arg(path));
2167+
BootstrapCommand::new("strip").capture().arg("--strip-debug").arg(path).run(builder);
21672168

21682169
// After running `strip`, we have to set the file modification time to what it was before,
21692170
// otherwise we risk Cargo invalidating its fingerprint and rebuilding the world next time

src/bootstrap/src/core/build_steps/dist.rs

+116-125
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ fn make_win_dist(
182182
//Ask gcc where it keeps its stuff
183183
let mut cmd = BootstrapCommand::new(builder.cc(target));
184184
cmd.arg("-print-search-dirs");
185-
let gcc_out = builder.run(cmd.capture_stdout()).stdout();
185+
let gcc_out = cmd.capture_stdout().run(builder).stdout();
186186

187187
let mut bin_path: Vec<_> = env::split_paths(&env::var_os("PATH").unwrap_or_default()).collect();
188188
let mut lib_path = Vec::new();
@@ -1061,7 +1061,7 @@ impl Step for PlainSourceTarball {
10611061
}
10621062

10631063
let config = if !builder.config.dry_run() {
1064-
builder.run(cmd.capture()).stdout()
1064+
cmd.capture().run(builder).stdout()
10651065
} else {
10661066
String::new()
10671067
};
@@ -1606,7 +1606,7 @@ impl Step for Extended {
16061606
.arg(pkg.join(component))
16071607
.arg("--nopayload")
16081608
.arg(pkg.join(component).with_extension("pkg"));
1609-
builder.run(cmd);
1609+
cmd.run(builder);
16101610
};
16111611

16121612
let prepare = |name: &str| {
@@ -1649,7 +1649,7 @@ impl Step for Extended {
16491649
.arg("--package-path")
16501650
.arg(&pkg);
16511651
let _time = timeit(builder);
1652-
builder.run(cmd);
1652+
cmd.run(builder);
16531653
}
16541654

16551655
if target.is_windows() {
@@ -1703,162 +1703,153 @@ impl Step for Extended {
17031703
let light = wix.join("bin/light.exe");
17041704

17051705
let heat_flags = ["-nologo", "-gg", "-sfrag", "-srd", "-sreg"];
1706-
builder.run(
1706+
BootstrapCommand::new(&heat)
1707+
.current_dir(&exe)
1708+
.arg("dir")
1709+
.arg("rustc")
1710+
.args(heat_flags)
1711+
.arg("-cg")
1712+
.arg("RustcGroup")
1713+
.arg("-dr")
1714+
.arg("Rustc")
1715+
.arg("-var")
1716+
.arg("var.RustcDir")
1717+
.arg("-out")
1718+
.arg(exe.join("RustcGroup.wxs"))
1719+
.run(builder);
1720+
if built_tools.contains("rust-docs") {
17071721
BootstrapCommand::new(&heat)
17081722
.current_dir(&exe)
17091723
.arg("dir")
1710-
.arg("rustc")
1724+
.arg("rust-docs")
17111725
.args(heat_flags)
17121726
.arg("-cg")
1713-
.arg("RustcGroup")
1727+
.arg("DocsGroup")
17141728
.arg("-dr")
1715-
.arg("Rustc")
1729+
.arg("Docs")
17161730
.arg("-var")
1717-
.arg("var.RustcDir")
1731+
.arg("var.DocsDir")
17181732
.arg("-out")
1719-
.arg(exe.join("RustcGroup.wxs")),
1720-
);
1721-
if built_tools.contains("rust-docs") {
1722-
builder.run(
1723-
BootstrapCommand::new(&heat)
1724-
.current_dir(&exe)
1725-
.arg("dir")
1726-
.arg("rust-docs")
1727-
.args(heat_flags)
1728-
.arg("-cg")
1729-
.arg("DocsGroup")
1730-
.arg("-dr")
1731-
.arg("Docs")
1732-
.arg("-var")
1733-
.arg("var.DocsDir")
1734-
.arg("-out")
1735-
.arg(exe.join("DocsGroup.wxs"))
1736-
.arg("-t")
1737-
.arg(etc.join("msi/squash-components.xsl")),
1738-
);
1733+
.arg(exe.join("DocsGroup.wxs"))
1734+
.arg("-t")
1735+
.arg(etc.join("msi/squash-components.xsl"))
1736+
.run(builder);
17391737
}
1740-
builder.run(
1738+
BootstrapCommand::new(&heat)
1739+
.current_dir(&exe)
1740+
.arg("dir")
1741+
.arg("cargo")
1742+
.args(heat_flags)
1743+
.arg("-cg")
1744+
.arg("CargoGroup")
1745+
.arg("-dr")
1746+
.arg("Cargo")
1747+
.arg("-var")
1748+
.arg("var.CargoDir")
1749+
.arg("-out")
1750+
.arg(exe.join("CargoGroup.wxs"))
1751+
.arg("-t")
1752+
.arg(etc.join("msi/remove-duplicates.xsl"))
1753+
.run(builder);
1754+
BootstrapCommand::new(&heat)
1755+
.current_dir(&exe)
1756+
.arg("dir")
1757+
.arg("rust-std")
1758+
.args(heat_flags)
1759+
.arg("-cg")
1760+
.arg("StdGroup")
1761+
.arg("-dr")
1762+
.arg("Std")
1763+
.arg("-var")
1764+
.arg("var.StdDir")
1765+
.arg("-out")
1766+
.arg(exe.join("StdGroup.wxs"))
1767+
.run(builder);
1768+
if built_tools.contains("rust-analyzer") {
17411769
BootstrapCommand::new(&heat)
17421770
.current_dir(&exe)
17431771
.arg("dir")
1744-
.arg("cargo")
1772+
.arg("rust-analyzer")
17451773
.args(heat_flags)
17461774
.arg("-cg")
1747-
.arg("CargoGroup")
1775+
.arg("RustAnalyzerGroup")
17481776
.arg("-dr")
1749-
.arg("Cargo")
1777+
.arg("RustAnalyzer")
17501778
.arg("-var")
1751-
.arg("var.CargoDir")
1779+
.arg("var.RustAnalyzerDir")
17521780
.arg("-out")
1753-
.arg(exe.join("CargoGroup.wxs"))
1781+
.arg(exe.join("RustAnalyzerGroup.wxs"))
17541782
.arg("-t")
1755-
.arg(etc.join("msi/remove-duplicates.xsl")),
1756-
);
1757-
builder.run(
1783+
.arg(etc.join("msi/remove-duplicates.xsl"))
1784+
.run(builder);
1785+
}
1786+
if built_tools.contains("clippy") {
17581787
BootstrapCommand::new(&heat)
17591788
.current_dir(&exe)
17601789
.arg("dir")
1761-
.arg("rust-std")
1790+
.arg("clippy")
17621791
.args(heat_flags)
17631792
.arg("-cg")
1764-
.arg("StdGroup")
1793+
.arg("ClippyGroup")
17651794
.arg("-dr")
1766-
.arg("Std")
1795+
.arg("Clippy")
17671796
.arg("-var")
1768-
.arg("var.StdDir")
1797+
.arg("var.ClippyDir")
17691798
.arg("-out")
1770-
.arg(exe.join("StdGroup.wxs")),
1771-
);
1772-
if built_tools.contains("rust-analyzer") {
1773-
builder.run(
1774-
BootstrapCommand::new(&heat)
1775-
.current_dir(&exe)
1776-
.arg("dir")
1777-
.arg("rust-analyzer")
1778-
.args(heat_flags)
1779-
.arg("-cg")
1780-
.arg("RustAnalyzerGroup")
1781-
.arg("-dr")
1782-
.arg("RustAnalyzer")
1783-
.arg("-var")
1784-
.arg("var.RustAnalyzerDir")
1785-
.arg("-out")
1786-
.arg(exe.join("RustAnalyzerGroup.wxs"))
1787-
.arg("-t")
1788-
.arg(etc.join("msi/remove-duplicates.xsl")),
1789-
);
1790-
}
1791-
if built_tools.contains("clippy") {
1792-
builder.run(
1793-
BootstrapCommand::new(&heat)
1794-
.current_dir(&exe)
1795-
.arg("dir")
1796-
.arg("clippy")
1797-
.args(heat_flags)
1798-
.arg("-cg")
1799-
.arg("ClippyGroup")
1800-
.arg("-dr")
1801-
.arg("Clippy")
1802-
.arg("-var")
1803-
.arg("var.ClippyDir")
1804-
.arg("-out")
1805-
.arg(exe.join("ClippyGroup.wxs"))
1806-
.arg("-t")
1807-
.arg(etc.join("msi/remove-duplicates.xsl")),
1808-
);
1799+
.arg(exe.join("ClippyGroup.wxs"))
1800+
.arg("-t")
1801+
.arg(etc.join("msi/remove-duplicates.xsl"))
1802+
.run(builder);
18091803
}
18101804
if built_tools.contains("miri") {
1811-
builder.run(
1812-
BootstrapCommand::new(&heat)
1813-
.current_dir(&exe)
1814-
.arg("dir")
1815-
.arg("miri")
1816-
.args(heat_flags)
1817-
.arg("-cg")
1818-
.arg("MiriGroup")
1819-
.arg("-dr")
1820-
.arg("Miri")
1821-
.arg("-var")
1822-
.arg("var.MiriDir")
1823-
.arg("-out")
1824-
.arg(exe.join("MiriGroup.wxs"))
1825-
.arg("-t")
1826-
.arg(etc.join("msi/remove-duplicates.xsl")),
1827-
);
1828-
}
1829-
builder.run(
18301805
BootstrapCommand::new(&heat)
18311806
.current_dir(&exe)
18321807
.arg("dir")
1833-
.arg("rust-analysis")
1808+
.arg("miri")
18341809
.args(heat_flags)
18351810
.arg("-cg")
1836-
.arg("AnalysisGroup")
1811+
.arg("MiriGroup")
18371812
.arg("-dr")
1838-
.arg("Analysis")
1813+
.arg("Miri")
18391814
.arg("-var")
1840-
.arg("var.AnalysisDir")
1815+
.arg("var.MiriDir")
18411816
.arg("-out")
1842-
.arg(exe.join("AnalysisGroup.wxs"))
1817+
.arg(exe.join("MiriGroup.wxs"))
18431818
.arg("-t")
1844-
.arg(etc.join("msi/remove-duplicates.xsl")),
1845-
);
1819+
.arg(etc.join("msi/remove-duplicates.xsl"))
1820+
.run(builder);
1821+
}
1822+
BootstrapCommand::new(&heat)
1823+
.current_dir(&exe)
1824+
.arg("dir")
1825+
.arg("rust-analysis")
1826+
.args(heat_flags)
1827+
.arg("-cg")
1828+
.arg("AnalysisGroup")
1829+
.arg("-dr")
1830+
.arg("Analysis")
1831+
.arg("-var")
1832+
.arg("var.AnalysisDir")
1833+
.arg("-out")
1834+
.arg(exe.join("AnalysisGroup.wxs"))
1835+
.arg("-t")
1836+
.arg(etc.join("msi/remove-duplicates.xsl"))
1837+
.run(builder);
18461838
if target.ends_with("windows-gnu") {
1847-
builder.run(
1848-
BootstrapCommand::new(&heat)
1849-
.current_dir(&exe)
1850-
.arg("dir")
1851-
.arg("rust-mingw")
1852-
.args(heat_flags)
1853-
.arg("-cg")
1854-
.arg("GccGroup")
1855-
.arg("-dr")
1856-
.arg("Gcc")
1857-
.arg("-var")
1858-
.arg("var.GccDir")
1859-
.arg("-out")
1860-
.arg(exe.join("GccGroup.wxs")),
1861-
);
1839+
BootstrapCommand::new(&heat)
1840+
.current_dir(&exe)
1841+
.arg("dir")
1842+
.arg("rust-mingw")
1843+
.args(heat_flags)
1844+
.arg("-cg")
1845+
.arg("GccGroup")
1846+
.arg("-dr")
1847+
.arg("Gcc")
1848+
.arg("-var")
1849+
.arg("var.GccDir")
1850+
.arg("-out")
1851+
.arg(exe.join("GccGroup.wxs"))
1852+
.run(builder);
18621853
}
18631854

18641855
let candle = |input: &Path| {
@@ -1893,7 +1884,7 @@ impl Step for Extended {
18931884
if target.ends_with("windows-gnu") {
18941885
cmd.arg("-dGccDir=rust-mingw");
18951886
}
1896-
builder.run(cmd);
1887+
cmd.run(builder);
18971888
};
18981889
candle(&xform(&etc.join("msi/rust.wxs")));
18991890
candle(&etc.join("msi/ui.wxs"));
@@ -1962,7 +1953,7 @@ impl Step for Extended {
19621953
cmd.arg("-sice:ICE57");
19631954

19641955
let _time = timeit(builder);
1965-
builder.run(cmd);
1956+
cmd.run(builder);
19661957

19671958
if !builder.config.dry_run() {
19681959
t!(move_file(exe.join(&filename), distdir(builder).join(&filename)));
@@ -2084,7 +2075,7 @@ fn maybe_install_llvm(
20842075
let files = if builder.config.dry_run() {
20852076
"".into()
20862077
} else {
2087-
builder.run(cmd.capture_stdout()).stdout()
2078+
cmd.capture_stdout().run(builder).stdout()
20882079
};
20892080
let build_llvm_out = &builder.llvm_out(builder.config.build);
20902081
let target_llvm_out = &builder.llvm_out(target);

0 commit comments

Comments
 (0)