[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Automatic dependencies for shared modules



Hi all,

We have added optional plugins in liquidsoap lately and I am trying to
see how this can be packaged. I have a couple of remarks in the case
of compilation in native code.

Basically, we want optional plugins, e.g. liquidsoap-plugins-sdl,
which depends only on the corresponding C libraries, in this case the
libsdl, but no ocaml module.

For this purpose, we pass all modules that the plugin depends on at
link time, here for instance -linkpkg -package sdl, etc..
However, this does not work with dh_ocaml:
E: Error: unit Sdl exported in liquidsoap-plugin-sdl but already
exported by libsdl-ocaml-dev/libsdl-ocaml v0.8.0-2+b1
E: Error running /usr/bin/ocaml-md5sums  --package
liquidsoap-plugin-sdl dep <
debian/liquidsoap-plugin-sdl.olist.debhelper at /usr/bin/dh_ocaml line
468.

However, not passing those dependencies at link time is absolutely
impractical: this would mean that liquidsoap would have to load all of
them in the right order.. while they do not even exist in the current
package (e.g. sdl.cmxs)...

Also, linking liquidsoap with sdl is not the idea: we want precisely
to reduce the number of shared libraries linked with the binary by
default and move those to the plugins.

Thus, I tend to think that the current implementation of automatic
dependencies calculation for shared modules in dh_ocaml is broken: It
should accept to process modules that are otherwise provided by
another package..

Note that because of this bug I have not been able to check whether
the dependencies on the C libraries are correctly extracted but I
believe they are.

Romain


Reply to: