diff options
author | Fred Hebert <mononcqc@ferd.ca> | 2018-12-01 13:29:08 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-12-01 13:29:08 -0500 |
commit | 62ffde8e2a6176fb79c07bd0502df7fd7d5af33c (patch) | |
tree | 28e6f8bd1193eb90ec4062837a48a13a0fc01070 | |
parent | 73bf5b4c055ef30089dabb3f99d09410af144b7f (diff) | |
parent | c0957db49bdd0af80eb72a5a3c2c03796d959044 (diff) |
Merge pull request #1963 from ferd/swap-builder-dep-order
Fix load order for custom project builders and parse transforms
-rw-r--r-- | src/rebar_paths.erl | 9 | ||||
-rw-r--r-- | src/rebar_prv_compile.erl | 3 |
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 |