diff options
| author | Aleksi Juvani <aleksi@aleksijuvani.com> | 2019-09-12 13:47:17 +0300 |
|---|---|---|
| committer | Aleksi Juvani <aleksi@aleksijuvani.com> | 2019-09-12 13:47:17 +0300 |
| commit | e715d03275cb83a3fd7aeb8f4c62661d4c690464 (patch) | |
| tree | a78fded7b969e3ec061a077862e636680bd1003e /src/librustc_codegen_ssa/back | |
| parent | 2e9eba7f380f5fd99df92deaa03e00faa519b1a4 (diff) | |
Remove env vars instead of setting them to an empty string
Diffstat (limited to 'src/librustc_codegen_ssa/back')
| -rw-r--r-- | src/librustc_codegen_ssa/back/command.rs | 16 | ||||
| -rw-r--r-- | src/librustc_codegen_ssa/back/link.rs | 3 |
2 files changed, 19 insertions, 0 deletions
diff --git a/src/librustc_codegen_ssa/back/command.rs b/src/librustc_codegen_ssa/back/command.rs index 340cc772e5f..596978f002b 100644 --- a/src/librustc_codegen_ssa/back/command.rs +++ b/src/librustc_codegen_ssa/back/command.rs @@ -14,6 +14,7 @@ pub struct Command { program: Program, args: Vec<OsString>, env: Vec<(OsString, OsString)>, + env_remove: Vec<OsString>, } #[derive(Clone)] @@ -41,6 +42,7 @@ impl Command { program, args: Vec::new(), env: Vec::new(), + env_remove: Vec::new(), } } @@ -75,6 +77,17 @@ impl Command { self.env.push((key.to_owned(), value.to_owned())); } + pub fn env_remove<K>(&mut self, key: K) -> &mut Command + where K: AsRef<OsStr>, + { + self._env_remove(key.as_ref()); + self + } + + fn _env_remove(&mut self, key: &OsStr) { + self.env_remove.push(key.to_owned()); + } + pub fn output(&mut self) -> io::Result<Output> { self.command().output() } @@ -100,6 +113,9 @@ impl Command { }; ret.args(&self.args); ret.envs(self.env.clone()); + for k in &self.env_remove { + ret.env_remove(k); + } return ret } diff --git a/src/librustc_codegen_ssa/back/link.rs b/src/librustc_codegen_ssa/back/link.rs index 8603d61fb54..74cde92974c 100644 --- a/src/librustc_codegen_ssa/back/link.rs +++ b/src/librustc_codegen_ssa/back/link.rs @@ -532,6 +532,9 @@ fn link_natively<'a, B: ArchiveBuilder<'a>>(sess: &'a Session, for &(ref k, ref v) in &sess.target.target.options.link_env { cmd.env(k, v); } + for k in &sess.target.target.options.link_env_remove { + cmd.env_remove(k); + } if sess.opts.debugging_opts.print_link_args { println!("{:?}", &cmd); |
