sig
  type install
  val nothing : Topkg.Pkg.install
  val flatten : Topkg.Pkg.install list -> Topkg.Pkg.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 lib_root : Topkg.Pkg.field
  val libexec : Topkg.Pkg.exec_field
  val libexec_root : 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 ->
    ?cma:bool ->
    ?cmxa:bool ->
    ?cmxs: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
  val ocb_tag : Topkg.Conf.t -> 'Topkg.Conf.key -> string -> Topkg.Cmd.t
  val ocb_bool_tag :
    Topkg.Conf.t -> bool Topkg.Conf.key -> string -> Topkg.Cmd.t
  val ocb_bool_tags :
    Topkg.Conf.t -> (bool Topkg.Conf.key * string) list -> 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