Up

module OpamTypes

: sig

Common types used by other modules

#
type 'a success = [
| `Successful of 'a
]

Error and continuation handling

#
type 'a error = [
| `Error of 'a
| `Exception of exn
]
#
type ('a, 'b) status = [
| 'a success
| 'b error
]

Filenames

#
type basename = OpamFilename.Base.t

Basenames

#
type dirname = OpamFilename.Dir.t

Directory names

#
type filename = OpamFilename.t

Filenames

#
type filename_set = OpamFilename.Set.t

Set of files

#
type 'a filename_map = 'a OpamFilename.Map.t

Map of files

#
type generic_file = OpamFilename.generic_file =
# | D of dirname
# | F of filename

Generalized file type

#
type 'a download =
# | Up_to_date of 'a
# | Not_available of string
# | Result of 'a

Download result

Packages

#
type package = OpamPackage.t

Packages are (name * version) tuple

#
type package_set = OpamPackage.Set.t

Set of packages

#
type 'a package_map = 'a OpamPackage.Map.t

Map of packages

#
type name = OpamPackage.Name.t

Package names

#
type name_set = OpamPackage.Name.Set.t

Set of package names

#
type 'a name_map = 'a OpamPackage.Name.Map.t

Map of package names

#
type version = OpamPackage.Version.t

Package versions

#
type version_set = OpamPackage.Version.Set.t

Set of package versions

Compilers

#
type compiler = OpamCompiler.t

Compiler names

#
type compiler_set = OpamCompiler.Set.t

Set of compiler names

#
type 'a compiler_map = 'a OpamCompiler.Map.t

Maps of compiler names

#
type compiler_version = OpamCompiler.Version.t

Compiler versions

#
type opam_version = OpamVersion.t

OPAM versions

#
type compiler_constraint = OpamCompiler.Version.constr

Compiler constraints

Variables

#
type variable = OpamVariable.t

Variables

#
type full_variable = OpamVariable.Full.t

Fully qualified variables (ie. with the name of sections/sub-sections they appear in)

#
type variable_contents = OpamVariable.variable_contents =
# | B of bool
# | S of string

Content of user-defined variables

#
type variable_map = OpamVariable.variable_contents OpamVariable.Map.t

A map from variables to their contents (i.e an environment)

#
type package_flag =
# | LightUninstall
(*The package doesn't require downloading to uninstall*)
# | AllSwitches
(*The package is pervasive on all switches*)

Opam package flags

#
type package_dep_flag =
# | Depflag_Build
# | Depflag_Test
# | Depflag_Doc

Flags on dependencies

#
module type GenericPackage = sig

At some point we want to abstract so that the same functions can be used over CUDF and OPAM packages

#
val name_to_string : t -> string
#
val version_to_string : t -> string
end

Formulas

#
type 'a generic_formula = 'a OpamFormula.formula =
# | Empty
# | Atom of 'a
# | Block of 'a generic_formula
# | And of 'a generic_formula * 'a generic_formula

A generic formula

#
type atom = OpamFormula.atom

Formula atoms

#
type formula = OpamFormula.t

Formula over versionned packages

#
type ext_formula = package_dep_flag list OpamFormula.ext_package_formula

Formula over versionned packages

#
type 'a conjunction = 'a OpamFormula.conjunction

AND formulat

#
type 'a disjunction = 'a OpamFormula.disjunction

OR formulat

Repositories

#
type repository_name = OpamRepositoryName.t

Repository names

#
type 'a repository_name_map = 'a OpamRepositoryName.Map.t

Maps of repository names

#
type repository_kind = [
| `http
| `local
| `git
| `darcs
| `hg
]

Repository kind

#
type address = string * string option

Repository address

#
type repository_root = dirname

Repository root

#
type repository = {
# repo_root
: repository_root;
# repo_name
: repository_name;
# repo_kind
: repository_kind;
# repo_address
: address;
# repo_priority
: int;
}

Repositories

Solver

#
type 'a action =
# | To_change of 'a option * 'a
# | To_delete of 'a
# | To_recompile of 'a

The solver answers a list of actions to perform

#
type 'a cause =
# | Use of 'a list
# | Required_by of 'a list
# | Conflicts_with of 'a list
# | Upstream_changes
# | Requested
# | Unknown

The possible causes of an action.

#
type ('a, 'b) gen_solution = {
# to_remove
: 'a list;
# to_process
: 'b;
# root_causes
: ('a * 'a cause) list;
}

The type for solutions

#
type solver_result =
# | Nothing_to_do
# | OK of package action list
(*List of successful actions*)
# | Aborted
# | No_solution
# | Error of package action list * package action list * package action list
(*List of successful actions, list of actions with errors, list of remaining undone actions*)

