Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/processone/ejabberd.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBadlop <badlop@process-one.net>2011-11-03 22:46:59 +0400
committerBadlop <badlop@process-one.net>2011-11-03 22:56:38 +0400
commit6575f899b6b93c1da4399478b2872187423d97bc (patch)
treeef5721b89a24cc1c6c1695525f33f74f29c3fd24
parent3cd9cd0e36f7a5217115abddc3eccef62f9ef8c5 (diff)
Support to update modules in R14B04 and higher
-rw-r--r--src/ejabberd_update.erl18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/ejabberd_update.erl b/src/ejabberd_update.erl
index fc3c3306a..f88af2aca 100644
--- a/src/ejabberd_update.erl
+++ b/src/ejabberd_update.erl
@@ -41,7 +41,7 @@ update() ->
case update_info() of
{ok, Dir, _UpdatedBeams, _Script, LowLevelScript, _Check} ->
Eval =
- release_handler_1:eval_script(
+ eval_script(
LowLevelScript, [],
[{ejabberd, "", filename:join(Dir, "..")}]),
?INFO_MSG("eval: ~p~n", [Eval]),
@@ -58,7 +58,7 @@ update(ModulesToUpdate) ->
[A || A <- UpdatedBeamsAll, B <- ModulesToUpdate, A == B],
{_, LowLevelScript, _} = build_script(Dir, UpdatedBeamsNow),
Eval =
- release_handler_1:eval_script(
+ eval_script(
LowLevelScript, [],
[{ejabberd, "", filename:join(Dir, "..")}]),
?INFO_MSG("eval: ~p~n", [Eval]),
@@ -67,6 +67,16 @@ update(ModulesToUpdate) ->
{error, Reason}
end.
+%% OTP R14B03 and older provided release_handler_1:eval_script/3
+%% But OTP R14B04 and newer provide release_handler_1:eval_script/5
+eval_script(Script, Apps, LibDirs) ->
+ case lists:member({eval_script, 5}, release_handler_1:module_info(exports)) of
+ true ->
+ release_handler_1:eval_script(Script, Apps, LibDirs, [], []);
+ false ->
+ release_handler_1:eval_script(Script, Apps, LibDirs)
+ end.
+
%% Get information about the modified modules
update_info() ->
Dir = filename:dirname(code:which(ejabberd)),
@@ -134,6 +144,10 @@ build_script(Dir, UpdatedBeams) ->
?DEBUG("script: ~p~n", [Script]),
?DEBUG("low level script: ~p~n", [LowLevelScript]),
?DEBUG("check: ~p~n", [Check]);
+ {ok, []} ->
+ ?DEBUG("script: ~p~n", [Script]),
+ ?DEBUG("low level script: ~p~n", [LowLevelScript]),
+ ?DEBUG("check: ~p~n", [Check]);
_ ->
?ERROR_MSG("script: ~p~n", [Script]),
?ERROR_MSG("low level script: ~p~n", [LowLevelScript]),