summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFred Hebert <mononcqc@ferd.ca>2017-10-08 17:23:59 -0400
committerGitHub <noreply@github.com>2017-10-08 17:23:59 -0400
commit6d9037a5a4d9d6480ca061f47da62c66a5fbc16c (patch)
tree3154c1776e457f8e0155495f62c13082303522ce
parent4f6646bb1c8900f6ecb9e92ccc4c0b39219042c8 (diff)
parentc92e2682a0391eeef523ac87fb1a92f576455028 (diff)
Merge pull request #1640 from ferd/app-src-fixes
Various fixes related to .app files
-rw-r--r--src/rebar.app.src2
-rw-r--r--src/rebar_app_info.erl15
-rw-r--r--src/rebar_otp_app.erl14
-rw-r--r--test/rebar_pkg_alias_SUITE.erl3
4 files changed, 28 insertions, 6 deletions
diff --git a/src/rebar.app.src b/src/rebar.app.src
index 4be8b76..74efe97 100644
--- a/src/rebar.app.src
+++ b/src/rebar.app.src
@@ -3,7 +3,7 @@
{application, rebar,
[{description, "Rebar: Erlang Build Tool"},
- {vsn, "3.4.4"},
+ {vsn, "git"},
{modules, []},
{registered, []},
{applications, [kernel,
diff --git a/src/rebar_app_info.erl b/src/rebar_app_info.erl
index 050ccc1..de497d5 100644
--- a/src/rebar_app_info.erl
+++ b/src/rebar_app_info.erl
@@ -311,15 +311,22 @@ app_file(AppInfo=#app_info_t{}, AppFile) ->
app_details(AppInfo=#app_info_t{app_details=[]}) ->
case app_file(AppInfo) of
undefined ->
- rebar_file_utils:try_consult(app_file_src(AppInfo));
+ case rebar_config:consult_app_file(app_file_src(AppInfo)) of
+ [] -> [];
+ [{application, _Name, AppDetails}] -> AppDetails
+ end;
AppFile ->
- try
- rebar_file_utils:try_consult(AppFile)
+ try rebar_file_utils:try_consult(AppFile) of
+ [] -> [];
+ [{application, _Name, AppDetails}] -> AppDetails
catch
throw:{error, {Module, Reason}} ->
?DEBUG("Warning, falling back to .app.src because of: ~ts",
[Module:format_error(Reason)]),
- rebar_file_utils:try_consult(app_file_src(AppInfo))
+ case rebar_config:consult_app_file(app_file_src(AppInfo)) of
+ [] -> [];
+ [{application, _Name, AppDetails}] -> AppDetails
+ end
end
end;
app_details(#app_info_t{app_details=AppDetails}) ->
diff --git a/src/rebar_otp_app.erl b/src/rebar_otp_app.erl
index ed573f2..1bc33b9 100644
--- a/src/rebar_otp_app.erl
+++ b/src/rebar_otp_app.erl
@@ -117,8 +117,11 @@ preprocess(State, AppInfo, AppSrcFile) ->
%% without a 'registered' value.
A3 = ensure_registered(A2),
+ %% some tools complain if a description is not present.
+ A4 = ensure_description(A3),
+
%% Build the final spec as a string
- Spec = io_lib:format("~p.\n", [{application, AppName, A3}]),
+ Spec = io_lib:format("~p.\n", [{application, AppName, A4}]),
%% Setup file .app filename and write new contents
EbinDir = rebar_app_info:ebin_dir(AppInfo),
@@ -195,6 +198,15 @@ ensure_registered(AppData) ->
AppData
end.
+ensure_description(AppData) ->
+ case lists:keyfind(description, 1, AppData) of
+ false ->
+ %% Required for releases to work.
+ [{description, ""} | AppData];
+ {description, _} ->
+ AppData
+ end.
+
%% In the case of *.app.src we want to give the user the ability to
%% dynamically script the application resource file (think dynamic version
%% string, etc.), in a way similar to what can be done with the rebar
diff --git a/test/rebar_pkg_alias_SUITE.erl b/test/rebar_pkg_alias_SUITE.erl
index 2b8ccd2..07656d0 100644
--- a/test/rebar_pkg_alias_SUITE.erl
+++ b/test/rebar_pkg_alias_SUITE.erl
@@ -166,6 +166,8 @@ mock_config(Name, Config) ->
{ChkFake, Etag} = create_lib(Name, Config, "fakelib"),
{ChkTop, _} = create_lib(Name, Config, "topdep"),
{ChkTrans, _} = create_lib(Name, Config, "transitive_app", "transitive"),
+ ct:pal("{~p, _}",[ChkTop]),
+ ct:pal("{~p, _}",[ChkTrans]),
Priv = ?config(priv_dir, Config),
TmpDir = filename:join([Priv, "tmp", atom_to_list(Name)]),
%% Add an alias for goodpkg -> fakelib by hand
@@ -173,6 +175,7 @@ mock_config(Name, Config) ->
CacheRoot = filename:join([Priv, "cache", atom_to_list(Name)]),
CacheDir = filename:join([CacheRoot, "hex", "com", "test", "packages"]),
rebar_test_utils:create_app(AppDir, "fakelib", "1.0.0", [kernel, stdlib]),
+ ct:pal("{~p, ~p}",[ChkFake, Etag]),
{ChkFake, Etag} = rebar_test_utils:package_app(AppDir, CacheDir, "goodpkg-1.0.0"),
Tid = ets:new(registry_table, [public]),