diff --git a/src/bootstrap/config.rs b/src/bootstrap/config.rs index 483816b98d689e34594df52e9a688017d4c2706b..b560de95e319fa275aff2bf78052e7689cfc56b3 100644 --- a/src/bootstrap/config.rs +++ b/src/bootstrap/config.rs @@ -13,6 +13,7 @@ use std::str::FromStr; use crate::cache::{Interned, INTERNER}; +use crate::channel::GitInfo; pub use crate::flags::Subcommand; use crate::flags::{Color, Flags}; use crate::util::exe; @@ -48,7 +49,7 @@ pub struct Config { /// Call Build::ninja() instead of this. pub ninja_in_file: bool, pub verbose: usize, - pub submodules: bool, + pub submodules: Option, pub fast_submodules: bool, pub compiler_docs: bool, pub docs_minification: bool, @@ -552,7 +553,7 @@ pub fn default_opts() -> Config { config.backtrace = true; config.rust_optimize = true; config.rust_optimize_tests = true; - config.submodules = true; + config.submodules = None; config.fast_submodules = true; config.docs = true; config.docs_minification = true; @@ -658,11 +659,11 @@ pub fn parse(args: &[String]) -> Config { config.npm = build.npm.map(PathBuf::from); config.gdb = build.gdb.map(PathBuf::from); config.python = build.python.map(PathBuf::from); + config.submodules = build.submodules; set(&mut config.low_priority, build.low_priority); set(&mut config.compiler_docs, build.compiler_docs); set(&mut config.docs_minification, build.docs_minification); set(&mut config.docs, build.docs); - set(&mut config.submodules, build.submodules); set(&mut config.fast_submodules, build.fast_submodules); set(&mut config.locked_deps, build.locked_deps); set(&mut config.vendor, build.vendor); @@ -1075,6 +1076,10 @@ pub fn any_profiler_enabled(&self) -> bool { pub fn llvm_enabled(&self) -> bool { self.rust_codegen_backends.contains(&INTERNER.intern_str("llvm")) } + + pub fn submodules(&self, rust_info: &GitInfo) -> bool { + self.submodules.unwrap_or(rust_info.is_git()) + } } fn set(field: &mut T, val: Option) { diff --git a/src/bootstrap/lib.rs b/src/bootstrap/lib.rs index 6bcdbe3e4bbbb33a5faeffb0e4855c8367a04589..245f3eada2af7719d6ab33a61912ed15b3257883 100644 --- a/src/bootstrap/lib.rs +++ b/src/bootstrap/lib.rs @@ -486,7 +486,7 @@ fn dir_is_empty(dir: &Path) -> bool { t!(std::fs::read_dir(dir)).next().is_none() } - if !self.config.submodules { + if !self.config.submodules(&self.rust_info) { return; } @@ -562,7 +562,7 @@ pub fn maybe_update_submodules(&self) { "library/stdarch", ]; // Avoid running git when there isn't a git checkout. - if !self.config.submodules { + if !self.config.submodules(&self.rust_info) { return; } let output = output(