Skip to content

Commit c8b437a

Browse files
committed
---
yaml --- r: 7055 b: refs/heads/master c: e746ed6 h: refs/heads/master i: 7053: b2c8025 7051: c3ab6d5 7047: e116e83 7039: a565bce v: v3
1 parent 110ca97 commit c8b437a

File tree

3 files changed

+30
-9
lines changed

3 files changed

+30
-9
lines changed

[refs]

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
---
2-
refs/heads/master: 54cf0e9c0d1151f82e86cab5488162bd7e0706a2
2+
refs/heads/master: e746ed68809c68ae32e5864b5aded37564a38f27

trunk/src/cargo/cargo.rs

+4-8
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ use std;
55

66
import rustc::syntax::{ast, codemap, visit};
77
import rustc::syntax::parse::parser;
8+
import rustc::util::filesearch::get_cargo_root;
89

910
import std::fs;
1011
import std::generic_os;
@@ -300,14 +301,9 @@ fn load_source_packages(&c: cargo, &src: source) {
300301
}
301302

302303
fn configure() -> cargo {
303-
let p = alt generic_os::getenv("CARGO_ROOT") {
304-
some(_p) { _p }
305-
none. {
306-
alt generic_os::getenv("HOME") {
307-
some(_q) { fs::connect(_q, ".cargo") }
308-
none. { fail "no CARGO_ROOT or HOME"; }
309-
}
310-
}
304+
let p = alt get_cargo_root() {
305+
result::ok(p) { p }
306+
result::err(e) { fail e }
311307
};
312308

313309
let sources = map::new_str_hash::<source>();

trunk/src/comp/util/filesearch.rs

+25
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,16 @@ import core::option;
66
import std::fs;
77
import vec;
88
import std::os;
9+
import result;
10+
import std::generic_os;
911

1012
export filesearch;
1113
export mk_filesearch;
1214
export pick;
1315
export pick_file;
1416
export search;
1517
export relative_target_lib_path;
18+
export get_cargo_root;
1619

1720
type pick<T> = block(path: fs::path) -> option::t<T>;
1821

@@ -38,6 +41,10 @@ fn mk_filesearch(maybe_sysroot: option::t<fs::path>,
3841
fn lib_search_paths() -> [fs::path] {
3942
addl_lib_search_paths
4043
+ [make_target_lib_path(sysroot, target_triple)]
44+
+ alt get_cargo_lib_path() {
45+
result::ok(p) { [p] }
46+
result::err(p) { [] }
47+
}
4148
}
4249

4350
fn get_target_lib_path() -> fs::path {
@@ -99,3 +106,21 @@ fn get_sysroot(maybe_sysroot: option::t<fs::path>) -> fs::path {
99106
option::none. { get_default_sysroot() }
100107
}
101108
}
109+
110+
fn get_cargo_root() -> result::t<fs::path, str> {
111+
alt generic_os::getenv("CARGO_ROOT") {
112+
some(_p) { result::ok(_p) }
113+
none. {
114+
alt generic_os::getenv("HOME") {
115+
some(_q) { result::ok(fs::connect(_q, ".cargo")) }
116+
none. { result::err("no CARGO_ROOT or HOME") }
117+
}
118+
}
119+
}
120+
}
121+
122+
fn get_cargo_lib_path() -> result::t<fs::path, str> {
123+
result::chain(get_cargo_root()) { |p|
124+
result::ok(fs::connect(p, "lib"))
125+
}
126+
}

0 commit comments

Comments
 (0)