@@ -7,10 +7,13 @@ use PBAR;
7
7
pub fn rustup_add_wasm_target ( step : & Step ) -> Result < ( ) , Error > {
8
8
let msg = format ! ( "{}Adding WASM target..." , emoji:: TARGET ) ;
9
9
let pb = PBAR . step ( step, & msg) ;
10
+ ensure_nightly ( ) ?;
10
11
let output = Command :: new ( "rustup" )
11
12
. arg ( "target" )
12
13
. arg ( "add" )
13
14
. arg ( "wasm32-unknown-unknown" )
15
+ . arg ( "--toolchain" )
16
+ . arg ( "nightly" )
14
17
. output ( ) ?;
15
18
pb. finish ( ) ;
16
19
if !output. status . success ( ) {
@@ -21,12 +24,29 @@ pub fn rustup_add_wasm_target(step: &Step) -> Result<(), Error> {
21
24
}
22
25
}
23
26
27
+
28
+ fn ensure_nightly ( ) -> Result < ( ) , Error > {
29
+ let nightly_check = Command :: new ( "rustc" ) . arg ( "+nightly" ) . arg ( "-V" ) . output ( ) ?;
30
+ if !nightly_check. status . success ( ) {
31
+ let res = Command :: new ( "rustup" )
32
+ . arg ( "toolchain" )
33
+ . arg ( "install" )
34
+ . arg ( "nightly" )
35
+ . output ( ) ?;
36
+ if !res. status . success ( ) {
37
+ let s = String :: from_utf8_lossy ( & res. stderr ) ;
38
+ return Error :: cli ( "Adding the nightly toolchain failed" , s) ;
39
+ }
40
+ }
41
+ Ok ( ( ) )
42
+ }
43
+
24
44
pub fn cargo_build_wasm ( path : & str , debug : bool , step : & Step ) -> Result < ( ) , Error > {
25
45
let msg = format ! ( "{}Compiling to WASM..." , emoji:: CYCLONE ) ;
26
46
let pb = PBAR . step ( step, & msg) ;
27
47
let output = {
28
48
let mut cmd = Command :: new ( "cargo" ) ;
29
- cmd. current_dir ( path) . arg ( "build" ) ;
49
+ cmd. current_dir ( path) . arg ( "+nightly" ) . arg ( " build") ;
30
50
if !debug {
31
51
cmd. arg ( "--release" ) ;
32
52
}
0 commit comments