}
}
+ 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) {
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.
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
}
}
}
/// 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 {