[erlang-questions] erl_wrap advice

Petrica Clement Chiriac (Tica2) petrica_chiriac@REDACTED
Tue Nov 6 15:53:46 CET 2018

Hi list,

I working to have one erlang wrapper similar how freewrap[1] is working for
Ideea is simple to bundle all in one exec file (Erlang VM, beam files, boot

Example usage can be:
erl_wrap.exe -out my_app.exe -wrap my_erlang_app

That works simple:
1) copy erl_wrap.exe to my_app.exe
2) append all Erlang app (beam files, boot script, ...) to my_app.exe file
as resources.
3) And job done. Simple click to my_app.exe (On windows) or in console

It is still at an early stage, but I have results and I want to continue.
I know the work is dirty now but in final I want to be crazy simple.

Now I looking for advice how to integrate this erl_wrap library in one
current ERLANG dev environment.
To do this hack I changed erlang/otp repo but I want to be able to build
erl_wrap.exe only based ERLANG dev environment based on compiled lib files
and .h files.
What is need is a way to link erts (Erlang Runtime) and to alter preload
beam files add wrap NIF files and output to erl_wrap.exe (all staticaly
In this way erl_wrap can be independently and can integrated by anyone want
to use.
Now I ask for advice to have this erls.lib (beam only) and separate lib for
preload beam files. It this viable method? Do erlang team accept this work

Second advice is what I can miss in this design, problems are many (ports
from priv diretory, hot updates) but for my usecase to have one file is big

Now if this erl_wrap is call erl (erl.exe) and is someware in path all
Elixir stuf is working (mix, iex, elixir), released not, but looks good.

Also EMU,ROOTDIR,BINDIR,PROGNAME do not have any utility now,
and are very used inside code.
On Unix we have erl script that set env vars and launch erlexec that parse
all arguments and exec beam VM (Erlang VM), final process is beam.smp
On Windows we have erl.exe that read erl.ini and use erlexec.dll to parse
arguments and start Erlang VM from beam.smp.dll, final process is erl.exe
In our wrap example final process is my_app.exe (my_app on unix)
and because all arguments are bundle startup is simple but env vars
EMU,ROOTDIR,BINDIR,PROGNAME do not have a meaning

If I have good results I will share as open source library.

[1] http://freewrap.sourceforge.net/

Petrica Clement Chiriac
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20181106/055e9ff3/attachment.htm>

More information about the erlang-questions mailing list