diff options
author | Tuncer Ayaz <tuncer.ayaz@gmail.com> | 2014-06-17 10:49:03 +0200 |
---|---|---|
committer | Tuncer Ayaz <tuncer.ayaz@gmail.com> | 2014-07-25 20:52:30 +0200 |
commit | 3fb4a7c540da227382ea0831c0c6424765900123 (patch) | |
tree | 8a47941bbc34397269c9b42a84e33db6d0294476 /src/rebar_erlc_compiler.erl | |
parent | e8a6cfe04ab0612dcd089c7aed035520e3dd9aee (diff) |
Fix OS X resource fork handling (Reported-by: Richard O'Keefe)
If you happen to fetch a zip archive of the git repo and try to build
from that, you may, for example, ask erlc to build src/._rebar.erl.
._* are OS X resource forks and not real .erl files. This may also
happen with network filesystems on OS X. To fix that, limit the
files compiled by rebar to include only those which start with
a letter or a digit.
Diffstat (limited to 'src/rebar_erlc_compiler.erl')
-rw-r--r-- | src/rebar_erlc_compiler.erl | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/rebar_erlc_compiler.erl b/src/rebar_erlc_compiler.erl index f628433..6ae927d 100644 --- a/src/rebar_erlc_compiler.erl +++ b/src/rebar_erlc_compiler.erl @@ -47,6 +47,8 @@ info = {[], []} :: erlc_info() }). +-define(RE_PREFIX, "^[^._]"). + -ifdef(namespaced_types). %% digraph:graph() exists starting from Erlang 17. -type rebar_digraph() :: digraph:graph(). @@ -110,14 +112,14 @@ compile(Config, _AppFile) -> -spec clean(rebar_config:config(), file:filename()) -> 'ok'. clean(Config, _AppFile) -> - MibFiles = rebar_utils:find_files("mibs", "^.*\\.mib\$"), + MibFiles = rebar_utils:find_files("mibs", ?RE_PREFIX".*\\.mib\$"), MIBs = [filename:rootname(filename:basename(MIB)) || MIB <- MibFiles], rebar_file_utils:delete_each( [filename:join(["include",MIB++".hrl"]) || MIB <- MIBs]), lists:foreach(fun(F) -> ok = rebar_file_utils:rm_rf(F) end, ["ebin/*.beam", "priv/mibs/*.bin"]), - YrlFiles = rebar_utils:find_files("src", "^.*\\.[x|y]rl\$"), + YrlFiles = rebar_utils:find_files("src", ?RE_PREFIX".*\\.[x|y]rl\$"), rebar_file_utils:delete_each( [ binary_to_list(iolist_to_binary(re:replace(F, "\\.[x|y]rl$", ".erl"))) || F <- YrlFiles ]), @@ -129,7 +131,7 @@ clean(Config, _AppFile) -> %% directory structure in ebin with .beam files within. As such, we want %% to scan whatever is left in the ebin/ directory for sub-dirs which %% satisfy our criteria. - BeamFiles = rebar_utils:find_files("ebin", "^.*\\.beam\$"), + BeamFiles = rebar_utils:find_files("ebin", ?RE_PREFIX".*\\.beam\$"), rebar_file_utils:delete_each(BeamFiles), lists:foreach(fun(Dir) -> delete_dir(Dir, dirs(Dir)) end, dirs("ebin")), ok. @@ -140,7 +142,7 @@ clean(Config, _AppFile) -> test_compile(Config, Cmd, OutDir) -> %% Obtain all the test modules for inclusion in the compile stage. - TestErls = rebar_utils:find_files("test", ".*\\.erl\$"), + TestErls = rebar_utils:find_files("test", ?RE_PREFIX".*\\.erl\$"), ErlOpts = rebar_utils:erl_opts(Config), {Config1, ErlOpts1} = test_compile_config_and_opts(Config, ErlOpts, Cmd), @@ -151,7 +153,8 @@ test_compile(Config, Cmd, OutDir) -> SrcDirs = rebar_utils:src_dirs(proplists:append_values(src_dirs, ErlOpts1)), SrcErls = lists:foldl( fun(Dir, Acc) -> - Files = rebar_utils:find_files(Dir, ".*\\.erl\$"), + Files = rebar_utils:find_files( + Dir, ?RE_PREFIX".*\\.erl\$"), lists:append(Acc, Files) end, [], SrcDirs), @@ -645,7 +648,8 @@ compile_xrl_yrl(Config, Source, Target, Opts, Mod) -> gather_src([], Srcs) -> Srcs; gather_src([Dir|Rest], Srcs) -> - gather_src(Rest, Srcs ++ rebar_utils:find_files(Dir, ".*\\.erl\$")). + gather_src( + Rest, Srcs ++ rebar_utils:find_files(Dir, ?RE_PREFIX".*\\.erl\$")). -spec dirs(file:filename()) -> [file:filename()]. dirs(Dir) -> |