sig
  exception Process_error of OpamProcess.result
  val process_error : OpamProcess.result -> 'a
  exception Internal_error of string
  val internal_error : ('a, unit, string, 'b) Pervasives.format4 -> 'a
  val with_tmp_dir : (string -> 'a) -> 'a
  val copy : string -> string -> unit
  val link : string -> string -> unit
  val real_path : string -> string
  val string_of_channel : Pervasives.in_channel -> string
  val read : string -> string
  val write : string -> string -> unit
  val remove : string -> unit
  val remove_file : string -> unit
  val remove_dir : string -> unit
  val chdir : string -> unit
  val in_dir : string -> (unit -> 'a) -> 'a
  val files_with_links : string -> string list
  val rec_files : string -> string list
  val files : string -> string list
  val rec_dirs : string -> string list
  val dirs : string -> string list
  val ocaml_version : string option Lazy.t
  val system_ocamlc_where : string option Lazy.t
  val system_ocamlc_version : string option Lazy.t
  val directories_with_links : string -> string list
  type command = string list
  val command_exists : ?env:string array -> string -> bool
  val command :
    ?verbose:bool ->
    ?env:string array ->
    ?name:string ->
    ?metadata:(string * string) list -> OpamSystem.command -> unit
  val commands :
    ?verbose:bool ->
    ?env:string array ->
    ?name:string ->
    ?metadata:(string * string) list ->
    ?keep_going:bool -> OpamSystem.command list -> unit
  val read_command_output :
    ?verbose:bool ->
    ?env:string array ->
    ?metadata:(string * string) list -> OpamSystem.command -> string list
  val is_tar_archive : string -> bool
  val extract : string -> string -> unit
  val extract_in : string -> string -> unit
  val mkdir : string -> unit
  val flock : string -> unit
  val funlock : string -> unit
  val download : overwrite:bool -> filename:string -> dst:string -> string
  val patch : string -> unit
  val temp_file : ?dir:string -> string -> string
  val print_stats : unit -> unit
end