Starting Erlang

Joe Armstrong joe@REDACTED
Thu Apr 25 15:03:23 CEST 2002

On Thu, 25 Apr 2002, Ulf Wiger wrote:

> On Thu, 25 Apr 2002, Joe Armstrong wrote:
> >  init.erl has the possibility to fetch code from the net.
> >
> >  *does anybody use the -loader inet -hosts ...* stuff ?????
> We have at least discussed this option as we move towards running
> Erlang on our device boards. A simple NFS mount might do the
> trick, though. We need to look at it some more. Your idea of
> including binaries in the script file is a bit interesting, but
> it would make patching more difficult (then again, if it's an
> _option_, this doesn't have to be a problem).

I (quickly) tried changing eval_script in init.erl to include a command
to load some embedded code - a very easy change - this opens up
a range of interesting possibilities ...

assume the start.script is now

{script, {"OTP  APN 181 01","P9"},
         {loadCode, [sneaky]},
         {apply, {sneaky, run, []}}]}

then you change systools:script2boot
so that is *expands* loadCode into

{script, {"OTP  APN 181 01","P9"},
         {loadCode, [{sneaky, <<Bin>>]},
         {apply, {sneaky, run, []}}]}

Where Bin is the beam code for sneaky.erl

Now you define run() in sneaky.erl as

	run() ->

Or whatever :-) [It's not quite as simple as this
but you get the idea]

Once sneaky has terminated you get the old behaviour - *but* you can
embedd any code you like into the .boot file - so the complete
application can (if you like) be distributed as a single boot file, and to
run it you say

	erl -boot BootFile

Since the bootfile can access the command line arguments, you can then
expand the system in an arbitrary manner

	erl -boot Boot1 abc.ear ....

and then turn the whole thing into a single executable ...


> Of course, _reading_ start.script would be a bit more tiring if
> all the beam code were embedded -- kindof defeats the purpose of
> having a text representation... I'm sure this can be solved
> elegantly.
> /Uffe

More information about the erlang-questions mailing list