sig
module Diagnostic :
sig
type request = Cudf.package list
type reason =
Dependency of
(Cudf.package * Cudf_types.vpkg list * Cudf.package list)
| Missing of (Cudf.package * Cudf_types.vpkg list)
| Conflict of (Cudf.package * Cudf.package * Cudf_types.vpkg)
type result =
Success of (?all:bool -> unit -> Cudf.package list)
| Failure of (unit -> Algo.Diagnostic.reason list)
type diagnosis = {
result : Algo.Diagnostic.result;
request : Algo.Diagnostic.request;
}
type reason_int =
DependencyInt of (int * Cudf_types.vpkg list * int list)
| MissingInt of (int * Cudf_types.vpkg list)
| ConflictInt of (int * int * Cudf_types.vpkg)
type result_int =
SuccessInt of (?all:bool -> unit -> int list)
| FailureInt of (unit -> Algo.Diagnostic.reason_int list)
type request_int = int list
val diagnosis :
Common.Util.projection ->
Cudf.universe ->
Algo.Diagnostic.result_int ->
Algo.Diagnostic.request_int -> Algo.Diagnostic.diagnosis
val result :
Common.Util.projection ->
Cudf.universe -> Algo.Diagnostic.result_int -> Algo.Diagnostic.result
val request :
Cudf.universe -> Algo.Diagnostic.request_int -> Cudf.package list
module ResultHash :
sig
type key = reason
type 'a t
val create : int -> 'a t
val clear : 'a t -> unit
val reset : 'a t -> unit
val copy : 'a t -> 'a t
val add : 'a t -> key -> 'a -> unit
val remove : 'a t -> key -> unit
val find : 'a t -> key -> 'a
val find_opt : 'a t -> key -> 'a option
val find_all : 'a t -> key -> 'a list
val replace : 'a t -> key -> 'a -> unit
val mem : 'a t -> key -> bool
val iter : (key -> 'a -> unit) -> 'a t -> unit
val filter_map_inplace : (key -> 'a -> 'a option) -> 'a t -> unit
val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
val length : 'a t -> int
val stats : 'a t -> Hashtbl.statistics
val to_seq : 'a t -> (key * 'a) Seq.t
val to_seq_keys : 'a t -> key Seq.t
val to_seq_values : 'a t -> 'a Seq.t
val add_seq : 'a t -> (key * 'a) Seq.t -> unit
val replace_seq : 'a t -> (key * 'a) Seq.t -> unit
val of_seq : (key * 'a) Seq.t -> 'a t
end
type summary = {
mutable missing : int;
mutable conflict : int;
mutable unique_missing : int;
mutable unique_conflict : int;
mutable unique_selfconflict : int;
summary : Cudf.package list Stdlib.ref Algo.Diagnostic.ResultHash.t;
statistic : (int * int, int Stdlib.ref) Stdlib.Hashtbl.t;
}
val default_result : int -> Algo.Diagnostic.summary
val collect :
Algo.Diagnostic.summary -> Algo.Diagnostic.diagnosis -> unit
val pp_out_version : Stdlib.Format.formatter -> unit
val pp_package :
?source:bool ->
?fields:bool ->
Common.CudfAdd.pp -> Stdlib.Format.formatter -> Cudf.package -> unit
val pp_list :
(Stdlib.Format.formatter -> 'a -> unit) ->
Stdlib.Format.formatter -> 'a list -> unit
val print_error :
?condense:bool ->
?minimal:bool ->
Common.CudfAdd.pp ->
Cudf.package ->
Stdlib.Format.formatter -> Algo.Diagnostic.reason list -> unit
val get_installationset :
?minimal:bool -> Algo.Diagnostic.diagnosis -> Cudf.package list
val is_solution : Algo.Diagnostic.diagnosis -> bool
val pp_summary :
?pp:Common.CudfAdd.pp ->
?explain:bool ->
unit -> Stdlib.Format.formatter -> Algo.Diagnostic.summary -> unit
val fprintf :
?pp:Common.CudfAdd.pp ->
?failure:bool ->
?success:bool ->
?explain:bool ->
?minimal:bool ->
?condense:bool ->
Stdlib.Format.formatter -> Algo.Diagnostic.diagnosis -> unit
val printf :
?pp:Common.CudfAdd.pp ->
?failure:bool ->
?success:bool -> ?explain:bool -> Algo.Diagnostic.diagnosis -> unit
val print_dot :
?pp:Common.CudfAdd.pp ->
?condense:bool ->
?addmissing:bool -> ?dir:string -> Algo.Diagnostic.diagnosis -> unit
end
module Depsolver_int :
sig
module R : sig type reason = Algo.Diagnostic.reason_int end
module S :
sig
module X : sig type reason = Diagnostic.reason_int end
type state
type var = int
type value = True | False | Unknown
type lit
val lit_of_var : var -> bool -> lit
val initialize_problem :
?print_var:(Format.formatter -> int -> unit) ->
?buffer:bool -> int -> state
val copy : state -> state
val propagate : state -> unit
val protect : state -> unit
val reset : state -> unit
val assignment : state -> value array
val assignment_true : state -> var list
val add_rule : state -> lit array -> X.reason list -> unit
val associate_vars : state -> lit -> var list -> unit
val solve_all : (state -> unit) -> state -> var -> bool
val solve : state -> var -> bool
val solve_lst : state -> var list -> bool
val collect_reasons : state -> var -> X.reason list
val collect_reasons_lst : state -> var list -> X.reason list
val dump : state -> (int * bool) list list
val debug : bool -> unit
val stats : state -> unit
end
type solver = {
constraints : Algo.Depsolver_int.S.state;
map : Common.Util.projection;
globalid : (bool * bool) * int;
}
type global_constraints = (Cudf_types.vpkglist * int list) list
type dep_t =
(Cudf_types.vpkg list * int list) list *
(Cudf_types.vpkg * int list) list
and pool = Algo.Depsolver_int.dep_t array
and t =
[ `CudfPool of bool * Algo.Depsolver_int.pool
| `SolverPool of Algo.Depsolver_int.pool ]
type result =
Success of (unit -> int list)
| Failure of (unit -> Algo.Diagnostic.reason_int list)
val init_pool_univ :
global_constraints:Algo.Depsolver_int.global_constraints ->
Cudf.universe -> [> `CudfPool of bool * Algo.Depsolver_int.pool ]
val init_solver_pool :
Common.Util.projection ->
[< `CudfPool of bool * Algo.Depsolver_int.pool ] ->
'a list -> [> `SolverPool of Algo.Depsolver_int.pool ]
val init_solver_cache :
?buffer:bool ->
?explain:bool ->
[< `SolverPool of Algo.Depsolver_int.pool ] ->
Algo.Depsolver_int.S.state
val solve :
?tested:bool array ->
explain:bool ->
Algo.Depsolver_int.solver ->
Algo.Diagnostic.request_int -> Algo.Diagnostic.result_int
val pkgcheck :
(Algo.Diagnostic.result_int * Algo.Diagnostic.request_int -> 'a)
option ->
bool -> Algo.Depsolver_int.solver -> bool array -> int -> bool
val init_solver_univ :
global_constraints:Algo.Depsolver_int.global_constraints ->
?buffer:bool ->
?explain:bool -> Cudf.universe -> Algo.Depsolver_int.solver
val init_solver_closure :
global_constraints:Algo.Depsolver_int.global_constraints ->
?buffer:bool ->
[< `CudfPool of bool * Algo.Depsolver_int.pool ] ->
int list -> Algo.Depsolver_int.solver
val copy_solver :
Algo.Depsolver_int.solver -> Algo.Depsolver_int.solver
val reverse_dependencies : Cudf.universe -> int list array
val dependency_closure_cache :
?maxdepth:int ->
?conjunctive:bool ->
[< `CudfPool of bool * Algo.Depsolver_int.pool ] ->
int list -> Algo.Depsolver_int.S.var list
val reverse_dependency_closure :
?maxdepth:int -> int list array -> int list -> int list
val progressbar_init : Common.Util.Progress.t
val progressbar_univcheck : Common.Util.Progress.t
end
module Depsolver :
sig
type solver
val load :
?global_constraints:(Cudf_types.vpkglist * Cudf.package list) list ->
Cudf.universe -> Algo.Depsolver.solver
val is_consistent : Cudf.universe -> Algo.Diagnostic.diagnosis
val edos_install :
?global_constraints:(Cudf_types.vpkglist * Cudf.package list) list ->
Cudf.universe -> Cudf.package -> Algo.Diagnostic.diagnosis
val edos_coinstall :
?global_constraints:(Cudf_types.vpkglist * Cudf.package list) list ->
Cudf.universe -> Cudf.package list -> Algo.Diagnostic.diagnosis
val edos_coinstall_prod :
?global_constraints:(Cudf_types.vpkglist * Cudf.package list) list ->
Cudf.universe ->
Cudf.package list list -> Algo.Diagnostic.diagnosis list
val trim :
?global_constraints:(Cudf_types.vpkglist * Cudf.package list) list ->
Cudf.universe -> Cudf.universe
val trimlist :
?global_constraints:(Cudf_types.vpkglist * Cudf.package list) list ->
Cudf.universe -> Cudf.package list -> Cudf.package list
val find_broken :
?global_constraints:(Cudf_types.vpkglist * Cudf.package list) list ->
Cudf.universe -> Cudf.package list
val find_installable :
?global_constraints:(Cudf_types.vpkglist * Cudf.package list) list ->
Cudf.universe -> Cudf.package list
val find_listbroken :
?global_constraints:(Cudf_types.vpkglist * Cudf.package list) list ->
Cudf.universe -> Cudf.package list -> Cudf.package list
val find_listinstallable :
?global_constraints:(Cudf_types.vpkglist * Cudf.package list) list ->
Cudf.universe -> Cudf.package list -> Cudf.package list
val univcheck :
?global_constraints:(Cudf_types.vpkglist * Cudf.package list) list ->
?callback:(Algo.Diagnostic.diagnosis -> unit) ->
?explain:bool -> Cudf.universe -> int
val univcheck_lowmem :
?global_constraints:(Cudf_types.vpkglist * Cudf.package list) list ->
?callback:(Algo.Diagnostic.diagnosis -> unit) ->
?explain:bool -> Cudf.universe -> int
val listcheck :
?global_constraints:(Cudf_types.vpkglist * Cudf.package list) list ->
?callback:(Algo.Diagnostic.diagnosis -> unit) ->
?explain:bool -> Cudf.universe -> Cudf.package list -> int
val dependency_closure :
?global_constraints:(Cudf_types.vpkglist * Cudf.package list) list ->
?maxdepth:int ->
?conjunctive:bool ->
Cudf.universe -> Cudf.package list -> Cudf.package list
val reverse_dependencies :
Cudf.universe -> Cudf.package list Common.CudfAdd.Cudf_hashtbl.t
val reverse_dependency_closure :
?maxdepth:int ->
Cudf.universe -> Cudf.package list -> Cudf.package list
type enc = Cnf | Dimacs
val output_clauses :
?global_constraints:(Cudf_types.vpkglist * Cudf.package list) list ->
?enc:Algo.Depsolver.enc -> Cudf.universe -> string
type depclean_result =
Cudf.package *
(Cudf_types.vpkglist * Cudf_types.vpkg * Cudf.package list) list *
(Cudf_types.vpkg * Cudf.package list) list
val depclean :
?global_constraints:(Cudf_types.vpkglist * Cudf.package list) list ->
?callback:(Algo.Depsolver.depclean_result -> unit) ->
Cudf.universe ->
Cudf.package list -> Algo.Depsolver.depclean_result list
type solver_result =
Sat of (Cudf.preamble option * Cudf.universe)
| Unsat of Algo.Diagnostic.diagnosis option
| Error of string
val dummy_request : Cudf.package
val check_request :
?cmd:string ->
?criteria:string ->
?dummy:Cudf.package ->
?explain:bool -> Cudf.cudf -> Algo.Depsolver.solver_result
val check_request_using :
?call_solver:(Cudf.cudf -> Cudf.preamble option * Cudf.universe) ->
?criteria:string ->
?dummy:Cudf.package ->
?explain:bool -> Cudf.cudf -> Algo.Depsolver.solver_result
val installation_graph :
solution:Cudf.universe ->
Common.CudfAdd.Cudf_set.t * Common.CudfAdd.Cudf_set.t ->
Defaultgraphs.ActionGraph.G.t
end
module Strongdeps :
sig
val strongdeps :
?transitive:bool ->
Cudf.universe -> Cudf.package list -> Defaultgraphs.PackageGraph.G.t
val strongdeps_univ :
?transitive:bool -> Cudf.universe -> Defaultgraphs.PackageGraph.G.t
val impactset :
Defaultgraphs.PackageGraph.G.t -> Cudf.package -> Cudf.package list
val conjdeps_univ : Cudf.universe -> Defaultgraphs.PackageGraph.G.t
val conjdeps :
Cudf.universe -> Cudf.package list -> Defaultgraphs.PackageGraph.G.t
end
end