@@ -1355,7 +1355,7 @@ pub struct RustAnalyzer {
1355
1355
}
1356
1356
1357
1357
impl Step for RustAnalyzer {
1358
- type Output = PathBuf ;
1358
+ type Output = Option < PathBuf > ;
1359
1359
const ONLY_HOSTS : bool = true ;
1360
1360
1361
1361
fn should_run ( run : ShouldRun < ' _ > ) -> ShouldRun < ' _ > {
@@ -1373,11 +1373,17 @@ impl Step for RustAnalyzer {
1373
1373
} ) ;
1374
1374
}
1375
1375
1376
- fn run ( self , builder : & Builder < ' _ > ) -> PathBuf {
1376
+ fn run ( self , builder : & Builder < ' _ > ) -> Option < PathBuf > {
1377
1377
let compiler = self . compiler ;
1378
1378
let target = self . target ;
1379
1379
assert ! ( builder. config. extended) ;
1380
1380
1381
+ if target. contains ( "riscv64" ) {
1382
+ // riscv64 currently has an LLVM bug that makes rust-analyzer unable
1383
+ // to build. See #74813 for details.
1384
+ return None ;
1385
+ }
1386
+
1381
1387
let src = builder. src . join ( "src/tools/rust-analyzer" ) ;
1382
1388
let release_num = builder. release_num ( "rust-analyzer/crates/rust-analyzer" ) ;
1383
1389
let name = pkgname ( builder, "rust-analyzer" ) ;
@@ -1431,7 +1437,7 @@ impl Step for RustAnalyzer {
1431
1437
builder. info ( & format ! ( "Dist rust-analyzer stage{} ({})" , compiler. stage, target) ) ;
1432
1438
let _time = timeit ( builder) ;
1433
1439
builder. run ( & mut cmd) ;
1434
- distdir ( builder) . join ( format ! ( "{}-{}.tar.gz" , name, target. triple) )
1440
+ Some ( distdir ( builder) . join ( format ! ( "{}-{}.tar.gz" , name, target. triple) ) )
1435
1441
}
1436
1442
}
1437
1443
@@ -1789,7 +1795,7 @@ impl Step for Extended {
1789
1795
tarballs. push ( rustc_installer) ;
1790
1796
tarballs. push ( cargo_installer) ;
1791
1797
tarballs. extend ( rls_installer. clone ( ) ) ;
1792
- tarballs. push ( rust_analyzer_installer. clone ( ) ) ;
1798
+ tarballs. extend ( rust_analyzer_installer. clone ( ) ) ;
1793
1799
tarballs. push ( clippy_installer) ;
1794
1800
tarballs. extend ( miri_installer. clone ( ) ) ;
1795
1801
tarballs. extend ( rustfmt_installer. clone ( ) ) ;
@@ -1867,7 +1873,9 @@ impl Step for Extended {
1867
1873
if rls_installer. is_none ( ) {
1868
1874
contents = filter ( & contents, "rls" ) ;
1869
1875
}
1870
- contents = filter ( & contents, "rust-analyzer" ) ;
1876
+ if rust_analyzer_installer. is_none ( ) {
1877
+ contents = filter ( & contents, "rust-analyzer" ) ;
1878
+ }
1871
1879
if miri_installer. is_none ( ) {
1872
1880
contents = filter ( & contents, "miri" ) ;
1873
1881
}
@@ -1914,7 +1922,9 @@ impl Step for Extended {
1914
1922
if rls_installer. is_some ( ) {
1915
1923
prepare ( "rls" ) ;
1916
1924
}
1917
- prepare ( "rust-analyzer" ) ;
1925
+ if rust_analyzer_installer. is_some ( ) {
1926
+ prepare ( "rust-analyzer" ) ;
1927
+ }
1918
1928
if miri_installer. is_some ( ) {
1919
1929
prepare ( "miri" ) ;
1920
1930
}
@@ -1976,7 +1986,9 @@ impl Step for Extended {
1976
1986
if rls_installer. is_some ( ) {
1977
1987
prepare ( "rls" ) ;
1978
1988
}
1979
- prepare ( "rust-analyzer" ) ;
1989
+ if rust_analyzer_installer. is_some ( ) {
1990
+ prepare ( "rust-analyzer" ) ;
1991
+ }
1980
1992
if miri_installer. is_some ( ) {
1981
1993
prepare ( "miri" ) ;
1982
1994
}
@@ -2076,23 +2088,25 @@ impl Step for Extended {
2076
2088
. arg ( etc. join ( "msi/remove-duplicates.xsl" ) ) ,
2077
2089
) ;
2078
2090
}
2079
- builder. run (
2080
- Command :: new ( & heat)
2081
- . current_dir ( & exe)
2082
- . arg ( "dir" )
2083
- . arg ( "rust-analyzer" )
2084
- . args ( & heat_flags)
2085
- . arg ( "-cg" )
2086
- . arg ( "RustAnalyzerGroup" )
2087
- . arg ( "-dr" )
2088
- . arg ( "RustAnalyzer" )
2089
- . arg ( "-var" )
2090
- . arg ( "var.RustAnalyzerDir" )
2091
- . arg ( "-out" )
2092
- . arg ( exe. join ( "RustAnalyzerGroup.wxs" ) )
2093
- . arg ( "-t" )
2094
- . arg ( etc. join ( "msi/remove-duplicates.xsl" ) ) ,
2095
- ) ;
2091
+ if rust_analyzer_installer. is_some ( ) {
2092
+ builder. run (
2093
+ Command :: new ( & heat)
2094
+ . current_dir ( & exe)
2095
+ . arg ( "dir" )
2096
+ . arg ( "rust-analyzer" )
2097
+ . args ( & heat_flags)
2098
+ . arg ( "-cg" )
2099
+ . arg ( "RustAnalyzerGroup" )
2100
+ . arg ( "-dr" )
2101
+ . arg ( "RustAnalyzer" )
2102
+ . arg ( "-var" )
2103
+ . arg ( "var.RustAnalyzerDir" )
2104
+ . arg ( "-out" )
2105
+ . arg ( exe. join ( "RustAnalyzerGroup.wxs" ) )
2106
+ . arg ( "-t" )
2107
+ . arg ( etc. join ( "msi/remove-duplicates.xsl" ) ) ,
2108
+ ) ;
2109
+ }
2096
2110
builder. run (
2097
2111
Command :: new ( & heat)
2098
2112
. current_dir ( & exe)
@@ -2186,7 +2200,9 @@ impl Step for Extended {
2186
2200
if rls_installer. is_some ( ) {
2187
2201
cmd. arg ( "-dRlsDir=rls" ) ;
2188
2202
}
2189
- cmd. arg ( "-dRustAnalyzerDir=rust-analyzer" ) ;
2203
+ if rust_analyzer_installer. is_some ( ) {
2204
+ cmd. arg ( "-dRustAnalyzerDir=rust-analyzer" ) ;
2205
+ }
2190
2206
if miri_installer. is_some ( ) {
2191
2207
cmd. arg ( "-dMiriDir=miri" ) ;
2192
2208
}
@@ -2206,7 +2222,9 @@ impl Step for Extended {
2206
2222
if rls_installer. is_some ( ) {
2207
2223
candle ( "RlsGroup.wxs" . as_ref ( ) ) ;
2208
2224
}
2209
- candle ( "RustAnalyzerGroup.wxs" . as_ref ( ) ) ;
2225
+ if rust_analyzer_installer. is_some ( ) {
2226
+ candle ( "RustAnalyzerGroup.wxs" . as_ref ( ) ) ;
2227
+ }
2210
2228
if miri_installer. is_some ( ) {
2211
2229
candle ( "MiriGroup.wxs" . as_ref ( ) ) ;
2212
2230
}
@@ -2244,7 +2262,9 @@ impl Step for Extended {
2244
2262
if rls_installer. is_some ( ) {
2245
2263
cmd. arg ( "RlsGroup.wixobj" ) ;
2246
2264
}
2247
- cmd. arg ( "RustAnalyzerGroup.wixobj" ) ;
2265
+ if rust_analyzer_installer. is_some ( ) {
2266
+ cmd. arg ( "RustAnalyzerGroup.wixobj" ) ;
2267
+ }
2248
2268
if miri_installer. is_some ( ) {
2249
2269
cmd. arg ( "MiriGroup.wixobj" ) ;
2250
2270
}
0 commit comments