emqx/mix.exs

179 lines
6.3 KiB
Elixir

defmodule EMQXUmbrella.MixProject do
use Mix.Project
Code.load_file("./mix_release.exs")
def project do
[
apps_path: "apps",
# app: :emqx_mix,
version: pkg_vsn(),
# start_permanent: Mix.env() == :prod,
start_permanent: false,
deps: deps(),
releases: releases()
]
end
def application() do
[
mod: {:emqx_machine_app, []},
# extra_applications: [:mnesia, :runtime_tools],
extra_applications: []
]
end
defp elixirc_paths(_), do: ["apps/emqx"]
defp deps do
[
{:jiffy, github: "emqx/jiffy", tag: "1.0.5", override: true},
{:jsx, "~> 3.1", override: true},
{:gun, github: "emqx/gun", tag: "1.3.4", override: true},
{:cuttlefish,
github: "emqx/cuttlefish",
manager: :rebar3,
system_env: [{"CUTTLEFISH_ESCRIPT", "true"}],
override: true},
{:getopt, github: "emqx/getopt", tag: "v1.0.2", override: true},
{:cowboy, github: "emqx/cowboy", tag: "2.8.2", override: true},
{:cowlib, "~> 2.8", override: true},
{:ranch, "~> 2.0", override: true},
{:poolboy, github: "emqx/poolboy", tag: "1.5.2", override: true},
{:esockd, github: "emqx/esockd", tag: "5.8.0", override: true},
{:gproc, "~> 0.9", override: true},
{:eetcd, "~> 0.3", override: true},
{:grpc, github: "emqx/grpc-erl", tag: "0.6.2", override: true},
{:pbkdf2, github: "emqx/erlang-pbkdf2", tag: "2.0.4", override: true},
{:typerefl, github: "k32/typerefl", tag: "0.8.4", manager: :rebar3, override: true},
{:gen_rpc, github: "emqx/gen_rpc", tag: "2.5.1", override: true},
{:gen_coap, github: "emqx/gen_coap", tag: "v0.3.2", override: true},
{:snabbkaffe, github: "kafka4beam/snabbkaffe", tag: "0.14.0", override: true},
{:emqx_http_lib, github: "emqx/emqx_http_lib", tag: "0.4.0", override: true},
####
{:quicer, github: "emqx/quic", tag: "0.0.9", override: true},
{:ecpool, github: "emqx/ecpool", tag: "0.5.1"},
{:ehttpc, github: "emqx/ehttpc", tag: "0.1.12"},
{:hocon, github: "emqx/hocon", tag: "0.22.0", override: true, runtime: false},
{:mria, github: "emqx/mria", tag: "0.1.4", override: true},
{:minirest, github: "emqx/minirest", tag: "1.2.7"},
{:rulesql, github: "emqx/rulesql", tag: "0.1.4"},
{:emqtt, github: "emqx/emqtt", tag: "1.4.3"},
{:esasl, github: "emqx/esasl", tag: "0.2.0"},
####
# {:emqx, path: "apps/emqx", in_umbrella: true},
# {:emqx_authz, path: "apps/emqx_authz", in_umbrella: true},
# {:emqx_conf, path: "apps/emqx_conf", in_umbrella: true},
# {:emqx_connector, path: "apps/emqx_connector", in_umbrella: true},
# {:emqx_resource, path: "apps/emqx_resource", in_umbrella: true, complile: :mix},
# {:emqx_authn, path: "apps/emqx_authn", in_umbrella: true},
# {:emqx_plugin_libs, path: "apps/emqx_plugin_libs", in_umbrella: true},
# {:emqx_bridge, path: "apps/emqx_bridge", in_umbrella: true},
# {:emqx_retainer, path: "apps/emqx_retainer", in_umbrella: true},
# {:emqx_statsd, path: "apps/emqx_statsd", in_umbrella: true},
# {:emqx_auto_subscribe, path: "apps/emqx_auto_subscribe", in_umbrella: true},
# {:emqx_machine, path: "apps/emqx_machine", in_umbrella: true},
# {:emqx_modules, path: "apps/emqx_modules", in_umbrella: true},
# {:emqx_dashboard, path: "apps/emqx_dashboard", in_umbrella: true},
# {:emqx_gateway, path: "apps/emqx_gateway", in_umbrella: true},
# {:emqx_prometheus, path: "apps/emqx_prometheus", in_umbrella: true},
# {:emqx_rule_engine, path: "apps/emqx_rule_engine", in_umbrella: true},
# {:emqx_exhook, path: "apps/emqx_exhook", in_umbrella: true},
# {:emqx_psk, path: "apps/emqx_psk", in_umbrella: true},
# {:emqx_limiter, path: "apps/emqx_limiter", in_umbrella: true},
# # undef minirest error without this one...
# {:emqx_management, path: "apps/emqx_management", in_umbrella: true},
] ++ ((enable_bcrypt() && [{:bcrypt, github: "emqx/erlang-bcrypt", tag: "0.6.0"}]) || [])
end
defp releases do
[
# emqx: fn ->
# [
# applications: EmqxReleaseHelper.applications(),
# steps: [:assemble, &EmqxReleaseHelper.run/1]
# ]
# end
emqx: [
applications: [
logger: :permanent,
# lc: :load,
esasl: :load,
crypto: :permanent,
public_key: :permanent,
asn1: :permanent,
syntax_tools: :permanent,
ssl: :permanent,
os_mon: :permanent,
inets: :permanent,
compiler: :permanent,
runtime_tools: :permanent,
# emqx_conf: :permanent,
# hocon: :load,
emqx: :load,
emqx_conf: :load, # as per rebar.config.erl
emqx_machine: :permanent,
mria: :load,
mnesia: :load,
ekka: :load,
emqx_plugin_libs: :load,
emqx_http_lib: :permanent,
emqx_resource: :permanent,
emqx_connector: :permanent,
emqx_authn: :permanent,
emqx_authz: :permanent,
emqx_auto_subscribe: :permanent,
emqx_gateway: :permanent,
emqx_exhook: :permanent,
emqx_bridge: :permanent,
emqx_rule_engine: :permanent,
emqx_modules: :permanent,
emqx_management: :permanent,
emqx_dashboard: :permanent,
emqx_statsd: :permanent,
emqx_retainer: :permanent,
# emqx_retainer: :none,
emqx_prometheus: :permanent,
emqx_psk: :permanent,
# emqx_psk: :none,
emqx_limiter: :permanent,
# emqx_limiter: :none,
observer: :load,
# emqx_mix: :none,
],
]
]
end
def enable_bcrypt do
not match?({:win_32, _}, :os.type())
end
def project_path do
Path.expand("..", __ENV__.file)
end
def pkg_vsn do
project_path()
|> Path.join("pkg-vsn.sh")
|> System.cmd([])
|> elem(0)
|> String.trim()
|> String.split("-")
|> Enum.reverse()
|> tl()
|> Enum.reverse()
|> fix_vsn()
|> Enum.join("-")
end
# FIXME: remove hack
defp fix_vsn([vsn | extras]) do
if Version.parse(vsn) == :error do
[vsn <> ".0" | extras]
else
[vsn | extras]
end
end
end