summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Radestock <matthias@rabbitmq.com>2012-10-26 14:00:37 +0100
committerMatthias Radestock <matthias@rabbitmq.com>2012-10-26 14:00:37 +0100
commit3b059d1d73a489fe80c05a2aeeb7384a738badd7 (patch)
tree76c78a52b21dfb927452187db7cc83ec2cea5e6b
parentf69c26071effd0c5e2f923814b765e522996e588 (diff)
downloadrabbitmq-server-3b059d1d73a489fe80c05a2aeeb7384a738badd7.tar.gz
simplify
-rw-r--r--src/rabbit_plugins.erl20
1 files changed, 7 insertions, 13 deletions
diff --git a/src/rabbit_plugins.erl b/src/rabbit_plugins.erl
index 5fa9dd99..abe9b089 100644
--- a/src/rabbit_plugins.erl
+++ b/src/rabbit_plugins.erl
@@ -97,22 +97,16 @@ read_enabled(PluginsFile) ->
%% When Reverse =:= true the bottom/leaf level applications are returned in
%% the resulting list, otherwise they're skipped.
dependencies(Reverse, Sources, AllPlugins) ->
- %% A dict here is used en lieu of sets to dedup each Name, while
- %% still maintaining the Deps list for each whose deps are
- %% known. Missing plugins' dependencies cannot be known.
- DepMap = lists:foldl(
- fun({Name, Deps}, Acc) ->
- dict:append_list(Name, Deps, Acc)
- end,
- dict:new(),
- [{Name, Deps} || #plugin{name = Name,
- dependencies = Deps} <- AllPlugins] ++
- [{Dep, []} || #plugin{dependencies = Deps} <- AllPlugins,
- Dep <- Deps]),
{ok, G} = rabbit_misc:build_acyclic_graph(
fun (App, _Deps) -> [{App, App}] end,
fun (App, Deps) -> [{App, Dep} || Dep <- Deps] end,
- dict:to_list(DepMap)),
+ lists:ukeysort(
+ 1, [{Name, Deps} ||
+ #plugin{name = Name,
+ dependencies = Deps} <- AllPlugins] ++
+ [{Dep, []} ||
+ #plugin{dependencies = Deps} <- AllPlugins,
+ Dep <- Deps])),
Dests = case Reverse of
false -> digraph_utils:reachable(Sources, G);
true -> digraph_utils:reaching(Sources, G)