From e84a4ed6d02293034380761461b09241488070fe Mon Sep 17 00:00:00 2001 From: Josh Triplett Date: Mon, 10 Feb 2020 12:56:55 -0800 Subject: [PATCH] Keep environment variables in a BTreeMap to preserve sort order This prevents verbose output from varying between runs due to HashMap (non-)ordering. --- src/cargo/util/process_builder.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/cargo/util/process_builder.rs b/src/cargo/util/process_builder.rs index 6b81a810b55..0639ead36c3 100644 --- a/src/cargo/util/process_builder.rs +++ b/src/cargo/util/process_builder.rs @@ -2,7 +2,7 @@ use crate::util::{process_error, read2, CargoResult, CargoResultExt}; use anyhow::bail; use jobserver::Client; use shell_escape::escape; -use std::collections::HashMap; +use std::collections::BTreeMap; use std::env; use std::ffi::{OsStr, OsString}; use std::fmt; @@ -17,7 +17,7 @@ pub struct ProcessBuilder { /// A list of arguments to pass to the program. args: Vec, /// Any environment variables that should be set for the program. - env: HashMap>, + env: BTreeMap>, /// The directory to run the program from. cwd: Option, /// The `make` jobserver. See the [jobserver crate][jobserver_docs] for @@ -128,7 +128,7 @@ impl ProcessBuilder { /// Gets all environment variables explicitly set or unset for the process (not inherited /// vars). - pub fn get_envs(&self) -> &HashMap> { + pub fn get_envs(&self) -> &BTreeMap> { &self.env } @@ -334,7 +334,7 @@ pub fn process>(cmd: T) -> ProcessBuilder { program: cmd.as_ref().to_os_string(), args: Vec::new(), cwd: None, - env: HashMap::new(), + env: BTreeMap::new(), jobserver: None, display_env_vars: false, }