package mix release works, port doesn't? (and neither is self-contained)
Date: Wed, 04 May 2022 11:06:02 UTC
Hi, I am trying to build a package from a mix release.
My first attempt used pkg-create, and it was successful. I can run `make
package`, install the package, and then run `ex_ample start_iex`.
Here’s that Makefile:
https://github.com/patmaddox/ex_ample/blob/5814a1bb921ef3c045852b375fa54bc7b93c0565/Makefile.
It does require me to have an erlang runtime installed to run it, which
was surprising. The elixir docs say that mix releases don’t need
erlang or elixir to run them, they’re supposed to be self-contained.
Then I decided to try building a port with poudriere. I successfully
built the package, but it won’t run. Running `ex_ample start_iex`
fails with an error about missing /usr/local/lib/erlang24/bin/erl as
well.
When I _do_ install erlang-runtime24 (or any erlang package), `ex_ample
start_iex` crashes:
{"init terminating in
do_boot",{load_failed,[supervisor,proc_lib,lists,logger_simple_h,logger_config,logger_backend,logger_server,logger_filters,logger,kernel,heart,gen_server,gen_event,gen,file_io_server,file_server,filename,file,ets,error_logger,erl_parse,erl_lint,erl_eval,code_server,code,application_master,application_controller,application,error_handler]}}.
So my questions are:
1. What is going on with poudriere that’s different, where the package
runs fine but the built port crashes?
2. How do I fix it?
3. Why do the package and port require an erlang runtime to run, if
I’m using mix release?
Pat