From 4ee7fef913977add95460544a25e4f8ceb803fb0 Mon Sep 17 00:00:00 2001 From: Tristan Sloughter Date: Sat, 11 Apr 2015 17:05:15 -0500 Subject: store registry fetched from disk in state --- src/rebar.hrl | 6 ++++++ src/rebar_prv_install_deps.erl | 5 +++-- src/rebar_state.erl | 11 ++++++++++- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/rebar.hrl b/src/rebar.hrl index 1f051d7..593738e 100644 --- a/src/rebar.hrl +++ b/src/rebar.hrl @@ -36,6 +36,12 @@ -type rebar_digraph() :: digraph(). -endif. +-ifdef(namespaced_types). +-type rebar_tid() :: ets:tid(). +-else. +-type rebar_tid() :: tid(). +-endif. + -define(GRAPH_VSN, 2). -type v() :: {digraph:vertex(), term()} | 'false'. -type e() :: {digraph:vertex(), digraph:vertex()}. diff --git a/src/rebar_prv_install_deps.erl b/src/rebar_prv_install_deps.erl index 57cd05f..bf20a2e 100644 --- a/src/rebar_prv_install_deps.erl +++ b/src/rebar_prv_install_deps.erl @@ -134,7 +134,8 @@ handle_deps(_Profile, State, [], _, _) -> handle_deps(Profile, State0, Deps, Upgrade, Locks) -> %% Read in package index and dep graph {Packages, Graph} = rebar_state:packages(State0), - State = rebar_state:packages(State0, {Packages, Graph}), + Registry = rebar_packages:registry(State0), + State = rebar_state:packages(rebar_state:registry(State0, Registry), {Packages, Graph}), %% Split source deps from pkg deps, needed to keep backwards compatibility DepsDir = rebar_dir:deps_dir(State), {SrcDeps, PkgDeps} = parse_deps(DepsDir, Deps, State, Locks, 0), @@ -573,7 +574,7 @@ not_needs_compile(App) -> andalso rebar_app_info:valid(App). get_package(Dep, State) -> - case rebar_packages:registry(State) of + case rebar_state:registry(State) of {ok, T} -> HighestDepVsn = rebar_packages:find_highest_matching(Dep, "0", T), {Dep, HighestDepVsn}; diff --git a/src/rebar_state.erl b/src/rebar_state.erl index af875d7..3e45ba8 100644 --- a/src/rebar_state.erl +++ b/src/rebar_state.erl @@ -31,6 +31,7 @@ apply_overrides/2, packages/1, packages/2, + registry/1, registry/2, resources/1, resources/2, add_resource/2, providers/1, providers/2, add_provider/2]). @@ -54,7 +55,7 @@ all_deps = [] :: [rebar_app_info:t()], packages = undefined :: {rebar_dict(), rebar_digraph()} | undefined, - + registry = undefined :: {ok, rebar_tid()} | error | undefined, overrides = [], resources = [], providers = []}). @@ -311,6 +312,14 @@ packages(#state_t{packages=Packages}) -> packages(State, Packages) -> State#state_t{packages=Packages}. +registry(State=#state_t{registry=undefined}) -> + rebar_packages:registry(State); +registry(#state_t{registry=Registry}) -> + Registry. + +registry(State, Registry) -> + State#state_t{registry=Registry}. + -spec resources(t()) -> rebar_resource:resource(). resources(#state_t{resources=Resources}) -> Resources. -- cgit v1.1