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

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

val is_consistent : Cudf.universe -> bool * inconsistency_reason option
val is_solution : Cudf.universe * Cudf.request ->
Cudf.universe -> bool * bad_solution_reason list

is_solution (status, req) sol checks whether sol fulfills the CUDF upgrade scenario described by (status, req)

Note: the sol package universe must contain all relevant package metadata (e.g. Depends, Conflicts, etc.), copied from status, a compact universe only containing package names and versions won't be enough. To load compact universes see Cudf_parser.load_solution.

Note: in accordance with CUDF semantics, for a solution to be valid, the solution shall correspond to a consistent universe. A solution that does satisfy user request, but at the same time proposes an inconsistent universe (as per Cudf_checker.is_consistent) will be reported by is_solution as not being a valid solution.