Well in fact I can perfectly reproduce your problem.
Eco-system tools always needs special casing around upstream provided libraries because they can’t be bothered.
What you see here is likely the result of some form of special casing in ocamlfind hitting back (a git grep on threads in ocamlfind’s sources will show the many potential offending locations).
The following command should actually compile the source you provided but it does not.
- It’s missing the
-Ito theocaml/threadsdirectory - It locates the library in the
ocamllibdir instead ofocaml/threads.
All this despite the META file being well aligned on ocamlfind’s convention (i.e. present in ocaml/threads and as provided above).
> ocamlfind ocamlopt -only-show -package threads -linkpkg a.ml
ocamlopt.opt -I /Users/dbuenzli/.opam/5.1.0/lib/ocaml/unix \
/Users/dbuenzli/.opam/5.1.0/lib/ocaml/unix/unix.cmxa \
/Users/dbuenzli/.opam/5.1.0/lib/ocaml/threads.cmxa \
a.ml