sig
  type kind =
      [ `Bin
      | `Doc
      | `Etc
      | `Lib
      | `Man
      | `Other of Assemblage.Path.t
      | `Sbin
      | `Share
      | `Share_root
      | `Stublibs
      | `Toplevel ]
  val pp_kind : Format.formatter -> Assemblage.Dir.kind -> unit
  val kind : [< `Dir ] Assemblage.part -> Assemblage.Dir.kind
  val install : [< `Dir ] Assemblage.part -> bool
  type spec =
      Assemblage.Part.kind Assemblage.Part.t ->
      (Assemblage.Path.t * Assemblage.Path.rel option) list
      Assemblage.Conf.value
  val all : Assemblage.Dir.spec
  val all_output : Assemblage.Dir.spec
  val all_input : Assemblage.Dir.spec
  val file_exts : Assemblage.Path.ext list -> Assemblage.Dir.spec
  val bin : Assemblage.Dir.spec
  val lib : Assemblage.Dir.spec
  val doc : Assemblage.Dir.spec
  val v :
    ?usage:Assemblage.Part.usage ->
    ?exists:bool Assemblage.Conf.value ->
    ?args:Assemblage.Args.t ->
    ?spec:Assemblage.Dir.spec ->
    ?install:bool ->
    Assemblage.Dir.kind ->
    [< `Base | `Bin | `Dir | `Doc | `Lib | `Unit ] Assemblage.part list ->
    [< Assemblage.part_kind > `Dir ] Assemblage.part
end