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]),
[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]),
{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)),
?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]),