Solver result

#
type ('a, 'b) result =
# | Success of 'a
# | Conflicts of 'b

Solver result

#
type solver_criteria = [
| `Default
| `Upgrade
| `Fixup
]
#
type 'a request = {
# criteria
: solver_criteria;
# wish_install
: 'a conjunction;
# wish_remove
: 'a conjunction;
# wish_upgrade
: 'a conjunction;
}

Solver request

#
type user_action =
# | Install of name_set
(*The 'root' packages to be installed*)
# | Upgrade of package_set
(*The subset of packages to upgrade*)
# | Reinstall of package_set
# | Depends
# | Init of name_set
(*The 'root' packages to be installed*)
# | Remove
# | Switch of name_set
(*The 'root' packages to be installed*)
# | Import of name_set
(*The 'root' packages to be installed*)

user request action

#
type universe = {
# u_packages
: package_set;
# u_installed
: package_set;
# u_available
: package_set;
# u_depends
: ext_formula package_map;
# u_depopts
: ext_formula package_map;
# u_conflicts
: formula package_map;
# u_action
: user_action;
# u_installed_roots
: package_set;
# u_pinned
: package_set;
}

Solver universe

Command line arguments

#
type upload = {
# upl_opam
: filename;
# upl_descr
: filename;
# upl_archive
: filename;
}

Upload arguments

#
type pin_option =
# | Version of version
# | Local of dirname
# | Git of address
# | Darcs of address
# | Hg of address

Pinned packages options

#
type pin_kind = [
| `version
| `git
| `darcs
| `hg
| `local
]

Pin kind

#
type shell = [
| `fish
| `csh
| `zsh
| `sh
| `bash
]

Shell compatibility modes

#
type global_config = {
# complete
: bool;
# switch_eval
: bool;
}

Global configuration option

#
type user_config = {
# shell
: shell;
# ocamlinit
: bool;
# dot_profile
: filename option;
}

User configuration option

Filtered commands

#
type relop = OpamFormula.relop
#
type logop = [
| `And
| `Or
]
#
type pfxop = [
| `Not
]
#
type filter =
# | FBool of bool
# | FString of string
# | FIdent of string
# | FOp of filter * relop * filter
# | FAnd of filter * filter
# | FOr of filter * filter
# | FNot of filter

Filter

#
type simple_arg =
# | CString of string
# | CIdent of string

A command argument

#
type arg = simple_arg * filter option

Command argument

#
type command = arg list * filter option

Command

Untyped generic file format

#
type pos = filename * int * int

Source file positions: filename, line, column

#
type value =
# | Bool of pos * bool
# | Int of pos * int
# | String of pos * string
# | Relop of pos * relop * value * value
# | Prefix_relop of pos * relop * value
# | Logop of pos * logop * value * value
# | Pfxop of pos * pfxop * value
# | Ident of pos * string
# | List of pos * value list
# | Group of pos * value list
# | Option of pos * value * value list
# | Env_binding of pos * string * value * value

Base values

#
type file_section = {
# section_kind
: string;
# section_name
: string;
# section_items
: file_item list;
}

A file section

#
type file_item =
# | Section of pos * file_section
# | Variable of pos * string * value

A file is composed of sections and variable definitions

#
type file = {
# file_contents
: file_item list;
# file_name
: string;
# file_format
: opam_version;
}

A file is a list of items and the filename

Switches

#
type switch = OpamSwitch.t

Compiler switches

#
type switch_set = OpamSwitch.Set.t

Set of compiler switches

#
type 'a switch_map = 'a OpamSwitch.Map.t

Map of compile switches

Misc

#
type lock =
# | Read_lock of unit -> unit
# | Global_lock of unit -> unit
# | Switch_lock of unit -> unit
# | Global_with_switch_cont_lock of unit -> switch * (unit -> unit)

The different kinds of locks

#
type file_attribute = OpamFilename.Attribute.t

A line in urls.tx

#
type file_attribute_set = OpamFilename.Attribute.Set.t

All the lines in urls.txt

#
type 'a optional = {
# c
: 'a;(*Contents*)
# optional
: bool;(*Is the contents optional*)
}

Optional contents

#
type stats = {
# s_install
: int;
# s_reinstall
: int;
# s_upgrade
: int;
# s_downgrade
: int;
# s_remove
: int;
}

Upgrade statistics

#
type env = (string * string) list

Environement variables

#
type env_updates = (string * string * string) list

Environment updates

Repository and global states

#
type checksums = string list

Checksums

#
type json = OpamJson.t

JSON

#
type 'a updates = {
# created
: 'a;
# updated
: 'a;
# deleted
: 'a;
# changed
: 'a;
}

Updates

end