forked from vouillon/coinst
-
Notifications
You must be signed in to change notification settings - Fork 1
/
upgrade_common.mli
76 lines (64 loc) · 2.71 KB
/
upgrade_common.mli
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
(* Co-installability tools
* http://coinst.irill.org/
* Copyright (C) 2011 Jérôme Vouillon
* Laboratoire PPS - CNRS Université Paris Diderot
*
* These programs are free software; you can redistribute them and/or
* modify them under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*)
module Repository : Repository.S with type pool = Deb_lib.pool
open Repository
module PSetSet : Set.S with type elt = PSet.t
type state =
{ dist : Deb_lib.deb_pool;
deps : Formula.t PTbl.t;
confl : Conflict.t;
deps' : Formula.t PTbl.t;
confl' : Conflict.t;
st : Deb_lib.Solver.state }
val prepare_analyze : pool -> state
type pkg_ref = string * bool * bool
type reason =
R_depends of pkg_ref * string Deb_lib.dep * pkg_ref list
| R_conflict of pkg_ref * string Deb_lib.dep * pkg_ref
type clause = { pos : Util.StringSet.t; neg : Util.StringSet.t }
type problem =
{ p_clause : clause; p_issue : Util.StringSet.t; p_explain : reason list;
p_support1 : Util.StringSet.t; p_support2 : Util.StringSet.t }
type issue =
{ i_issue : PSet.t; i_problem : problem }
type ignored_sets
val analyze :
?check_new_packages:bool -> ignored_sets ->
?reference:state ->
state -> pool ->
Deb_lib.Solver.var PTbl.t * PSet.t * Conflict.t * PSet.t PTbl.t *
issue list *
(Package.t * clause * reason list * Util.StringSet.t * Util.StringSet.t) list
val find_problematic_packages :
?check_new_packages:bool -> ignored_sets ->
state -> state -> (Deb_lib.package_name -> bool) -> problem list
val find_non_inst_packages :
bool -> ignored_sets -> state -> state -> (Deb_lib.package_name -> bool) ->
problem list
val find_clusters :
state -> state -> (Deb_lib.package_name -> bool) ->
(string list * 'a) list -> ('a -> 'a -> unit) -> unit
val output_conflict_graph : Format.formatter -> problem -> unit
val ignored_set_domain : ignored_sets -> Deb_lib.PkgSet.t
val is_ignored_set : ignored_sets -> Util.StringSet.t -> bool
val conj_dependencies : pool -> Formula.t PTbl.t -> PSet.t option PTbl.t
val reversed_conj_dependencies : pool -> Formula.t PTbl.t -> PSet.t PTbl.t
val empty_break_set : unit -> ignored_sets
val allow_broken_sets : ignored_sets -> string -> unit
val copy_ignored_sets : ignored_sets -> ignored_sets