@@ -10,7 +10,11 @@ use time::OffsetDateTime;
10
10
use xshell:: { cmd, Shell } ;
11
11
use zip:: { write:: FileOptions , DateTime , ZipWriter } ;
12
12
13
- use crate :: { date_iso, flags, project_root} ;
13
+ use crate :: {
14
+ date_iso,
15
+ flags:: { self , Malloc } ,
16
+ project_root,
17
+ } ;
14
18
15
19
const VERSION_STABLE : & str = "0.3" ;
16
20
const VERSION_NIGHTLY : & str = "0.4" ;
@@ -22,6 +26,7 @@ impl flags::Dist {
22
26
23
27
let project_root = project_root ( ) ;
24
28
let target = Target :: get ( & project_root) ;
29
+ let allocator = self . allocator ( ) ;
25
30
let dist = project_root. join ( "dist" ) ;
26
31
sh. remove_path ( & dist) ?;
27
32
sh. create_dir ( & dist) ?;
@@ -33,11 +38,11 @@ impl flags::Dist {
33
38
// A hack to make VS Code prefer nightly over stable.
34
39
format ! ( "{VERSION_NIGHTLY}.{patch_version}" )
35
40
} ;
36
- dist_server ( sh, & format ! ( "{version}-standalone" ) , & target) ?;
41
+ dist_server ( sh, & format ! ( "{version}-standalone" ) , & target, allocator ) ?;
37
42
let release_tag = if stable { date_iso ( sh) ? } else { "nightly" . to_owned ( ) } ;
38
43
dist_client ( sh, & version, & release_tag, & target) ?;
39
44
} else {
40
- dist_server ( sh, "0.0.0-standalone" , & target) ?;
45
+ dist_server ( sh, "0.0.0-standalone" , & target, allocator ) ?;
41
46
}
42
47
Ok ( ( ) )
43
48
}
@@ -73,7 +78,12 @@ fn dist_client(
73
78
Ok ( ( ) )
74
79
}
75
80
76
- fn dist_server ( sh : & Shell , release : & str , target : & Target ) -> anyhow:: Result < ( ) > {
81
+ fn dist_server (
82
+ sh : & Shell ,
83
+ release : & str ,
84
+ target : & Target ,
85
+ allocator : Malloc ,
86
+ ) -> anyhow:: Result < ( ) > {
77
87
let _e = sh. push_env ( "CFG_RELEASE" , release) ;
78
88
let _e = sh. push_env ( "CARGO_PROFILE_RELEASE_LTO" , "thin" ) ;
79
89
@@ -87,7 +97,8 @@ fn dist_server(sh: &Shell, release: &str, target: &Target) -> anyhow::Result<()>
87
97
}
88
98
89
99
let target_name = & target. name ;
90
- cmd ! ( sh, "cargo build --manifest-path ./crates/rust-analyzer/Cargo.toml --bin rust-analyzer --target {target_name} --release" ) . run ( ) ?;
100
+ let features = allocator. to_features ( ) ;
101
+ cmd ! ( sh, "cargo build --manifest-path ./crates/rust-analyzer/Cargo.toml --bin rust-analyzer --target {target_name} {features...} --release" ) . run ( ) ?;
91
102
92
103
let dst = Path :: new ( "dist" ) . join ( & target. artifact_name ) ;
93
104
gzip ( & target. server_path , & dst. with_extension ( "gz" ) ) ?;
0 commit comments