rustc: Add cargo's lib directory to search paths
This commit is contained in:
parent
54cf0e9c0d
commit
e746ed6880
2 changed files with 29 additions and 8 deletions
|
@ -5,6 +5,7 @@ use std;
|
|||
|
||||
import rustc::syntax::{ast, codemap, visit};
|
||||
import rustc::syntax::parse::parser;
|
||||
import rustc::util::filesearch::get_cargo_root;
|
||||
|
||||
import std::fs;
|
||||
import std::generic_os;
|
||||
|
@ -300,14 +301,9 @@ fn load_source_packages(&c: cargo, &src: source) {
|
|||
}
|
||||
|
||||
fn configure() -> cargo {
|
||||
let p = alt generic_os::getenv("CARGO_ROOT") {
|
||||
some(_p) { _p }
|
||||
none. {
|
||||
alt generic_os::getenv("HOME") {
|
||||
some(_q) { fs::connect(_q, ".cargo") }
|
||||
none. { fail "no CARGO_ROOT or HOME"; }
|
||||
}
|
||||
}
|
||||
let p = alt get_cargo_root() {
|
||||
result::ok(p) { p }
|
||||
result::err(e) { fail e }
|
||||
};
|
||||
|
||||
let sources = map::new_str_hash::<source>();
|
||||
|
|
|
@ -6,6 +6,8 @@ import core::option;
|
|||
import std::fs;
|
||||
import vec;
|
||||
import std::os;
|
||||
import result;
|
||||
import std::generic_os;
|
||||
|
||||
export filesearch;
|
||||
export mk_filesearch;
|
||||
|
@ -13,6 +15,7 @@ export pick;
|
|||
export pick_file;
|
||||
export search;
|
||||
export relative_target_lib_path;
|
||||
export get_cargo_root;
|
||||
|
||||
type pick<T> = block(path: fs::path) -> option::t<T>;
|
||||
|
||||
|
@ -38,6 +41,10 @@ fn mk_filesearch(maybe_sysroot: option::t<fs::path>,
|
|||
fn lib_search_paths() -> [fs::path] {
|
||||
addl_lib_search_paths
|
||||
+ [make_target_lib_path(sysroot, target_triple)]
|
||||
+ alt get_cargo_lib_path() {
|
||||
result::ok(p) { [p] }
|
||||
result::err(p) { [] }
|
||||
}
|
||||
}
|
||||
|
||||
fn get_target_lib_path() -> fs::path {
|
||||
|
@ -99,3 +106,21 @@ fn get_sysroot(maybe_sysroot: option::t<fs::path>) -> fs::path {
|
|||
option::none. { get_default_sysroot() }
|
||||
}
|
||||
}
|
||||
|
||||
fn get_cargo_root() -> result::t<fs::path, str> {
|
||||
alt generic_os::getenv("CARGO_ROOT") {
|
||||
some(_p) { result::ok(_p) }
|
||||
none. {
|
||||
alt generic_os::getenv("HOME") {
|
||||
some(_q) { result::ok(fs::connect(_q, ".cargo")) }
|
||||
none. { result::err("no CARGO_ROOT or HOME") }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn get_cargo_lib_path() -> result::t<fs::path, str> {
|
||||
result::chain(get_cargo_root()) { |p|
|
||||
result::ok(fs::connect(p, "lib"))
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue