> > An even worse problem is this case: imagine package A and B both depend > > on gtksourceview, however package A requires version > 2.10 and package > > B version > 2.11. > > Oh, this one is an interesting question! > > You are suggesting that opam should support the installation of > different versions of the same thing. > I think nix can do that, and that indeed looks like a current limitation > of opam. It is a limitation that has been explicitely put into opam, because of what the rest of the tooling requires. I made a more detailed explanation here: https://github.com/ocaml/opam/issues/3696 I don't believe that's what was suggested in the original message, though ? The pointed issue seemed to me that we don't handle detailed versions for `conf-*` packages, which means we can't encode precise dependencies to the underlying system package versions. In other words, _handling_ the fact that "package A requires version > 2.10 and package B version > 2.11" is no problem at all for opam, but _expressing_ it is, for `conf-*` packages. The thing is that we can only detect the installed versions of system packages, not control them (even with `opam-depext`, we can trigger the installation of a given package, but most distributions don't allow to choose between multiple versions). In this case, you will have to rely on your package's `./configure` to fail when the version of the system dependency doesn't match, which is not the most helpful solution; adding the depexts to the package directly could help a bit, but again, as we don't control the system package version anyway, not that much. There is one way we could improve a (little) bit: e.g. `conf-gtksourceview` could expose¹ a `system-version` variable upon installation, e.g. `2.11`, and then you could fail explicitely with a message directly from the opam file, without relying on `./configure` (it will still fail only at build time, though, because the value of the variable can't be known yet at resolution time). Hope this helps, Louis Gesbert — OCamlPro ¹ http://opam.ocaml.org/doc/Manual.html#dotconfigsection-variables