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