Skip to content

Commit

Permalink
port over symlink_file function from Build to Config and create symli…
Browse files Browse the repository at this point in the history
…nk for legacy rustfmt path
  • Loading branch information
zephaniahong committed Feb 9, 2023
1 parent ef934d9 commit 41c6c5d
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 12 deletions.
16 changes: 15 additions & 1 deletion src/bootstrap/download.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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},
};
Expand All @@ -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;
Expand Down Expand Up @@ -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);
}
Expand Down
11 changes: 1 addition & 10 deletions src/bootstrap/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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};
Expand Down Expand Up @@ -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;
}
}
Expand Down Expand Up @@ -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 {
Expand Down
2 changes: 1 addition & 1 deletion src/bootstrap/native.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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));
}
}

Expand Down

0 comments on commit 41c6c5d

Please sign in to comment.