couchdb-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From kxe...@apache.org
Subject [48/50] rebar commit: updated refs/heads/import to e9f62c4
Date Mon, 01 Jun 2015 20:42:42 GMT
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.


Project: http://git-wip-us.apache.org/repos/asf/couchdb-rebar/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb-rebar/commit/3fb4a7c5
Tree: http://git-wip-us.apache.org/repos/asf/couchdb-rebar/tree/3fb4a7c5
Diff: http://git-wip-us.apache.org/repos/asf/couchdb-rebar/diff/3fb4a7c5

Branch: refs/heads/import
Commit: 3fb4a7c540da227382ea0831c0c6424765900123
Parents: e8a6cfe
Author: Tuncer Ayaz <tuncer.ayaz@gmail.com>
Authored: Tue Jun 17 10:49:03 2014 +0200
Committer: Tuncer Ayaz <tuncer.ayaz@gmail.com>
Committed: Fri Jul 25 20:52:30 2014 +0200

----------------------------------------------------------------------
 bootstrap                             |  4 +++-
 inttest/erlc/src/._do_not_compile.erl |  4 ++++
 src/rebar_appups.erl                  |  2 +-
 src/rebar_base_compiler.erl           |  9 ++++++---
 src/rebar_core.erl                    |  3 +--
 src/rebar_erlc_compiler.erl           | 16 ++++++++++------
 src/rebar_protobuffs_compiler.erl     |  2 +-
 src/rebar_qc.erl                      |  2 +-
 src/rebar_templater.erl               |  2 +-
 9 files changed, 28 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/couchdb-rebar/blob/3fb4a7c5/bootstrap
----------------------------------------------------------------------
diff --git a/bootstrap b/bootstrap
index df09f7e..7d9a1c1 100755
--- a/bootstrap
+++ b/bootstrap
@@ -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,

http://git-wip-us.apache.org/repos/asf/couchdb-rebar/blob/3fb4a7c5/inttest/erlc/src/._do_not_compile.erl
----------------------------------------------------------------------
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

http://git-wip-us.apache.org/repos/asf/couchdb-rebar/blob/3fb4a7c5/src/rebar_appups.erl
----------------------------------------------------------------------
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],

http://git-wip-us.apache.org/repos/asf/couchdb-rebar/blob/3fb4a7c5/src/rebar_base_compiler.erl
----------------------------------------------------------------------
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

http://git-wip-us.apache.org/repos/asf/couchdb-rebar/blob/3fb4a7c5/src/rebar_core.erl
----------------------------------------------------------------------
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],

http://git-wip-us.apache.org/repos/asf/couchdb-rebar/blob/3fb4a7c5/src/rebar_erlc_compiler.erl
----------------------------------------------------------------------
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) ->

http://git-wip-us.apache.org/repos/asf/couchdb-rebar/blob/3fb4a7c5/src/rebar_protobuffs_compiler.erl
----------------------------------------------------------------------
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 ->

http://git-wip-us.apache.org/repos/asf/couchdb-rebar/blob/3fb4a7c5/src/rebar_qc.erl
----------------------------------------------------------------------
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) ->

http://git-wip-us.apache.org/repos/asf/couchdb-rebar/blob/3fb4a7c5/src/rebar_templater.erl
----------------------------------------------------------------------
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


Mime
View raw message