]> git.lizzy.rs Git - rust.git/blobdiff - src/bootstrap/bin/main.rs
Merge commit 'c19edfd71a1d0ddef86c2c67fdb40718d40a72b4' into sync_cg_clif-2022-07-25
[rust.git] / src / bootstrap / bin / main.rs
index 9c41ab69c8be3784e4e07f12acc9c06d60b03844..9b4861ccd95f4965525ac5192d04acc5065927df 100644 (file)
@@ -7,12 +7,28 @@
 
 use std::env;
 
-use bootstrap::{Build, Config, Subcommand, VERSION};
+use bootstrap::{t, Build, Config, Subcommand, VERSION};
 
 fn main() {
     let args = env::args().skip(1).collect::<Vec<_>>();
     let config = Config::parse(&args);
 
+    let mut build_lock;
+    let _build_lock_guard;
+    if cfg!(any(unix, windows)) {
+        build_lock = fd_lock::RwLock::new(t!(std::fs::File::create(config.out.join("lock"))));
+        _build_lock_guard = match build_lock.try_write() {
+            Ok(lock) => lock,
+            err => {
+                println!("warning: build directory locked, waiting for lock");
+                drop(err);
+                t!(build_lock.write())
+            }
+        };
+    } else {
+        println!("warning: file locking not supported for target, not locking build directory");
+    }
+
     // check_version warnings are not printed during setup
     let changelog_suggestion =
         if matches!(config.cmd, Subcommand::Setup { .. }) { None } else { check_version(&config) };