ci(mix): refactor to avoid conflicts

This introduces a refactoring that will hopefully help avoid conflicts with ongoing work
to migrate our build / CI tooling to Mix.
This commit is contained in:
Thales Macedo Garitezi 2024-07-03 12:13:35 -03:00
parent 2c3209e258
commit afb65817c4
20 changed files with 256 additions and 128 deletions

View File

@ -28,7 +28,7 @@ defmodule EMQX.MixProject do
def application do def application do
[ [
## FIXME!!! go though emqx.app.src and add missing stuff... ## FIXME!!! go though emqx.app.src and add missing stuff...
extra_applications: [:public_key, :ssl, :os_mon, :logger, :mnesia] ++ UMP.extra_applications(), extra_applications: [:public_key, :ssl, :os_mon, :logger, :mnesia, :sasl] ++ UMP.extra_applications(),
mod: {:emqx_app, []} mod: {:emqx_app, []}
] ]
end end
@ -37,14 +37,19 @@ defmodule EMQX.MixProject do
## FIXME!!! go though emqx.app.src and add missing stuff... ## FIXME!!! go though emqx.app.src and add missing stuff...
[ [
{:emqx_utils, in_umbrella: true}, {:emqx_utils, in_umbrella: true},
{:emqx_ds_backends, in_umbrella: true}, # {:emqx_ds_backends, in_umbrella: true},
{:ekka, github: "emqx/ekka", tag: "0.19.3", override: true}, UMP.common_dep(:gproc),
{:esockd, github: "emqx/esockd", tag: "5.11.2"}, UMP.common_dep(:gen_rpc),
{:gproc, github: "emqx/gproc", tag: "0.9.0.1", override: true}, UMP.common_dep(:ekka),
{:hocon, github: "emqx/hocon", tag: "0.42.2", override: true}, UMP.common_dep(:esockd),
{:lc, github: "emqx/lc", tag: "0.3.2", override: true}, UMP.common_dep(:cowboy),
{:ranch, github: "emqx/ranch", tag: "1.8.1-emqx", override: true}, UMP.common_dep(:lc),
UMP.common_dep(:hocon),
UMP.common_dep(:ranch),
UMP.common_dep(:bcrypt),
UMP.common_dep(:pbkdf2),
UMP.common_dep(:emqx_http_lib),
] ++ UMP.quicer_dep() ] ++ UMP.quicer_dep()
end end

View File

@ -29,7 +29,7 @@ defmodule EMQXAuthHTTP.MixProject do
{:emqx_auth, in_umbrella: true}, {:emqx_auth, in_umbrella: true},
{:emqx_resource, in_umbrella: true}, {:emqx_resource, in_umbrella: true},
{:emqx_connector, in_umbrella: true}, {:emqx_connector, in_umbrella: true},
{:hocon, github: "emqx/hocon", tag: "0.42.2", override: true} UMP.common_dep(:hocon)
] ]
end end
end end

View File

@ -28,7 +28,7 @@ defmodule EMQXAuthJWT.MixProject do
{:emqx, in_umbrella: true}, {:emqx, in_umbrella: true},
{:emqx_auth, in_umbrella: true}, {:emqx_auth, in_umbrella: true},
{:emqx_resource, in_umbrella: true}, {:emqx_resource, in_umbrella: true},
{:jose, github: "potatosalad/erlang-jose", tag: "1.11.2"} UMP.common_dep(:jose),
] ]
end end
end end

View File

@ -24,6 +24,10 @@ defmodule EMQXAuthMnesia.MixProject do
end end
def deps() do def deps() do
[{:emqx, in_umbrella: true}, {:emqx_auth, in_umbrella: true}] [
{:emqx, in_umbrella: true},
{:emqx_auth, in_umbrella: true},
UMP.common_dep(:esasl),
]
end end
end end

View File

