port over symlink_file function from Build to Config and create symlink for legacy rustfmt path
This commit is contained in:
parent
ef934d9b63
commit
41c6c5d499
@ -2,7 +2,7 @@ use std::{
|
||||
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 @@ impl Config {
|
||||
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 @@ impl Config {
|
||||
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::cell::{Cell, RefCell};
|
||||
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 @@ impl Build {
|
||||
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 @@ impl Build {
|
||||
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 @@ impl Step for Llvm {
|
||||
|
||||
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…
x
Reference in New Issue
Block a user