I have an issue related to dune, ppx_expect, and linking.
Context:
- I’m working on learn-ocaml, to implement ppx_expect and ppx_inline_test support.
- I added several unit tests in src/state/learnocaml_data.ml, in this PR.
- So far, so good: the PR is ready and all our CI jobs (using GitHub Actions) are green;
 except the jobs for the Linux/macOS static builds.
- Here is the error message (from this job):... collect2: error: ld returned 1 exit status File "_none_", line 1: Error: Error while building custom runtime system
- Locally, this can be reproduced by running ./scripts/static-build.sh
I suspect that removing
  (inline_tests)
  (preprocess (pps ppx_expect ppx_inline_test))
just for static builds would fix the issue? (do you think this is the case?)
Next, what I tried:
Replacing src/state/dune with:
...
(library
 (name learnocaml_data)
 (wrapped false)
 (modules Learnocaml_data)
 (libraries asak sha learnocaml_toplevel_history learnocaml_report learnocaml_repository)
  (enabled_if (= %{env:LINKING_MODE=dynamic} dynamic))
  (inline_tests)
  (preprocess (pps ppx_expect ppx_inline_test))
)
(library
 (name learnocaml_data)
 (wrapped false)
 (modules Learnocaml_data)
 (libraries asak sha learnocaml_toplevel_history learnocaml_report learnocaml_repository)
 (enabled_if (<> %{env:LINKING_MODE=dynamic} dynamic))
)
...
Unfortunately, I got:
File "src/state/dune", line 16, characters 19-44:
16 |   (enabled_if (= %{env:LINKING_MODE=dynamic} dynamic))
                        ^^^^^^^^^^^^^^^^^^^^^^^^^
Error: Only architecture, system, model, os_type, ccomp_type, profile,
ocaml_version and context_name variables are allowed in this 'enabled_if'
field. If you think that env should also be allowed, please file an issue
about it.
What solutions could workaround this? (ideally, feasible with the dune version we currently use: 2.9.0)
Thanks!