env,
ffi::{OsStr, OsString},
fs::{self, File},
- io::{BufRead, BufReader, ErrorKind},
+ io::{self, BufRead, BufReader, ErrorKind},
path::{Path, PathBuf},
process::{Command, Stdio},
};
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;
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);
}
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};
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;
}
}
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 {
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));
}
}