Rollup merge of #107834 - zephaniahong:issue-107547-fix, r=albertlarsan68
create symlink for legacy rustfmt path Fixes #107547 . Main change is in the `download.rs` file. Created a symlink for the legacy rustfmt path to the new rustfmt path. Other file changes are simply as a result of porting over the symlink_file function from the Build struct to the config Struct
This commit is contained in:
commit
a8df4b1530
@ -2,7 +2,7 @@
|
||||
env,
|
||||
ffi::{OsStr, OsString},
|
||||
fs::{self, File},
|
||||
io::{BufRead, BufReader, ErrorKind},
|
||||
io::{self, BufRead, BufReader, ErrorKind},
|
||||
path::{Path, PathBuf},
|
||||
process::{Command, Stdio},
|
||||
};
|
||||
@ -26,6 +26,14 @@ pub fn is_verbose(&self) -> bool {
|
||||
self.verbose > 0
|
||||
}
|
||||
|
||||
pub fn symlink_file<P: AsRef<Path>, Q: AsRef<Path>>(&self, src: P, link: Q) -> io::Result<()> {
|
||||
#[cfg(unix)]
|
||||
use std::os::unix::fs::symlink as symlink_file;
|
||||
#[cfg(windows)]
|
||||
use std::os::windows::fs::symlink_file;
|
||||
if !self.dry_run() { symlink_file(src.as_ref(), link.as_ref()) } else { Ok(()) }
|
||||
}
|
||||
|
||||
pub(crate) fn create(&self, path: &Path, s: &str) {
|
||||
if self.dry_run() {
|
||||
return;
|
||||
@ -331,6 +339,12 @@ pub(crate) fn maybe_download_rustfmt(&self) -> Option<PathBuf> {
|
||||
let bin_root = self.out.join(host.triple).join("rustfmt");
|
||||
let rustfmt_path = bin_root.join("bin").join(exe("rustfmt", host));
|
||||
let rustfmt_stamp = bin_root.join(".rustfmt-stamp");
|
||||
|
||||
let legacy_rustfmt = self.initial_rustc.with_file_name(exe("rustfmt", host));
|
||||
if !legacy_rustfmt.exists() {
|
||||
t!(self.symlink_file(&rustfmt_path, &legacy_rustfmt));
|
||||
}
|
||||
|
||||
if rustfmt_path.exists() && !program_out_of_date(&rustfmt_stamp, &channel) {
|
||||
return Some(rustfmt_path);
|
||||
}
|
||||
|
@ -20,7 +20,6 @@
|
||||
use std::collections::{HashMap, HashSet};
|
||||
use std::env;
|
||||
use std::fs::{self, File};
|
||||
use std::io;
|
||||
use std::io::ErrorKind;
|
||||
use std::path::{Path, PathBuf};
|
||||
use std::process::{Command, Stdio};
|
||||
@ -1407,7 +1406,7 @@ fn copy_internal(&self, src: &Path, dst: &Path, dereference_symlinks: bool) {
|
||||
src = t!(fs::canonicalize(src));
|
||||
} else {
|
||||
let link = t!(fs::read_link(src));
|
||||
t!(self.symlink_file(link, dst));
|
||||
t!(self.config.symlink_file(link, dst));
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -1525,14 +1524,6 @@ fn read_dir(&self, dir: &Path) -> impl Iterator<Item = fs::DirEntry> {
|
||||
iter.map(|e| t!(e)).collect::<Vec<_>>().into_iter()
|
||||
}
|
||||
|
||||
fn symlink_file<P: AsRef<Path>, Q: AsRef<Path>>(&self, src: P, link: Q) -> io::Result<()> {
|
||||
#[cfg(unix)]
|
||||
use std::os::unix::fs::symlink as symlink_file;
|
||||
#[cfg(windows)]
|
||||
use std::os::windows::fs::symlink_file;
|
||||
if !self.config.dry_run() { symlink_file(src.as_ref(), link.as_ref()) } else { Ok(()) }
|
||||
}
|
||||
|
||||
/// Returns if config.ninja is enabled, and checks for ninja existence,
|
||||
/// exiting with a nicer error message if not.
|
||||
fn ninja(&self) -> bool {
|
||||
|
@ -516,7 +516,7 @@ fn run(self, builder: &Builder<'_>) -> LlvmResult {
|
||||
|
||||
let lib_llvm = out_dir.join("build").join("lib").join(lib_name);
|
||||
if !lib_llvm.exists() {
|
||||
t!(builder.symlink_file("libLLVM.dylib", &lib_llvm));
|
||||
t!(builder.build.config.symlink_file("libLLVM.dylib", &lib_llvm));
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user