Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Fixed issue 1 "priv/mibs/ is not automatically created"

  • Loading branch information...
commit 4ac1f3efe9fd358774bf8f1166202d6234afc2b1 1 parent ec4e805
@tuncer tuncer authored
Showing with 22 additions and 2 deletions.
  1. +2 −1  src/rebar_erlc_compiler.erl
  2. +20 −1 src/rebar_utils.erl
View
3  src/rebar_erlc_compiler.erl
@@ -149,7 +149,8 @@ internal_erl_compile(Source, Config, Outdir) ->
skipped
end.
-compile_mib(Source, _Target, Config) ->
+compile_mib(Source, Target, Config) ->
+ ok = rebar_utils:ensure_dir(Target),
Opts = [{outdir, "priv/mibs"}, {i, ["priv/mibs"]}] ++
rebar_config:get(Config, mib_opts, []),
case snmpc:compile(Source, Opts) of
View
21 src/rebar_utils.erl
@@ -32,7 +32,8 @@
sh/2, sh/3,
sh_failfast/2,
find_files/2,
- now_str/0]).
+ now_str/0,
+ ensure_dir/1]).
-include("rebar.hrl").
@@ -89,6 +90,24 @@ now_str() ->
lists:flatten(io_lib:format("~4b/~2..0b/~2..0b ~2..0b:~2..0b:~2..0b",
[Year, Month, Day, Hour, Minute, Second])).
+%% TODO: Review why filelib:ensure_dir/1 sometimes returns {error, eexist}.
+%% There appears to be a race condition when calling ensure_dir from
+%% multiple processes simultaneously.
+%% This does not happen with -j1 but with anything higher than that.
+%% So -j2 or default jobs setting will reveal the issue.
+%% To reproduce make sure that the priv/mibs directory does not exist
+%% $ rm -r priv
+%% $ ./rebar -v compile
+ensure_dir(Path) ->
+ case filelib:ensure_dir(Path) of
+ ok ->
+ ok;
+ {error,eexist} ->
+ ok;
+ Error ->
+ Error
+ end.
+
%% ====================================================================
%% Internal functions
%% ====================================================================
Please sign in to comment.
Something went wrong with that request. Please try again.