@ -27,7 +27,7 @@ defmodule EMQXBridgeHTTP.MixProject do
[ [
{:emqx, in_umbrella: true}, {:emqx, in_umbrella: true},
{:emqx_resource, in_umbrella: true}, {:emqx_resource, in_umbrella: true},
{:ehttpc, github: "emqx/ehttpc", tag: "0.4.13"} UMP.common_dep(:ehttpc),
] ]
end end
end end

View File

@ -27,7 +27,7 @@ defmodule EMQXBridgeMQTT.MixProject do
[ [
{:emqx, in_umbrella: true}, {:emqx, in_umbrella: true},
{:emqx_resource, in_umbrella: true}, {:emqx_resource, in_umbrella: true},
{:emqtt, github: "emqx/emqtt", tag: "1.10.1", system_env: UMP.maybe_no_quic_env()} UMP.common_dep(:emqtt),
] ]
end end
end end

View File

@ -33,11 +33,11 @@ defmodule EMQXConnector.MixProject do
[ [
{:emqx, in_umbrella: true}, {:emqx, in_umbrella: true},
{:emqx_resource, in_umbrella: true}, {:emqx_resource, in_umbrella: true},
{:jose, github: "potatosalad/erlang-jose", tag: "1.11.2"}, UMP.common_dep(:jose),
{:ecpool, github: "emqx/ecpool", tag: "0.5.7"}, UMP.common_dep(:ecpool),
{:eredis_cluster, github: "emqx/eredis_cluster", tag: "0.8.4"}, {:eredis_cluster, github: "emqx/eredis_cluster", tag: "0.8.4"},
{:ehttpc, github: "emqx/ehttpc", tag: "0.4.13"}, UMP.common_dep(:ehttpc),
{:emqtt, github: "emqx/emqtt", tag: "1.10.1", system_env: UMP.maybe_no_quic_env()} UMP.common_dep(:emqtt),
] ]
end end
end end

View File

@ -29,8 +29,8 @@ defmodule EMQXDurableStorage.MixProject do
def deps() do def deps() do
[ [
{:emqx_utils, in_umbrella: true}, {:emqx_utils, in_umbrella: true},
{:gproc, github: "emqx/gproc", tag: "0.9.0.1"}, UMP.common_dep(:rocksdb),
{:rocksdb, github: "emqx/erlang-rocksdb", tag: "1.8.0-emqx-5"}, UMP.common_dep(:gproc),
{:ra, "2.7.3"}, {:ra, "2.7.3"},
] ]
end end

View File

@ -23,9 +23,9 @@ defmodule EMQXEnterprise.MixProject do
def deps() do def deps() do
[ [
{:snabbkaffe, github: "kafka4beam/snabbkaffe", tag: "1.0.10"}, UMP.common_dep(:snabbkaffe),
{:typerefl, github: "ieQu1/typerefl", tag: "0.9.1"}, UMP.common_dep(:typerefl),
{:hocon, github: "emqx/hocon", tag: "0.42.2"} UMP.common_dep(:hocon),
] ]
end end
end end

View File

@ -38,7 +38,7 @@ defmodule EMQXExhook.MixProject do
[ [
{:emqx, in_umbrella: true}, {:emqx, in_umbrella: true},
{:emqx_utils, in_umbrella: true}, {:emqx_utils, in_umbrella: true},
{:grpc, github: "emqx/grpc-erl", tag: "0.6.12", override: true} UMP.common_dep(:grpc)
] ]
end end

View File

@ -37,7 +37,7 @@ defmodule EMQXGatewayExproto.MixProject do
{:emqx, in_umbrella: true}, {:emqx, in_umbrella: true},
{:emqx_utils, in_umbrella: true}, {:emqx_utils, in_umbrella: true},
{:emqx_gateway, in_umbrella: true}, {:emqx_gateway, in_umbrella: true},
{:grpc, github: "emqx/grpc-erl", tag: "0.6.12", override: true} UMP.common_dep(:grpc)
] ]
end end
end end

View File

