@@ -1253,7 +1253,7 @@ pub struct RustDemangler {
1253
1253
}
1254
1254
1255
1255
impl Step for RustDemangler {
1256
- type Output = GeneratedTarball ;
1256
+ type Output = Option < GeneratedTarball > ;
1257
1257
const ONLY_HOSTS : bool = true ;
1258
1258
1259
1259
fn should_run ( run : ShouldRun < ' _ > ) -> ShouldRun < ' _ > {
@@ -1271,11 +1271,17 @@ impl Step for RustDemangler {
1271
1271
} ) ;
1272
1272
}
1273
1273
1274
- fn run ( self , builder : & Builder < ' _ > ) -> GeneratedTarball {
1274
+ fn run ( self , builder : & Builder < ' _ > ) -> Option < GeneratedTarball > {
1275
1275
let compiler = self . compiler ;
1276
1276
let target = self . target ;
1277
1277
assert ! ( builder. config. extended) ;
1278
1278
1279
+ // Only build this extended tool if explicitly included in `tools`, or if `profiler = true`
1280
+ let profiler = builder. config . profiler_enabled ( target) ;
1281
+ if !builder. config . tools . as_ref ( ) . map_or ( profiler, |t| t. contains ( "rust-demangler" ) ) {
1282
+ return None ;
1283
+ }
1284
+
1279
1285
let rust_demangler = builder
1280
1286
. ensure ( tool:: RustDemangler { compiler, target, extra_features : Vec :: new ( ) } )
1281
1287
. expect ( "rust-demangler expected to build - in-tree tool" ) ;
@@ -1286,7 +1292,7 @@ impl Step for RustDemangler {
1286
1292
tarball. is_preview ( true ) ;
1287
1293
tarball. add_file ( & rust_demangler, "bin" , 0o755 ) ;
1288
1294
tarball. add_legal_and_readme_to ( "share/doc/rust-demangler" ) ;
1289
- tarball. generate ( )
1295
+ Some ( tarball. generate ( ) )
1290
1296
}
1291
1297
}
1292
1298
@@ -1326,14 +1332,7 @@ impl Step for Extended {
1326
1332
let rustc_installer = builder. ensure ( Rustc { compiler : builder. compiler ( stage, target) } ) ;
1327
1333
let cargo_installer = builder. ensure ( Cargo { compiler, target } ) ;
1328
1334
let rustfmt_installer = builder. ensure ( Rustfmt { compiler, target } ) ;
1329
- let profiler = builder. config . profiler_enabled ( target) ;
1330
- let install_rust_demangler =
1331
- builder. config . tools . as_ref ( ) . map_or ( profiler, |t| t. contains ( "rust-demangler" ) ) ;
1332
- let rust_demangler_installer = if install_rust_demangler {
1333
- Some ( builder. ensure ( RustDemangler { compiler, target } ) )
1334
- } else {
1335
- None
1336
- } ;
1335
+ let rust_demangler_installer = builder. ensure ( RustDemangler { compiler, target } ) ;
1337
1336
let rls_installer = builder. ensure ( Rls { compiler, target } ) ;
1338
1337
let rust_analyzer_installer = builder. ensure ( RustAnalyzer { compiler, target } ) ;
1339
1338
let llvm_tools_installer = builder. ensure ( LlvmTools { target } ) ;
@@ -1359,14 +1358,12 @@ impl Step for Extended {
1359
1358
let mut tarballs = Vec :: new ( ) ;
1360
1359
tarballs. push ( rustc_installer) ;
1361
1360
tarballs. push ( cargo_installer) ;
1361
+ tarballs. push ( clippy_installer) ;
1362
+ tarballs. extend ( rust_demangler_installer. clone ( ) ) ;
1362
1363
tarballs. extend ( rls_installer. clone ( ) ) ;
1363
1364
tarballs. extend ( rust_analyzer_installer. clone ( ) ) ;
1364
- tarballs. push ( clippy_installer) ;
1365
1365
tarballs. extend ( miri_installer. clone ( ) ) ;
1366
1366
tarballs. extend ( rustfmt_installer. clone ( ) ) ;
1367
- if let Some ( rust_demangler_installer) = rust_demangler_installer {
1368
- tarballs. push ( rust_demangler_installer) ;
1369
- }
1370
1367
tarballs. extend ( llvm_tools_installer) ;
1371
1368
if let Some ( analysis_installer) = analysis_installer {
1372
1369
tarballs. push ( analysis_installer) ;
@@ -1421,6 +1418,9 @@ impl Step for Extended {
1421
1418
1422
1419
let xform = |p : & Path | {
1423
1420
let mut contents = t ! ( fs:: read_to_string( p) ) ;
1421
+ if rust_demangler_installer. is_none ( ) {
1422
+ contents = filter ( & contents, "rust-demangler" ) ;
1423
+ }
1424
1424
if rls_installer. is_none ( ) {
1425
1425
contents = filter ( & contents, "rls" ) ;
1426
1426
}
@@ -1468,11 +1468,10 @@ impl Step for Extended {
1468
1468
prepare ( "rust-docs" ) ;
1469
1469
prepare ( "rust-std" ) ;
1470
1470
prepare ( "rust-analysis" ) ;
1471
- if install_rust_demangler {
1471
+ prepare ( "clippy" ) ;
1472
+ if rust_demangler_installer. is_some ( ) {
1472
1473
prepare ( "rust-demangler" ) ;
1473
1474
}
1474
- prepare ( "clippy" ) ;
1475
-
1476
1475
if rls_installer. is_some ( ) {
1477
1476
prepare ( "rls" ) ;
1478
1477
}
@@ -1520,6 +1519,8 @@ impl Step for Extended {
1520
1519
"rust-analyzer-preview" . to_string ( )
1521
1520
} else if name == "clippy" {
1522
1521
"clippy-preview" . to_string ( )
1522
+ } else if name == "rust-demangler" {
1523
+ "rust-demangler-preview" . to_string ( )
1523
1524
} else if name == "miri" {
1524
1525
"miri-preview" . to_string ( )
1525
1526
} else {
@@ -1534,12 +1535,12 @@ impl Step for Extended {
1534
1535
prepare ( "rustc" ) ;
1535
1536
prepare ( "cargo" ) ;
1536
1537
prepare ( "rust-analysis" ) ;
1537
- if install_rust_demangler {
1538
- prepare ( "rust-demangler" ) ;
1539
- }
1540
1538
prepare ( "rust-docs" ) ;
1541
1539
prepare ( "rust-std" ) ;
1542
1540
prepare ( "clippy" ) ;
1541
+ if rust_demangler_installer. is_some ( ) {
1542
+ prepare ( "rust-demangler" ) ;
1543
+ }
1543
1544
if rls_installer. is_some ( ) {
1544
1545
prepare ( "rls" ) ;
1545
1546
}
@@ -1681,7 +1682,7 @@ impl Step for Extended {
1681
1682
. arg ( "-t" )
1682
1683
. arg ( etc. join ( "msi/remove-duplicates.xsl" ) ) ,
1683
1684
) ;
1684
- if install_rust_demangler {
1685
+ if rust_demangler_installer . is_some ( ) {
1685
1686
builder. run (
1686
1687
Command :: new ( & heat)
1687
1688
. current_dir ( & exe)
@@ -1773,6 +1774,9 @@ impl Step for Extended {
1773
1774
. arg ( & input) ;
1774
1775
add_env ( builder, & mut cmd, target) ;
1775
1776
1777
+ if rust_demangler_installer. is_some ( ) {
1778
+ cmd. arg ( "-dRustDemanglerDir=rust-demangler" ) ;
1779
+ }
1776
1780
if rls_installer. is_some ( ) {
1777
1781
cmd. arg ( "-dRlsDir=rls" ) ;
1778
1782
}
@@ -1795,7 +1799,7 @@ impl Step for Extended {
1795
1799
candle ( "CargoGroup.wxs" . as_ref ( ) ) ;
1796
1800
candle ( "StdGroup.wxs" . as_ref ( ) ) ;
1797
1801
candle ( "ClippyGroup.wxs" . as_ref ( ) ) ;
1798
- if install_rust_demangler {
1802
+ if rust_demangler_installer . is_some ( ) {
1799
1803
candle ( "RustDemanglerGroup.wxs" . as_ref ( ) ) ;
1800
1804
}
1801
1805
if rls_installer. is_some ( ) {
@@ -1844,7 +1848,7 @@ impl Step for Extended {
1844
1848
if rust_analyzer_installer. is_some ( ) {
1845
1849
cmd. arg ( "RustAnalyzerGroup.wixobj" ) ;
1846
1850
}
1847
- if install_rust_demangler {
1851
+ if rust_demangler_installer . is_some ( ) {
1848
1852
cmd. arg ( "RustDemanglerGroup.wixobj" ) ;
1849
1853
}
1850
1854
if miri_installer. is_some ( ) {
0 commit comments