sig   val ( >>= ) :     ('a, 'b) Result.result ->     ('-> ('c, 'b) Result.result) -> ('c, 'b) Result.result   val ( >>| ) :     ('a, 'b) Result.result -> ('-> 'c) -> ('c, 'b) Result.result   type ('a, 'b) r = ('a, 'b) Result.result = Ok of '| Error of 'b   type 'a result = ('a, [ `Msg of string ]) Topkg.r   module R :     sig       val reword_error :         ('-> 'c) -> ('a, 'b) Result.result -> ('a, 'c) Result.result       type msg = [ `Msg of string ]       val error_msg : string -> ('b, [> Topkg.R.msg ]) Result.result       val error_msgf :         ('a, Format.formatter, unit, ('b, [> Topkg.R.msg ]) Result.result)         Pervasives.format4 -> 'a       val reword_error_msg :         ?replace:bool ->         (string -> Topkg.R.msg) ->         ('a, Topkg.R.msg) Result.result ->         ('a, [> Topkg.R.msg ]) Result.result     end   val strf : ('a, Format.formatter, unit, string) Pervasives.format4 -> 'a   module String :     sig       external length : string -> int = "%string_length"       external get : string -> int -> char = "%string_safe_get"       external set : bytes -> int -> char -> unit = "%string_safe_set"       external create : int -> bytes = "caml_create_string"       val make : int -> char -> string       val init : int -> (int -> char) -> string       val copy : string -> string       val sub : string -> int -> int -> string       val fill : bytes -> int -> int -> char -> unit       val blit : string -> int -> bytes -> int -> int -> unit       val concat : string -> string list -> string       val iter : (char -> unit) -> string -> unit       val iteri : (int -> char -> unit) -> string -> unit       val map : (char -> char) -> string -> string       val mapi : (int -> char -> char) -> string -> string       val trim : string -> string       val escaped : string -> string       val index : string -> char -> int       val rindex : string -> char -> int       val index_from : string -> int -> char -> int       val rindex_from : string -> int -> char -> int       val contains : string -> char -> bool       val contains_from : string -> int -> char -> bool       val rcontains_from : string -> int -> char -> bool       val uppercase : string -> string       val lowercase : string -> string       val capitalize : string -> string       val uncapitalize : string -> string       val uppercase_ascii : string -> string       val lowercase_ascii : string -> string       val capitalize_ascii : string -> string       val uncapitalize_ascii : string -> string       type t = string       val compare : t -> t -> int       val equal : t -> t -> bool       external unsafe_get : string -> int -> char = "%string_unsafe_get"       external unsafe_set : bytes -> int -> char -> unit         = "%string_unsafe_set"       external unsafe_blit : string -> int -> bytes -> int -> int -> unit         = "caml_blit_string" [@@noalloc]       external unsafe_fill : bytes -> int -> int -> char -> unit         = "caml_fill_string" [@@noalloc]       val head : string -> char option       val is_prefix : affix:string -> string -> bool       val is_suffix : affix:string -> string -> bool       val for_all : (char -> bool) -> string -> bool       val exists : (char -> bool) -> string -> bool       val with_index_range : ?first:int -> ?last:int -> string -> string       val cut : ?rev:bool -> sep:char -> string -> (string * string) option       val cuts : ?empty:bool -> sep:char -> string -> string list       val parse_version : string -> (int * int * int * string option) option       val drop_initial_v : string -> string     end   type fpath = string   module Fpath :     sig       type t = Topkg.fpath       val append : Topkg.Fpath.t -> Topkg.Fpath.t -> Topkg.Fpath.t       val ( // ) : Topkg.Fpath.t -> Topkg.Fpath.t -> Topkg.Fpath.t       val is_dir_path : Topkg.Fpath.t -> bool       val is_file_path : Topkg.Fpath.t -> bool       val basename : Topkg.Fpath.t -> string       val dirname : Topkg.Fpath.t -> string       val get_ext : Topkg.Fpath.t -> string       val has_ext : string -> Topkg.Fpath.t -> bool       val rem_ext : Topkg.Fpath.t -> Topkg.Fpath.t     end   module Cmd :     sig       type t       val v : string -> Topkg.Cmd.t       val empty : Topkg.Cmd.t       val is_empty : Topkg.Cmd.t -> bool       val ( % ) : Topkg.Cmd.t -> string -> Topkg.Cmd.t       val ( %% ) : Topkg.Cmd.t -> Topkg.Cmd.t -> Topkg.Cmd.t       val add_arg : Topkg.Cmd.t -> string -> Topkg.Cmd.t       val add_args : Topkg.Cmd.t -> Topkg.Cmd.t -> Topkg.Cmd.t       val on : bool -> Topkg.Cmd.t -> Topkg.Cmd.t       val p : Topkg.fpath -> string       val equal : Topkg.Cmd.t -> Topkg.Cmd.t -> bool       val compare : Topkg.Cmd.t -> Topkg.Cmd.t -> int       val to_list : Topkg.Cmd.t -> string list       val of_list : ?slip:string -> string list -> Topkg.Cmd.t       val dump : Format.formatter -> Topkg.Cmd.t -> unit     end   module Log :     sig       type level = App | Error | Warning | Info | Debug       val level : unit -> Topkg.Log.level option       val set_level : Topkg.Log.level option -> unit       val level_to_string : Topkg.Log.level option -> string       val level_of_string :         string -> (Topkg.Log.level option, [ `Msg of string ]) Result.result       type 'a msgf =           (?header:string ->            ('a, Format.formatter, unit) Pervasives.format -> 'a) ->           unit       val msg : Topkg.Log.level -> 'Topkg.Log.msgf -> unit       val app : 'Topkg.Log.msgf -> unit       val err : 'Topkg.Log.msgf -> unit       val warn : 'Topkg.Log.msgf -> unit       val info : 'Topkg.Log.msgf -> unit       val debug : 'Topkg.Log.msgf -> unit       val on_error_msg :         ?level:Topkg.Log.level -> use:(unit -> 'a) -> 'Topkg.result -> 'a       val err_count : unit -> int       val warn_count : unit -> int     end   module OS :     sig       module Env :         sig           val var : string -> string option           val opt_var : string -> absent:string -> string         end       module File :         sig           val null : Topkg.fpath           val dash : Topkg.fpath           val exists : Topkg.fpath -> bool Topkg.result           val must_exist : Topkg.fpath -> Topkg.fpath Topkg.result           val delete : ?must_exist:bool -> Topkg.fpath -> unit Topkg.result           val fold :             ?skip:(Topkg.fpath -> bool) ->             (Topkg.fpath -> '-> 'a) ->             '-> Topkg.fpath list -> 'Topkg.result           val read : Topkg.fpath -> string Topkg.result           val write : Topkg.fpath -> string -> unit Topkg.result           val write_subst :             Topkg.fpath ->             (string * string) list -> string -> unit Topkg.result           val tmp : unit -> Topkg.fpath Topkg.result         end       module Dir :         sig           val exists : Topkg.fpath -> bool Topkg.result           val must_exist : Topkg.fpath -> Topkg.fpath Topkg.result           val contents :             ?dotfiles:bool ->             ?rel:bool -> Topkg.fpath -> Topkg.fpath list Topkg.result           val current : unit -> Topkg.fpath Topkg.result           val set_current : Topkg.fpath -> unit Topkg.result           val with_current :             Topkg.fpath -> ('-> 'b) -> '-> 'Topkg.result         end       module Cmd :         sig           val exists : Topkg.Cmd.t -> bool Topkg.result           val must_exist : Topkg.Cmd.t -> Topkg.Cmd.t Topkg.result           val run : ?err:Topkg.fpath -> Topkg.Cmd.t -> unit Topkg.result           val run_status :             ?err:Topkg.fpath ->             Topkg.Cmd.t -> [ `Exited of int ] Topkg.result           type run_status = Topkg.Cmd.t * [ `Exited of int ]           val success :             ('a * Topkg.OS.Cmd.run_status) Topkg.result -> 'Topkg.result           type run_out           val out_string :             ?trim:bool ->             Topkg.OS.Cmd.run_out ->             (string * Topkg.OS.Cmd.run_status) Topkg.result           val out_lines :             ?trim:bool ->             Topkg.OS.Cmd.run_out ->             (string list * Topkg.OS.Cmd.run_status) Topkg.result           val out_file :             Topkg.fpath ->             Topkg.OS.Cmd.run_out ->             (unit * Topkg.OS.Cmd.run_status) Topkg.result           val out_stdout :             Topkg.OS.Cmd.run_out ->             (unit * Topkg.OS.Cmd.run_status) Topkg.result           val to_string :             ?trim:bool -> Topkg.OS.Cmd.run_out -> string Topkg.result           val to_lines :             ?trim:bool -> Topkg.OS.Cmd.run_out -> string list Topkg.result           val to_file :             Topkg.fpath -> Topkg.OS.Cmd.run_out -> unit Topkg.result           val run_out :             ?err:Topkg.fpath -> Topkg.Cmd.t -> Topkg.OS.Cmd.run_out         end     end   module Vcs :     sig       type kind = [ `Git | `Hg ]       val pp_kind : Format.formatter -> Topkg.Vcs.kind -> unit       type commit_ish = string       type t       val kind : Topkg.Vcs.t -> Topkg.Vcs.kind       val dir : Topkg.Vcs.t -> Topkg.fpath       val cmd : Topkg.Vcs.t -> Topkg.Cmd.t       val find : ?dir:Topkg.fpath -> unit -> Topkg.Vcs.t option Topkg.result       val get : ?dir:Topkg.fpath -> unit -> Topkg.Vcs.t Topkg.result       val pp : Format.formatter -> Topkg.Vcs.t -> unit       val is_dirty : Topkg.Vcs.t -> bool Topkg.result       val not_dirty : Topkg.Vcs.t -> unit Topkg.result       val file_is_dirty : Topkg.Vcs.t -> Topkg.fpath -> bool Topkg.result       val head : ?dirty:bool -> Topkg.Vcs.t -> string Topkg.result       val commit_id :         ?dirty:bool ->         ?commit_ish:Topkg.Vcs.commit_ish ->         Topkg.Vcs.t -> string Topkg.result       val commit_ptime_s :         ?commit_ish:Topkg.Vcs.commit_ish -> Topkg.Vcs.t -> int Topkg.result       val describe :         ?dirty:bool ->         ?commit_ish:Topkg.Vcs.commit_ish ->         Topkg.Vcs.t -> string Topkg.result       val tags : Topkg.Vcs.t -> string list Topkg.result       val changes :         ?until:Topkg.Vcs.commit_ish ->         Topkg.Vcs.t ->         after:Topkg.Vcs.commit_ish -> (string * string) list Topkg.result       val tracked_files :         ?tree_ish:string -> Topkg.Vcs.t -> Topkg.fpath list Topkg.result       val clone : Topkg.Vcs.t -> dir:Topkg.fpath -> unit Topkg.result       val checkout :         ?branch:string ->         Topkg.Vcs.t -> commit_ish:Topkg.Vcs.commit_ish -> unit Topkg.result       val commit_files :         ?msg:string -> Topkg.Vcs.t -> Topkg.fpath list -> unit Topkg.result       val tag :         ?force:bool ->         ?sign:bool ->         ?msg:string ->         ?commit_ish:string -> Topkg.Vcs.t -> string -> unit Topkg.result       val delete_tag : Topkg.Vcs.t -> string -> unit Topkg.result     end   module Conf :     sig       type os = [ `Build_os | `Host_os ]       val tool : string -> Topkg.Conf.os -> Topkg.Cmd.t       type 'a conv       val conv :         ?docv:string ->         (string -> 'Topkg.result) ->         (Format.formatter -> '-> unit) -> 'Topkg.Conf.conv       val bool : bool Topkg.Conf.conv       val int : int Topkg.Conf.conv       val string : string Topkg.Conf.conv       val fpath : Topkg.fpath Topkg.Conf.conv       val some :         ?none:string -> 'Topkg.Conf.conv -> 'a option Topkg.Conf.conv       type 'a key       val key :         ?docv:string ->         ?doc:string ->         ?env:string ->         string -> 'Topkg.Conf.conv -> absent:'-> 'Topkg.Conf.key       val discovered_key :         ?docv:string ->         ?doc:string ->         ?env:string ->         string ->         'Topkg.Conf.conv ->         absent:(unit -> 'Topkg.result) -> 'Topkg.Conf.key       val with_pkg : ?default:bool -> string -> bool Topkg.Conf.key       type t       val value : Topkg.Conf.t -> 'Topkg.Conf.key -> 'a       val pkg_name : Topkg.Conf.t -> string       val build_dir : Topkg.Conf.t -> Topkg.fpath       val vcs : Topkg.Conf.t -> bool       val pinned : Topkg.Conf.t -> bool       type build_context = [ `Dev | `Distrib | `Pin ]       val build_context : Topkg.Conf.t -> [ `Dev | `Distrib | `Pin ]       val build_tests : Topkg.Conf.t -> bool       val debug : Topkg.Conf.t -> bool       val profile : Topkg.Conf.t -> bool       val dump : Format.formatter -> Topkg.Conf.t -> unit       module OCaml :         sig           type conf = Topkg.Conf.t           type t           val v :             Topkg.Conf.OCaml.conf -> Topkg.Conf.os -> Topkg.Conf.OCaml.t           val find : string -> Topkg.Conf.OCaml.t -> string option           val version : Topkg.Conf.OCaml.t -> int * int * int * string option           val ext_asm : Topkg.Conf.OCaml.t -> string           val ext_obj : Topkg.Conf.OCaml.t -> string           val ext_lib : Topkg.Conf.OCaml.t -> string           val ext_dll : Topkg.Conf.OCaml.t -> string           val ext_exe : Topkg.Conf.OCaml.t -> string           val native : Topkg.Conf.OCaml.t -> bool           val native_dynlink : Topkg.Conf.OCaml.t -> bool           val word_size : Topkg.Conf.OCaml.t -> int           val dump : Format.formatter -> Topkg.Conf.OCaml.t -> unit         end     end   module Exts :     sig       type ext       type t = Topkg.Exts.ext list       val api : Topkg.Exts.t       val cmx : Topkg.Exts.ext list       val c_library : Topkg.Exts.ext list       val c_dll_library : Topkg.Exts.ext list       val library : Topkg.Exts.ext list       val module_library : Topkg.Exts.ext list       val exe : Topkg.Exts.ext list       val exts : string list -> Topkg.Exts.ext list       val ext : string -> Topkg.Exts.ext list       val ext_to_string : Topkg.Conf.OCaml.t -> Topkg.Exts.ext -> string     end   module Pkg :     sig       type install       type field =           ?force:bool ->           ?built:bool ->           ?cond:bool ->           ?exts:Topkg.Exts.t ->           ?dst:Topkg.fpath -> Topkg.fpath -> Topkg.Pkg.install       type exec_field = ?auto:bool -> Topkg.Pkg.field       val bin : Topkg.Pkg.exec_field       val doc : Topkg.Pkg.field       val etc : Topkg.Pkg.field       val lib : Topkg.Pkg.field       val libexec : Topkg.Pkg.exec_field       val man : Topkg.Pkg.field       val misc : Topkg.Pkg.field       val sbin : Topkg.Pkg.exec_field       val share : Topkg.Pkg.field       val share_root : Topkg.Pkg.field       val stublibs : Topkg.Pkg.field       val toplevel : Topkg.Pkg.field       val unknown : string -> Topkg.Pkg.field       val test :         ?run:bool ->         ?dir:Topkg.fpath -> ?args:Topkg.Cmd.t -> Topkg.Pkg.exec_field       val mllib :         ?field:Topkg.Pkg.field ->         ?cond:bool ->         ?api:string list ->         ?dst_dir:Topkg.fpath -> Topkg.fpath -> Topkg.Pkg.install       val clib :         ?dllfield:Topkg.Pkg.field ->         ?libfield:Topkg.Pkg.field ->         ?cond:bool ->         ?lib_dst_dir:Topkg.fpath -> Topkg.fpath -> Topkg.Pkg.install       type build       val build :         ?prepare_on_pin:bool ->         ?dir:Topkg.fpath ->         ?pre:(Topkg.Conf.t -> unit Topkg.result) ->         ?cmd:(Topkg.Conf.t ->               Topkg.Conf.os -> Topkg.fpath list -> unit Topkg.result) ->         ?post:(Topkg.Conf.t -> unit Topkg.result) ->         ?clean:(Topkg.Conf.os -> build_dir:Topkg.fpath -> unit Topkg.result) ->         unit -> Topkg.Pkg.build       val build_cmd : Topkg.Conf.t -> Topkg.Conf.os -> Topkg.Cmd.t       val clean_cmd : Topkg.Conf.os -> build_dir:Topkg.fpath -> Topkg.Cmd.t       type watermark =           string *           [ `Name           | `Opam of Topkg.fpath option * string * string           | `String of string           | `Vcs of [ `Commit_id ]           | `Version           | `Version_num ]       type distrib       val distrib :         ?watermarks:Topkg.Pkg.watermark list ->         ?files_to_watermark:(unit -> Topkg.fpath list Topkg.result) ->         ?massage:(unit -> unit Topkg.result) ->         ?exclude_paths:(unit -> Topkg.fpath list Topkg.result) ->         ?uri:string -> unit -> Topkg.Pkg.distrib       val watermarks : Topkg.Pkg.watermark list       val files_to_watermark : unit -> Topkg.fpath list Topkg.result       val massage : unit -> unit Topkg.result       val exclude_paths : unit -> Topkg.fpath list Topkg.result       type publish       val publish :         ?artefacts:[ `Alt of string | `Distrib | `Doc ] list ->         unit -> Topkg.Pkg.publish       type std_file       val std_file : ?install:bool -> Topkg.fpath -> Topkg.Pkg.std_file       type meta_file       val meta_file :         ?lint:bool -> ?install:bool -> Topkg.fpath -> Topkg.Pkg.meta_file       type opam_file       val opam_file :         ?lint:bool ->         ?lint_deps_excluding:string list option ->         ?install:bool -> Topkg.fpath -> Topkg.Pkg.opam_file       val describe :         ?delegate:Topkg.Cmd.t ->         ?readmes:Topkg.Pkg.std_file list ->         ?licenses:Topkg.Pkg.std_file list ->         ?change_logs:Topkg.Pkg.std_file list ->         ?metas:Topkg.Pkg.meta_file list ->         ?opams:Topkg.Pkg.opam_file list ->         ?lint_files:Topkg.fpath list option ->         ?lint_custom:(unit -> Topkg.R.msg Topkg.result list) ->         ?distrib:Topkg.Pkg.distrib ->         ?publish:Topkg.Pkg.publish ->         ?build:Topkg.Pkg.build ->         string ->         (Topkg.Conf.t -> Topkg.Pkg.install list Topkg.result) -> unit     end   module Private :     sig       val disable_main : unit -> unit       module Codec :         sig           type error = Corrupted of (string * string) | Version of int * int           val pp_error :             Format.formatter -> Topkg.Private.Codec.error -> unit           exception Error of Topkg.Private.Codec.error           type 'a t           val v :             kind:string ->             enc:('-> string) ->             dec:(string -> 'a) -> 'Topkg.Private.Codec.t           val kind : 'Topkg.Private.Codec.t -> string           val enc : 'Topkg.Private.Codec.t -> '-> string           val dec : 'Topkg.Private.Codec.t -> string -> 'a           val dec_result :             'Topkg.Private.Codec.t -> string -> 'Topkg.result           val with_kind :             string -> 'Topkg.Private.Codec.t -> 'Topkg.Private.Codec.t           val write :             Topkg.fpath ->             'Topkg.Private.Codec.t -> '-> unit Topkg.result           val read :             Topkg.fpath -> 'Topkg.Private.Codec.t -> 'Topkg.result           val unit : unit Topkg.Private.Codec.t           val const : '-> 'Topkg.Private.Codec.t           val bool : bool Topkg.Private.Codec.t           val int : int Topkg.Private.Codec.t           val string : string Topkg.Private.Codec.t           val option :             'Topkg.Private.Codec.t -> 'a option Topkg.Private.Codec.t           val result :             ok:'Topkg.Private.Codec.t ->             error:'Topkg.Private.Codec.t ->             ('a, 'b) Result.result Topkg.Private.Codec.t           val list :             'Topkg.Private.Codec.t -> 'a list Topkg.Private.Codec.t           val pair :             'Topkg.Private.Codec.t ->             'Topkg.Private.Codec.t -> ('a * 'b) Topkg.Private.Codec.t           val t3 :             'Topkg.Private.Codec.t ->             'Topkg.Private.Codec.t ->             'Topkg.Private.Codec.t -> ('a * 'b * 'c) Topkg.Private.Codec.t           val t4 :             'Topkg.Private.Codec.t ->             'Topkg.Private.Codec.t ->             'Topkg.Private.Codec.t ->             'Topkg.Private.Codec.t ->             ('a * 'b * 'c * 'd) Topkg.Private.Codec.t           val t5 :             'Topkg.Private.Codec.t ->             'Topkg.Private.Codec.t ->             'Topkg.Private.Codec.t ->             'Topkg.Private.Codec.t ->             'Topkg.Private.Codec.t ->             ('a * 'b * 'c * 'd * 'e) Topkg.Private.Codec.t           val alt :             kind:string ->             ('-> int) ->             'Topkg.Private.Codec.t array -> 'Topkg.Private.Codec.t           val version :             int -> 'Topkg.Private.Codec.t -> 'Topkg.Private.Codec.t           val view :             ?kind:string ->             ('-> 'b) * ('-> 'a) ->             'Topkg.Private.Codec.t -> 'Topkg.Private.Codec.t           val msg : [ `Msg of string ] Topkg.Private.Codec.t           val result_error_msg :             'Topkg.Private.Codec.t -> 'Topkg.result Topkg.Private.Codec.t           val fpath : Topkg.Fpath.t Topkg.Private.Codec.t           val cmd : Topkg.Cmd.t Topkg.Private.Codec.t         end       module Pkg :         sig           type t           val empty : Topkg.Private.Pkg.t           val name : Topkg.Private.Pkg.t -> string           val delegate : Topkg.Private.Pkg.t -> Topkg.Cmd.t option           val build_dir : Topkg.Private.Pkg.t -> Topkg.fpath           val readmes : Topkg.Private.Pkg.t -> Topkg.fpath list           val change_logs : Topkg.Private.Pkg.t -> Topkg.fpath list           val licenses : Topkg.Private.Pkg.t -> Topkg.fpath list           val opam : name:string -> Topkg.Private.Pkg.t -> Topkg.fpath           val distrib_uri : Topkg.Private.Pkg.t -> string option           val publish_artefacts :             Topkg.Private.Pkg.t -> [ `Alt of string | `Distrib | `Doc ] list           val lint_custom :             Topkg.Private.Pkg.t ->             (unit -> Topkg.R.msg Topkg.result list) option           val lint_files : Topkg.Private.Pkg.t -> Topkg.fpath list option           val lint_metas : Topkg.Private.Pkg.t -> (Topkg.fpath * bool) list           val lint_opams :             Topkg.Private.Pkg.t ->             (Topkg.fpath * bool * string list option) list           val codec : Topkg.Private.Pkg.t Topkg.Private.Codec.t         end       module Ipc :         sig           type 'a t           val cmd : 'Topkg.Private.Ipc.t -> Topkg.Cmd.t           val codec : 'Topkg.Private.Ipc.t -> 'Topkg.Private.Codec.t           val answer : 'Topkg.Private.Ipc.t -> Topkg.fpath           val pkg : unit -> Topkg.Private.Pkg.t Topkg.Private.Ipc.t           val lint_custom :             unit -> Topkg.R.msg Topkg.result list option Topkg.Private.Ipc.t           val distrib_prepare :             dist_build_dir:Topkg.fpath ->             name:string ->             version:string ->             opam:Topkg.fpath ->             Topkg.fpath list Topkg.result Topkg.Private.Ipc.t         end       module Opam :         sig           module File :             sig               type t = (string * string list) list               val codec : Topkg.Private.Opam.File.t Topkg.Private.Codec.t               val fields :                 Topkg.fpath -> (string * string list) list Topkg.result             end         end     end end