Skip to content

ppxs are built in the target context in cross-compilation settings #4156

@TheLortex

Description

@TheLortex

When using dune-workspace features to enable cross-compilation, ppx libraries should be built in the host context.

As dune tries to build them in the target context, it fails because some libraries such as ocaml-compiler-libs may not be available.

I added a failing test in this PR: #4155

It leads to the following error:

$ dune build --debug-dependency-path
File "lib/dune", line 3, characters 18-24:
3 |  (preprocess (pps fooppx)))
                      ^^^^^^
Error: Library "fooppx" in _build/cross-environment/ppx is hidden
(unsatisfied 'enabled_if').
-> required by lib/lib.pp.ml (context cross-environment)
-> required by alias lib/all (context cross-environment)
-> required by alias default (context cross-environment)
Hint: try:
  dune external-lib-deps --missing --debug-dependency-path @@default
[1]

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions