Hi,<div><br></div><div>So let's start again because my first error report was wrong. I shouldn'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'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 "borrowing" 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'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"><<a href="mailto:simon@rabbitmq.com">simon@rabbitmq.com</a>></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'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>