sig   module Codec :     sig       type 'a t       val v : id:string -> 'Omod_support.Codec.t       val write :         'Omod_support.Codec.t ->         Omod.fpath -> '-> (unit, string) Pervasives.result       val read :         'Omod_support.Codec.t ->         Omod.fpath -> ('a, string) Pervasives.result     end   module Digest :     sig       type t = string       val compare : t -> t -> int       val equal : t -> t -> bool       val string : string -> t       val bytes : bytes -> t       val substring : string -> int -> int -> t       val subbytes : bytes -> int -> int -> t       external channel : in_channel -> int -> t = "caml_md5_chan"       val file : string -> t       val output : out_channel -> t -> unit       val input : in_channel -> t       val to_hex : t -> string       val from_hex : string -> t       val pp : Format.formatter -> t -> unit       val pp_opt : Format.formatter -> t option -> unit       module Set :         sig           type elt = t           type t           val empty : t           val is_empty : t -> bool           val mem : elt -> t -> bool           val add : elt -> t -> t           val singleton : elt -> t           val remove : elt -> t -> t           val union : t -> t -> t           val inter : t -> t -> t           val diff : t -> t -> t           val compare : t -> t -> int           val equal : t -> t -> bool           val subset : t -> t -> bool           val iter : (elt -> unit) -> t -> unit           val fold : (elt -> '-> 'a) -> t -> '-> 'a           val for_all : (elt -> bool) -> t -> bool           val exists : (elt -> bool) -> t -> bool           val filter : (elt -> bool) -> t -> t           val partition : (elt -> bool) -> t -> t * t           val cardinal : t -> int           val elements : t -> elt list           val min_elt : t -> elt           val max_elt : t -> elt           val choose : t -> elt           val split : elt -> t -> t * bool * t           val find : elt -> t -> elt           val of_list : elt list -> t         end       module Map :         sig           type key = t           type +'a t           val empty : 'a t           val is_empty : 'a t -> bool           val mem : key -> 'a t -> bool           val add : key -> '-> 'a t -> 'a t           val singleton : key -> '-> 'a t           val remove : key -> 'a t -> 'a t           val merge :             (key -> 'a option -> 'b option -> 'c option) ->             'a t -> 'b t -> 'c t           val union : (key -> '-> '-> 'a option) -> 'a t -> 'a t -> 'a t           val compare : ('-> '-> int) -> 'a t -> 'a t -> int           val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool           val iter : (key -> '-> unit) -> 'a t -> unit           val fold : (key -> '-> '-> 'b) -> 'a t -> '-> 'b           val for_all : (key -> '-> bool) -> 'a t -> bool           val exists : (key -> '-> bool) -> 'a t -> bool           val filter : (key -> '-> bool) -> 'a t -> 'a t           val partition : (key -> '-> bool) -> 'a t -> 'a t * 'a t           val cardinal : 'a t -> int           val bindings : 'a t -> (key * 'a) list           val min_binding : 'a t -> key * 'a           val max_binding : 'a t -> key * 'a           val choose : 'a t -> key * 'a           val split : key -> 'a t -> 'a t * 'a option * 'a t           val find : key -> 'a t -> 'a           val map : ('-> 'b) -> 'a t -> 'b t           val mapi : (key -> '-> 'b) -> 'a t -> 'b t         end     end   module Log :     sig       type t = {         f : 'a. ('a, Format.formatter, unit) Pervasives.format -> 'a;       }       val nil : Omod_support.Log.t       val std : Omod_support.Log.t       val err : Omod_support.Log.t       val time : Omod_support.Log.t -> string -> (unit -> 'a) -> 'a     end   module Cobj :     sig       type pkg_id = string * Omod.fpath       val pp_pkg_id : Format.formatter -> Omod_support.Cobj.pkg_id -> unit       type dep = string * Omod_support.Digest.t option       val pp_dep : Format.formatter -> Omod_support.Cobj.dep -> unit       val spec_of_string :         string ->         (string option * string * string list, string) Pervasives.result       type kind = Cmi | Cmo | Cmx       val kind_of_string : string -> Omod_support.Cobj.kind option       val kind_to_string : Omod_support.Cobj.kind -> string       val exts : Omod.Private.String.Set.t       type t       val v :         kind:Omod_support.Cobj.kind ->         pkg_id:Omod_support.Cobj.pkg_id ->         name:string ->         iface_digest:Omod_support.Digest.t option ->         iface_deps:Omod_support.Cobj.dep list ->         in_archive:bool ->         path:Omod.fpath ->         path_loads:Omod_support.Cobj.t list Lazy.t -> Omod_support.Cobj.t       val add_file :         pkg_id:Omod_support.Cobj.pkg_id ->         Omod_support.Cobj.t list ->         Omod.fpath -> (Omod_support.Cobj.t list, string) Pervasives.result       val kind : Omod_support.Cobj.t -> Omod_support.Cobj.kind       val pkg_id : Omod_support.Cobj.t -> Omod_support.Cobj.pkg_id       val name : Omod_support.Cobj.t -> string       val variant : Omod_support.Cobj.t -> string       val iface_digest : Omod_support.Cobj.t -> Omod_support.Digest.t option       val iface_deps : Omod_support.Cobj.t -> Omod_support.Cobj.dep list       val in_archive : Omod_support.Cobj.t -> bool       val path : Omod_support.Cobj.t -> Omod.fpath       val path_loads : Omod_support.Cobj.t -> Omod_support.Cobj.t list       val to_dep : Omod_support.Cobj.t -> Omod_support.Cobj.dep       val is_kind : Omod_support.Cobj.kind -> Omod_support.Cobj.t -> bool       val equal : Omod_support.Cobj.t -> Omod_support.Cobj.t -> bool       val compare : Omod_support.Cobj.t -> Omod_support.Cobj.t -> int       val ui_compare : Omod_support.Cobj.t -> Omod_support.Cobj.t -> int       val pp : Format.formatter -> Omod_support.Cobj.t -> unit       module Index :         sig           type cobj = Omod_support.Cobj.t           type t           val empty : Omod_support.Cobj.Index.t           val of_cobjs :             ?init:Omod_support.Cobj.Index.t ->             Omod_support.Cobj.Index.cobj list -> Omod_support.Cobj.Index.t           val cobjs :             Omod_support.Cobj.Index.t -> Omod_support.Cobj.Index.cobj list           val cobjs_by_name :             Omod_support.Cobj.Index.t ->             Omod_support.Cobj.Index.cobj list Omod.Private.String.Map.t           val cobjs_by_digest :             Omod_support.Cobj.Index.t ->             Omod_support.Cobj.Index.cobj list Omod_support.Digest.Map.t           val cobjs_by_pkg_name :             Omod_support.Cobj.Index.t ->             Omod_support.Cobj.Index.cobj list Omod.Private.String.Map.t           val cobjs_for_mod_name :             string ->             Omod_support.Cobj.Index.t -> Omod_support.Cobj.Index.cobj list           val cobjs_for_iface_digest :             Omod_support.Digest.t ->             Omod_support.Cobj.Index.t -> Omod_support.Cobj.Index.cobj list           val cobjs_for_pkg_name :             string ->             Omod_support.Cobj.Index.t -> Omod_support.Cobj.Index.cobj list           val cobjs_for_dep :             Omod_support.Cobj.dep ->             Omod_support.Cobj.Index.t -> Omod_support.Cobj.Index.cobj list           val cobjs_for_dep_res :             variants:Omod.Private.String.Set.t ->             sat:(Omod_support.Cobj.Index.cobj -> bool) ->             kind:Omod_support.Cobj.kind ->             Omod_support.Cobj.dep ->             Omod_support.Cobj.Index.t -> Omod_support.Cobj.Index.cobj list         end       type res = Omod_support.Cobj.t Omod.Private.String.Map.t       val resolve_deps :         variants:Omod.Private.String.Set.t ->         sat:(Omod_support.Cobj.t -> bool) ->         kind:Omod_support.Cobj.kind ->         Omod_support.Cobj.Index.t ->         root_alts:Omod_support.Cobj.t list list ->         (Omod_support.Cobj.res list, string) Pervasives.result       val fold_res :         Omod_support.Cobj.res ->         (Omod_support.Cobj.t -> '-> 'a) -> '-> 'a       val loads :         variants:Omod.Private.String.Set.t ->         sat:(Omod_support.Cobj.t -> bool) ->         kind:Omod_support.Cobj.kind ->         Omod_support.Cobj.Index.t ->         root_alts:Omod_support.Cobj.t list list ->         (Omod.fpath list list, string) Pervasives.result     end   module Pkg :     sig       type t = Omod_support.Cobj.pkg_id       val of_dir :         ?err:Omod_support.Log.t -> Omod.fpath -> Omod_support.Pkg.t list       val find_cobjs :         ?err:Omod_support.Log.t ->         ?acc:Omod_support.Cobj.t list ->         Omod_support.Pkg.t -> Omod_support.Cobj.t list       val equal : Omod_support.Pkg.t -> Omod_support.Pkg.t -> bool       val compare : Omod_support.Pkg.t -> Omod_support.Pkg.t -> int       val pp : Format.formatter -> Omod_support.Pkg.t -> unit       val pp_name : Format.formatter -> Omod_support.Pkg.t -> unit       module Set :         sig           type elt = t           type t           val empty : t           val is_empty : t -> bool           val mem : elt -> t -> bool           val add : elt -> t -> t           val singleton : elt -> t           val remove : elt -> t -> t           val union : t -> t -> t           val inter : t -> t -> t           val diff : t -> t -> t           val compare : t -> t -> int           val equal : t -> t -> bool           val subset : t -> t -> bool           val iter : (elt -> unit) -> t -> unit           val fold : (elt -> '-> 'a) -> t -> '-> 'a           val for_all : (elt -> bool) -> t -> bool           val exists : (elt -> bool) -> t -> bool           val filter : (elt -> bool) -> t -> t           val partition : (elt -> bool) -> t -> t * t           val cardinal : t -> int           val elements : t -> elt list           val min_elt : t -> elt           val max_elt : t -> elt           val choose : t -> elt           val split : elt -> t -> t * bool * t           val find : elt -> t -> elt           val of_list : elt list -> t         end       module Map :         sig           type key = t           type +'a t           val empty : 'a t           val is_empty : 'a t -> bool           val mem : key -> 'a t -> bool           val add : key -> '-> 'a t -> 'a t           val singleton : key -> '-> 'a t           val remove : key -> 'a t -> 'a t           val merge :             (key -> 'a option -> 'b option -> 'c option) ->             'a t -> 'b t -> 'c t           val union : (key -> '-> '-> 'a option) -> 'a t -> 'a t -> 'a t           val compare : ('-> '-> int) -> 'a t -> 'a t -> int           val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool           val iter : (key -> '-> unit) -> 'a t -> unit           val fold : (key -> '-> '-> 'b) -> 'a t -> '-> 'b           val for_all : (key -> '-> bool) -> 'a t -> bool           val exists : (key -> '-> bool) -> 'a t -> bool           val filter : (key -> '-> bool) -> 'a t -> 'a t           val partition : (key -> '-> bool) -> 'a t -> 'a t * 'a t           val cardinal : 'a t -> int           val bindings : 'a t -> (key * 'a) list           val min_binding : 'a t -> key * 'a           val max_binding : 'a t -> key * 'a           val choose : 'a t -> key * 'a           val split : key -> 'a t -> 'a t * 'a option * 'a t           val find : key -> 'a t -> 'a           val map : ('-> 'b) -> 'a t -> 'b t           val mapi : (key -> '-> 'b) -> 'a t -> 'b t         end       type signature = Omod_support.Digest.t       val signature :         ?err:Omod_support.Log.t ->         Omod_support.Pkg.t -> Omod_support.Pkg.signature       type info       val info :         signature:Omod_support.Pkg.signature ->         cobjs:Omod_support.Cobj.t list -> Omod_support.Pkg.info       val info_signature :         Omod_support.Pkg.info -> Omod_support.Pkg.signature       val info_cobjs : Omod_support.Pkg.info -> Omod_support.Cobj.t list       val pp_info : Format.formatter -> Omod_support.Pkg.info -> unit       type db = Omod_support.Pkg.info Omod_support.Pkg.Map.t       val db :         ?err:Omod_support.Log.t ->         ?note:Omod_support.Log.t ->         ?progress:bool ->         ?init:Omod_support.Pkg.db ->         Omod_support.Pkg.t list -> Omod_support.Pkg.db       val db_to_name_db :         Omod_support.Pkg.db ->         (Omod_support.Pkg.t * Omod_support.Pkg.info)         Omod.Private.String.Map.t       val db_to_cobj_index : Omod_support.Pkg.db -> Omod_support.Cobj.Index.t       type diff =           [ `Changed of Omod_support.Pkg.t * Omod_support.Pkg.signature           | `Gone of Omod_support.Pkg.t           | `New of Omod_support.Pkg.t * Omod_support.Pkg.signature ]       val pp_diff : Omod_support.Pkg.diff Omod.Private.Fmt.t       val diff :         Omod_support.Pkg.db ->         (Omod_support.Pkg.t * Omod_support.Pkg.signature) list ->         Omod_support.Pkg.diff list       val update :         ?err:Omod_support.Log.t ->         ?note:Omod_support.Log.t ->         ?progress:bool ->         Omod_support.Pkg.db ->         Omod_support.Pkg.diff list -> Omod_support.Pkg.db     end   module Conf :     sig       type t       val v :         ?cache:Omod.fpath ->         ?libdir:Omod.fpath ->         unit -> (Omod_support.Conf.t, string) Pervasives.result       val cache : Omod_support.Conf.t -> Omod.fpath       val libdir : Omod_support.Conf.t -> Omod.fpath       val pp : Format.formatter -> Omod_support.Conf.t -> unit       val cache_env : string       val libdir_env : string     end   module Cache :     sig       type t       val v : pkgs:Omod_support.Pkg.db -> Omod_support.Cache.t       val pkgs : Omod_support.Cache.t -> Omod_support.Pkg.db       val file : Omod_support.Conf.t -> Omod.fpath       val read :         Omod_support.Conf.t ->         force:bool ->         err:Omod_support.Log.t ->         (Omod_support.Cache.t option, string) Pervasives.result       val write :         Omod_support.Conf.t ->         Omod_support.Cache.t -> (unit, string) Pervasives.result       val clear : Omod_support.Conf.t -> (unit, string) Pervasives.result       val get :         ?err:Omod_support.Log.t ->         ?note:Omod_support.Log.t ->         ?progress:bool ->         Omod_support.Conf.t ->         force:bool ->         trust:bool -> (Omod_support.Cache.t, string) Pervasives.result       val status :         ?err:Omod_support.Log.t ->         Omod_support.Conf.t ->         Omod_support.Cache.t option -> Omod_support.Pkg.diff list       val codec : Omod_support.Cache.t Omod_support.Codec.t     end end