Hi. Sorry for not getting back to you sonner. On 06/02/2011 04:41 AM, Romain Beauxis wrote:
Hi ! 2011/5/28 Stéphane Glondu<glondu@debian.org>:Le 28/05/2011 06:54, Romain Beauxis a écrit :I meant building sdl.cmxs in ocaml-sdl package. It's quite easy and can be done in debian/rules. Have a look at postgresql-ocaml, for example. Then the META, *.cmxs and *.cma should be moved to the runtime package. dh_ocaml should then infer the right dependencies.I think this highly impractical. We'd have to implement the whole dependency resolving in order to load the modules in the right order in the application.. Clearly not an option!Findlib does most of the job. Have a look at baselib/ocsigen_loader.ml in ocsigen for an example.You said in your original e-mail that you didn't want any ocaml dependencies. Did you try the --nodefined-map command-line option of dh_ocaml, then?That does not work for bytecode modules. For instance, the vorbis module include Vorbis and I do want to therefore get a dependency on the right libvorbis-ocaml-xxyyzz.. [...] Therefore, I propose to include an option in dh_ocaml that would allow to accept to reference modules that are present in a plugin and are also provided by another package.This is what --nodefined-map is supposed to do. But actually, this option what thought for packages providing an alternative implementation of one module, so it might explain the missing dependency you are talking about. I would suggest you to look around --nodefined-map code path to implement what you want.Ok so I have found an easy way to make it work. I have added *.onodefined files for each liquidsoap-plugin-xxx. I found two bugs in the parsing of .onodefined files: * lines where not chomped, leading to a trailing \n in each defined unit, which made the call to ocaml-md5sums break: ocaml-md5sums (...) --nodefined Foo --nodefined Bar (...) * the array was not properly initialized, leading to merging individual package's nodefined into one.
Indeed.
Additionally, the only change I did to make it work was to pass --nodefined option during the computation of binary package dependencies. I have attached the patch corresponding to these changes. Let me know if it is ok for you. Finally, I wanted to have liquidsoap declare the ABI it provides and make the plugins depend on liquidsoap-xxyyzz as well as making sure that all the units imported in each plugins where properly resolved in liquidsoap. It turns out that ocamlobjinfo does not provide enough information concerning the units exported by liquidsoap: units actually implemented in the bytecode binary for liquidsoap are marked as imported.. Therefore, I think this is the best that I can do for now.. Please, let me know if the patch is ok for you..
Looks ok to me. Please feel free to push them in dh_ocaml's git repository. Thanks for your work on this! Regards, -- Mehdi Dogguy مهدي الدڤي http://dogguy.org/