Skip to content

Commit 2c21a6f

Browse files
committed
Auto merge of #74495 - shepmaster:bootstrap-dist-target-files, r=Mark-Simulacrum
Teach bootstrap install and dist commands about TargetSelection With this, we can now use a target JSON file to build a cross-compiler: ``` x.py install --host ../aarch64-apple-darwin.json --target aarch64-apple-darwin ``` r? @Mark-Simulacrum
2 parents d7f9451 + 57614da commit 2c21a6f

File tree

2 files changed

+55
-51
lines changed

2 files changed

+55
-51
lines changed

src/bootstrap/dist.rs

+54-50
Original file line numberDiff line numberDiff line change
@@ -91,15 +91,15 @@ impl Step for Docs {
9191
let name = pkgname(builder, "rust-docs");
9292

9393
if !builder.config.docs {
94-
return distdir(builder).join(format!("{}-{}.tar.gz", name, host));
94+
return distdir(builder).join(format!("{}-{}.tar.gz", name, host.triple));
9595
}
9696

9797
builder.default_doc(None);
9898

9999
builder.info(&format!("Dist docs ({})", host));
100100
let _time = timeit(builder);
101101

102-
let image = tmpdir(builder).join(format!("{}-{}-image", name, host));
102+
let image = tmpdir(builder).join(format!("{}-{}-image", name, host.triple));
103103
let _ = fs::remove_dir_all(&image);
104104

105105
let dst = image.join("share/doc/rust/html");
@@ -119,14 +119,14 @@ impl Step for Docs {
119119
.arg(&tmpdir(builder))
120120
.arg("--output-dir")
121121
.arg(&distdir(builder))
122-
.arg(format!("--package-name={}-{}", name, host))
122+
.arg(format!("--package-name={}-{}", name, host.triple))
123123
.arg("--component-name=rust-docs")
124124
.arg("--legacy-manifest-dirs=rustlib,cargo")
125125
.arg("--bulk-dirs=share/doc/rust/html");
126126
builder.run(&mut cmd);
127127
builder.remove_dir(&image);
128128

129-
distdir(builder).join(format!("{}-{}.tar.gz", name, host))
129+
distdir(builder).join(format!("{}-{}.tar.gz", name, host.triple))
130130
}
131131
}
132132

