Specifying dependencies correctly for packages that depend on a ppx can be a little tricky. The common mistakes are usually:
-
forgetting to mark pure preprocessing packages as
{build} -
forgetting to add the runtime as a regular dependency.
Well, now we have a new situation in our hands! Different versions of a ppx might change where their runtime comes from. In particular, ppx_sexp_conv has a runtime dependency on the sexplib package for versions below 0.11.0. While version 0.11.0 (and onwards) already contains the runtime as a subpackage: ppx_sexp_conv.runtime-lib. This is quite annoying as it means that we can’t specify the dependencies accurately for both versions of this ppx.
So we have 2 options from here:
-
Over approximate the dependencies and treat
ppx_sexp_convas a regular dependency. Additionally, addsexpibas a dependency when older versions of the preprocessors are selected -
Drop
sexpliband add a>= v0.11.0constraint on ppx_sexp_conv.
Hopefully you found this useful. Please don’t forget to update your packages.