OPAMFind : Making a bridge between OCamlFind and OPAM package systems

OPAMFind is a library to analyze the installed OCamlFind and OPAM packages and obtain the relationship between them: which OCamlFind package is installed by which OPAM package.

Limited support: opam 1.2.2

Currently OPAMFind does not depend on opam-lib package, all the information of OPAM is obtained by executing opam command. Therefore this version of OPAMFind only works opam command version 1.2.2.


system switch does not work

OCaml compiler's stdlib must be installed under OPAM directory (normally $HOME/.opam. This means OPAMFind does not work with system switch.


The analysis of OCamlFind and OPAM package relationships is done by checksums of some key files (META and .cmi files) in OCamlFind installation directories and OPAM build directories. Therefore the build files created by opam install must be preserved, by setting OPAMKEEPBUILDDIR=yes for example.

Typical usage

open Opamfind

let result =
  let stdlib_dir, ocamlfinds, opam_switch = Opamfind.Assoc.init () in
  let ocamlfind_analyzed_groups = Ocamlfind.group_and_analyze ~stdlib_dir ocamlfinds in
  let opams = Opam.get_intalled opam_switch in
  Opamfind.Assoc.associate ocamlfind_analyzed_groups opams