summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/rebar_dir.erl11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/rebar_dir.erl b/src/rebar_dir.erl
index d0c7805..7a779d1 100644
--- a/src/rebar_dir.erl
+++ b/src/rebar_dir.erl
@@ -258,8 +258,11 @@ extra_src_dirs(Opts, Default) ->
%% @private agnostic version of src_dirs and extra_src_dirs.
src_dirs(Type, Opts, Default) ->
- lists:usort([case D0 of {D,_} -> D; _ -> D0 end ||
- D0 <- raw_src_dirs(Type,Opts,Default)]).
+ lists:usort([
+ case D0 of
+ {D,_} -> normalize_relative_path(D);
+ _ -> normalize_relative_path(D0)
+ end || D0 <- raw_src_dirs(Type,Opts,Default)]).
%% @private extracts the un-formatted src_dirs or extra_src_dirs
%% options as configured.
@@ -271,6 +274,10 @@ raw_src_dirs(Type, Opts, Default) ->
Dirs -> Dirs
end.
+%% @private normalizes relative paths so that ./a/b/c/ => a/b/c
+normalize_relative_path(Path) ->
+ make_normalized_path(filename:split(Path), []).
+
%% @doc returns all the source directories (`src_dirs' and
%% `extra_src_dirs').
-spec all_src_dirs(rebar_dict()) -> list(file:filename_all()).