summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFred Hebert <mononcqc@ferd.ca>2018-12-01 13:29:08 -0500
committerGitHub <noreply@github.com>2018-12-01 13:29:08 -0500
commit62ffde8e2a6176fb79c07bd0502df7fd7d5af33c (patch)
tree28e6f8bd1193eb90ec4062837a48a13a0fc01070 /src
parent73bf5b4c055ef30089dabb3f99d09410af144b7f (diff)
parentc0957db49bdd0af80eb72a5a3c2c03796d959044 (diff)
Merge pull request #1963 from ferd/swap-builder-dep-order
Fix load order for custom project builders and parse transforms
Diffstat (limited to 'src')
-rw-r--r--src/rebar_paths.erl9
-rw-r--r--src/rebar_prv_compile.erl3
2 files changed, 8 insertions, 4 deletions
diff --git a/src/rebar_paths.erl b/src/rebar_paths.erl
index 82c0218..160f9fa 100644
--- a/src/rebar_paths.erl
+++ b/src/rebar_paths.erl
@@ -111,7 +111,6 @@ purge_and_load([{_Group, Apps}|Rest], Seen) ->
%% Shouldn't unload ourselves; rebar runs without ever
%% being started and unloading breaks logging!
AppName =/= <<"rebar">>],
-
%% 4)
CandidateMods = lists:append(
%% Start by asking the currently loaded app (if loaded)
@@ -121,8 +120,12 @@ purge_and_load([{_Group, Apps}|Rest], Seen) ->
Mods;
undefined ->
%% if not found, parse the app file on disk, in case
- %% the app's modules are used without it being loaded
- case rebar_app_info:app_details(App) of
+ %% the app's modules are used without it being loaded;
+ %% invalidate the cache in case we're proceeding during
+ %% compilation steps by setting the app details to `[]', which
+ %% is its empty value; the details will then be reloaded
+ %% from disk when found
+ case rebar_app_info:app_details(rebar_app_info:app_details(App, [])) of
[] -> [];
Details -> proplists:get_value(modules, Details, [])
end
diff --git a/src/rebar_prv_compile.erl b/src/rebar_prv_compile.erl
index ee96d9f..cf2bcf2 100644
--- a/src/rebar_prv_compile.erl
+++ b/src/rebar_prv_compile.erl
@@ -195,13 +195,14 @@ build_app(AppInfo, State) ->
case rebar_app_info:project_type(AppInfo) of
Type when Type =:= rebar3 ; Type =:= undefined ->
Compilers = rebar_state:compilers(State),
+ rebar_paths:set_paths([deps], State),
rebar_compiler:compile_all(Compilers, AppInfo);
Type ->
ProjectBuilders = rebar_state:project_builders(State),
case lists:keyfind(Type, 1, ProjectBuilders) of
{_, Module} ->
%% load plugins since thats where project builders would be
- rebar_paths:set_paths([plugins, deps], State),
+ rebar_paths:set_paths([deps, plugins], State),
Res = Module:build(AppInfo),
rebar_paths:set_paths([deps], State),
case Res of