Pārlūkot izejas kodu

Fix #140 and preserve erl_first_files order

Match erl_first_files properly against all files needing
compilation and make sure the order of erl_first_files as specified in
rebar.config is preserved (rebar/rebar#445)
pull/144/head
Martin Karlsson pirms 10 gadiem
vecāks
revīzija
dca4edade0
2 mainītis faili ar 22 papildinājumiem un 6 dzēšanām
  1. +2
    -1
      THANKS
  2. +20
    -5
      src/rebar_erlc_compiler.erl

+ 2
- 1
THANKS Parādīt failu

@ -129,4 +129,5 @@ Andras Horvath
Drew Varner
Omar Yasin
Tristan Sloughter
Kelly McLaughlin
Kelly McLaughlin
Martin Karlsson

+ 20
- 5
src/rebar_erlc_compiler.erl Parādīt failu

@ -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.

Notiek ielāde…
Atcelt
Saglabāt