From e746ed68809c68ae32e5864b5aded37564a38f27 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Thu, 5 Jan 2012 16:03:28 -0800 Subject: [PATCH] rustc: Add cargo's lib directory to search paths --- src/cargo/cargo.rs | 12 ++++-------- src/comp/util/filesearch.rs | 25 +++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 8 deletions(-) diff --git a/src/cargo/cargo.rs b/src/cargo/cargo.rs index f3eaacb2ba3..2e119cdb7dd 100644 --- a/src/cargo/cargo.rs +++ b/src/cargo/cargo.rs @@ -5,6 +5,7 @@ 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::(); diff --git a/src/comp/util/filesearch.rs b/src/comp/util/filesearch.rs index ce8a1d7fde0..e4ac615d973 100644 --- a/src/comp/util/filesearch.rs +++ b/src/comp/util/filesearch.rs @@ -6,6 +6,8 @@ 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_file; export search; export relative_target_lib_path; +export get_cargo_root; type pick = block(path: fs::path) -> option::t; @@ -38,6 +41,10 @@ fn sysroot() -> fs::path { sysroot } 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 { option::none. { get_default_sysroot() } } } + +fn get_cargo_root() -> result::t { + 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 { + result::chain(get_cargo_root()) { |p| + result::ok(fs::connect(p, "lib")) + } +} \ No newline at end of file -- 2.44.0