If we use xargs(1) to call tar(1), we are limited by the number of
arguments we can put on the command line. Since we switch to use
directories to "package" plugins instead of .ez archives, the number of
files exploded. This led to incomplete generic-unix archives (i.e. some
plugins and CLI scripts were missing for instance).
Now, the list of files is written to a manifest, exactly like we do it
to create the source archive.
Exactly like we do it with `$HOME`, this is to exercices our hack to
make mix(1) work offline.
Starting with Elixir 1.9.0, mix(1) accepts a `$MIX_HOME` variable to
point it to its own central directory. If it's not defined, it uses
first the `$XDG_DATA_HOME` and `$XDG_CONFIG_HOME` Freedesktop.org
variables. Then it uses `$HOME`.
So here, we specify those two variables explicitely to make sure they do
not disturb the build process.
A Debian package is built with a Makefile, `debian/rules`. This Makefile
inherited all variables defined on the command line, even though we
unexported the dangerous ones.
We need to unset `MAKEOVERRIDES` to prevent GNU Make from passing them
in `MAKEFLAGS`.
Everything comes from the rabbitmq-server repository. The goals of this
move are:
1. separate unrelated files: the broker sources and release
handling comprising plugins;
2. resolve an important dependency cycle: plugins depend on the
broker to run, but the broker depends on plugins to build a
release.
[#130659985]