diff options
| author | Tristan Sloughter <tristan.sloughter@gmail.com> | 2014-07-25 14:10:04 -0500 | 
|---|---|---|
| committer | Tristan Sloughter <tristan.sloughter@gmail.com> | 2014-07-25 14:10:04 -0500 | 
| commit | 19c215ee9fe0726a1983b36f4f8bcc21d42a5ef8 (patch) | |
| tree | 8a47941bbc34397269c9b42a84e33db6d0294476 | |
| parent | e8a6cfe04ab0612dcd089c7aed035520e3dd9aee (diff) | |
| parent | 3fb4a7c540da227382ea0831c0c6424765900123 (diff) | |
Merge pull request #299 from tuncer/rok-resource-forks
Fix OS X resource fork handling (Reported-by: Richard O'Keefe)
| -rwxr-xr-x | bootstrap | 4 | ||||
| -rw-r--r-- | inttest/erlc/src/._do_not_compile.erl | 4 | ||||
| -rw-r--r-- | src/rebar_appups.erl | 2 | ||||
| -rw-r--r-- | src/rebar_base_compiler.erl | 9 | ||||
| -rw-r--r-- | src/rebar_core.erl | 3 | ||||
| -rw-r--r-- | src/rebar_erlc_compiler.erl | 16 | ||||
| -rw-r--r-- | src/rebar_protobuffs_compiler.erl | 2 | ||||
| -rw-r--r-- | src/rebar_qc.erl | 2 | ||||
| -rw-r--r-- | src/rebar_templater.erl | 2 | 
9 files changed, 28 insertions, 16 deletions
| @@ -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, diff --git a/inttest/erlc/src/._do_not_compile.erl b/inttest/erlc/src/._do_not_compile.erl new file mode 100644 index 0000000..c9d743b --- /dev/null +++ b/inttest/erlc/src/._do_not_compile.erl @@ -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 diff --git a/src/rebar_appups.erl b/src/rebar_appups.erl index a51c30d..38e7b72 100644 --- a/src/rebar_appups.erl +++ b/src/rebar_appups.erl @@ -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], diff --git a/src/rebar_base_compiler.erl b/src/rebar_base_compiler.erl index 1957070..b400512 100644 --- a/src/rebar_base_compiler.erl +++ b/src/rebar_base_compiler.erl @@ -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 diff --git a/src/rebar_core.erl b/src/rebar_core.erl index 212365b..4557bb8 100644 --- a/src/rebar_core.erl +++ b/src/rebar_core.erl @@ -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], 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) -> diff --git a/src/rebar_protobuffs_compiler.erl b/src/rebar_protobuffs_compiler.erl index 579ecfb..e89c700 100644 --- a/src/rebar_protobuffs_compiler.erl +++ b/src/rebar_protobuffs_compiler.erl @@ -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 -> diff --git a/src/rebar_qc.erl b/src/rebar_qc.erl index e08833b..2c565f1 100644 --- a/src/rebar_qc.erl +++ b/src/rebar_qc.erl @@ -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) -> diff --git a/src/rebar_templater.erl b/src/rebar_templater.erl index 4abf404..dd89f3a 100644 --- a/src/rebar_templater.erl +++ b/src/rebar_templater.erl @@ -41,7 +41,7 @@  -include("rebar.hrl"). --define(TEMPLATE_RE, ".*\\.template\$"). +-define(TEMPLATE_RE, "^[^._].*\\.template\$").  %% ===================================================================  %% Public API | 
