@@ -10,7 +10,11 @@ use time::OffsetDateTime;
1010use xshell:: { cmd, Shell } ;
1111use zip:: { write:: FileOptions , DateTime , ZipWriter } ;
1212
13- use crate :: { date_iso, flags, project_root} ;
13+ use crate :: {
14+ date_iso,
15+ flags:: { self , Malloc } ,
16+ project_root,
17+ } ;
1418
1519const VERSION_STABLE : & str = "0.3" ;
1620const VERSION_NIGHTLY : & str = "0.4" ;
@@ -22,6 +26,7 @@ impl flags::Dist {
2226
2327 let project_root = project_root ( ) ;
2428 let target = Target :: get ( & project_root) ;
29+ let allocator = self . allocator ( ) ;
2530 let dist = project_root. join ( "dist" ) ;
2631 sh. remove_path ( & dist) ?;
2732 sh. create_dir ( & dist) ?;
@@ -33,11 +38,11 @@ impl flags::Dist {
3338 // A hack to make VS Code prefer nightly over stable.
3439 format ! ( "{VERSION_NIGHTLY}.{patch_version}" )
3540 } ;
36- dist_server ( sh, & format ! ( "{version}-standalone" ) , & target) ?;
41+ dist_server ( sh, & format ! ( "{version}-standalone" ) , & target, allocator ) ?;
3742 let release_tag = if stable { date_iso ( sh) ? } else { "nightly" . to_owned ( ) } ;
3843 dist_client ( sh, & version, & release_tag, & target) ?;
3944 } else {
40- dist_server ( sh, "0.0.0-standalone" , & target) ?;
45+ dist_server ( sh, "0.0.0-standalone" , & target, allocator ) ?;
4146 }
4247 Ok ( ( ) )
4348 }
@@ -73,7 +78,12 @@ fn dist_client(
7378 Ok ( ( ) )
7479}
7580
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 < ( ) > {
7787 let _e = sh. push_env ( "CFG_RELEASE" , release) ;
7888 let _e = sh. push_env ( "CARGO_PROFILE_RELEASE_LTO" , "thin" ) ;
7989
@@ -87,7 +97,8 @@ fn dist_server(sh: &Shell, release: &str, target: &Target) -> anyhow::Result<()>
8797 }
8898
8999 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 ( ) ?;
91102
92103 let dst = Path :: new ( "dist" ) . join ( & target. artifact_name ) ;
93104 gzip ( & target. server_path , & dst. with_extension ( "gz" ) ) ?;
0 commit comments