Title. To quote @rjbou:
the reason: ocaml-option-tsan depends on ocaml-variants and the solver chooses ocaml-variants.x.y+BER which have meta-ocaml as post dependency (instead of ocaml-variants.x.y+options)
and @kit-ty-kate:
the metaocaml packages should probably have flags: avoid-version to avoid this. If no version is requested (either in the command line, or in the package's dependencies) opam will choose whatever is the latest version is (modulo avoid-version). In this case though it chooses the version that has less overall dependencies i think, which might be a bad solver decision