Skip to content

Commit 1a6a710

Browse files
authored
Environment variables: For one accepting boolean, treat "0", "false" and empty env as false (#1238)
* Add getenv_boolean * Update Build methods to use getenv_boolean And update getenv_boolean, to treat "false" as false. * Fix Build::getenv_Boolean and treat empty env as false * Env CC_ENABLE_DEBUG_OUTPUT: treat "false" or empty str as false * Fix Build::getenv_boolean * Fix clippy
1 parent 3bbb384 commit 1a6a710

File tree

2 files changed

+12
-7
lines changed

2 files changed

+12
-7
lines changed

src/command_helpers.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ impl CargoOutput {
4545
warnings: true,
4646
output: OutputKind::Forward,
4747
debug: match std::env::var_os("CC_ENABLE_DEBUG_OUTPUT") {
48-
Some(v) => v != "0",
48+
Some(v) => v != "0" && v != "false" && v != "",
4949
None => false,
5050
},
5151
checked_dbg_var: Arc::new(AtomicBool::new(false)),

src/lib.rs

+11-6
Original file line numberDiff line numberDiff line change
@@ -1857,7 +1857,7 @@ impl Build {
18571857
let mut cmd = self.get_base_compiler()?;
18581858

18591859
// Disable default flag generation via `no_default_flags` or environment variable
1860-
let no_defaults = self.no_default_flags || self.getenv("CRATE_CC_NO_DEFAULTS").is_some();
1860+
let no_defaults = self.no_default_flags || self.getenv_boolean("CRATE_CC_NO_DEFAULTS");
18611861

18621862
if !no_defaults {
18631863
self.add_default_flags(&mut cmd, &target, &opt_level)?;
@@ -3668,15 +3668,12 @@ impl Build {
36683668
}
36693669

36703670
fn get_debug(&self) -> bool {
3671-
self.debug.unwrap_or_else(|| match self.getenv("DEBUG") {
3672-
Some(s) => &*s != "false",
3673-
None => false,
3674-
})
3671+
self.debug.unwrap_or_else(|| self.getenv_boolean("DEBUG"))
36753672
}
36763673

36773674
fn get_shell_escaped_flags(&self) -> bool {
36783675
self.shell_escaped_flags
3679-
.unwrap_or_else(|| self.getenv("CC_SHELL_ESCAPED_FLAGS").is_some())
3676+
.unwrap_or_else(|| self.getenv_boolean("CC_SHELL_ESCAPED_FLAGS"))
36803677
}
36813678

36823679
fn get_dwarf_version(&self) -> Option<u32> {
@@ -3752,6 +3749,14 @@ impl Build {
37523749
r
37533750
}
37543751

3752+
/// get boolean flag that is either true or false
3753+
fn getenv_boolean(&self, v: &str) -> bool {
3754+
match self.getenv(v) {
3755+
Some(s) => &*s != "0" && &*s != "false" && !s.is_empty(),
3756+
None => false,
3757+
}
3758+
}
3759+
37553760
fn getenv_unwrap(&self, v: &str) -> Result<Arc<OsStr>, Error> {
37563761
match self.getenv(v) {
37573762
Some(s) => Ok(s),

0 commit comments

Comments
 (0)