application startup
Serge Aleynikov
serge@REDACTED
Mon Aug 15 16:51:16 CEST 2005
Very nice! While I couldn't find this reference in the HTML docs,
you're right that in man pages it is described very clearly in black &
white (at least on my terminal window ;-) ).
Serge
Gunilla Arendt wrote:
> It is possible to specify that an application should only be loaded, not
> started, when creating the .rel file (see also rel(3)):
>
> {release, {"drpdb","1.0"}, {erts, "5.4.8"},
> [{kernel,"2.10.9"},
> {stdlib,"1.13.8"},
> {sasl, "2.0.1"},
> {drpdb, "1.0"},
> {os_mon, "1.7.4", load},
> {mnesia, "4.2.2", load}
> ]}.
>
> (At least when using systools:make_script/1,2 to generate the boot
> script, I don't know about 'builder').
>
> IMO, this is a much better way to do it. Unless, of course, you really
> want os_mon and mnesia to be included applications, started by a
> supervisor in drpdb.
>
> / Gunilla
>
>
>
> Serge Aleynikov wrote:
>
>> Ulf,
>>
>> I seemed to have rushed to ask the question before searching the
>> mailing list. 'included_applications' attribute does the trick.
>>
>> So if I understand this correctly, in this case only sasl and drpdb
>> will be started automatically (besides kernel and stdlib), and not
>> mnesia and os_mon:
>>
>> {release, {"drpdb","1.0"}, {erts, "5.4.8"},
>> [{kernel,"2.10.9"},
>> {stdlib,"1.13.8"},
>> {sasl, "2.0.1"},
>> {drpdb, "1.0"},
>> {os_mon, "1.7.4"},
>> {mnesia, "4.2.2"}
>> ]}.
>>
>> {application, drpdb,
>> [
>> ...
>> {included_applications, [ mnesia, os_mon ] },
>> {applications, [ kernel, sasl ] },
>> {mod, {drpdb_app, []}},
>> {env, []}
>> ]
>> }.
>>
>> Also I found your post where you modified the application_controller
>> to customize start_phases:
>>
>> http://forums.trapexit.org:81/phpBB/viewtopic.php?t=4574&highlight=build+applications+start
>>
>>
>> Is that available for download?
>>
>> Thanks.
>>
>> Serge
>>
>> Serge Aleynikov wrote:
>>
>>> Ulf Wiger wrote:
>>>
>>>>
>>>> All applications in the .rel file are started
>>>> automatically if they
>>>> - have a 'mod' attribute
>>>
>>>
>>>
>>>
>>> I looked at $ERL_ROOT/lib/* and sampled several standard apps - they
>>> all have a 'mod' attribute, so I infer that by default any app listed
>>> in the application's *.rel file will get started automatically by
>>> default.
>>>
>>>> - are not included in another application
>>>
>>>
>>>
>>>
>>> I.e. not being included in the application's 'applications'
>>> attributes in the *.app file, or there's another place to include an
>>> application?
>>>
>>>> The 'builder' contrib builds two start scripts:
>>>> one where all applications are started as expected,
>>>> and one where only kernel and stdlib are started,
>>>> but all applications are loaded, and the code path
>>>> set to include all code. The latter script is useful
>>>> if you e.g. want to initialize mnesia and other stuff,
>>>> and the way it's generated is by simply modifying the
>>>> start script after it's been built.
>>>
>>>
>>>
>>>
>>> Thanks, I downloaded the 'builder' contrib. Will experiment with it.
>>>
>>> Serge
>>>
>>>> Den 2005-08-12 23:21:30 skrev Serge Aleynikov <serge@REDACTED>:
>>>>
>> Folks,
>>
>>>>>
>>>>> I have the following config, and I noticed that os_mon and mnesia
>>>>> applications get started at startup when I use a boot script:
>>>>>
>>>>> >erlc -pa ../ebin -o ../ebin drpdb.rel
>>>>> >cd ../ebin
>>>>> >erl -boot drpdb -sname drpdb -config ../priv/drpdb
>>>>>
>>>>> I was under impression that if an application is listed in the
>>>>> *.rel file, it should be loaded but not started. In order for it
>>>>> to be started it must be included in the {applications, ...} tuple
>>>>> of the *.app file. However, what I am observing is that all apps
>>>>> that are listed in the *.rel file are started automatically. Am I
>>>>> doing something wrong?
>>>>>
>>>>> ====== drpdb.rel ========
>>>>> {release, {"drpdb","1.0"}, {erts, "5.4.8"},
>>>>> [{kernel,"2.10.9"},
>>>>> {stdlib,"1.13.8"},
>>>>> {sasl, "2.0.1"},
>>>>> {drpdb, "1.0"},
>>>>> {os_mon, "1.7.4"},
>>>>> {mnesia, "4.2.2"}
>>>>> ]}.
>>>>>
>>>>>
>>>>> ====== drpdb.app ========
>>>>> {application, drpdb,
>>>>> [
>>>>> {description, "Master Database Server"},
>>>>> {vsn, "1.0"},
>>>>> {id, "drpdb"},
>>>>> {modules,
>>>>> [
>>>>> drpdb_app,
>>>>> drpdb_sup,
>>>>> drpdb
>>>>> ]
>>>>> },
>>>>> {registered, [ drpdb_sup, drpdb ] },
>>>>> {applications, [ kernel, sasl ] },
>>>>> {mod, {drpdb_app, []}},
>>>>> {env, []}
>>>>> ]
>>>>> }.
>>>>>
>>>>
>>>>
>>>>
>>>
>>
>
>
--
Serge Aleynikov
R&D Telecom, IDT Corp.
Tel: (973) 438-3436
Fax: (973) 438-1464
serge@REDACTED
More information about the erlang-questions
mailing list