mirror of
https://github.com/processone/ejabberd.git
synced 2024-12-18 17:24:31 +01:00
121 lines
4.1 KiB
Erlang
121 lines
4.1 KiB
Erlang
%%%-------------------------------------------------------------------
|
|
%%% @author Evgeniy Khramtsov <ekhramtsov@process-one.net>
|
|
%%% @copyright (C) 2013-2024, Evgeniy Khramtsov
|
|
%%% @doc
|
|
%%%
|
|
%%% @end
|
|
%%% Created : 8 May 2013 by Evgeniy Khramtsov <ekhramtsov@process-one.net>
|
|
%%%-------------------------------------------------------------------
|
|
|
|
TopDir = filename:join(filename:dirname(SCRIPT), ".."),
|
|
|
|
GetDeps = fun(Config, GetDepsFun) ->
|
|
case catch rebar_config:consult_file(Config) of
|
|
{ok, Data} ->
|
|
case lists:keyfind(deps, 1, Data) of
|
|
{deps, Deps} ->
|
|
lists:map(fun({Dep, _, _}) ->
|
|
[Dep, GetDepsFun(filename:join([TopDir,
|
|
"deps",
|
|
Dep,
|
|
"rebar.config"]),
|
|
GetDepsFun)]
|
|
end, Deps);
|
|
_ ->
|
|
[]
|
|
end;
|
|
_ ->
|
|
[]
|
|
end
|
|
end,
|
|
|
|
Vars = case file:consult(filename:join([TopDir, "vars.config"])) of
|
|
{ok, Terms} ->
|
|
Terms;
|
|
_Err ->
|
|
[]
|
|
end,
|
|
|
|
RequiredOTPApps = [sasl, crypto, public_key, ssl,
|
|
mnesia, inets, compiler, asn1,
|
|
syntax_tools, os_mon, xmerl],
|
|
|
|
ConfiguredOTPApps = lists:flatmap(
|
|
fun({tools, true}) ->
|
|
[tools, runtime_tools];
|
|
({odbc, true}) ->
|
|
[odbc];
|
|
(_) ->
|
|
[]
|
|
end, Vars),
|
|
|
|
OTPApps = RequiredOTPApps ++ ConfiguredOTPApps,
|
|
|
|
DepApps = lists:usort(lists:flatten(GetDeps(filename:join(TopDir, "rebar.config"), GetDeps))),
|
|
|
|
SysVer = erlang:system_info(otp_release),
|
|
|
|
Sys = [{lib_dirs, []},
|
|
{erts, [{mod_cond, derived}, {app_file, strip}]},
|
|
{app_file, strip},
|
|
{rel, "ejabberd", proplists:get_value(vsn, Vars),
|
|
[
|
|
kernel,
|
|
stdlib,
|
|
ejabberd
|
|
] ++ OTPApps ++ DepApps},
|
|
{rel, "start_clean", "",
|
|
[
|
|
kernel,
|
|
stdlib
|
|
]},
|
|
{boot_rel, "ejabberd"},
|
|
{profile, embedded},
|
|
{incl_cond, exclude},
|
|
{excl_sys_filters, ["^bin/.*", "^erts.*/bin/(dialyzer|typer)",
|
|
"^erts.*/(doc|info|include|lib|man|src)"]},
|
|
{excl_app_filters, ["\.gitignore"]},
|
|
{app, stdlib, [{incl_cond, include}]},
|
|
{app, kernel, [{incl_cond, include}]},
|
|
{app, ejabberd, [{incl_cond, include}, {lib_dir, ".."}]}]
|
|
++ if SysVer < "26" ->
|
|
[{excl_archive_filters, [".*"]}]; %% Do not archive built libs
|
|
true ->
|
|
[]
|
|
end
|
|
++ lists:map(
|
|
fun(App) ->
|
|
{app, App, [{incl_cond, include},
|
|
{lib_dir, "../deps/" ++ atom_to_list(App)}]}
|
|
end, DepApps)
|
|
++ lists:map(
|
|
fun(App) ->
|
|
{app, App, [{incl_cond, include}]}
|
|
end, OTPApps).
|
|
|
|
Overlay = [
|
|
{mkdir, "logs"},
|
|
{mkdir, "database"},
|
|
{mkdir, "conf"},
|
|
{mkdir, "doc"},
|
|
{template, "files/erl", "\{\{erts_vsn\}\}/bin/erl"},
|
|
{template, "../ejabberdctl.template", "bin/ejabberdctl"},
|
|
{copy, "../ejabberdctl.cfg.example", "conf/ejabberdctl.cfg"},
|
|
{copy, "../ejabberd.yml.example", "conf/ejabberd.yml"},
|
|
{copy, "../inetrc", "conf/inetrc"},
|
|
{copy, "files/install_upgrade.escript", "bin/install_upgrade.escript"}
|
|
],
|
|
|
|
Config = [{sys, Sys},
|
|
{overlay_vars, "../vars.config"},
|
|
{target_dir, "ejabberd"},
|
|
{overlay, Overlay}],
|
|
|
|
%%io:format("ejabberd release:~n ~p~n", [Config]),
|
|
Config.
|
|
|
|
%% Local Variables:
|
|
%% mode: erlang
|
|
%% End:
|
|
%% vim: set filetype=erlang tabstop=8:
|