Try renaming the file if removing fails

This commit is contained in:
Chris Denton 2024-06-30 08:21:20 +00:00
parent 716752ebe6
commit 3d6cc60535
No known key found for this signature in database
GPG Key ID: 713472F2F45627DE

View File

@ -26,6 +26,7 @@ use std::path::{Path, PathBuf};
use std::process::{Command, Stdio};
use std::str;
use std::sync::OnceLock;
use std::time::SystemTime;
use build_helper::ci::{gha, CiEnv};
use build_helper::exit;
@ -1676,7 +1677,14 @@ impl Build {
if src == dst {
return;
}
let _ = fs::remove_file(dst);
if let Err(e) = fs::remove_file(dst) {
if e.kind() != io::ErrorKind::NotFound {
// workaround for https://github.com/rust-lang/rust/issues/127126
// if removing the file fails, attempt to rename it instead.
let now = t!(SystemTime::now().duration_since(SystemTime::UNIX_EPOCH));
let _ = fs::rename(dst, format!("{}-{}", dst.display(), now.as_nanos()));
}
}
let metadata = t!(src.symlink_metadata(), format!("src = {}", src.display()));
let mut src = src.to_path_buf();
if metadata.file_type().is_symlink() {