From 88ae489219c03b5075bfcb38cecf98cc507e0557 Mon Sep 17 00:00:00 2001 From: Thales Macedo Garitezi Date: Thu, 3 Feb 2022 17:31:47 -0300 Subject: [PATCH] fix(mix): set `emqx_vsn` compile info Currently, `emqx_release.erl` depends on the `erl_opts` option `compile_info` being set by Rebar3 to include `{emqx_vsn, $PKG_VSN}` to report the version, for instance, in `emqx ctl status`. Since Mix does not provide a simple way to pass `erl_opts` to Rebar3 dependencies without creating a `mix.exs` file, the workaround is to set the environment variable `ERL_COMPILER_OPTIONS` to include that value before invoking the Erlang compiler on the Rebar3 dependencies. --- build | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/build b/build index 1e564eee1..eebf26771 100755 --- a/build +++ b/build @@ -240,6 +240,11 @@ export_release_vars() { exit 1 esac export MIX_ENV="$profile" + # At this time, Mix provides no easy way to pass `erl_opts' to + # dependencies. The workaround is to set this variable before + # compiling the project, so that `emqx_release.erl' picks up + # `emqx_vsn' as if it was compiled by rebar3. + export ERL_COMPILER_OPTIONS="[{compile_info,[{emqx_vsn,\"${PKG_VSN}\"}]}]" } log "building artifact=$ARTIFACT for profile=$PROFILE"