Hi Eduard - sorry for the long delay! Here are some thoughts about this issue.<div><br></div><div>The principle here is that reltool shall never guess. I.e. as long as it can not be 100% sure which of the two modules to use, then it will not choose but expects you to explicitely make the decision.</div>
<div><br></div><div>Since you haven't included your reltool config file, I'm just guessing that it looks (maybe simplified) something like this:</div><div><div><br></div><div><div>{sys,[{lib_dirs,["<my_lib_dir>"]},</div>
<div>      {incl_cond,derived},</div><div>      {app,<my_app>,[{incl_cond,include}]}</div><div>     ]}.</div></div><div><br></div><div>and that <system_app> exists in <my_lib_dir>.</div><div><br></div><div>
<div>If this is close to correct, then what you ask reltool to do is</div><div><br></div><div>"Take my erlang installation and also look in <my_lib_dir> and figure out which applications and modules I need to include in my release so that all dependencies of <my_app> are taken care of."</div>
</div><div><br></div><div>And to be very strict - it could(!!) be that you want <my_app> to use the <some_module> from <system_app> and not from <my_app> itself... but I realize that it is not very likely. At least not if <some_module> is the only relation between <my_app> and <system_app>... So the question is if this is ALWAYS the case??</div>
<div><br></div><div>A simple workaround for the above config file would be to skip the system level lib_dirs parameter, and specify directory per application instead:</div><div><br></div><div><div>{sys,[{incl_cond,derived},</div>
<div>      {app,<my_app>,[{incl_cond,include},{lib_dir,"<my_lib_dir>/<my_app>"]}</div><div>     ]}.</div></div><div><br></div><div>This will of course only work as long as there are no other dependecies from <my_app> towards other applications in <my_lib_dir>...</div>
<div><br></div><div>Regards</div><div>/siri</div><div><br></div><div><br></div><div><br><div class="gmail_quote">2012/6/15 Eduard Sergeev <span dir="ltr"><<a href="mailto:eduard.sergeev@gmail.com" target="_blank">eduard.sergeev@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
I was wondering what was the reason behind the following behaviour of reltool:<br>
<br>
If my reltool.config uses default 'mod_cond' and 'incl_cond' options<br>
and if one of my included applications has a module which also happens<br>
to be a part of some application installed on my machine but NOT<br>
included in my release `relltool:get_target_spec/1` returns:<br>
<br>
{error, "Module <some_module> potentially included by two different<br>
applications: <system_app> and <my_app>."}<br>
<br>
Which is annoying since <system_app> is NOT a part of my release<br>
(neither directly nor indirectly). Can't reltool actually figure out<br>
that <system_app> will not be included in my release? Id that why it<br>
is "potentially included"?<br>
<br>
Anyway, in order to generate my release I have to either explicitly<br>
exclude <system_app> via `{app, <system_app> [{incl_cond, exclude}]}`<br>
which is ugly since this <system_app> is just happens to be installed<br>
in 'lib' directory of the machine where I do the build (it may not be<br>
installed on other build machines) and has nothing to do with my<br>
release. The actual example: 'tsung-1.4.3' includes 'mochijson2'<br>
module so I have a problem building my release which should include<br>
'mochiweb' app on the machine that has 'tsung' installed (but not on<br>
other machines).<br>
Another option would be to change top-level 'incl_cond' from<br>
{incl_cond, derived} to {incl_cond, exclude} and then manually include<br>
all the application which I want to be a part my release which is<br>
better (will work on any build machine) but still not great since it<br>
has to be done manually (I want to rely on relltool to figure out the<br>
dependencies).<br>
<br>
So the question is why do we have such a situation? Why just a mere<br>
presence of some application on the build machine lead to the above<br>
reltool error?<br>
<br>
Regards,<br>
Eduard<br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote></div><br></div></div>