Hi,<div><br></div><div>So let&#39;s start again because my first error report was wrong. I shouldn&#39;t have mentioned mochiweb or the management plugin. I did so because the first time this error happened to me I was trying to enable those plugins.</div>
<div><br></div><div>So, yes. The release is created based on the dependencies from the rabbit.app which doesn&#39;t declare inets as one if its dependencies:</div><div><br></div><div><a href="http://hg.rabbitmq.com/rabbitmq-server/file/89d34c362862/ebin/rabbit_app.in#l13">http://hg.rabbitmq.com/rabbitmq-server/file/89d34c362862/ebin/rabbit_app.in#l13</a></div>
<div><br></div><div>So when the Erlang release is generated the inets is not shipped with the .tar created.</div><div><br>Actually I think any app used by the project which also appears here: ls /usr/local/lib/erlang/lib/ should be declared as a dependency. (kernel and stdlib are required anyway, same thing with erts and sasl if used).</div>
<div><br></div><div>Declaring the app dependency is not required to generate a release per-se, but is required by the rabbit_prelaunch.erl script that generates the release file automatically: See: <a href="http://hg.rabbitmq.com/rabbitmq-server/file/89d34c362862/src/rabbit_prelaunch.erl#l72">http://hg.rabbitmq.com/rabbitmq-server/file/89d34c362862/src/rabbit_prelaunch.erl#l72</a></div>
<div><br></div><div>So when generating a .rel file you can actually write all the app dependencies manually but I automated the process by &quot;borrowing&quot; code from the rabbit_prelaunch script.</div><div><br></div><div>
So in my case to fix the issue I just added some extra apps here: <a href="https://github.com/videlalvaro/tamedrabbit/blob/master/erlang/rabbit_release.erl#L9">https://github.com/videlalvaro/tamedrabbit/blob/master/erlang/rabbit_release.erl#L9</a> (Note that rabbit_prelaunch.erl has the same erlang macro on top). By adding inets and xmerl there I made sure that those apps are shipped with my custom release.</div>
<div><br></div><div>So I use my own rabbit_release.erl to generate the release .tar and what not. Then rabbitmq-server uses rabbit_prelaunch.erl to generate it&#39;s own release file that is loaded during server startup. That release file generated by the prelaunch script is based on the target system, that of course will not include inets.</div>
<div><br></div><div>Does it make sense now?</div><div><br></div><div>Regards,</div><div><br></div><div>Alvaro</div><div><br><div class="gmail_quote">On Wed, Apr 25, 2012 at 1:57 PM, Simon MacMullen <span dir="ltr">&lt;<a href="mailto:simon@rabbitmq.com">simon@rabbitmq.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 25/04/12 12:52, Alvaro Videla wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I tried to reproduce the problem. Actually *rabbitmq-server* needs to<br>
declare *inets* in its app dependencies.<br>
</blockquote>
<br>
I still don&#39;t get it - does the release build thing that you have check only the rabbit.app descriptor, or those of all the plugins too?<br>
<br>
If the former, why did adding xmerl to rabbitmq-management fix anything? (it was the right thing to do anyway, but why did it not cause this problem?)<br>
<br>
If the latter, why is inets not being picked up due to its presence in mochiweb.app?<br>
<br>
Cheers, Simon<span class="HOEnZb"><font color="#888888"><br>
<br>
-- <br>
Simon MacMullen<br>
RabbitMQ, VMware<br>
</font></span></blockquote></div><br></div>