module Cudf:sig..end
CUDF library
type package = {
|
package : |
|
version : |
|
depends : |
|
conflicts : |
|
provides : |
|
installed : |
|
was_installed : |
|
keep : |
|
pkg_extra : |
}
Representation of a parsed package description item.
With this representation, optional properties have already been expanded to their default values (if they have one). It is not possible to know whether they were present or not in the CUDF syntax.
val (=%) : package -> package -> boolpackage equality up to <name, version> i.e. 2 packages are equal iff they have the same name and version
val (<%) : package -> package -> intPackage comparison up to <name, version>. Same rules of package equality,
but providing a suitable replacement for Pervasives.compare; useful for
sorting.
val (>%) : package -> package -> intSame as Cudf.(<%), but sort with greater versions first.
type request = {
|
request_id : |
|
install : |
|
remove : |
|
upgrade : |
|
req_extra : |
}
type preamble = {
|
preamble_id : |
(* | text following the "preamble: " postmark | *) |
|
property : |
(* | extra property declarations | *) |
|
univ_checksum : |
(* | universe checksum | *) |
|
status_checksum : |
(* | status checksum | *) |
|
req_checksum : |
(* | request checksum | *) |
}
val default_preamble : preambleimplement preamble defaults
val default_package : packageimplement package defaults
val default_request : requestimplement request defaults
typecudf_doc =preamble option * package list * request
a CUDF document with its information items
typecudf_item =[ `Package of package
| `Preamble of preamble
| `Request of request ]
a single information item
exception Constraint_violation of string
violation of a constraint imposed by CUDF specification
type universe
package universe (including package status, i.e., installed packages)
typecudf =preamble * universe * request
typesolution =preamble * universe
CUDF-based encoding of solutions, see CUDF 2.0, appendix B
A universe encoding a solution matters only for its installed
packages, which are considered to be the resulting package
status
val empty_universe : ?size:int -> unit -> universereturn an empty universe.
size : represents the initial size of the universe (default: 1023)val load_universe : package list -> universeConstraint_violation when a global CUDF constraint is violated in
the given package listval add_package : universe -> package -> unitadd a package to an existing universe. The universe is modified in place.
Constraint_violation if a package with the same name and version is
alreayd in the given universeval remove_package : universe -> Cudf_types.pkgname * Cudf_types.version -> unitremove a package from an existing universe. The universe is modified in place
val lookup_package : universe -> Cudf_types.pkgname * Cudf_types.version -> packageLookup a specific package via a <name, version> key
Not_found if the requested package cannot be foundval mem_package : universe -> Cudf_types.pkgname * Cudf_types.version -> boolCheck existence of a specific package in the universe via a <name, version> key
val mem_installed : ?include_features:bool ->
?ignore:(package -> bool) -> universe -> Cudf_types.vpkg -> boolcheck wheather a given package constraint is satisfied in a given
package status (i.e., the universe subset of installed packages)
include_features : allow constraint to be satisfied by features
(i.e., Provides). Default: trueignore : make the lookup skip over all packages matching the given
package predicate. Default: do not ignore any packageval who_provides : ?installed:bool ->
universe ->
Cudf_types.vpkg -> (package * Cudf_types.version option) listAsk who provides a given feature (predicate).
v of the
feature.installed : : consider only installed packages (default)val lookup_packages : ?filter:Cudf_types.constr ->
universe -> Cudf_types.pkgname -> package listlookup all available versions of a given package name
filter : filter the found packages according to the given
version constraint. Default: None (i.e., no filtering)val get_installed : universe -> Cudf_types.pkgname -> package listlookup all installed versions of a given package name.
Shorthand for lookup_packages composed with filtering on installed=true
val uid_by_package : universe -> package -> intreturn a unique integer identifier for the given package in the universe
Not_found if the given package cannot be found in the universeval package_by_uid : universe -> int -> packagereturn the package corresponding to the given unique identifier
Not_found if no package in the universe corresponds to the given
unique identifierval iter_packages : (package -> unit) -> universe -> unititer over all packages in the universe
val fold_packages : ('a -> package -> 'a) -> 'a -> universe -> 'afold over all packages in the universe
val iteri_packages : (int -> package -> unit) -> universe -> unititer on all packages in the universe, passing to the iteration function both the package and its unique identifier
val iter_packages_by_name : (Cudf_types.pkgname -> package list -> unit) -> universe -> unititer on all packages grouped by name. Each package name is associated to a list of packages with the same name and different versions
val fold_packages_by_name : ('a -> Cudf_types.pkgname -> package list -> 'a) ->
'a -> universe -> 'afold on all packages grouped by name. Each package name is associated to a list of packages with the same name and different versions
val package_names : universe -> Cudf_types.pkgname listreturn the list of all unique package names
val get_packages : ?filter:(package -> bool) -> universe -> package listconversion from universe to plain package list
filter : only return packages matching a given
predicate. Default is to return all packagesval universe_size : universe -> inttotal numer of available packages (no matter whether they are installed or not)
val installed_size : universe -> inttotal number of installed packages occurring in the universe
val status : universe -> universeProjection on packages having "installed: true".
Inefficient (involves Hashtbl.t cloning), use with care.
val lookup_package_property : package -> string -> stringlow-level property lookup: given a package, lookup on it a
property by name, returning its (pretty-printed, see
Cudf_types) value as a string
Not_found if the given property name is not associated to
the given package (note that "being associated with" does not
necessarily mean that the property appears in the stanza, due to
default values)val lookup_request_property : request -> string -> stringSame as Cudf.lookup_package_property, but acting on request
information items.
To lookup the request identifier as a string (which strictly speaking is not a property) you should lookup "request"
val lookup_preamble_property : preamble -> string -> stringSame as Cudf.lookup_package_property, but acting on preamble
information items.
To lookup the preamble identifier as a string (which strictly speaking is not a property) you should lookup "preamble"
val lookup_typed_package_property : package -> string -> Cudf_types.typed_valueSame as Cudf.lookup_package_property, but return a typed value.
val lookup_typed_request_property : request -> string -> Cudf_types.typed_valueSame as Cudf.lookup_request_property, but return a typed value.
val lookup_typed_preamble_property : preamble -> string -> Cudf_types.typed_valueSame as Cudf.lookup_preamble_property, but return a typed value.
val lookup_package_typedecl : ?extra:Cudf_types.typedecl -> string -> Cudf_types.typedecl1lookup the type declaration of a given property (either core or extra)
Not_found if no declaration could be found for the given propertyval version_matches : Cudf_types.version -> Cudf_types.constr -> boolCheck whether a version matches a version constraint,
e.g. version_matches 1 (Some(`Eq, 2)) = false
val (|=) : Cudf_types.version -> Cudf_types.constr -> boolSame as Cudf.version_matches