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
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, add
sexpibas a dependency when older versions of the preprocessors are selected
sexpliband add a
>= v0.11.0constraint on ppx_sexp_conv.
Hopefully you found this useful. Please don’t forget to update your packages.