Auto merge of #118069 - onur-ozkan:bypass_bootstrap_lock, r=Mark-Simu… · rust-lang/rust@8cd8d31 (original) (raw)
`@@ -26,35 +26,40 @@ fn main() {
`
26
26
`let mut build_lock;
`
27
27
`#[cfg(all(any(unix, windows), not(target_os = "solaris")))]
`
28
28
`let _build_lock_guard;
`
29
``
`-
#[cfg(all(any(unix, windows), not(target_os = "solaris")))]
`
30
``
`-
// Display PID of process holding the lock
`
31
``
`-
// PID will be stored in a lock file
`
32
``
`-
{
`
33
``
`-
let path = config.out.join("lock");
`
34
``
`-
let pid = match fs::read_to_string(&path) {
`
35
``
`-
Ok(contents) => contents,
`
36
``
`-
Err(_) => String::new(),
`
37
``
`-
};
`
38
``
-
39
``
`-
build_lock =
`
40
``
`-
fd_lock::RwLock::new(t!(fs::OpenOptions::new().write(true).create(true).open(&path)));
`
41
``
`-
_build_lock_guard = match build_lock.try_write() {
`
42
``
`-
Ok(mut lock) => {
`
43
``
`-
t!(lock.write(&process::id().to_string().as_ref()));
`
44
``
`-
lock
`
45
``
`-
}
`
46
``
`-
err => {
`
47
``
`-
drop(err);
`
48
``
`-
println!("WARNING: build directory locked by process {pid}, waiting for lock");
`
49
``
`-
let mut lock = t!(build_lock.write());
`
50
``
`-
t!(lock.write(&process::id().to_string().as_ref()));
`
51
``
`-
lock
`
52
``
`-
}
`
53
``
`-
};
`
54
``
`-
}
`
55
29
``
56
``
`-
#[cfg(any(not(any(unix, windows)), target_os = "solaris"))]
`
57
``
`-
println!("WARNING: file locking not supported for target, not locking build directory");
`
``
30
`+
if !config.bypass_bootstrap_lock {
`
``
31
`+
// Display PID of process holding the lock
`
``
32
`+
// PID will be stored in a lock file
`
``
33
`+
#[cfg(all(any(unix, windows), not(target_os = "solaris")))]
`
``
34
`+
{
`
``
35
`+
let path = config.out.join("lock");
`
``
36
`+
let pid = match fs::read_to_string(&path) {
`
``
37
`+
Ok(contents) => contents,
`
``
38
`+
Err(_) => String::new(),
`
``
39
`+
};
`
``
40
+
``
41
`+
build_lock = fd_lock::RwLock::new(t!(fs::OpenOptions::new()
`
``
42
`+
.write(true)
`
``
43
`+
.create(true)
`
``
44
`+
.open(&path)));
`
``
45
`+
_build_lock_guard = match build_lock.try_write() {
`
``
46
`+
Ok(mut lock) => {
`
``
47
`+
t!(lock.write(&process::id().to_string().as_ref()));
`
``
48
`+
lock
`
``
49
`+
}
`
``
50
`+
err => {
`
``
51
`+
drop(err);
`
``
52
`+
println!("WARNING: build directory locked by process {pid}, waiting for lock");
`
``
53
`+
let mut lock = t!(build_lock.write());
`
``
54
`+
t!(lock.write(&process::id().to_string().as_ref()));
`
``
55
`+
lock
`
``
56
`+
}
`
``
57
`+
};
`
``
58
`+
}
`
``
59
+
``
60
`+
#[cfg(any(not(any(unix, windows)), target_os = "solaris"))]
`
``
61
`+
println!("WARNING: file locking not supported for target, not locking build directory");
`
``
62
`+
}
`
58
63
``
59
64
`// check_version warnings are not printed during setup
`
60
65
`let changelog_suggestion =
`