`sig type 'a success = [ `Successful of 'a ] type 'a error = [ `Error of 'a | `Exception of exn ] type ('a, 'b) status = [ `Error of 'b | `Exception of exn | `Successful of 'a ] type basename = OpamFilename.Base.t type dirname = OpamFilename.Dir.t type filename = OpamFilename.t type filename_set = OpamFilename.Set.t type 'a filename_map = 'a OpamFilename.Map.t type generic_file = OpamFilename.generic_file = D of OpamTypes.dirname | F of OpamTypes.filename type 'a download = Up_to_date of 'a | Not_available of string | Result of 'a type package = OpamPackage.t type package_set = OpamPackage.Set.t type 'a package_map = 'a OpamPackage.Map.t type name = OpamPackage.Name.t type name_set = OpamPackage.Name.Set.t type 'a name_map = 'a OpamPackage.Name.Map.t type version = OpamPackage.Version.t type version_set = OpamPackage.Version.Set.t type compiler = OpamCompiler.t type compiler_set = OpamCompiler.Set.t type 'a compiler_map = 'a OpamCompiler.Map.t type compiler_version = OpamCompiler.Version.t type opam_version = OpamVersion.t type compiler_constraint = OpamCompiler.Version.constr type variable = OpamVariable.t type full_variable = OpamVariable.Full.t type variable_contents = OpamVariable.variable_contents = B of bool | S of string type variable_map = OpamVariable.variable_contents OpamVariable.Map.t type package_flag = Pkgflag_LightUninstall | Pkgflag_AllSwitches | Pkgflag_Verbose | Pkgflag_Plugin | Pkgflag_Unknown of string type package_dep_flag = Depflag_Build | Depflag_Test | Depflag_Doc | Depflag_Dev | Depflag_Unknown of string module type GenericPackage = sig type t val to_string : t -> string val to_json : t -> OpamJson.t val compare : t -> t -> int val hash : t -> int val equal : t -> t -> bool val name_to_string : t -> string val version_to_string : t -> string end type 'a generic_formula = 'a OpamFormula.formula = Empty | Atom of 'a | Block of 'a OpamTypes.generic_formula | And of 'a OpamTypes.generic_formula * 'a OpamTypes.generic_formula | Or of 'a OpamTypes.generic_formula * 'a OpamTypes.generic_formula type atom = OpamFormula.atom type formula = OpamFormula.t type ext_formula = OpamTypes.package_dep_flag list OpamFormula.ext_package_formula type 'a conjunction = 'a OpamFormula.conjunction type 'a disjunction = 'a OpamFormula.disjunction type repository_name = OpamRepositoryName.t type 'a repository_name_map = 'a OpamRepositoryName.Map.t type repository_kind = [ `darcs | `git | `hg | `http | `local ] type address = string * string option type repository_root = OpamTypes.dirname type repository = { repo_root : OpamTypes.repository_root; repo_name : OpamTypes.repository_name; repo_kind : OpamTypes.repository_kind; repo_address : OpamTypes.address; repo_priority : int; } type 'a action = To_change of 'a option * 'a | To_delete of 'a | To_recompile of 'a type 'a cause = Use of 'a list | Required_by of 'a list | Conflicts_with of 'a list | Upstream_changes | Requested | Unknown type solver_result = Nothing_to_do | OK of OpamTypes.package OpamTypes.action list | Aborted | No_solution | Error of OpamTypes.package OpamTypes.action list * OpamTypes.package OpamTypes.action list * OpamTypes.package OpamTypes.action list type ('a, 'b) result = Success of 'a | Conflicts of 'b type solver_criteria = [ `Default | `Fixup | `Upgrade ] type 'a request = { criteria : OpamTypes.solver_criteria; wish_install : 'a OpamTypes.conjunction; wish_remove : 'a OpamTypes.conjunction; wish_upgrade : 'a OpamTypes.conjunction; } type user_action = Install of OpamTypes.name_set | Upgrade of OpamTypes.package_set | Reinstall of OpamTypes.package_set | Depends | Init | Remove | Switch of OpamTypes.name_set | Import of OpamTypes.name_set type universe = { u_packages : OpamTypes.package_set; u_installed : OpamTypes.package_set; u_available : OpamTypes.package_set; u_depends : OpamTypes.ext_formula OpamTypes.package_map; u_depopts : OpamTypes.ext_formula OpamTypes.package_map; u_conflicts : OpamTypes.formula OpamTypes.package_map; u_action : OpamTypes.user_action; u_installed_roots : OpamTypes.package_set; u_pinned : OpamTypes.package_set; u_base : OpamTypes.package_set; } type upload = { upl_opam : OpamTypes.filename; upl_descr : OpamTypes.filename; upl_archive : OpamTypes.filename; } type pin_option = Version of OpamTypes.version | Local of OpamTypes.dirname | Git of OpamTypes.address | Darcs of OpamTypes.address | Hg of OpamTypes.address | Http of OpamTypes.address type pin_kind = [ `darcs | `git | `hg | `http | `local | `version ] type shell = [ `bash | `csh | `fish | `sh | `zsh ] type global_config = { complete : bool; switch_eval : bool; } type user_config = { shell : OpamTypes.shell; ocamlinit : bool; dot_profile : OpamTypes.filename option; } type relop = OpamFormula.relop type logop = [ `And | `Or ] type pfxop = [ `Not ] type filter = FBool of bool | FString of string | FIdent of (OpamTypes.name list * OpamTypes.variable * (string * string) option) | FOp of OpamTypes.filter * OpamTypes.relop * OpamTypes.filter | FAnd of OpamTypes.filter * OpamTypes.filter | FOr of OpamTypes.filter * OpamTypes.filter | FNot of OpamTypes.filter | FUndef type simple_arg = CString of string | CIdent of string type arg = OpamTypes.simple_arg * OpamTypes.filter option type command = OpamTypes.arg list * OpamTypes.filter option type pos = OpamTypes.filename * int * int type value = Bool of OpamTypes.pos * bool | Int of OpamTypes.pos * int | String of OpamTypes.pos * string | Relop of OpamTypes.pos * OpamTypes.relop * OpamTypes.value * OpamTypes.value | Prefix_relop of OpamTypes.pos * OpamTypes.relop * OpamTypes.value | Logop of OpamTypes.pos * OpamTypes.logop * OpamTypes.value * OpamTypes.value | Pfxop of OpamTypes.pos * OpamTypes.pfxop * OpamTypes.value | Ident of OpamTypes.pos * string | List of OpamTypes.pos * OpamTypes.value list | Group of OpamTypes.pos * OpamTypes.value list | Option of OpamTypes.pos * OpamTypes.value * OpamTypes.value list | Env_binding of OpamTypes.pos * string * OpamTypes.value * OpamTypes.value type file_section = { section_kind : string; section_name : string; section_items : OpamTypes.file_item list; } and file_item = Section of OpamTypes.pos * OpamTypes.file_section | Variable of OpamTypes.pos * string * OpamTypes.value type file = { file_contents : OpamTypes.file_item list; file_name : string; file_format : OpamTypes.opam_version; } type switch = OpamSwitch.t type switch_set = OpamSwitch.Set.t type 'a switch_map = 'a OpamSwitch.Map.t type lock = Read_lock of (unit -> unit) | Global_lock of (unit -> unit) | Switch_lock of (unit -> unit) | Global_with_switch_cont_lock of (unit -> OpamTypes.switch * (unit -> unit)) type file_attribute = OpamFilename.Attribute.t type file_attribute_set = OpamFilename.Attribute.Set.t type 'a optional = { c : 'a; optional : bool; } type stats = { s_install : int; s_reinstall : int; s_upgrade : int; s_downgrade : int; s_remove : int; } type env = (string * string) list type env_updates = (string * string * string) list type tags = OpamMisc.StringSet.t OpamMisc.StringSetMap.t type checksums = string list type json = OpamJson.t type 'a updates = { created : 'a; updated : 'a; deleted : 'a; changed : 'a; } end`