%%%------------------------------------------------------------------- %%% @author Evgeniy Khramtsov %%% @copyright (C) 2013, Evgeniy Khramtsov %%% @doc %%% %%% @end %%% Created : 8 May 2013 by Evgeniy Khramtsov %%%------------------------------------------------------------------- Vars = case file:consult(filename:join(["..", "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, DepRequiredApps = [cache_tab, p1_tls, p1_stringprep, p1_xml, esip, p1_stun, p1_yaml, p1_utils, jiffy, oauth2, xmlrpc], DepConfiguredApp0 = lists:flatmap( fun({mysql, true}) -> [p1_mysql]; ({pgsql, true}) -> [p1_pgsql]; ({sqlite, true}) -> [sqlite3]; ({pam, true}) -> [p1_pam]; ({zlib, true}) -> [p1_zlib]; ({riak, true}) -> [riakc, riak_pb, protobuffs, hamcrest, meck]; ({elixir, true}) -> [elixir, rebar_elixir_plugin]; ({iconv, true}) -> [p1_iconv]; ({tools, true}) -> [meck]; ({redis, true}) -> [eredis]; ({lager, true}) -> [lager, goldrush]; ({lager, false}) -> [p1_logger]; (_) -> [] end, Vars), DepConfiguredApps = lists:usort(fun(A, B) -> A >= B end, DepConfiguredApp0), DepApps = DepRequiredApps ++ DepConfiguredApps, 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_archive_filters, [".*"]}, %% Do not archive built libs {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, ".."}]}] ++ 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, "var/log/ejabberd"}, {mkdir, "var/lock"}, {mkdir, "var/lib/ejabberd"}, {mkdir, "etc/ejabberd"}, {mkdir, "doc"}, {template, "files/erl", "\{\{erts_vsn\}\}/bin/erl"}, {template, "../ejabberdctl.template", "bin/ejabberdctl"}, {copy, "../ejabberdctl.cfg.example", "etc/ejabberd/ejabberdctl.cfg"}, {copy, "../ejabberd.yml.example", "etc/ejabberd/ejabberd.yml"}, {copy, "../inetrc", "etc/ejabberd/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: