summaryrefslogtreecommitdiff
path: root/src/rebar_digraph.erl
diff options
context:
space:
mode:
authorFred Hebert <mononcqc@ferd.ca>2014-12-06 18:56:47 -0500
committerFred Hebert <mononcqc@ferd.ca>2014-12-06 18:56:47 -0500
commitfb98dde7ecb894fe74055449dcaea77aa237115b (patch)
tree95feb148cd7c33f46b15ec7fa60edd02ae46cfa0 /src/rebar_digraph.erl
parentd5907ad9b932feaf7fdf1cdbb4319226ef22ea78 (diff)
parentbe39ab9e7bd1553132def2a1e89f1ce38f6f2fcc (diff)
Merge pull request #44 from rebar/fix-circular-deps
Partial fix to circular deps (#40)
Diffstat (limited to 'src/rebar_digraph.erl')
-rw-r--r--src/rebar_digraph.erl10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/rebar_digraph.erl b/src/rebar_digraph.erl
index bb031cb..dbcf649 100644
--- a/src/rebar_digraph.erl
+++ b/src/rebar_digraph.erl
@@ -18,7 +18,15 @@ compile_order(Apps) ->
end, Apps),
case digraph_utils:topsort(Graph) of
false ->
- {error, no_sort};
+ case digraph_utils:is_acyclic(Graph) of
+ true ->
+ {error, no_sort};
+ false ->
+ Cycles = lists:sort(
+ [lists:sort(Comp) || Comp <- digraph_utils:strong_components(Graph),
+ length(Comp)>1]),
+ {error, {cycles, Cycles}}
+ end;
V ->
{ok, names_to_apps(lists:reverse(V), Apps)}
end.