|
|
@ -148,11 +148,13 @@ doterl_compile(Config, Dir, MoreSources, ErlOpts) -> |
|
|
|
%% (rebar_state:get instead of rebar_state:get_list), consider |
|
|
|
%% logging a warning message for any file listed in erl_first_files which |
|
|
|
%% wasn't found via gather_src. |
|
|
|
{ErlFirstFiles, RestErls} = |
|
|
|
lists:partition( |
|
|
|
fun(Source) -> |
|
|
|
lists:member(list_to_atom(filename:basename(Source, ".erl")), ErlFirstFilesConf) |
|
|
|
end, AllErlFiles), |
|
|
|
|
|
|
|
%% Issue: rebar/rebar3#140 (fix matching based on same path + order of |
|
|
|
%% erl_first_files) |
|
|
|
ErlFirstFiles = get_erl_first_files(ErlFirstFilesConf, AllErlFiles), |
|
|
|
RestErls = [ File || File <- AllErlFiles, |
|
|
|
not lists:member(File, ErlFirstFiles) ], |
|
|
|
|
|
|
|
%% Make sure that ebin/ exists and is on the path |
|
|
|
ok = filelib:ensure_dir(filename:join([Dir, "ebin", "dummy.beam"])), |
|
|
|
CurrPath = code:get_path(), |
|
|
@ -206,6 +208,17 @@ doterl_compile(Config, Dir, MoreSources, ErlOpts) -> |
|
|
|
erls(Files) -> |
|
|
|
[Erl || Erl <- Files, filename:extension(Erl) =:= ".erl"]. |
|
|
|
|
|
|
|
%% |
|
|
|
%% Return a list of erl_first_files in order as specified in rebar.config |
|
|
|
%% using the path from AllFiles. |
|
|
|
%% |
|
|
|
get_erl_first_files(FirstFiles, AllFiles) -> |
|
|
|
BaseFirstFiles = [filename:basename(F) || F <- FirstFiles], |
|
|
|
IndexedAllFiles = [{filename:basename(F), F} || F <- AllFiles ], |
|
|
|
[ proplists:get_value(FileName, IndexedAllFiles) || |
|
|
|
FileName <- BaseFirstFiles, |
|
|
|
proplists:is_defined(FileName, IndexedAllFiles) ]. |
|
|
|
|
|
|
|
%% |
|
|
|
%% Return a list without duplicates while preserving order |
|
|
|
%% |
|
|
@ -621,3 +634,5 @@ log_files(Prefix, Files) -> |
|
|
|
_ -> |
|
|
|
?DEBUG("~s:~n~p", [Prefix, Files]) |
|
|
|
end. |
|
|
|
|
|
|
|
|