@ -29,7 +29,7 @@ defmodule EMQXGCPDevice.MixProject do
[ [
{:emqx, in_umbrella: true}, {:emqx, in_umbrella: true},
{:emqx_auth, in_umbrella: true}, {:emqx_auth, in_umbrella: true},
{:jose, github: "potatosalad/erlang-jose", tag: "1.11.2"} UMP.common_dep(:jose),
] ]
end end

View File

@ -29,7 +29,7 @@ defmodule EMQXMachine.MixProject do
{:emqx_conf, in_umbrella: true, runtime: false}, {:emqx_conf, in_umbrella: true, runtime: false},
{:emqx_dashboard, in_umbrella: true, runtime: false}, {:emqx_dashboard, in_umbrella: true, runtime: false},
{:emqx_management, in_umbrella: true, runtime: false}, {:emqx_management, in_umbrella: true, runtime: false},
{:covertool, github: "zmstone/covertool", tag: "2.0.4.1"} UMP.common_dep(:covertool),
] ]
end end
end end

View File

@ -23,7 +23,7 @@ defmodule EMQXPostgresql.MixProject do
def deps() do def deps() do
[ [
{:epgsql, github: "emqx/epgsql", tag: "4.7.1.2"}, UMP.common_dep(:epgsql),
{:emqx_connector, in_umbrella: true, runtime: false}, {:emqx_connector, in_umbrella: true, runtime: false},
{:emqx_resource, in_umbrella: true} {:emqx_resource, in_umbrella: true}
] ]

View File

@ -26,10 +26,10 @@ defmodule EMQXResource.MixProject do
def deps() do def deps() do
[ [
{:emqx, in_umbrella: true}, {:emqx, in_umbrella: true},
{:ecpool, github: "emqx/ecpool", tag: "0.5.7"}, UMP.common_dep(:ecpool),
{:gproc, github: "emqx/gproc", tag: "0.9.0.1"}, UMP.common_dep(:gproc),
{:jsx, github: "talentdeficit/jsx", tag: "v3.1.0"}, UMP.common_dep(:jsx),
{:telemetry, "1.1.0"} UMP.common_dep(:telemetry),
] ]
end end
end end

View File

@ -29,12 +29,8 @@ defmodule EMQXRuleEngine.MixProject do
{:emqx_modules, in_umbrella: true}, {:emqx_modules, in_umbrella: true},
{:emqx_resource, in_umbrella: true}, {:emqx_resource, in_umbrella: true},
{:emqx_bridge, in_umbrella: true}, {:emqx_bridge, in_umbrella: true},
{:emqtt, UMP.common_dep(:rulesql),
github: "emqx/emqtt", tag: "1.10.1", override: true, system_env: maybe_no_quic_env()} UMP.common_dep(:emqtt),
] ]
end end
defp maybe_no_quic_env() do
UMP.maybe_no_quic_env()
end
end end

View File

@ -27,8 +27,8 @@ defmodule EMQXS3.MixProject do
def deps() do def deps() do
[ [
{:emqx, in_umbrella: true}, {:emqx, in_umbrella: true},
{:gproc, github: "emqx/gproc", tag: "0.9.0.1"}, UMP.common_dep(:gproc),
{:ehttpc, github: "emqx/ehttpc", tag: "0.4.13"}, UMP.common_dep(:ehttpc),
{:erlcloud, github: "emqx/erlcloud", tag: "3.7.0.3"}, {:erlcloud, github: "emqx/erlcloud", tag: "3.7.0.3"},
{:emqx_bridge_http, in_umbrella: true, runtime: false} {:emqx_bridge_http, in_umbrella: true, runtime: false}
] ]

View File

