diff options
-rw-r--r-- | src/rlx_app_discovery.erl | 12 | ||||
-rw-r--r-- | test/rlx_release_SUITE.erl | 2 |
2 files changed, 12 insertions, 2 deletions
diff --git a/src/rlx_app_discovery.erl b/src/rlx_app_discovery.erl index 56ac59c..aab1d3b 100644 --- a/src/rlx_app_discovery.erl +++ b/src/rlx_app_discovery.erl @@ -293,10 +293,20 @@ get_vsn(AppDir, AppName, AppDetail) -> -spec get_deps(binary(), atom(), string(), proplists:proplist()) -> {ok, rlx_app_info:t()} | {error, Reason::term()}. get_deps(AppDir, AppName, AppVsn, AppDetail) -> - ActiveApps = proplists:get_value(applications, AppDetail, []), + %% ensure that at least stdlib and kernel are defined as application deps + ActiveApps = ensure_stdlib_kernel(AppName, + proplists:get_value(applications, AppDetail, [])), LibraryApps = proplists:get_value(included_applications, AppDetail, []), rlx_app_info:new(AppName, AppVsn, AppDir, ActiveApps, LibraryApps). +-spec ensure_stdlib_kernel(AppName :: atom(), + Apps :: list(atom())) -> list(atom()). +ensure_stdlib_kernel(kernel, Deps) -> Deps; +ensure_stdlib_kernel(stdlib, Deps) -> Deps; +ensure_stdlib_kernel(_AppName, Deps) -> + %% ensure that stdlib and kernel are the first deps + [kernel, stdlib | Deps -- [stdlib, kernel]]. + %%%=================================================================== %%% Test Functions %%%=================================================================== diff --git a/test/rlx_release_SUITE.erl b/test/rlx_release_SUITE.erl index c9430fd..3323bed 100644 --- a/test/rlx_release_SUITE.erl +++ b/test/rlx_release_SUITE.erl @@ -1436,7 +1436,7 @@ make_exclude_modules_release(Config) -> {modules,[]}, {included_applications,[]}, {registered,[]}, - {applications,[stdlib,kernel]}]}]}, + {applications,[kernel,stdlib]}]}]}, file:consult(filename:join([OutputDir, "foo", "lib", "non_goal_1-0.0.1", "ebin", "non_goal_1.app"]))). |