Skip to content

Commit

Permalink
Merge pull request #259 from tsloughter/debug_info
Browse files Browse the repository at this point in the history
add option to strip debug_info from beam files if not dev_mode
  • Loading branch information
jwilberding committed Nov 6, 2014
2 parents c603adf + 9b066cc commit 6383099
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 2 deletions.
2 changes: 2 additions & 0 deletions src/rlx_config.erl
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,8 @@ load_terms({add_providers, Providers0}, {ok, State0}) ->
end;
load_terms({skip_apps, SkipApps0}, {ok, State0}) ->
{ok, rlx_state:skip_apps(State0, SkipApps0)};
load_terms({debug_info, DebugInfo}, {ok, State0}) ->
{ok, rlx_state:debug_info(State0, DebugInfo)};
load_terms({overrides, Overrides0}, {ok, State0}) ->
{ok, rlx_state:overrides(State0, Overrides0)};
load_terms({dev_mode, DevMode}, {ok, State0}) ->
Expand Down
23 changes: 21 additions & 2 deletions src/rlx_prv_assembler.erl
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,23 @@ do(State) ->
ok ->
case rlx_release:realized(Release) of
true ->
copy_app_directories_to_output(State, Release, OutputDir);
case copy_app_directories_to_output(State, Release, OutputDir) of
{ok, State1} ->
case rlx_state:debug_info(State1) =:= strip
andalso rlx_state:dev_mode(State1) =:= false of
true ->
case beam_lib:strip_release(OutputDir) of
{ok, _} ->
{ok, State1};
{error, _, Reason} ->
?RLX_ERROR({strip_release, Reason})
end;
false ->
{ok, State1}
end;
E ->
E
end;
false ->
?RLX_ERROR({unresolved_release, RelName, RelVsn})
end;
Expand Down Expand Up @@ -95,7 +111,10 @@ format_error({release_script_generation_error, Module, Errors}, State) ->
format_error({unable_to_make_symlink, AppDir, TargetDir, Reason}, _) ->
io_lib:format("Unable to symlink directory ~s to ~s because \n~s~s",
[AppDir, TargetDir, rlx_util:indent(2),
file:format_error(Reason)]).
file:format_error(Reason)]);
format_error({strip_release, Reason}, _) ->
io_lib:format("Stripping debug info from release beam files failed becuase ~s",
[beam_lib:format_error(Reason)]).

%%%===================================================================
%%% Internal Functions
Expand Down
11 changes: 11 additions & 0 deletions src/rlx_state.erl
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@
overrides/2,
skip_apps/1,
skip_apps/2,
debug_info/1,
debug_info/2,
goals/1,
goals/2,
config_file/1,
Expand Down Expand Up @@ -102,6 +104,7 @@
sys_config :: file:filename() | undefined,
overrides=[] :: [{AppName::atom(), Directory::file:filename()}],
skip_apps=[] :: [AppName::atom()],
debug_info=keep :: keep | strip,
configured_releases :: releases(),
realized_releases :: releases(),
dev_mode=false :: boolean(),
Expand Down Expand Up @@ -183,6 +186,14 @@ skip_apps(#state_t{skip_apps=Apps}) ->
skip_apps(State, SkipApps) ->
State#state_t{skip_apps=SkipApps}.

-spec debug_info(t()) -> keep | strip.
debug_info(#state_t{debug_info=DebugInfo}) ->
DebugInfo.

-spec debug_info(t(), keep | strip) -> t().
debug_info(State, DebugInfo) ->
State#state_t{debug_info=DebugInfo}.

%% @doc get the current log state for the system
-spec log(t()) -> ec_cmd_log:t().
log(#state_t{log=LogState}) ->
Expand Down

0 comments on commit 6383099

Please sign in to comment.