module Cudf_checker:sig
..end
Consistency and problem-solution matching.
typeinconsistency_reason =
[ `Conflict of
(Cudf_types.pkgname * Cudf_types.version) * Cudf_types.vpkglist
| `Unsat_dep of
(Cudf_types.pkgname * Cudf_types.version) * Cudf_types.vpkgformula ]
typebad_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
val satisfy_formula : Cudf.universe -> Cudf_types.vpkgformula -> bool * Cudf_types.vpkgformula
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
true, []
if the list is disjoint; 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
true, None
if the given installation is consistent,
false, Some r
otherwise, where r is the inconsistency reasonval 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.
Returns true, []
if this is the case, false, l
otherwise, where r explains why the solution is bad