auto merge of #11963 : alexcrichton/rust/fix-rustpkg, r=brson
Right now the bots are all injecting a libstd version, so all the rustpkg tests are passing. All rustpkg compilations will fail unless the version number is explicitly given because rustpkg attempts to exactly guess the target file name. Switch back to using a pattern match in order to unbreak tests. Closes #11852
This commit is contained in:
commit
c80d28c8e3
1 changed files with 19 additions and 18 deletions
|
@ -21,9 +21,7 @@ use std::libc::consts::os::posix88::{S_IRUSR, S_IWUSR, S_IXUSR};
|
||||||
use std::os;
|
use std::os;
|
||||||
use std::io;
|
use std::io;
|
||||||
use std::io::fs;
|
use std::io::fs;
|
||||||
use extra::hex::ToHex;
|
|
||||||
use syntax::crateid::CrateId;
|
use syntax::crateid::CrateId;
|
||||||
use rustc::util::sha2::{Digest, Sha256};
|
|
||||||
use rustc::metadata::filesearch::{libdir, relative_target_lib_path};
|
use rustc::metadata::filesearch::{libdir, relative_target_lib_path};
|
||||||
use rustc::driver::driver::host_triple;
|
use rustc::driver::driver::host_triple;
|
||||||
use messages::*;
|
use messages::*;
|
||||||
|
@ -206,24 +204,27 @@ pub fn system_library(sysroot: &Path, crate_id: &CrateId) -> Option<Path> {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn library_in(crate_id: &CrateId, dir_to_search: &Path) -> Option<Path> {
|
fn library_in(crate_id: &CrateId, dir_to_search: &Path) -> Option<Path> {
|
||||||
let mut hasher = Sha256::new();
|
let version_str = match crate_id.version {
|
||||||
hasher.reset();
|
Some(ref v) => format!("-{}", *v),
|
||||||
hasher.input_str(crate_id.to_str());
|
None => ~"",
|
||||||
let hash = hasher.result_bytes().to_hex();
|
};
|
||||||
let hash = hash.slice_chars(0, 8);
|
let patterns = ~[
|
||||||
|
(format!("lib{}", crate_id.name), format!("{}.rlib", version_str)),
|
||||||
let lib_name = format!("{}-{}-{}", crate_id.name, hash, crate_id.version_or_default());
|
(format!("{}{}", os::consts::DLL_PREFIX, crate_id.name),
|
||||||
let filenames = [
|
format!("{}{}", version_str, os::consts::DLL_SUFFIX)),
|
||||||
format!("{}{}.{}", "lib", lib_name, "rlib"),
|
|
||||||
format!("{}{}{}", os::consts::DLL_PREFIX, lib_name, os::consts::DLL_SUFFIX),
|
|
||||||
];
|
];
|
||||||
|
|
||||||
for filename in filenames.iter() {
|
for (prefix, suffix) in patterns.move_iter() {
|
||||||
debug!("filename = {}", filename.as_slice());
|
let files = match io::result(|| fs::readdir(dir_to_search)) {
|
||||||
let path = dir_to_search.join(filename.as_slice());
|
Ok(dir) => dir, Err(..) => continue,
|
||||||
if path.exists() {
|
};
|
||||||
debug!("found: {}", path.display());
|
for file in files.move_iter() {
|
||||||
return Some(path);
|
let filename = match file.filename_str() {
|
||||||
|
Some(s) => s, None => continue,
|
||||||
|
};
|
||||||
|
if filename.starts_with(prefix) && filename.ends_with(suffix) {
|
||||||
|
return Some(file.clone())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
debug!("warning: library_in_workspace didn't find a library in {} for {}",
|
debug!("warning: library_in_workspace didn't find a library in {} for {}",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue