@ttamttam I refactored the handling of ppx rewriters in dune. Before the knowledge of a few ppx projects and their behavior was hardcoded in jbuilder. It wasn’t great as it made the whole system quite rigid. In particular new features had to be synchronized between jbuilder, ocaml-migrate-parsetree, ppxlib and ppx_driver which was a lot of hassle.
With the new system, dune has a generic support for ppx drivers and projects such as ocaml-migrate-parsetree or ppxlib simply declare themselves as ppx drivers. In order to ensure backward compatibility, this new system is only activated when you use a dune
file. When using a jbuild
file it is still the old system with hardcoded values.
Now, in order to use the new system, ocaml-migrate-parsetree and ppxlib must declare themselves as ppx drivers. The released versions of ocaml-migrate-parsetree and ppxlib already have the relevant information in their jbuild
file to declare themselves as ppx drivers. However, only dune will read this information and in particular copy it to the installation directory. This means that if ocaml-migrate-parsetree was build and installed with jbuilder <= 1.0+beta20, then dune cannot see that ocaml-migrate-parsetree is a driver.
Forcing a resintallation of ocaml-migrate-parsetree via opam reinstall ocaml-migrate-parsetree
will fix the issue.