Merge pull request #299 from tuncer/rok-resource-forks

Fix OS X resource fork handling (Reported-by: Richard O'Keefe)
This commit is contained in:
Tristan Sloughter 2014-07-25 14:10:04 -05:00
commit 19c215ee9f
9 changed files with 28 additions and 16 deletions

View file

@ -47,7 +47,9 @@ main(Args) ->
end,
%% Compile all src/*.erl to ebin
case make:files(filelib:wildcard("src/*.erl"),
%% To not accidentally try to compile files like Mac OS X resource forks,
%% we only look for rebar source files that start with a letter.
case make:files(filelib:wildcard("src/[a-zA-Z]*.erl"),
[{outdir, "ebin"}, {i, "include"},
DebugFlag,
NamespacedTypes,

View file

@ -0,0 +1,4 @@
syntax error
this is file is here to verify that rebar does not try to
compile files like OS X resource forks and should not be
processed at all

View file

@ -70,7 +70,7 @@
%% Get a list of any appup files that exist in the new release
NewAppUpFiles = rebar_utils:find_files(
filename:join([NewVerPath, "lib"]), "^.*.appup$"),
filename:join([NewVerPath, "lib"]), "^[^._].*.appup$"),
%% Convert the list of appup files into app names
AppUpApps = [file_to_name(File) || File <- NewAppUpFiles],

View file

@ -28,8 +28,11 @@
-include("rebar.hrl").
-export([run/4, run/7, run/8,
ok_tuple/3, error_tuple/5]).
-export([run/4,
run/7,
run/8,
ok_tuple/3,
error_tuple/5]).
%% ===================================================================
%% Public API
@ -60,7 +63,7 @@ run(Config, FirstFiles, SourceDir, SourceExt, TargetDir, TargetExt,
run(Config, FirstFiles, SourceDir, SourceExt, TargetDir, TargetExt,
Compile3Fn, Opts) ->
%% Convert simple extension to proper regex
SourceExtRe = ".*\\" ++ SourceExt ++ [$$],
SourceExtRe = "^[^._].*\\" ++ SourceExt ++ [$$],
Recursive = proplists:get_value(recursive, Opts, true),
%% Find all possible source files

View file

@ -593,8 +593,7 @@ load_plugin_modules(Config, PredirsAssoc, Modules) ->
?DEBUG("Plugin dirs for ~s:~n~p~n", [Cwd, PluginDirs]),
%% Find relevant sources in base_dir and plugin_dir
Erls = string:join([atom_to_list(M)++"\\.erl" || M <- Modules], "|"),
RE = "^" ++ Erls ++ "\$",
RE = string:join([atom_to_list(M)++"\\.erl" || M <- Modules], "|"),
%% If a plugin is found both in base_dir and plugin_dir, the clash
%% will provoke an error and we'll abort.
Sources = [rebar_utils:find_files(PD, RE, false) || PD <- PluginDirs],

View file

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

View file

@ -39,7 +39,7 @@
%% ===================================================================
compile(Config, _AppFile) ->
case rebar_utils:find_files("src", ".*\\.proto$") of
case rebar_utils:find_files("src", "^[^._].*\\.proto$") of
[] ->
ok;
FoundFiles ->

View file

@ -208,7 +208,7 @@ qc_module(QC=eqc, [], M) -> QC:module(M);
qc_module(QC=eqc, QCOpts, M) -> QC:module(QCOpts, M).
find_prop_mods() ->
Beams = rebar_utils:find_files(?QC_DIR, ".*\\.beam\$"),
Beams = rebar_utils:find_files(?QC_DIR, "^[^._].*\\.beam\$"),
[M || M <- [rebar_utils:erl_to_mod(Beam) || Beam <- Beams], has_prop(M)].
has_prop(Mod) ->

View file

@ -41,7 +41,7 @@
-include("rebar.hrl").
-define(TEMPLATE_RE, ".*\\.template\$").
-define(TEMPLATE_RE, "^[^._].*\\.template\$").
%% ===================================================================
%% Public API