aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/rlx_prv_assembler.erl26
-rw-r--r--src/rlx_prv_overlay.erl1
2 files changed, 24 insertions, 3 deletions
diff --git a/src/rlx_prv_assembler.erl b/src/rlx_prv_assembler.erl
index 2088de6..a6bf5f8 100644
--- a/src/rlx_prv_assembler.erl
+++ b/src/rlx_prv_assembler.erl
@@ -401,9 +401,12 @@ write_bin_file(State, Release, OutputDir, RelDir) ->
extended_start_script_hooks,
[]),
State),
+ Extensions = rlx_state:get(State,
+ extended_start_script_extensions,
+ []),
extended_bin_file_contents(OsFamily, RelName, RelVsn,
rlx_release:erts(Release), ErlOpts,
- Hooks)
+ Hooks, Extensions)
end,
%% We generate the start script by default, unless the user
%% tells us not too
@@ -787,7 +790,7 @@ bin_file_contents(OsFamily, RelName, RelVsn, ErtsVsn, ErlOpts) ->
render(Template, [{rel_name, RelName}, {rel_vsn, RelVsn},
{erts_vsn, ErtsVsn}, {erl_opts, ErlOpts}]).
-extended_bin_file_contents(OsFamily, RelName, RelVsn, ErtsVsn, ErlOpts, Hooks) ->
+extended_bin_file_contents(OsFamily, RelName, RelVsn, ErtsVsn, ErlOpts, Hooks, Extensions) ->
Template = case OsFamily of
unix -> extended_bin;
win32 -> extended_bin_windows
@@ -802,6 +805,21 @@ extended_bin_file_contents(OsFamily, RelName, RelVsn, ErtsVsn, ErlOpts, Hooks) -
PostInstallUpgradeHooks = string:join(proplists:get_value(post_install_upgrade,
Hooks, []), " "),
StatusHook = string:join(proplists:get_value(status, Hooks, []), " "),
+ {ExtensionsList1, ExtensionDeclarations1} =
+ lists:foldl(fun({Name, Script},
+ {ExtensionsList0, ExtensionDeclarations0}) ->
+ ExtensionDeclaration = atom_to_list(Name) ++
+ "_extension=\"" ++
+ Script ++ "\"",
+ {ExtensionsList0 ++ [atom_to_list(Name)],
+ ExtensionDeclarations0 ++ [ExtensionDeclaration]}
+ end, {[], []}, Extensions),
+ % pipe separated string of extensions, to show on the start script usage
+ % (eg. foo|bar)
+ ExtensionsList = string:join(ExtensionsList1 ++ ["undefined"], "|"),
+ % command separated string of extension script declarations
+ % (eg. foo_extension="path/to/foo_script")
+ ExtensionDeclarations = string:join(ExtensionDeclarations1, ";"),
render(Template, [{rel_name, RelName}, {rel_vsn, RelVsn},
{erts_vsn, ErtsVsn}, {erl_opts, ErlOpts},
{pre_start_hooks, PreStartHooks},
@@ -810,7 +828,9 @@ extended_bin_file_contents(OsFamily, RelName, RelVsn, ErtsVsn, ErlOpts, Hooks) -
{post_stop_hooks, PostStopHooks},
{pre_install_upgrade_hooks, PreInstallUpgradeHooks},
{post_install_upgrade_hooks, PostInstallUpgradeHooks},
- {status_hook, StatusHook}]).
+ {status_hook, StatusHook},
+ {extensions, ExtensionsList},
+ {extension_declarations, ExtensionDeclarations}]).
erl_ini(OutputDir, ErtsVsn) ->
ErtsDirName = string:concat("erts-", ErtsVsn),
diff --git a/src/rlx_prv_overlay.erl b/src/rlx_prv_overlay.erl
index dc57326..a18699a 100644
--- a/src/rlx_prv_overlay.erl
+++ b/src/rlx_prv_overlay.erl
@@ -245,6 +245,7 @@ render_overlay_vars(_OverlayVars, [], Acc) ->
-spec generate_release_vars(rlx_release:t()) -> proplists:proplist().
generate_release_vars(Release) ->
[{erts_vsn, rlx_release:erts(Release)},
+ {erts_dir, code:root_dir()},
{release_erts_version, rlx_release:erts(Release)},
{release_name, rlx_release:name(Release)},
{rel_vsn, rlx_release:vsn(Release)},