@ -28,7 +28,7 @@ defmodule EMQXSchemaRegistry.MixProject do
{:emqx_rule_engine, in_umbrella: true}, {:emqx_rule_engine, in_umbrella: true},
{:erlavro, github: "emqx/erlavro", tag: "2.10.0"}, {:erlavro, github: "emqx/erlavro", tag: "2.10.0"},
{:jesse, github: "emqx/jesse", tag: "1.8.0"}, {:jesse, github: "emqx/jesse", tag: "1.8.0"},
{:gpb, "4.19.9"} UMP.common_dep(:gpb),
] ]
end end
end end

View File

@ -26,9 +26,9 @@ defmodule EMQXUtils.MixProject do
def deps() do def deps() do
[ [
{:jiffy, github: "emqx/jiffy", tag: "1.0.6"}, UMP.common_dep(:jiffy),
{:emqx_http_lib, github: "emqx/emqx_http_lib", tag: "0.5.3"}, UMP.common_dep(:emqx_http_lib),
{:snabbkaffe, github: "kafka4beam/snabbkaffe", tag: "1.0.10", override: true}, UMP.common_dep(:snabbkaffe),
] ]
end end
end end

259
mix.exs
View File

@ -29,16 +29,32 @@ defmodule EMQXUmbrella.MixProject do
tarball along with the release. tarball along with the release.
""" """
# TODO: remove once we switch to the new mix build
def new_mix_build?() do
System.get_env("NEW_MIX_BUILD") == "1"
end
def project() do def project() do
profile_info = check_profile!() profile_info = check_profile!()
version = pkg_vsn() version = pkg_vsn()
if new_mix_build?() do
[ [
# TODO: these lines will be uncommented when we switch to using mix as the manager # TODO: these lines will be uncommented when we switch to using mix as the manager
# for all umbrella apps. # for all umbrella apps.
# apps_path: "apps", apps_path: "apps",
# apps: applications(profile_info.release_type, profile_info.edition_type) |> Keyword.keys(), apps:
applications(profile_info.release_type, profile_info.edition_type) |> Keyword.keys(),
erlc_options: erlc_options(profile_info, version),
version: version,
deps: deps(profile_info, version),
releases: releases(),
aliases: aliases()
]
else
# TODO: this check and clause will be removed when we switch to using mix as the
# manager for all umbrella apps.
[
app: :emqx_mix, app: :emqx_mix,
erlc_options: erlc_options(profile_info, version), erlc_options: erlc_options(profile_info, version),
version: version, version: version,
@ -47,88 +63,195 @@ defmodule EMQXUmbrella.MixProject do
aliases: aliases() aliases: aliases()
] ]
end end
end
defp deps(profile_info, version) do @doc """
Please try to add dependencies that used by a single umbrella application in the
application's own `mix.exs` file, if possible. If it's shared by more than one
application, or if the dependency requires an `override: true` option, add a new clause
to `common_dep/1` so that we centralize versions in this root `mix.exs` file as much as
possible.
Here, transitive dependencies from our app dependencies should be placed when there's a
need to override them. For example, since `jsone` is a dependency to `rocketmq` and to
`erlavro`, which are both dependencies and not umbrella apps, we need to add the
override here. Also, there are cases where adding `override: true` to the umbrella
application dependency simply won't satisfy mix. In such cases, it's fine to add it
here.
"""
def deps(profile_info, version) do
# we need several overrides here because dependencies specify # we need several overrides here because dependencies specify
# other exact versions, and not ranges. # other exact versions, and not ranges.
if new_mix_build?() do
new_deps()
else
old_deps(profile_info, version)
end
end
def new_deps() do
quicer_dep() ++
jq_dep() ++
extra_release_apps() ++
overridden_deps()
end
## TODO: this should be removed once we migrate the release build to mix ## TODO: this should be removed once we migrate the release build to mix
defp old_deps(profile_info, version) do
rebar3_umbrella_apps = emqx_apps(profile_info, version) ++ enterprise_deps(profile_info) rebar3_umbrella_apps = emqx_apps(profile_info, version) ++ enterprise_deps(profile_info)
common_deps() ++ common_deps() ++
extra_release_apps() ++
overridden_deps() ++
jq_dep() ++
quicer_dep() ++ rebar3_umbrella_apps
end
def overridden_deps() do
[ [
{:lc, github: "emqx/lc", tag: "0.3.2", override: true}, common_dep(:lc),
{:redbug, github: "emqx/redbug", tag: "2.0.10"}, common_dep(:covertool),
{:covertool, github: "zmstone/covertool", tag: "2.0.4.1", override: true}, common_dep(:typerefl),
{:typerefl, github: "ieQu1/typerefl", tag: "0.9.1", override: true}, common_dep(:ehttpc),
{:ehttpc, github: "emqx/ehttpc", tag: "0.4.14", override: true}, common_dep(:gproc),
{:gproc, github: "emqx/gproc", tag: "0.9.0.1", override: true}, common_dep(:jiffy),
{:jiffy, github: "emqx/jiffy", tag: "1.0.6", override: true}, common_dep(:cowboy),
{:cowboy, github: "emqx/cowboy", tag: "2.9.2", override: true}, common_dep(:esockd),
{:esockd, github: "emqx/esockd", tag: "5.11.2", override: true}, common_dep(:rocksdb),
{:rocksdb, github: "emqx/erlang-rocksdb", tag: "1.8.0-emqx-5", override: true}, common_dep(:ekka),
{:ekka, github: "emqx/ekka", tag: "0.19.5", override: true}, common_dep(:gen_rpc),
{:gen_rpc, github: "emqx/gen_rpc", tag: "3.3.1", override: true}, common_dep(:grpc),
{:grpc, github: "emqx/grpc-erl", tag: "0.6.12", override: true}, common_dep(:minirest),
{:minirest, github: "emqx/minirest", tag: "1.4.3", override: true}, common_dep(:ecpool),
{:ecpool, github: "emqx/ecpool", tag: "0.5.7", override: true}, common_dep(:replayq),
{:replayq, github: "emqx/replayq", tag: "0.3.8", override: true}, common_dep(:pbkdf2),
{:pbkdf2, github: "emqx/erlang-pbkdf2", tag: "2.0.4", override: true},
# maybe forbid to fetch quicer # maybe forbid to fetch quicer
{:emqtt, common_dep(:emqtt),
github: "emqx/emqtt", tag: "1.10.1", override: true, system_env: maybe_no_quic_env()}, common_dep(:rulesql),
{:rulesql, github: "emqx/rulesql", tag: "0.2.1"}, common_dep(:telemetry),
{:observer_cli, "1.7.1"},
{:system_monitor, github: "ieQu1/system_monitor", tag: "3.0.5"},
{:telemetry, "1.1.0", override: true},
# in conflict by emqtt and hocon # in conflict by emqtt and hocon
{:getopt, "1.0.2", override: true}, common_dep(:getopt),
{ common_dep(:snabbkaffe),
common_dep(:hocon),
common_dep(:emqx_http_lib),
common_dep(:esasl),
common_dep(:jose),
# in conflict by ehttpc and emqtt
common_dep(:gun),
# in conflict by emqx_connector and system_monitor
common_dep(:epgsql),
# in conflict by emqx and observer_cli
{:recon, github: "ferd/recon", tag: "2.5.1", override: true},
common_dep(:jsx),
# in conflict by erlavro and rocketmq
common_dep(:jsone),
# dependencies of dependencies; we choose specific refs to match
# what rebar3 chooses.
# in conflict by gun and emqtt
common_dep(:cowlib),
# in conflict by cowboy_swagger and cowboy
common_dep(:ranch),
# in conflict by grpc and eetcd
common_dep(:gpb),
{:hackney, github: "emqx/hackney", tag: "1.18.1-1", override: true},
# set by hackney (dependency)
{:ssl_verify_fun, "1.1.7", override: true},
common_dep(:rfc3339),
common_dep(:bcrypt),
{:uuid, github: "okeuday/uuid", tag: "v2.0.6", override: true},
{:quickrand, github: "okeuday/quickrand", tag: "v2.0.6", override: true},
{:ra, "2.7.3", override: true},
{:mimerl, "1.2.0", override: true}
]
end
def extra_release_apps() do
[
{:redbug, github: "emqx/redbug", tag: "2.0.10"},
{:observer_cli, "1.7.1"},
{:system_monitor, github: "ieQu1/system_monitor", tag: "3.0.5"}
]
end
def common_dep(:ekka), do: {:ekka, github: "emqx/ekka", tag: "0.19.5", override: true}
def common_dep(:esockd), do: {:esockd, github: "emqx/esockd", tag: "5.11.2", override: true}
def common_dep(:gproc), do: {:gproc, github: "emqx/gproc", tag: "0.9.0.1", override: true}
def common_dep(:hocon), do: {:hocon, github: "emqx/hocon", tag: "0.42.2", override: true}
def common_dep(:lc), do: {:lc, github: "emqx/lc", tag: "0.3.2", override: true}
# in conflict by ehttpc and emqtt
def common_dep(:gun), do: {:gun, github: "emqx/gun", tag: "1.3.11", override: true}
# in conflict by cowboy_swagger and cowboy
def common_dep(:ranch), do: {:ranch, github: "emqx/ranch", tag: "1.8.1-emqx", override: true}
def common_dep(:ehttpc), do: {:ehttpc, github: "emqx/ehttpc", tag: "0.4.14", override: true}
def common_dep(:jiffy), do: {:jiffy, github: "emqx/jiffy", tag: "1.0.6", override: true}
def common_dep(:grpc), do: {:grpc, github: "emqx/grpc-erl", tag: "0.6.12", override: true}
def common_dep(:cowboy), do: {:cowboy, github: "emqx/cowboy", tag: "2.9.2", override: true}
def common_dep(:jsone), do: {:jsone, github: "emqx/jsone", tag: "1.7.1", override: true}
def common_dep(:ecpool), do: {:ecpool, github: "emqx/ecpool", tag: "0.5.7", override: true}
def common_dep(:replayq), do: {:replayq, github: "emqx/replayq", tag: "0.3.8", override: true}
def common_dep(:jsx), do: {:jsx, github: "talentdeficit/jsx", tag: "v3.1.0", override: true}
# in conflict by emqtt and hocon
def common_dep(:getopt), do: {:getopt, "1.0.2", override: true}
def common_dep(:telemetry), do: {:telemetry, "1.1.0", override: true}
# in conflict by grpc and eetcd
def common_dep(:gpb), do: {:gpb, "4.19.9", override: true, runtime: false}
def common_dep(:covertool),
do: {:covertool, github: "zmstone/covertool", tag: "2.0.4.1", override: true}
# in conflict by emqx_connector and system_monitor
def common_dep(:epgsql), do: {:epgsql, github: "emqx/epgsql", tag: "4.7.1.2", override: true}
def common_dep(:esasl), do: {:esasl, github: "emqx/esasl", tag: "0.2.1"}
def common_dep(:gen_rpc), do: {:gen_rpc, github: "emqx/gen_rpc", tag: "3.3.1", override: true}
def common_dep(:jose),
do: {:jose, github: "potatosalad/erlang-jose", tag: "1.11.2", override: true}
def common_dep(:rulesql), do: {:rulesql, github: "emqx/rulesql", tag: "0.2.1"}
def common_dep(:pbkdf2),
do: {:pbkdf2, github: "emqx/erlang-pbkdf2", tag: "2.0.4", override: true}
def common_dep(:bcrypt),
do: {:bcrypt, github: "emqx/erlang-bcrypt", tag: "0.6.2", override: true}
# hex version 0.2.2 used by `jesse` has buggy mix.exs
def common_dep(:rfc3339), do: {:rfc3339, github: "emqx/rfc3339", tag: "0.2.3", override: true}
def common_dep(:minirest),
do: {:minirest, github: "emqx/minirest", tag: "1.4.3", override: true}
# maybe forbid to fetch quicer
def common_dep(:emqtt),
do:
{:emqtt,
github: "emqx/emqtt", tag: "1.10.1", override: true, system_env: maybe_no_quic_env()}
def common_dep(:typerefl),
do: {:typerefl, github: "ieQu1/typerefl", tag: "0.9.1", override: true}
def common_dep(:rocksdb),
do: {:rocksdb, github: "emqx/erlang-rocksdb", tag: "1.8.0-emqx-5", override: true}
def common_dep(:emqx_http_lib),
do: {:emqx_http_lib, github: "emqx/emqx_http_lib", tag: "0.5.3", override: true}
def common_dep(:cowlib),
do:
{:cowlib,
github: "ninenines/cowlib", ref: "c6553f8308a2ca5dcd69d845f0a7d098c40c3363", override: true}
def common_dep(:snabbkaffe),
do: {
:snabbkaffe, :snabbkaffe,
## without this, snabbkaffe is compiled with `-define(snk_kind, '$kind')`, which ## without this, snabbkaffe is compiled with `-define(snk_kind, '$kind')`, which
## will basically make events in tests never match any predicates. ## will basically make events in tests never match any predicates.
github: "kafka4beam/snabbkaffe", github: "kafka4beam/snabbkaffe",
tag: "1.0.10", tag: "1.0.10",
override: true, override: true,
system_env: emqx_app_system_env(profile_info, version) system_env: emqx_app_system_env(profile_info(), pkg_vsn())
}, }
{:hocon, github: "emqx/hocon", tag: "0.42.2", override: true},
{:emqx_http_lib, github: "emqx/emqx_http_lib", tag: "0.5.3", override: true},
{:esasl, github: "emqx/esasl", tag: "0.2.1"},
{:jose, github: "potatosalad/erlang-jose", tag: "1.11.2", override: true},
# in conflict by ehttpc and emqtt
{:gun, github: "emqx/gun", tag: "1.3.11", override: true},
# in conflict by emqx_connector and system_monitor
{:epgsql, github: "emqx/epgsql", tag: "4.7.1.2", override: true},
# in conflict by emqx and observer_cli
{:recon, github: "ferd/recon", tag: "2.5.1", override: true},
{:jsx, github: "talentdeficit/jsx", tag: "v3.1.0", override: true},
# in conflict by erlavro and rocketmq
{:jsone, github: "emqx/jsone", tag: "1.7.1", override: true},
# dependencies of dependencies; we choose specific refs to match
# what rebar3 chooses.
# in conflict by gun and emqtt
{:cowlib,
github: "ninenines/cowlib",
ref: "c6553f8308a2ca5dcd69d845f0a7d098c40c3363",
override: true},
# in conflict by cowboy_swagger and cowboy
{:ranch, github: "emqx/ranch", tag: "1.8.1-emqx", override: true},
# in conflict by grpc and eetcd
{:gpb, "4.19.9", override: true, runtime: false},
{:hackney, github: "emqx/hackney", tag: "1.18.1-1", override: true},
# set by hackney (dependency)
{:ssl_verify_fun, "1.1.7", override: true},
{:rfc3339, github: "emqx/rfc3339", tag: "0.2.3", override: true},
{:bcrypt, github: "emqx/erlang-bcrypt", tag: "0.6.2", override: true},
{:uuid, github: "okeuday/uuid", tag: "v2.0.6", override: true},
{:quickrand, github: "okeuday/quickrand", tag: "v2.0.6", override: true},
{:ra, "2.7.3", override: true},
{:mimerl, "1.2.0", override: true}
] ++
jq_dep() ++
quicer_dep() ++ rebar3_umbrella_apps
end
############################################################################################### ###############################################################################################
# BEGIN DEPRECATED FOR MIX BLOCK # BEGIN DEPRECATED FOR MIX BLOCK