From: Mikael Magnusson <[email protected]> Without requiring it to be installed in the local repository.
Signed-off-by: Mikael Magnusson <[email protected]> --- server/sinan/src/sin_depends.erl | 45 +++++++++++++++++++++++++++++++------ 1 files changed, 37 insertions(+), 8 deletions(-) diff --git a/server/sinan/src/sin_depends.erl b/server/sinan/src/sin_depends.erl index 8bdd0c8..e3a43b4 100644 --- a/server/sinan/src/sin_depends.erl +++ b/server/sinan/src/sin_depends.erl @@ -124,24 +124,55 @@ get_application_env(Key) -> %%-------------------------------------------------------------------- check_project_dependencies(Prefix, ErtsVersion, - [{_, _, Deps, _} | ProjectApps], Acc) -> + ProjectApps, Acc) -> + check_project_dependencies(Prefix, ErtsVersion, ProjectApps, + ProjectApps, Acc). + +check_project_dependencies(Prefix, + ErtsVersion, + [{_Name, _Vsn, Deps, _} | ProjectApps], + AllProjectApps, Acc) -> Acc2 = resolve_project_dependencies(Prefix, ErtsVersion, Deps, + AllProjectApps, Acc), check_project_dependencies(Prefix, ErtsVersion, ProjectApps, + AllProjectApps, Acc2); check_project_dependencies(_, _, [], + _, Acc) -> Acc. resolve_project_dependencies(Prefix, ErtsVersion, - [Dep | Deps], Acc) -> + Deps0 = [Dep | Deps], + AllProjectApps, Acc) -> case already_resolved(Dep, Acc) of false -> + resolve_project_dependencies2(Prefix, ErtsVersion, Deps0, + AllProjectApps, + Acc); + true -> + resolve_project_dependencies(Prefix, ErtsVersion, Deps, + AllProjectApps, + Acc) + end; +resolve_project_dependencies(_, _, [], _, Acc) -> + Acc. + +resolve_project_dependencies2(Prefix, + ErtsVersion, + [Dep | Deps], AllProjectApps, Acc) -> + case lists:keysearch(Dep, 1, AllProjectApps) of + {value, App={Dep, _Version, NDeps, _Location}} -> + resolve_project_dependencies(Prefix, ErtsVersion, Deps ++ NDeps, + AllProjectApps, + [App | Acc]); + false -> Version = case sin_resolver:package_versions(Prefix, ErtsVersion, @@ -152,7 +183,7 @@ resolve_project_dependencies(Prefix, [Dep]); [Version1 | _] -> Version1 - end, + end, NDeps = sin_resolver:package_dependencies(Prefix, ErtsVersion, Dep, @@ -162,13 +193,11 @@ resolve_project_dependencies(Prefix, Dep, Version), resolve_project_dependencies(Prefix, ErtsVersion, Deps ++ NDeps, + AllProjectApps, [{Dep, Version, NDeps, Location} | - Acc]); - true -> - resolve_project_dependencies(Prefix, ErtsVersion, Deps, - Acc) + Acc]) end; -resolve_project_dependencies(_, _, [], Acc) -> +resolve_project_dependencies2(_, _, [], _, Acc) -> Acc. -- 1.5.6.3 --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "erlware-dev" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/erlware-dev?hl=en -~----------~----~----~----~------~----~------~--~---
