Skip to content

Commit 842da62

Browse files
committed
Remove no longer needed fields in BuildConfig
Now the fields are just all represented as `rustc_wrapper` which internally contains all process configuration that's later passed down to `Rustc` as necessary.
1 parent a23f811 commit 842da62

File tree

4 files changed

+19
-55
lines changed

4 files changed

+19
-55
lines changed

src/bin/cargo/commands/clippy.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use crate::command_prelude::*;
22

33
use cargo::ops;
4+
use cargo::util;
45

56
pub fn cli() -> App {
67
subcommand("clippy-preview")
@@ -60,7 +61,6 @@ pub fn exec(config: &mut Config, args: &ArgMatches<'_>) -> CliResult {
6061

6162
let mode = CompileMode::Check { test: false };
6263
let mut compile_opts = args.compile_options(config, mode, Some(&ws))?;
63-
compile_opts.build_config.set_clippy_override(true);
6464

6565
if !config.cli_unstable().unstable_options {
6666
return Err(failure::format_err!(
@@ -69,6 +69,9 @@ pub fn exec(config: &mut Config, args: &ArgMatches<'_>) -> CliResult {
6969
.into());
7070
}
7171

72+
let wrapper = util::process("clippy-driver");
73+
compile_opts.build_config.rustc_wrapper = Some(wrapper);
74+
7275
ops::compile(&ws, &compile_opts)?;
7376
Ok(())
7477
}

src/cargo/core/compiler/build_config.rs

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use std::path::Path;
33

44
use serde::ser;
55

6+
use crate::util::ProcessBuilder;
67
use crate::util::{CargoResult, CargoResultExt, Config, RustfixDiagnosticServer};
78

89
/// Configuration information for a rustc build.
@@ -23,15 +24,9 @@ pub struct BuildConfig {
2324
pub force_rebuild: bool,
2425
/// Output a build plan to stdout instead of actually compiling.
2526
pub build_plan: bool,
26-
/// Use Cargo itself as the wrapper around rustc, only used for `cargo fix`.
27-
pub cargo_as_rustc_wrapper: bool,
28-
/// Extra env vars to inject into rustc commands.
29-
pub extra_rustc_env: Vec<(String, String)>,
30-
/// Extra args to inject into rustc commands.
31-
pub extra_rustc_args: Vec<String>,
27+
/// An optional wrapper, if any, used to wrap rustc invocations
28+
pub rustc_wrapper: Option<ProcessBuilder>,
3229
pub rustfix_diagnostic_server: RefCell<Option<RustfixDiagnosticServer>>,
33-
/// Use `clippy-driver` instead of `rustc`
34-
pub clippy_override: bool,
3530
}
3631

3732
impl BuildConfig {
@@ -100,11 +95,8 @@ impl BuildConfig {
10095
message_format: MessageFormat::Human,
10196
force_rebuild: false,
10297
build_plan: false,
103-
cargo_as_rustc_wrapper: false,
104-
extra_rustc_env: Vec::new(),
105-
extra_rustc_args: Vec::new(),
98+
rustc_wrapper: None,
10699
rustfix_diagnostic_server: RefCell::new(None),
107-
clippy_override: false,
108100
})
109101
}
110102

@@ -115,11 +107,6 @@ impl BuildConfig {
115107
pub fn test(&self) -> bool {
116108
self.mode == CompileMode::Test || self.mode == CompileMode::Bench
117109
}
118-
119-
/// Sets the clippy override. If this is true, clippy-driver is invoked instead of rustc.
120-
pub fn set_clippy_override(&mut self, val: bool) {
121-
self.clippy_override = val;
122-
}
123110
}
124111

125112
#[derive(Clone, Copy, Debug, PartialEq, Eq)]

src/cargo/core/compiler/build_context/mod.rs

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ use log::debug;
88
use crate::core::profiles::Profiles;
99
use crate::core::{Dependency, Workspace};
1010
use crate::core::{PackageId, PackageSet, Resolve};
11-
use crate::util;
1211
use crate::util::errors::CargoResult;
1312
use crate::util::{profile, Cfg, CfgExpr, Config, Rustc};
1413

@@ -52,18 +51,8 @@ impl<'a, 'cfg> BuildContext<'a, 'cfg> {
5251
extra_compiler_args: HashMap<Unit<'a>, Vec<String>>,
5352
) -> CargoResult<BuildContext<'a, 'cfg>> {
5453
let mut rustc = config.load_global_rustc(Some(ws))?;
55-
56-
if build_config.clippy_override {
57-
rustc.set_wrapper(util::process("clippy-driver"));
58-
} else if build_config.cargo_as_rustc_wrapper {
59-
let mut wrapper = util::process(env::current_exe()?);
60-
for (k, v) in build_config.extra_rustc_env.iter() {
61-
wrapper.env(k, v);
62-
}
63-
for arg in build_config.extra_rustc_args.iter() {
64-
wrapper.arg(arg);
65-
}
66-
rustc.set_wrapper(wrapper);
54+
if let Some(wrapper) = &build_config.rustc_wrapper {
55+
rustc.set_wrapper(wrapper.clone());
6756
}
6857

6958
let host_config = TargetConfig::new(config, &rustc.host)?;

src/cargo/ops/fix.rs

Lines changed: 9 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ use crate::core::Workspace;
5656
use crate::ops::{self, CompileOptions};
5757
use crate::util::diagnostic_server::{Message, RustfixDiagnosticServer};
5858
use crate::util::errors::CargoResult;
59-
use crate::util::paths;
59+
use crate::util::{self, paths};
6060
use crate::util::{existing_vcs_repo, LockServer, LockServerClient};
6161

6262
const FIX_ENV: &str = "__CARGO_FIX_PLZ";
@@ -81,46 +81,31 @@ pub fn fix(ws: &Workspace<'_>, opts: &mut FixOptions<'_>) -> CargoResult<()> {
8181

8282
// Spin up our lock server, which our subprocesses will use to synchronize fixes.
8383
let lock_server = LockServer::new()?;
84-
opts.compile_opts
85-
.build_config
86-
.extra_rustc_env
87-
.push((FIX_ENV.to_string(), lock_server.addr().to_string()));
84+
let mut wrapper = util::process(env::current_exe()?);
85+
wrapper.env(FIX_ENV, lock_server.addr().to_string());
8886
let _started = lock_server.start()?;
8987

9088
opts.compile_opts.build_config.force_rebuild = true;
9189

9290
if opts.broken_code {
93-
let key = BROKEN_CODE_ENV.to_string();
94-
opts.compile_opts
95-
.build_config
96-
.extra_rustc_env
97-
.push((key, "1".to_string()));
91+
wrapper.env(BROKEN_CODE_ENV, "1");
9892
}
9993

10094
if opts.edition {
101-
let key = EDITION_ENV.to_string();
102-
opts.compile_opts
103-
.build_config
104-
.extra_rustc_env
105-
.push((key, "1".to_string()));
95+
wrapper.env(EDITION_ENV, "1");
10696
} else if let Some(edition) = opts.prepare_for {
107-
opts.compile_opts
108-
.build_config
109-
.extra_rustc_env
110-
.push((PREPARE_FOR_ENV.to_string(), edition.to_string()));
97+
wrapper.env(PREPARE_FOR_ENV, edition);
11198
}
11299
if opts.idioms {
113-
opts.compile_opts
114-
.build_config
115-
.extra_rustc_env
116-
.push((IDIOMS_ENV.to_string(), "1".to_string()));
100+
wrapper.env(IDIOMS_ENV, "1");
117101
}
118-
opts.compile_opts.build_config.cargo_as_rustc_wrapper = true;
102+
119103
*opts
120104
.compile_opts
121105
.build_config
122106
.rustfix_diagnostic_server
123107
.borrow_mut() = Some(RustfixDiagnosticServer::new()?);
108+
opts.compile_opts.build_config.rustc_wrapper = Some(wrapper);
124109

125110
ops::compile(ws, &opts.compile_opts)?;
126111
Ok(())

0 commit comments

Comments
 (0)