@@ -78,8 +78,6 @@ pub enum ProjectWorkspaceKind {
7878 /// The rustc workspace loaded for this workspace. An `Err(None)` means loading has been
7979 /// disabled or was otherwise not requested.
8080 rustc : Result < Box < ( CargoWorkspace , WorkspaceBuildScripts ) > , Option < String > > ,
81- /// Environment variables set in the `.cargo/config` file.
82- cargo_config_extra_env : FxHashMap < String , String > ,
8381 set_test : bool ,
8482 } ,
8583 /// Project workspace was specified using a `rust-project.json` file.
@@ -99,8 +97,6 @@ pub enum ProjectWorkspaceKind {
9997 file : ManifestPath ,
10098 /// Is this file a cargo script file?
10199 cargo : Option < ( CargoWorkspace , WorkspaceBuildScripts , Option < Arc < anyhow:: Error > > ) > ,
102- /// Environment variables set in the `.cargo/config` file.
103- cargo_config_extra_env : FxHashMap < String , String > ,
104100 set_test : bool ,
105101 } ,
106102}
@@ -110,14 +106,7 @@ impl fmt::Debug for ProjectWorkspace {
110106 // Make sure this isn't too verbose.
111107 let Self { kind, sysroot, rustc_cfg, toolchain, target_layout, cfg_overrides } = self ;
112108 match kind {
113- ProjectWorkspaceKind :: Cargo {
114- cargo,
115- error : _,
116- build_scripts,
117- rustc,
118- cargo_config_extra_env,
119- set_test,
120- } => f
109+ ProjectWorkspaceKind :: Cargo { cargo, error : _, build_scripts, rustc, set_test } => f
121110 . debug_struct ( "Cargo" )
122111 . field ( "root" , & cargo. workspace_root ( ) . file_name ( ) )
123112 . field ( "n_packages" , & cargo. packages ( ) . len ( ) )
@@ -130,7 +119,6 @@ impl fmt::Debug for ProjectWorkspace {
130119 . field ( "n_cfg_overrides" , & cfg_overrides. len ( ) )
131120 . field ( "toolchain" , & toolchain)
132121 . field ( "data_layout" , & target_layout)
133- . field ( "cargo_config_extra_env" , & cargo_config_extra_env)
134122 . field ( "set_test" , set_test)
135123 . field ( "build_scripts" , & build_scripts. error ( ) . unwrap_or ( "ok" ) )
136124 . finish ( ) ,
@@ -146,12 +134,7 @@ impl fmt::Debug for ProjectWorkspace {
146134
147135 debug_struct. finish ( )
148136 }
149- ProjectWorkspaceKind :: DetachedFile {
150- file,
151- cargo : cargo_script,
152- cargo_config_extra_env,
153- set_test,
154- } => f
137+ ProjectWorkspaceKind :: DetachedFile { file, cargo : cargo_script, set_test } => f
155138 . debug_struct ( "DetachedFiles" )
156139 . field ( "file" , & file)
157140 . field ( "cargo_script" , & cargo_script. is_some ( ) )
@@ -161,7 +144,6 @@ impl fmt::Debug for ProjectWorkspace {
161144 . field ( "toolchain" , & toolchain)
162145 . field ( "data_layout" , & target_layout)
163146 . field ( "n_cfg_overrides" , & cfg_overrides. len ( ) )
164- . field ( "cargo_config_extra_env" , & cargo_config_extra_env)
165147 . field ( "set_test" , set_test)
166148 . finish ( ) ,
167149 }
@@ -289,14 +271,14 @@ impl ProjectWorkspace {
289271 progress,
290272 ) {
291273 Ok ( ( meta, _error) ) => {
292- let workspace = CargoWorkspace :: new ( meta, cargo_toml. clone ( ) ) ;
293- let buildscripts = WorkspaceBuildScripts :: rustc_crates (
274+ let workspace = CargoWorkspace :: new ( meta, cargo_toml. clone ( ) , Env :: default ( ) ) ;
275+ let build_scripts = WorkspaceBuildScripts :: rustc_crates (
294276 & workspace,
295277 cargo_toml. parent ( ) ,
296278 & config. extra_env ,
297279 & sysroot,
298280 ) ;
299- Ok ( Box :: new ( ( workspace, buildscripts ) ) )
281+ Ok ( Box :: new ( ( workspace, build_scripts ) ) )
300282 }
301283 Err ( e) => {
302284 tracing:: error!(
@@ -348,14 +330,13 @@ impl ProjectWorkspace {
348330 "Failed to read Cargo metadata from Cargo.toml file {cargo_toml}, {toolchain:?}" ,
349331 )
350332 } ) ?;
351- let cargo = CargoWorkspace :: new ( meta, cargo_toml. clone ( ) ) ;
352333 let cargo_config_extra_env = cargo_config_env ( cargo_toml, & config. extra_env , & sysroot) ;
334+ let cargo = CargoWorkspace :: new ( meta, cargo_toml. clone ( ) , cargo_config_extra_env) ;
353335 Ok ( ProjectWorkspace {
354336 kind : ProjectWorkspaceKind :: Cargo {
355337 cargo,
356338 build_scripts : WorkspaceBuildScripts :: default ( ) ,
357339 rustc,
358- cargo_config_extra_env,
359340 error : error. map ( Arc :: new) ,
360341 set_test : config. set_test ,
361342 } ,
@@ -450,19 +431,19 @@ impl ProjectWorkspace {
450431 )
451432 . ok ( )
452433 . map ( |( ws, error) | {
434+ let cargo_config_extra_env =
435+ cargo_config_env ( detached_file, & config. extra_env , & sysroot) ;
453436 (
454- CargoWorkspace :: new ( ws, detached_file. clone ( ) ) ,
437+ CargoWorkspace :: new ( ws, detached_file. clone ( ) , cargo_config_extra_env ) ,
455438 WorkspaceBuildScripts :: default ( ) ,
456439 error. map ( Arc :: new) ,
457440 )
458441 } ) ;
459442
460- let cargo_config_extra_env = cargo_config_env ( detached_file, & config. extra_env , & sysroot) ;
461443 Ok ( ProjectWorkspace {
462444 kind : ProjectWorkspaceKind :: DetachedFile {
463445 file : detached_file. to_owned ( ) ,
464446 cargo : cargo_script,
465- cargo_config_extra_env,
466447 set_test : config. set_test ,
467448 } ,
468449 sysroot,
@@ -643,14 +624,7 @@ impl ProjectWorkspace {
643624 . chain ( mk_sysroot ( ) )
644625 . unique ( )
645626 . collect ( ) ,
646- ProjectWorkspaceKind :: Cargo {
647- cargo,
648- rustc,
649- build_scripts,
650- cargo_config_extra_env : _,
651- error : _,
652- set_test : _,
653- } => {
627+ ProjectWorkspaceKind :: Cargo { cargo, rustc, build_scripts, error : _, set_test : _ } => {
654628 cargo
655629 . packages ( )
656630 . map ( |pkg| {
@@ -787,23 +761,18 @@ impl ProjectWorkspace {
787761 extra_env,
788762 cfg_overrides,
789763 ) ,
790- ProjectWorkspaceKind :: Cargo {
791- cargo,
792- rustc,
793- build_scripts,
794- cargo_config_extra_env : _,
795- error : _,
796- set_test,
797- } => cargo_to_crate_graph (
798- load,
799- rustc. as_ref ( ) . map ( |a| a. as_ref ( ) ) . ok ( ) ,
800- cargo,
801- sysroot,
802- rustc_cfg. clone ( ) ,
803- cfg_overrides,
804- build_scripts,
805- * set_test,
806- ) ,
764+ ProjectWorkspaceKind :: Cargo { cargo, rustc, build_scripts, error : _, set_test } => {
765+ cargo_to_crate_graph (
766+ load,
767+ rustc. as_ref ( ) . map ( |a| a. as_ref ( ) ) . ok ( ) ,
768+ cargo,
769+ sysroot,
770+ rustc_cfg. clone ( ) ,
771+ cfg_overrides,
772+ build_scripts,
773+ * set_test,
774+ )
775+ }
807776 ProjectWorkspaceKind :: DetachedFile { file, cargo : cargo_script, set_test, .. } => {
808777 if let Some ( ( cargo, build_scripts, _) ) = cargo_script {
809778 cargo_to_crate_graph (
@@ -848,45 +817,33 @@ impl ProjectWorkspace {
848817 ProjectWorkspaceKind :: Cargo {
849818 cargo,
850819 rustc,
851- cargo_config_extra_env,
852820 build_scripts : _,
853821 error : _,
854822 set_test : _,
855823 } ,
856824 ProjectWorkspaceKind :: Cargo {
857825 cargo : o_cargo,
858826 rustc : o_rustc,
859- cargo_config_extra_env : o_cargo_config_extra_env,
860827 build_scripts : _,
861828 error : _,
862829 set_test : _,
863830 } ,
864- ) => {
865- cargo == o_cargo
866- && rustc == o_rustc
867- && cargo_config_extra_env == o_cargo_config_extra_env
868- }
831+ ) => cargo == o_cargo && rustc == o_rustc,
869832 ( ProjectWorkspaceKind :: Json ( project) , ProjectWorkspaceKind :: Json ( o_project) ) => {
870833 project == o_project
871834 }
872835 (
873836 ProjectWorkspaceKind :: DetachedFile {
874837 file,
875838 cargo : Some ( ( cargo_script, _, _) ) ,
876- cargo_config_extra_env,
877839 set_test : _,
878840 } ,
879841 ProjectWorkspaceKind :: DetachedFile {
880842 file : o_file,
881843 cargo : Some ( ( o_cargo_script, _, _) ) ,
882- cargo_config_extra_env : o_cargo_config_extra_env,
883844 set_test : _,
884845 } ,
885- ) => {
886- file == o_file
887- && cargo_script == o_cargo_script
888- && cargo_config_extra_env == o_cargo_config_extra_env
889- }
846+ ) => file == o_file && cargo_script == o_cargo_script,
890847 _ => return false ,
891848 } ) && sysroot == o_sysroot
892849 && rustc_cfg == o_rustc_cfg
@@ -1402,7 +1359,7 @@ fn add_target_crate_root(
14021359 opts
14031360 } ;
14041361
1405- let mut env = Env :: default ( ) ;
1362+ let mut env = cargo . env ( ) . clone ( ) ;
14061363 inject_cargo_package_env ( & mut env, pkg) ;
14071364 inject_cargo_env ( & mut env) ;
14081365 inject_rustc_tool_env ( & mut env, cargo, cargo_name, kind) ;
0 commit comments