Fix x test src/tools/error_index_generator --stage {0,1}
There were two fixes needed:
1. Use `top_stage` instead of `top_stage - 1`. There was a long and torturous comment about trying to match rustdoc's version, but it works better without the hard-coding than with.
2. Make sure that `ci-llvm/lib` is added to LD_LIBRARY_PATH. Previously the error index would be unable to load LLVM for stage0 builds.
At some point we should probably have a discussion about how rustdoc stages should be numbered;
confusion between 0/1/2 has come up several times in bootstrap now.
Note that this is still broken when using `download-rustc = true` and `--stage 1`,
but that's *really* a corner case and should affect almost no one. `--stage {0,2}`
work fine with download-rustc.
This commit is contained in:
parent
02af015d1c
commit
7470592d0b
3 changed files with 21 additions and 25 deletions
|
|
@ -835,6 +835,18 @@ impl<'a> Builder<'a> {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn rustc_lib_paths(&self, compiler: Compiler) -> Vec<PathBuf> {
|
||||
let mut dylib_dirs = vec![self.rustc_libdir(compiler)];
|
||||
|
||||
// Ensure that the downloaded LLVM libraries can be found.
|
||||
if self.config.llvm_from_ci {
|
||||
let ci_llvm_lib = self.out.join(&*compiler.host.triple).join("ci-llvm").join("lib");
|
||||
dylib_dirs.push(ci_llvm_lib);
|
||||
}
|
||||
|
||||
dylib_dirs
|
||||
}
|
||||
|
||||
/// Adds the compiler's directory of dynamic libraries to `cmd`'s dynamic
|
||||
/// library lookup path.
|
||||
pub fn add_rustc_lib_path(&self, compiler: Compiler, cmd: &mut Command) {
|
||||
|
|
@ -845,15 +857,7 @@ impl<'a> Builder<'a> {
|
|||
return;
|
||||
}
|
||||
|
||||
let mut dylib_dirs = vec![self.rustc_libdir(compiler)];
|
||||
|
||||
// Ensure that the downloaded LLVM libraries can be found.
|
||||
if self.config.llvm_from_ci {
|
||||
let ci_llvm_lib = self.out.join(&*compiler.host.triple).join("ci-llvm").join("lib");
|
||||
dylib_dirs.push(ci_llvm_lib);
|
||||
}
|
||||
|
||||
add_dylib_path(dylib_dirs, cmd);
|
||||
add_dylib_path(self.rustc_lib_paths(compiler), cmd);
|
||||
}
|
||||
|
||||
/// Gets a path to the compiler specified.
|
||||
|
|
|
|||
|
|
@ -379,22 +379,14 @@ pub struct ErrorIndex {
|
|||
|
||||
impl ErrorIndex {
|
||||
pub fn command(builder: &Builder<'_>) -> Command {
|
||||
// This uses stage-1 to match the behavior of building rustdoc.
|
||||
// Error-index-generator links with the rustdoc library, so we want to
|
||||
// use the same librustdoc to avoid building rustdoc twice (and to
|
||||
// avoid building the compiler an extra time). This uses
|
||||
// saturating_sub to deal with building with stage 0. (Using stage 0
|
||||
// isn't recommended, since it will fail if any new error index tests
|
||||
// use new syntax, but it should work otherwise.)
|
||||
let compiler = builder.compiler(builder.top_stage.saturating_sub(1), builder.config.build);
|
||||
// Error-index-generator links with the rustdoc library, so we need to add `rustc_lib_paths`
|
||||
// for rustc_private and libLLVM.so, and `sysroot_lib` for libstd, etc.
|
||||
let host = builder.config.build;
|
||||
let compiler = builder.compiler_for(builder.top_stage, host, host);
|
||||
let mut cmd = Command::new(builder.ensure(ErrorIndex { compiler }));
|
||||
add_dylib_path(
|
||||
vec![
|
||||
PathBuf::from(&builder.sysroot_libdir(compiler, compiler.host)),
|
||||
builder.rustc_libdir(compiler),
|
||||
],
|
||||
&mut cmd,
|
||||
);
|
||||
let mut dylib_paths = builder.rustc_lib_paths(compiler);
|
||||
dylib_paths.push(PathBuf::from(&builder.sysroot_libdir(compiler, compiler.host)));
|
||||
add_dylib_path(dylib_paths, &mut cmd);
|
||||
cmd
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ pub fn libdir(target: TargetSelection) -> &'static str {
|
|||
}
|
||||
|
||||
/// Adds a list of lookup paths to `cmd`'s dynamic library lookup path.
|
||||
/// If The dylib_path_par is already set for this cmd, the old value will be overwritten!
|
||||
/// If the dylib_path_var is already set for this cmd, the old value will be overwritten!
|
||||
pub fn add_dylib_path(path: Vec<PathBuf>, cmd: &mut Command) {
|
||||
let mut list = dylib_path();
|
||||
for path in path {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue