diff options
author | Michael Truog <[email protected]> | 2018-12-19 18:31:52 -0800 |
---|---|---|
committer | Michael Truog <[email protected]> | 2019-01-19 13:50:01 -0800 |
commit | 8029c3653d3f569e146811af85a643559415c76f (patch) | |
tree | 942405f03014630f776578207ab14ea6b696ae0b /lib/reltool/src/reltool_server.erl | |
parent | a11ddd5862fa06a3242e548fbd232a4c294ca7a8 (diff) | |
download | otp-8029c3653d3f569e146811af85a643559415c76f.tar.gz otp-8029c3653d3f569e146811af85a643559415c76f.tar.bz2 otp-8029c3653d3f569e146811af85a643559415c76f.zip |
reltool: Add load_dot_erlang rel option
This adds a rel tuple to the reltool release specific configuration
format as {rel, Name, Vsn, RelApps, Opts} to support the use of
{rel, Name, Vsn, RelApps, [{load_dot_erlang, false}]} for preventing
the insertion of {apply,{c,erlangrc,[]}} into the release script file
and the release boot file.
This change makes it possible to prevent releases generated with
reltool from attempting to load a ${HOME}/.erlang file which is
desirable for production deployment of Erlang, to have greater control
of what BEAM evaluates. The ${HOME}/.erlang file lacks visibility and
its location on the filesystem separate from where the release lives
means it can be misused in a way that lacks visibility.
Diffstat (limited to 'lib/reltool/src/reltool_server.erl')
-rw-r--r-- | lib/reltool/src/reltool_server.erl | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/reltool/src/reltool_server.erl b/lib/reltool/src/reltool_server.erl index 47aba77835..2de8000fd8 100644 --- a/lib/reltool/src/reltool_server.erl +++ b/lib/reltool/src/reltool_server.erl @@ -1483,6 +1483,18 @@ decode(#sys{rels = Rels} = Sys, [{rel, Name, Vsn, RelApps} | SysKeyVals]) Rel = #rel{name = Name, vsn = Vsn, rel_apps = []}, Rel2 = decode(Rel, RelApps), decode(Sys#sys{rels = [Rel2 | Rels]}, SysKeyVals); +decode(#sys{rels = Rels} = Sys, [{rel, Name, Vsn, RelApps, Opts} | SysKeyVals]) + when is_list(Name), is_list(Vsn), is_list(RelApps), is_list(Opts) -> + Rel1 = lists:foldl(fun(Opt, Rel0) -> + case Opt of + {load_dot_erlang, Value} when is_boolean(Value) -> + Rel0#rel{load_dot_erlang = Value}; + _ -> + reltool_utils:throw_error("Illegal rel option: ~tp", [Opt]) + end + end, #rel{name = Name, vsn = Vsn, rel_apps = []}, Opts), + Rel2 = decode(Rel1, RelApps), + decode(Sys#sys{rels = [Rel2 | Rels]}, SysKeyVals); decode(#sys{} = Sys, [{Key, Val} | KeyVals]) -> Sys3 = case Key of |