Module Cudf_checker

module Cudf_checker: sig .. end
Checkers for CUDF documents

Consistency and problem-solution matching.

type inconsistency_reason = [ `Conflict of
(Cudf_types.pkgname * Cudf_types.version) * Cudf_types.vpkglist
| `Unsat_dep of
(Cudf_types.pkgname * Cudf_types.version) * Cudf_types.vpkgformula ]
type bad_solution_reason = [ `Conflict of
(Cudf_types.pkgname * Cudf_types.version) * Cudf_types.vpkglist
| `Downgrade of Cudf_types.vpkglist
| `Missing_install of Cudf_types.vpkglist
| `Missing_upgrade of Cudf_types.vpkglist
| `Multi_upgrade of Cudf_types.pkgname list
| `Not_kept of Cudf_types.pkgname * Cudf_types.version * Cudf_types.enum_keep
| `Unremoved of Cudf_types.vpkglist
| `Unsat_dep of
(Cudf_types.pkgname * Cudf_types.version) * Cudf_types.vpkgformula ]
val explain_reason : bad_solution_reason -> string
provide a string explaining a given reason, meant for error messages
val satisfy_formula : Cudf.universe -> Cudf_types.vpkgformula -> bool * Cudf_types.vpkgformula
check whether a given package formula is satisfied by a given package status
Returns true, [] if the formula is satisfied; false, f otherwise, where f is a sub-formula of the input denoting an unsatisfiable formula (ideally, a witness of the unsatisfiability of the input formula)
val disjoint : Cudf.universe ->
?ignore:(Cudf.package -> bool) ->
Cudf_types.vpkglist -> bool * Cudf_types.vpkglist
check whether a package list is not satisfied by a given package status
Returns true, [] if the list is disjoin; false, l otherwise, where l is a list of packages satisfied by the universe (ideally, the reason of the non-disjointness)
val is_consistent : Cudf.universe -> bool * inconsistency_reason option
Returns true, None if the given installation is consistent, false, Some r otherwise, where r is the inconsistency reason
val is_solution : Cudf.cudf -> Cudf.solution -> bool * bad_solution_reason list
check whether a given solution fulfill the request of a given CUDF
Returns true, [] if this is the case, false, l otherwise, where r explains why the solution is bad