summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTristan Sloughter <t@crashfast.com>2015-07-06 22:54:43 -0500
committerTristan Sloughter <t@crashfast.com>2015-07-06 22:54:43 -0500
commitb6b32fc64efb3b8a48f144fa850bfef923f66d45 (patch)
tree04dfec24dc917cdf03a45108ce5a2643c250346e /src
parentd64cb0f86382e8c8040c6ac507fd32ec06b7389c (diff)
ensure necessary directories exist to compile mibs files
Diffstat (limited to 'src')
-rw-r--r--src/rebar_erlc_compiler.erl7
-rw-r--r--src/rebar_prv_compile.erl13
2 files changed, 18 insertions, 2 deletions
diff --git a/src/rebar_erlc_compiler.erl b/src/rebar_erlc_compiler.erl
index b9072a3..87cf352 100644
--- a/src/rebar_erlc_compiler.erl
+++ b/src/rebar_erlc_compiler.erl
@@ -404,10 +404,13 @@ target_base(OutDir, Source) ->
-spec compile_mib(file:filename(), file:filename(),
rebar_state:t()) -> 'ok'.
compile_mib(Source, Target, Config) ->
+ Dir = rebar_state:dir(Config),
ok = filelib:ensure_dir(Target),
- ok = filelib:ensure_dir(filename:join("include", "dummy.hrl")),
- Opts = [{outdir, "priv/mibs"}, {i, ["priv/mibs"]}] ++
+ ok = filelib:ensure_dir(filename:join([Dir, "include", "dummy.hrl"])),
+ Opts = [{outdir, filename:join([Dir, "priv", "mibs"])}
+ ,{i, [filename:join([Dir, "priv", "mibs"])]}] ++
rebar_state:get(Config, mib_opts, []),
+
case snmpc:compile(Source, Opts) of
{ok, _} ->
Mib = filename:rootname(Target),
diff --git a/src/rebar_prv_compile.erl b/src/rebar_prv_compile.erl
index 6eb8a4f..25d5193 100644
--- a/src/rebar_prv_compile.erl
+++ b/src/rebar_prv_compile.erl
@@ -126,7 +126,20 @@ copy_app_dirs(State, OldAppDir, AppDir) ->
false ->
ok
end,
+
filelib:ensure_dir(filename:join(AppDir, "dummy")),
+
+ %% link or copy mibs if it exists
+ case filelib:is_dir(filename:join(OldAppDir, "mibs")) of
+ true ->
+ %% If mibs exist it means we must ensure priv exists.
+ %% mibs files are compiled to priv/mibs/
+ filelib:ensure_dir(filename:join([OldAppDir, "priv", "dummy"])),
+ symlink_or_copy(OldAppDir, AppDir, "mibs");
+ false ->
+ ok
+ end,
+
%% link to src_dirs to be adjacent to ebin is needed for R15 use of cover/xref
SrcDirs = rebar_dir:all_src_dirs(State, ["src"], ["test"]),
[symlink_or_copy(OldAppDir, AppDir, Dir) || Dir <- ["priv", "include"] ++ SrcDirs];