This avoids using Mix while compiling which simplifies
a number of things and let us do further build improvements
later on.
Elixir is only enabled from within rabbitmq_cli currently.
Eunit is disabled since there are only Elixir tests.
Dialyzer will force-enable Elixir in order to process
Elixir-compiled beam files.
This commit also includes a few changes that are
related:
* The Erlang distribution will now be started for parallel-ct
* Many unnecessary PROJECT_MOD lines have been removed
* `eunit_formatters` has been removed, it provides little value
* The new `maybe_flock` Erlang.mk function is used where possible
* Build test deps when testing rabbitmq_cli (Mix won't do it anymore)
* rabbitmq_ct_helpers now use the early plugins to have Dialyzer
properly set up
When network partitions happen, two nodes might connect to the upstream
swapping the exchange (A -> B, B -> A). The last surviving link
after healing might have lost its exchange. The periodic check using
a passive declare allows to detect the situation and restart the link,
restoring the connectivity.
Related to rabbitmq-federation#43
rabbitmq-federation#59
This is the recommended way with Erlang.mk.
By default, the version is inherited from rabbitmq-server-release when
the source archive is created, or computed from git-describe(1) (see
`rabbitmq-components.mk`). One can override the version from the command
line by setting the `PROJECT_VERSION` variable.
[#130992027]
* Getting the pid file from $$ in the script isn't going to work if we use
erl -detached since, err, it'll start a new process.
* If we background the process then eunit's ?assertCmd macro seems to just
hang. I tried redirecting stdout and stderr, setsid and nohup. Nothing
worked.
* So we have to use os:cmd rather than ?assertCmd. And that doesn't let you
get the status code out! So we have to work around that too...