summaryrefslogtreecommitdiff
path: root/src/rebar_prv_install_deps.erl
diff options
context:
space:
mode:
authorTristan Sloughter <t@crashfast.com>2015-02-25 09:49:45 -0600
committerTristan Sloughter <t@crashfast.com>2015-02-28 09:56:19 -0600
commitd4c2332aabb4337b49bb3ef03793408c58afd5d4 (patch)
tree48f1e012bc761e3fa8d257511e4da3c073fff65a /src/rebar_prv_install_deps.erl
parent71d70fca1f1182b8f4919e2b3f5a7ff277700271 (diff)
make base_dir for a run include the profiles in path, link to shared deps
Diffstat (limited to 'src/rebar_prv_install_deps.erl')
-rw-r--r--src/rebar_prv_install_deps.erl14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/rebar_prv_install_deps.erl b/src/rebar_prv_install_deps.erl
index ab4cca1..952043e 100644
--- a/src/rebar_prv_install_deps.erl
+++ b/src/rebar_prv_install_deps.erl
@@ -374,7 +374,15 @@ maybe_fetch(AppInfo, Upgrade, Seen, State) ->
false ->
case rebar_app_discover:find_app(AppDir, all) of
false ->
- fetch_app(AppInfo, AppDir, State);
+ case in_default(AppInfo, State) of
+ false ->
+ fetch_app(AppInfo, AppDir, State);
+ {true, FoundApp} ->
+ ?INFO("Linking ~s to ~s", [rebar_app_info:dir(FoundApp), AppDir]),
+ filelib:ensure_dir(AppDir),
+ ok = file:make_symlink(rebar_app_info:dir(FoundApp), AppDir),
+ true
+ end;
{true, _} ->
case sets:is_element(rebar_app_info:name(AppInfo), Seen) of
true ->
@@ -392,6 +400,10 @@ in_checkouts(AppInfo) ->
error -> false
end.
+in_default(AppInfo, State) ->
+ Name = ec_cnv:to_list(rebar_app_info:name(AppInfo)),
+ DefaultAppDir = filename:join([rebar_state:get(State, base_dir), "default", "lib", Name]),
+ rebar_app_discover:find_app(DefaultAppDir, all).
-spec parse_deps(binary(), list(), list(), list(), integer()) -> {[rebar_app_info:t()], [pkg_dep()]}.
parse_deps(DepsDir, Deps, State, Locks, Level) ->