let mut rev_list = Command::new("git");
rev_list.args(&[
PathBuf::from("rev-list"),
- "--author=bors@rust-lang.org".into(),
+ format!("--author={}", builder.config.stage0_metadata.config.git_merge_commit_email).into(),
"-n1".into(),
"--first-parent".into(),
"HEAD".into(),
for binary in ["llvm-config", "FileCheck"] {
builder.fix_bin_or_dylib(&llvm_root.join("bin").join(binary));
}
+
+ // Update the timestamp of llvm-config to force rustc_llvm to be
+ // rebuilt. This is a hacky workaround for a deficiency in Cargo where
+ // the rerun-if-changed directive doesn't handle changes very well.
+ // https://github.com/rust-lang/cargo/issues/10791
+ // Cargo only compares the timestamp of the file relative to the last
+ // time `rustc_llvm` build script ran. However, the timestamps of the
+ // files in the tarball are in the past, so it doesn't trigger a
+ // rebuild.
+ let now = filetime::FileTime::from_system_time(std::time::SystemTime::now());
+ let llvm_config = llvm_root.join("bin").join(exe("llvm-config", builder.config.build));
+ t!(filetime::set_file_times(&llvm_config, now, now));
+
let llvm_lib = llvm_root.join("lib");
for entry in t!(fs::read_dir(&llvm_lib)) {
let lib = t!(entry).path();
if !rustc_cache.exists() {
t!(fs::create_dir_all(&rustc_cache));
}
- let base = "https://ci-artifacts.rust-lang.org";
- let url = if llvm_assertions {
- format!("rustc-builds-alt/{}", llvm_sha)
+ let base = if llvm_assertions {
+ &builder.config.stage0_metadata.config.artifacts_with_llvm_assertions_server
} else {
- format!("rustc-builds/{}", llvm_sha)
+ &builder.config.stage0_metadata.config.artifacts_server
};
let filename = format!("rust-dev-nightly-{}.tar.xz", builder.build.build.triple);
let tarball = rustc_cache.join(&filename);
[llvm]
download-ci-llvm = false
";
- builder.download_component(base, &format!("{}/{}", url, filename), &tarball, help_on_error);
+ builder.download_component(
+ &format!("{base}/{llvm_sha}/{filename}"),
+ &tarball,
+ help_on_error,
+ );
}
let llvm_root = builder.config.ci_llvm_root();
builder.unpack(&tarball, &llvm_root, "rust-dev");
// For distribution we want the LLVM tools to be *statically* linked to libstdc++.
// We also do this if the user explicitly requested static libstdc++.
if builder.config.llvm_static_stdcpp {
- if !target.contains("msvc") && !target.contains("netbsd") {
+ if !target.contains("msvc") && !target.contains("netbsd") && !target.contains("solaris") {
if target.contains("apple") || target.contains("windows") {
ldflags.push_all("-static-libstdc++");
} else {