Compare commits
3 Commits
master
...
prepare-to
Author | SHA1 | Date |
---|---|---|
![]() |
f5b70457c8 | |
![]() |
67f7dfbc6e | |
![]() |
6b85b2413b |
|
@ -1 +1 @@
|
||||||
erlang 24.0.5-emqx-1
|
erlang 24.1.5-2
|
||||||
|
|
134
rebar.config.erl
134
rebar.config.erl
|
@ -66,7 +66,6 @@ snabbkaffe_overrides() ->
|
||||||
config(HasElixir) ->
|
config(HasElixir) ->
|
||||||
[ {cover_enabled, is_cover_enabled()}
|
[ {cover_enabled, is_cover_enabled()}
|
||||||
, {profiles, profiles()}
|
, {profiles, profiles()}
|
||||||
, {project_app_dirs, project_app_dirs()}
|
|
||||||
, {plugins, plugins(HasElixir)}
|
, {plugins, plugins(HasElixir)}
|
||||||
| [ {provider_hooks, [ {pre, [{compile, {mix, find_elixir_libs}}]}
|
| [ {provider_hooks, [ {pre, [{compile, {mix, find_elixir_libs}}]}
|
||||||
, {post, [{compile, {mix, consolidate_protocols}}]}
|
, {post, [{compile, {mix, consolidate_protocols}}]}
|
||||||
|
@ -80,8 +79,8 @@ is_cover_enabled() ->
|
||||||
_ -> false
|
_ -> false
|
||||||
end.
|
end.
|
||||||
|
|
||||||
is_enterprise() ->
|
is_enterprise(ce) -> false;
|
||||||
filelib:is_regular("EMQX_ENTERPRISE").
|
is_enterprise(ee) -> true.
|
||||||
|
|
||||||
is_quicer_supported() ->
|
is_quicer_supported() ->
|
||||||
not (false =/= os:getenv("BUILD_WITHOUT_QUIC") orelse
|
not (false =/= os:getenv("BUILD_WITHOUT_QUIC") orelse
|
||||||
|
@ -101,9 +100,9 @@ is_centos_6() ->
|
||||||
is_win32() ->
|
is_win32() ->
|
||||||
win32 =:= element(1, os:type()).
|
win32 =:= element(1, os:type()).
|
||||||
|
|
||||||
project_app_dirs() ->
|
project_app_dirs(Edition) ->
|
||||||
["apps/*"] ++
|
["apps/*"] ++
|
||||||
case is_enterprise() of
|
case is_enterprise(Edition) of
|
||||||
true -> ["lib-ee/*"];
|
true -> ["lib-ee/*"];
|
||||||
false -> []
|
false -> []
|
||||||
end.
|
end.
|
||||||
|
@ -131,74 +130,81 @@ test_deps() ->
|
||||||
, {proper, "1.4.0"}
|
, {proper, "1.4.0"}
|
||||||
].
|
].
|
||||||
|
|
||||||
common_compile_opts() ->
|
common_compile_opts(Edition) ->
|
||||||
[ debug_info % alwyas include debug_info
|
[ debug_info % alwyas include debug_info
|
||||||
, {compile_info, [{emqx_vsn, get_vsn()}]}
|
, {compile_info, [{emqx_vsn, get_vsn()}]}
|
||||||
] ++
|
] ++
|
||||||
[{d, 'EMQX_ENTERPRISE'} || is_enterprise()] ++
|
[{d, 'EMQX_ENTERPRISE'} || is_enterprise(Edition)] ++
|
||||||
[{d, 'EMQX_BENCHMARK'} || os:getenv("EMQX_BENCHMARK") =:= "1" ].
|
[{d, 'EMQX_BENCHMARK'} || os:getenv("EMQX_BENCHMARK") =:= "1" ].
|
||||||
|
|
||||||
prod_compile_opts() ->
|
prod_compile_opts(Edition) ->
|
||||||
[ compressed
|
[ compressed
|
||||||
, deterministic
|
, deterministic
|
||||||
, warnings_as_errors
|
, warnings_as_errors
|
||||||
| common_compile_opts()
|
| common_compile_opts(Edition)
|
||||||
].
|
].
|
||||||
|
|
||||||
prod_overrides() ->
|
prod_overrides() ->
|
||||||
[{add, [ {erl_opts, [deterministic]}]}].
|
[{add, [ {erl_opts, [deterministic]}]}].
|
||||||
|
|
||||||
profiles() ->
|
profiles() ->
|
||||||
CommonCompileOpts = lists:keydelete('EMQX_EXT_SCHEMAS', 2, common_compile_opts()),
|
|
||||||
Vsn = get_vsn(),
|
Vsn = get_vsn(),
|
||||||
[ {'emqx', [ {erl_opts, prod_compile_opts()}
|
ce_profiles(Vsn) ++ ee_profiles(Vsn).
|
||||||
, {relx, relx(Vsn, cloud, bin)}
|
|
||||||
|
ce_profiles(Vsn) ->
|
||||||
|
[ {'emqx', [ {erl_opts, prod_compile_opts(ce)}
|
||||||
|
, {relx, relx(Vsn, cloud, bin, ce)}
|
||||||
, {overrides, prod_overrides()}
|
, {overrides, prod_overrides()}
|
||||||
|
, {project_app_dirs, project_app_dirs(ce)}
|
||||||
]}
|
]}
|
||||||
, {'emqx-pkg', [ {erl_opts, prod_compile_opts()}
|
, {'emqx-pkg', [ {erl_opts, prod_compile_opts(ce)}
|
||||||
, {relx, relx(Vsn, cloud, pkg)}
|
, {relx, relx(Vsn, cloud, pkg, ce)}
|
||||||
, {overrides, prod_overrides()}
|
, {overrides, prod_overrides()}
|
||||||
|
, {project_app_dirs, project_app_dirs(ce)}
|
||||||
]}
|
]}
|
||||||
, {'emqx-edge', [ {erl_opts, prod_compile_opts()}
|
, {'emqx-edge', [ {erl_opts, prod_compile_opts(ce)}
|
||||||
, {relx, relx(Vsn, edge, bin)}
|
, {relx, relx(Vsn, edge, bin, ce)}
|
||||||
, {overrides, prod_overrides()}
|
, {overrides, prod_overrides()}
|
||||||
|
, {project_app_dirs, project_app_dirs(ce)}
|
||||||
]}
|
]}
|
||||||
, {'emqx-edge-pkg', [ {erl_opts, prod_compile_opts()}
|
, {'emqx-edge-pkg', [ {erl_opts, prod_compile_opts(ce)}
|
||||||
, {relx, relx(Vsn, edge, pkg)}
|
, {relx, relx(Vsn, edge, pkg, ce)}
|
||||||
, {overrides, prod_overrides()}
|
, {overrides, prod_overrides()}
|
||||||
|
, {project_app_dirs, project_app_dirs(ce)}
|
||||||
]}
|
]}
|
||||||
, {check, [ {erl_opts, CommonCompileOpts}
|
, {check, [ {erl_opts, common_compile_opts(ce)}
|
||||||
|
, {project_app_dirs, project_app_dirs(ce)}
|
||||||
]}
|
]}
|
||||||
, {test, [ {deps, test_deps()}
|
, {test, [ {deps, test_deps()}
|
||||||
, {erl_opts, CommonCompileOpts ++ erl_opts_i() }
|
, {erl_opts, common_compile_opts(ce) ++ erl_opts_i(ce) }
|
||||||
, {extra_src_dirs, [{"test", [{recursive,true}]}]}
|
, {extra_src_dirs, [{"test", [{recursive, true}]}]}
|
||||||
|
, {project_app_dirs, project_app_dirs(ce)}
|
||||||
]}
|
]}
|
||||||
] ++ ee_profiles(Vsn).
|
].
|
||||||
|
|
||||||
%% RelType: cloud (full size) | edge (slim size)
|
%% RelType: cloud (full size) | edge (slim size)
|
||||||
%% PkgType: bin | pkg
|
%% PkgType: bin | pkg
|
||||||
relx(Vsn, RelType, PkgType) ->
|
relx(Vsn, RelType, PkgType, Edition) ->
|
||||||
IsEnterprise = is_enterprise(),
|
|
||||||
[ {include_src,false}
|
[ {include_src,false}
|
||||||
, {include_erts, true}
|
, {include_erts, true}
|
||||||
, {extended_start_script,false}
|
, {extended_start_script,false}
|
||||||
, {generate_start_script,false}
|
, {generate_start_script,false}
|
||||||
, {sys_config,false}
|
, {sys_config,false}
|
||||||
, {vm_args,false}
|
, {vm_args,false}
|
||||||
, {release, {emqx, Vsn}, relx_apps(RelType)}
|
, {release, {emqx, Vsn}, relx_apps(RelType, Edition)}
|
||||||
, {overlay, relx_overlay(RelType)}
|
, {overlay, relx_overlay(RelType, Edition)}
|
||||||
, {overlay_vars, [ {built_on_arch, rebar_utils:get_arch()}
|
, {overlay_vars, [ {built_on_arch, rebar_utils:get_arch()}
|
||||||
, {emqx_description, emqx_description(RelType, IsEnterprise)}
|
, {emqx_description, emqx_description(RelType, Edition)}
|
||||||
| overlay_vars(RelType, PkgType, IsEnterprise)]}
|
| overlay_vars(RelType, PkgType, Edition)]}
|
||||||
].
|
].
|
||||||
|
|
||||||
emqx_description(cloud, true) -> "EMQ X Enterprise";
|
emqx_description(cloud, ee) -> "EMQ X Enterprise";
|
||||||
emqx_description(cloud, false) -> "EMQ X Broker";
|
emqx_description(cloud, ce) -> "EMQ X Broker";
|
||||||
emqx_description(edge, _) -> "EMQ X Edge".
|
emqx_description(edge, ce) -> "EMQ X Edge".
|
||||||
|
|
||||||
overlay_vars(_RelType, PkgType, true) ->
|
overlay_vars(_RelType, PkgType, ee) ->
|
||||||
ee_overlay_vars(PkgType);
|
ee_overlay_vars(PkgType);
|
||||||
overlay_vars(RelType, PkgType, false) ->
|
overlay_vars(RelType, PkgType, ce) ->
|
||||||
overlay_vars_rel(RelType) ++ overlay_vars_pkg(PkgType).
|
overlay_vars_rel(RelType) ++ overlay_vars_pkg(PkgType).
|
||||||
|
|
||||||
%% vars per release type, cloud or edge
|
%% vars per release type, cloud or edge
|
||||||
|
@ -243,7 +249,7 @@ overlay_vars_pkg(pkg) ->
|
||||||
, {runner_user, "emqx"}
|
, {runner_user, "emqx"}
|
||||||
].
|
].
|
||||||
|
|
||||||
relx_apps(ReleaseType) ->
|
relx_apps(ReleaseType, Edition) ->
|
||||||
[ kernel
|
[ kernel
|
||||||
, sasl
|
, sasl
|
||||||
, crypto
|
, crypto
|
||||||
|
@ -283,13 +289,13 @@ relx_apps(ReleaseType) ->
|
||||||
, emqx_limiter
|
, emqx_limiter
|
||||||
]
|
]
|
||||||
++ [quicer || is_quicer_supported()]
|
++ [quicer || is_quicer_supported()]
|
||||||
++ [emqx_license || is_enterprise()]
|
++ [emqx_license || is_enterprise(Edition)]
|
||||||
++ [bcrypt || provide_bcrypt_release(ReleaseType)]
|
++ [bcrypt || provide_bcrypt_release(ReleaseType)]
|
||||||
++ relx_apps_per_rel(ReleaseType)
|
++ relx_apps_per_rel(ReleaseType)
|
||||||
%% NOTE: applications below are only loaded after node start/restart
|
%% NOTE: applications below are only loaded after node start/restart
|
||||||
%% TODO: Add loaded/unloaded state to plugin apps
|
%% TODO: Add loaded/unloaded state to plugin apps
|
||||||
%% then we can always start plugin apps
|
%% then we can always start plugin apps
|
||||||
++ [{N, load} || N <- relx_plugin_apps(ReleaseType)].
|
++ [{N, load} || N <- relx_plugin_apps(ReleaseType, Edition)].
|
||||||
|
|
||||||
relx_apps_per_rel(cloud) ->
|
relx_apps_per_rel(cloud) ->
|
||||||
[ xmerl
|
[ xmerl
|
||||||
|
@ -305,9 +311,9 @@ is_app(Name) ->
|
||||||
_ -> false
|
_ -> false
|
||||||
end.
|
end.
|
||||||
|
|
||||||
relx_plugin_apps(ReleaseType) ->
|
relx_plugin_apps(ReleaseType, Edition) ->
|
||||||
relx_plugin_apps_per_rel(ReleaseType)
|
relx_plugin_apps_per_rel(ReleaseType)
|
||||||
++ relx_plugin_apps_enterprise(is_enterprise())
|
++ relx_plugin_apps_enterprise(Edition)
|
||||||
++ relx_plugin_apps_extra().
|
++ relx_plugin_apps_extra().
|
||||||
|
|
||||||
relx_plugin_apps_per_rel(cloud) ->
|
relx_plugin_apps_per_rel(cloud) ->
|
||||||
|
@ -315,16 +321,16 @@ relx_plugin_apps_per_rel(cloud) ->
|
||||||
relx_plugin_apps_per_rel(edge) ->
|
relx_plugin_apps_per_rel(edge) ->
|
||||||
[].
|
[].
|
||||||
|
|
||||||
relx_plugin_apps_enterprise(true) ->
|
relx_plugin_apps_enterprise(ee) ->
|
||||||
[list_to_atom(A) || A <- filelib:wildcard("*", "lib-ee"),
|
[list_to_atom(A) || A <- filelib:wildcard("*", "lib-ee"),
|
||||||
filelib:is_dir(filename:join(["lib-ee", A]))];
|
filelib:is_dir(filename:join(["lib-ee", A]))];
|
||||||
relx_plugin_apps_enterprise(false) -> [].
|
relx_plugin_apps_enterprise(ce) -> [].
|
||||||
|
|
||||||
relx_plugin_apps_extra() ->
|
relx_plugin_apps_extra() ->
|
||||||
{_HasElixir, ExtraDeps} = extra_deps(),
|
{_HasElixir, ExtraDeps} = extra_deps(),
|
||||||
[Plugin || {Plugin, _} <- ExtraDeps].
|
[Plugin || {Plugin, _} <- ExtraDeps].
|
||||||
|
|
||||||
relx_overlay(ReleaseType) ->
|
relx_overlay(ReleaseType, Edition) ->
|
||||||
[ {mkdir, "log/"}
|
[ {mkdir, "log/"}
|
||||||
, {mkdir, "data/"}
|
, {mkdir, "data/"}
|
||||||
, {mkdir, "plugins"}
|
, {mkdir, "plugins"}
|
||||||
|
@ -347,12 +353,9 @@ relx_overlay(ReleaseType) ->
|
||||||
, {template, "bin/emqx_ctl.cmd", "bin/emqx_ctl.cmd"}
|
, {template, "bin/emqx_ctl.cmd", "bin/emqx_ctl.cmd"}
|
||||||
, {copy, "bin/nodetool", "bin/nodetool"}
|
, {copy, "bin/nodetool", "bin/nodetool"}
|
||||||
, {copy, "bin/nodetool", "bin/nodetool-{{release_version}}"}
|
, {copy, "bin/nodetool", "bin/nodetool-{{release_version}}"}
|
||||||
] ++ case is_enterprise() of
|
] ++ etc_overlay(ReleaseType, Edition).
|
||||||
true -> ee_etc_overlay(ReleaseType);
|
|
||||||
false -> etc_overlay(ReleaseType)
|
|
||||||
end.
|
|
||||||
|
|
||||||
etc_overlay(ReleaseType) ->
|
etc_overlay(ReleaseType, _Edition) ->
|
||||||
Templates = emqx_etc_overlay(ReleaseType),
|
Templates = emqx_etc_overlay(ReleaseType),
|
||||||
[ {mkdir, "etc/"}
|
[ {mkdir, "etc/"}
|
||||||
, {copy, "{{base_dir}}/lib/emqx/etc/certs","etc/"}
|
, {copy, "{{base_dir}}/lib/emqx/etc/certs","etc/"}
|
||||||
|
@ -408,10 +411,10 @@ provide_bcrypt_dep() ->
|
||||||
provide_bcrypt_release(ReleaseType) ->
|
provide_bcrypt_release(ReleaseType) ->
|
||||||
provide_bcrypt_dep() andalso ReleaseType =:= cloud.
|
provide_bcrypt_dep() andalso ReleaseType =:= cloud.
|
||||||
|
|
||||||
erl_opts_i() ->
|
erl_opts_i(Edition) ->
|
||||||
[{i, "apps"}] ++
|
[{i, "apps"}] ++
|
||||||
[{i, Dir} || Dir <- filelib:wildcard(filename:join(["apps", "*", "include"]))] ++
|
[{i, Dir} || Dir <- filelib:wildcard(filename:join(["apps", "*", "include"]))] ++
|
||||||
case is_enterprise() of
|
case is_enterprise(Edition) of
|
||||||
true ->
|
true ->
|
||||||
[{i, Dir} || Dir <- filelib:wildcard(filename:join(["lib-ee", "*", "include"]))];
|
[{i, Dir} || Dir <- filelib:wildcard(filename:join(["lib-ee", "*", "include"]))];
|
||||||
false -> []
|
false -> []
|
||||||
|
@ -472,6 +475,35 @@ list_dir(Dir) ->
|
||||||
|
|
||||||
%% ==== Enterprise supports below ==================================================================
|
%% ==== Enterprise supports below ==================================================================
|
||||||
|
|
||||||
ee_profiles(_Vsn) -> [].
|
ee_profiles(Vsn) ->
|
||||||
ee_etc_overlay(_) -> [].
|
[ {'emqx-ee', [ {erl_opts, prod_compile_opts(ee)}
|
||||||
ee_overlay_vars(_PkgType) -> [].
|
, {relx, relx(Vsn, cloud, bin, ee)}
|
||||||
|
, {overrides, prod_overrides()}
|
||||||
|
, {project_app_dirs, project_app_dirs(ee)}
|
||||||
|
]}
|
||||||
|
, {'emqx-ee-pkg', [ {erl_opts, prod_compile_opts(ee)}
|
||||||
|
, {relx, relx(Vsn, cloud, pkg, ee)}
|
||||||
|
, {overrides, prod_overrides()}
|
||||||
|
, {project_app_dirs, project_app_dirs(ee)}
|
||||||
|
]}
|
||||||
|
, {'check-ee', [ {erl_opts, common_compile_opts(ee)}
|
||||||
|
, {project_app_dirs, project_app_dirs(ee)}
|
||||||
|
]}
|
||||||
|
, {'test-ee', [ {deps, test_deps()}
|
||||||
|
, {erl_opts, common_compile_opts(ee) ++ erl_opts_i(ee) }
|
||||||
|
, {extra_src_dirs, [{"test", [{recursive, true}]}]}
|
||||||
|
, {project_app_dirs, project_app_dirs(ee)}
|
||||||
|
]}
|
||||||
|
].
|
||||||
|
|
||||||
|
ee_overlay_vars(PkgType) ->
|
||||||
|
Common = [],
|
||||||
|
Common ++ ee_overlay_vars_pkg(PkgType).
|
||||||
|
|
||||||
|
%% vars per packaging type, bin(zip/tar.gz/docker) or pkg(rpm/deb)
|
||||||
|
ee_overlay_vars_pkg(bin) ->
|
||||||
|
[
|
||||||
|
];
|
||||||
|
ee_overlay_vars_pkg(pkg) ->
|
||||||
|
[
|
||||||
|
].
|
||||||
|
|
Loading…
Reference in New Issue