Document `make` as a «runtime» dependency
I (https://bidule.menf.in) have just recovered from an interruption of service of my pleroma service.
We use NixOS on our server and the pleroma service wouldn't restart, it kept being killed by the kernel with information in the erl_crash.dmp
I couldn't understand.
Nov 07 14:49:31 saehkoepoika mix[1268]: {"Kernel pid terminated",application_controller,"{application_terminated,pleroma,shutdown}"}
Nov 07 14:49:31 saehkoepoika mix[1268]: Kernel pid terminated (application_controller) ({application_terminated,pleroma,shutdown})
I thought it could be linked to the elixir version (not sure on that point, maybe I took a wrong turn at that point but anyway) and so I told Nix to use the newest 1.9.1 package. The service would still not come up, but due to an error in compiling the package nodex
. After a long time trying to compile it by hand out of Nix build process (for those not familiar with it, you don't compile or install things system-wise on NixOS, you just edit the configuration and let Nix regenerate a version of the whole system that satisfies the configuration, so the «user» context can be — and that was the case here — very different from the «system» context), I got a vicious noent
error on l.88
of mix.exs
and a stack trace that contained more or less
System.cmd("make", ["priv/example_client", "priv/just_exit"], stderr_to_stdout: true, env: [{"MIX_ENV", to_string(Mix.env())}]
I wondered for a while why those directories not existing could be a problem (after all, wasn't it Make's role to build what needed building ?) before I realised it was the make
command itself that was not found (a more helpful message that «:enoent
» would have been warmly welcomed there).
Added it in the dependencies for the pleroma
systemd unit (the NixOS derivation) and everything worked like a charm because I now had a sufficiently recent version of elixir
and pleroma
could compile what it wanted before starting.
Now, I don't know where this information should go, because it's probably not needed in the «Installing on» pages of the documentation because the packages are global on those systems and probably everyone has make
installed and available in their PATH
but, with nodex, make
has somehow become a «runtime» dependency of pleroma
because it can fail to start if the command isn't in its path.
What are your thoughts ?