@@ -154,12 +154,12 @@ impl Step for RustcDocs {
154154
let name = pkgname(builder, "rustc-docs");
155155

156156
if !builder.config.compiler_docs {
157-
return distdir(builder).join(format!("{}-{}.tar.gz", name, host));
157+
return distdir(builder).join(format!("{}-{}.tar.gz", name, host.triple));
158158
}
159159

160160
builder.default_doc(None);
161161

162-
let image = tmpdir(builder).join(format!("{}-{}-image", name, host));
162+
let image = tmpdir(builder).join(format!("{}-{}-image", name, host.triple));
163163
let _ = fs::remove_dir_all(&image);
164164

165165
let dst = image.join("share/doc/rust/html");
@@ -178,7 +178,7 @@ impl Step for RustcDocs {
178178
.arg(&tmpdir(builder))
179179
.arg("--output-dir")
180180
.arg(&distdir(builder))
181-
.arg(format!("--package-name={}-{}", name, host))
181+
.arg(format!("--package-name={}-{}", name, host.triple))
182182
.arg("--component-name=rustc-docs")
183183
.arg("--legacy-manifest-dirs=rustlib,cargo")
184184
.arg("--bulk-dirs=share/doc/rust/html");
@@ -188,7 +188,7 @@ impl Step for RustcDocs {
188188
builder.run(&mut cmd);
189189
builder.remove_dir(&image);
190190

191-
distdir(builder).join(format!("{}-{}.tar.gz", name, host))
191+
distdir(builder).join(format!("{}-{}.tar.gz", name, host.triple))
192192
}
193193
}
194194

@@ -372,7 +372,7 @@ impl Step for Mingw {
372372
builder.info(&format!("Dist mingw ({})", host));
373373
let _time = timeit(builder);
374374
let name = pkgname(builder, "rust-mingw");
375-
let image = tmpdir(builder).join(format!("{}-{}-image", name, host));
375+
let image = tmpdir(builder).join(format!("{}-{}-image", name, host.triple));
376376
let _ = fs::remove_dir_all(&image);
377377
t!(fs::create_dir_all(&image));
378378

@@ -393,12 +393,12 @@ impl Step for Mingw {
393393
.arg(&tmpdir(builder))
394394
.arg("--output-dir")
395395
.arg(&distdir(builder))
396-
.arg(format!("--package-name={}-{}", name, host))
396+
.arg(format!("--package-name={}-{}", name, host.triple))
397397
.arg("--component-name=rust-mingw")
398398
.arg("--legacy-manifest-dirs=rustlib,cargo");
399399
builder.run(&mut cmd);
400400
t!(fs::remove_dir_all(&image));
401-
Some(distdir(builder).join(format!("{}-{}.tar.gz", name, host)))
401+
Some(distdir(builder).join(format!("{}-{}.tar.gz", name, host.triple)))
402402
}
403403
}
404404

@@ -427,9 +427,9 @@ impl Step for Rustc {
427427
let host = self.compiler.host;
428428

429429
let name = pkgname(builder, "rustc");
430-
let image = tmpdir(builder).join(format!("{}-{}-image", name, host));
430+
let image = tmpdir(builder).join(format!("{}-{}-image", name, host.triple));
431431
let _ = fs::remove_dir_all(&image);
432-
let overlay = tmpdir(builder).join(format!("{}-{}-overlay", name, host));
432+
let overlay = tmpdir(builder).join(format!("{}-{}-overlay", name, host.triple));
433433
let _ = fs::remove_dir_all(&overlay);
434434

435435
// Prepare the rustc "image", what will actually end up getting installed
@@ -483,17 +483,17 @@ impl Step for Rustc {
483483
.arg(&distdir(builder))
484484
.arg("--non-installed-overlay")
485485
.arg(&overlay)
486-
.arg(format!("--package-name={}-{}", name, host))
486+
.arg(format!("--package-name={}-{}", name, host.triple))
487487
.arg("--component-name=rustc")
488488
.arg("--legacy-manifest-dirs=rustlib,cargo");
489489

490-
builder.info(&format!("Dist rustc stage{} ({})", compiler.stage, host));
490+
builder.info(&format!("Dist rustc stage{} ({})", compiler.stage, host.triple));
491491
let _time = timeit(builder);
492492
builder.run(&mut cmd);
493493
builder.remove_dir(&image);
494494
builder.remove_dir(&overlay);
495495

496-
return distdir(builder).join(format!("{}-{}.tar.gz", name, host));
496+
return distdir(builder).join(format!("{}-{}.tar.gz", name, host.triple));
497497

498498
fn prepare_image(builder: &Builder<'_>, compiler: Compiler, image: &Path) {
499499
let host = compiler.host;
@@ -707,14 +707,14 @@ impl Step for Std {
707707
let target = self.target;
708708

709709
let name = pkgname(builder, "rust-std");
710-
let archive = distdir(builder).join(format!("{}-{}.tar.gz", name, target));
710+
let archive = distdir(builder).join(format!("{}-{}.tar.gz", name, target.triple));
711711
if skip_host_target_lib(builder, compiler) {
712712
return archive;
713713
}
714714

715715
builder.ensure(compile::Std { compiler, target });
716716

717-
let image = tmpdir(builder).join(format!("{}-{}-image", name, target));
717+
let image = tmpdir(builder).join(format!("{}-{}-image", name, target.triple));
718718
let _ = fs::remove_dir_all(&image);
719719

720720
let compiler_to_use = builder.compiler_for(compiler.stage, compiler.host, target);
@@ -732,8 +732,8 @@ impl Step for Std {
732732
.arg(&tmpdir(builder))
733733
.arg("--output-dir")
734734
.arg(&distdir(builder))
735-
.arg(format!("--package-name={}-{}", name, target))
736-
.arg(format!("--component-name=rust-std-{}", target))
735+
.arg(format!("--package-name={}-{}", name, target.triple))
736+
.arg(format!("--component-name=rust-std-{}", target.triple))
737737
.arg("--legacy-manifest-dirs=rustlib,cargo");
738738

739739
builder
@@ -776,14 +776,14 @@ impl Step for RustcDev {
776776
let target = self.target;
777777

778778
let name = pkgname(builder, "rustc-dev");
779-
let archive = distdir(builder).join(format!("{}-{}.tar.gz", name, target));
779+
let archive = distdir(builder).join(format!("{}-{}.tar.gz", name, target.triple));
780780
if skip_host_target_lib(builder, compiler) {
781781
return archive;
782782
}
783783

784784
builder.ensure(compile::Rustc { compiler, target });
785785

786-
let image = tmpdir(builder).join(format!("{}-{}-image", name, target));
786+
let image = tmpdir(builder).join(format!("{}-{}-image", name, target.triple));
787787
let _ = fs::remove_dir_all(&image);
788788

789789
let compiler_to_use = builder.compiler_for(compiler.stage, compiler.host, target);
@@ -801,8 +801,8 @@ impl Step for RustcDev {
801801
.arg(&tmpdir(builder))
802802
.arg("--output-dir")
803803
.arg(&distdir(builder))
804-
.arg(format!("--package-name={}-{}", name, target))
805-
.arg(format!("--component-name=rustc-dev-{}", target))
804+
.arg(format!("--package-name={}-{}", name, target.triple))
805+
.arg(format!("--component-name=rustc-dev-{}", target.triple))
806806
.arg("--legacy-manifest-dirs=rustlib,cargo");
807807

808808
builder.info(&format!(
@@ -853,12 +853,12 @@ impl Step for Analysis {
853853
let name = pkgname(builder, "rust-analysis");
854854

855855
if compiler.host != builder.config.build {
856-
return distdir(builder).join(format!("{}-{}.tar.gz", name, target));
856+
return distdir(builder).join(format!("{}-{}.tar.gz", name, target.triple));
857857
}
858858

859859
builder.ensure(compile::Std { compiler, target });
860860

861-
let image = tmpdir(builder).join(format!("{}-{}-image", name, target));
861+
let image = tmpdir(builder).join(format!("{}-{}-image", name, target.triple));
862862

863863
let src = builder
864864
.stage_out(compiler, Mode::Std)
@@ -883,15 +883,15 @@ impl Step for Analysis {
883883
.arg(&tmpdir(builder))
884884
.arg("--output-dir")
885885
.arg(&distdir(builder))
886-
.arg(format!("--package-name={}-{}", name, target))
887-
.arg(format!("--component-name=rust-analysis-{}", target))
886+
.arg(format!("--package-name={}-{}", name, target.triple))
887+
.arg(format!("--component-name=rust-analysis-{}", target.triple))
888888
.arg("--legacy-manifest-dirs=rustlib,cargo");
889889

890890
builder.info("Dist analysis");
891891
let _time = timeit(builder);
892892
builder.run(&mut cmd);
893893
builder.remove_dir(&image);
894-
distdir(builder).join(format!("{}-{}.tar.gz", name, target))
894+
distdir(builder).join(format!("{}-{}.tar.gz", name, target.triple))
895895
}
896896
}
897897

@@ -1242,14 +1242,14 @@ impl Step for Cargo {
12421242
.arg(&distdir(builder))
12431243
.arg("--non-installed-overlay")
12441244
.arg(&overlay)
1245-
.arg(format!("--package-name={}-{}", name, target))
1245+
.arg(format!("--package-name={}-{}", name, target.triple))
12461246
.arg("--component-name=cargo")
12471247
.arg("--legacy-manifest-dirs=rustlib,cargo");
12481248

12491249
builder.info(&format!("Dist cargo stage{} ({})", compiler.stage, target));
12501250
let _time = timeit(builder);
12511251
builder.run(&mut cmd);
1252-
distdir(builder).join(format!("{}-{}.tar.gz", name, target))
1252+
distdir(builder).join(format!("{}-{}.tar.gz", name, target.triple))
12531253
}
12541254
}
12551255

@@ -1332,14 +1332,14 @@ impl Step for Rls {
13321332
.arg(&distdir(builder))
13331333
.arg("--non-installed-overlay")
13341334
.arg(&overlay)
1335-
.arg(format!("--package-name={}-{}", name, target))
1335+
.arg(format!("--package-name={}-{}", name, target.triple))
13361336
.arg("--legacy-manifest-dirs=rustlib,cargo")
13371337
.arg("--component-name=rls-preview");
13381338

1339-
builder.info(&format!("Dist RLS stage{} ({})", compiler.stage, target));
1339+
builder.info(&format!("Dist RLS stage{} ({})", compiler.stage, target.triple));
13401340
let _time = timeit(builder);
13411341
builder.run(&mut cmd);
1342-
Some(distdir(builder).join(format!("{}-{}.tar.gz", name, target)))
1342+
Some(distdir(builder).join(format!("{}-{}.tar.gz", name, target.triple)))
13431343
}
13441344
}
13451345

@@ -1419,14 +1419,14 @@ impl Step for RustAnalyzer {
14191419
.arg(&distdir(builder))
14201420
.arg("--non-installed-overlay")
14211421
.arg(&overlay)
1422-
.arg(format!("--package-name={}-{}", name, target))
1422+
.arg(format!("--package-name={}-{}", name, target.triple))
14231423
.arg("--legacy-manifest-dirs=rustlib,cargo")
14241424
.arg("--component-name=rust-analyzer-preview");
14251425

14261426
builder.info(&format!("Dist rust-analyzer stage{} ({})", compiler.stage, target));
14271427
let _time = timeit(builder);
14281428
builder.run(&mut cmd);
1429-
distdir(builder).join(format!("{}-{}.tar.gz", name, target))
1429+
distdir(builder).join(format!("{}-{}.tar.gz", name, target.triple))
14301430
}
14311431
}
14321432

@@ -1510,14 +1510,14 @@ impl Step for Clippy {
15101510
.arg(&distdir(builder))
15111511
.arg("--non-installed-overlay")
15121512
.arg(&overlay)
1513-
.arg(format!("--package-name={}-{}", name, target))
1513+
.arg(format!("--package-name={}-{}", name, target.triple))
15141514
.arg("--legacy-manifest-dirs=rustlib,cargo")
15151515
.arg("--component-name=clippy-preview");
15161516

15171517
builder.info(&format!("Dist clippy stage{} ({})", compiler.stage, target));
15181518
let _time = timeit(builder);
15191519
builder.run(&mut cmd);
1520-
distdir(builder).join(format!("{}-{}.tar.gz", name, target))
1520+
distdir(builder).join(format!("{}-{}.tar.gz", name, target.triple))
15211521
}
15221522
}
15231523

@@ -1607,14 +1607,14 @@ impl Step for Miri {
16071607
.arg(&distdir(builder))
16081608
.arg("--non-installed-overlay")
16091609
.arg(&overlay)
1610-
.arg(format!("--package-name={}-{}", name, target))
1610+
.arg(format!("--package-name={}-{}", name, target.triple))
16111611
.arg("--legacy-manifest-dirs=rustlib,cargo")
16121612
.arg("--component-name=miri-preview");
16131613

16141614
builder.info(&format!("Dist miri stage{} ({})", compiler.stage, target));
16151615
let _time = timeit(builder);
16161616
builder.run(&mut cmd);
1617-
Some(distdir(builder).join(format!("{}-{}.tar.gz", name, target)))
1617+
Some(distdir(builder).join(format!("{}-{}.tar.gz", name, target.triple)))
16181618
}
16191619
}
16201620

@@ -1701,14 +1701,14 @@ impl Step for Rustfmt {
17011701
.arg(&distdir(builder))
17021702
.arg("--non-installed-overlay")
17031703
.arg(&overlay)
1704-
.arg(format!("--package-name={}-{}", name, target))
1704+
.arg(format!("--package-name={}-{}", name, target.triple))
17051705
.arg("--legacy-manifest-dirs=rustlib,cargo")
17061706
.arg("--component-name=rustfmt-preview");
17071707

17081708
builder.info(&format!("Dist Rustfmt stage{} ({})", compiler.stage, target));
17091709
let _time = timeit(builder);
17101710
builder.run(&mut cmd);
1711-
Some(distdir(builder).join(format!("{}-{}.tar.gz", name, target)))
1711+
Some(distdir(builder).join(format!("{}-{}.tar.gz", name, target.triple)))
17121712
}
17131713
}
17141714

@@ -1813,7 +1813,7 @@ impl Step for Extended {
18131813
.arg(&work)
18141814
.arg("--output-dir")
18151815
.arg(&distdir(builder))
1816-
.arg(format!("--package-name={}-{}", pkgname(builder, "rust"), target))
1816+
.arg(format!("--package-name={}-{}", pkgname(builder, "rust"), target.triple))
18171817
.arg("--legacy-manifest-dirs=rustlib,cargo")
18181818
.arg("--input-tarballs")
18191819
.arg(input_tarballs)
@@ -1893,7 +1893,7 @@ impl Step for Extended {
18931893
let prepare = |name: &str| {
18941894
builder.create_dir(&pkg.join(name));
18951895
builder.cp_r(
1896-
&work.join(&format!("{}-{}", pkgname(builder, name), target)),
1896+
&work.join(&format!("{}-{}", pkgname(builder, name), target.triple)),
18971897
&pkg.join(name),
18981898
);
18991899
builder.install(&etc.join("pkg/postinstall"), &pkg.join(name), 0o755);
@@ -1926,7 +1926,11 @@ impl Step for Extended {
19261926
.arg(xform(&etc.join("pkg/Distribution.xml")))
19271927
.arg("--resources")
19281928
.arg(pkg.join("res"))
1929-
.arg(distdir(builder).join(format!("{}-{}.pkg", pkgname(builder, "rust"), target)))
1929+
.arg(distdir(builder).join(format!(
1930+
"{}-{}.pkg",
1931+
pkgname(builder, "rust"),
1932+
target.triple
1933+
)))
19301934
.arg("--package-path")
19311935
.arg(&pkg);
19321936
let _time = timeit(builder);
@@ -1940,7 +1944,7 @@ impl Step for Extended {
19401944
let prepare = |name: &str| {
19411945
builder.create_dir(&exe.join(name));
19421946
let dir = if name == "rust-std" || name == "rust-analysis" {
1943-
format!("{}-{}", name, target)
1947+
format!("{}-{}", name, target.triple)
19441948
} else if name == "rls" {
19451949
"rls-preview".to_string()
19461950
} else if name == "rust-analyzer" {
@@ -1953,7 +1957,7 @@ impl Step for Extended {
19531957
name.to_string()
19541958
};
19551959
builder.cp_r(
1956-
&work.join(&format!("{}-{}", pkgname(builder, name), target)).join(dir),
1960+
&work.join(&format!("{}-{}", pkgname(builder, name), target.triple)).join(dir),
19571961
&exe.join(name),
19581962
);
19591963
builder.remove(&exe.join(name).join("manifest.in"));
@@ -2212,7 +2216,7 @@ impl Step for Extended {
22122216
builder.install(&etc.join("gfx/dialogbg.bmp"), &exe, 0o644);
22132217

22142218
builder.info(&format!("building `msi` installer with {:?}", light));
2215-
let filename = format!("{}-{}.msi", pkgname(builder, "rust"), target);
2219+
let filename = format!("{}-{}.msi", pkgname(builder, "rust"), target.triple);
22162220
let mut cmd = Command::new(&light);
22172221
cmd.arg("-nologo")
22182222
.arg("-ext")
@@ -2461,11 +2465,11 @@ impl Step for LlvmTools {
24612465
.arg(&distdir(builder))
24622466
.arg("--non-installed-overlay")
24632467
.arg(&overlay)
2464-
.arg(format!("--package-name={}-{}", name, target))
2468+
.arg(format!("--package-name={}-{}", name, target.triple))
24652469
.arg("--legacy-manifest-dirs=rustlib,cargo")
24662470
.arg("--component-name=llvm-tools-preview");
24672471

24682472
builder.run(&mut cmd);
2469-
Some(distdir(builder).join(format!("{}-{}.tar.gz", name, target)))
2473+
Some(distdir(builder).join(format!("{}-{}.tar.gz", name, target.triple)))
24702474
}
24712475
}

src/bootstrap/install.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ fn install_sh(
107107

108108
t!(fs::create_dir_all(&empty_dir));
109109
let package_name = if let Some(host) = host {
110-
format!("{}-{}", pkgname(builder, name), host)
110+
format!("{}-{}", pkgname(builder, name), host.triple)
111111
} else {
112112
pkgname(builder, name)
113113
};

0 commit comments

Comments
 (0)