package opam-solver
Install
Dune Dependency
Authors
-
David Allsopp
-
VVincent Bernardoff <vb@luminar.eu.org>
-
RRaja Boujbel <raja.boujbel@ocamlpro.com>
-
KKate Deplaix <kit-ty-kate@outlook.com>
-
RRoberto Di Cosmo <roberto@dicosmo.org>
-
TThomas Gazagnaire <thomas@gazagnaire.org>
-
LLouis Gesbert <louis.gesbert@ocamlpro.com>
-
FFabrice Le Fessant <Fabrice.Le_fessant@inria.fr>
-
AAnil Madhavapeddy <anil@recoil.org>
-
GGuillem Rieu <guillem.rieu@ocamlpro.com>
-
RRalf Treinen <ralf.treinen@pps.jussieu.fr>
-
FFrederic Tuong <tuong@users.gforge.inria.fr>
Maintainers
Sources
md5=a0a5b8373dc493e0f53c82891081f27b
sha512=e098bb61ab77bfc33900be65f58fe9d2c62a3ea608be7f8cd115f0ec5a355207571936f2130f75b16de02a4d18d246d4cd15d51a79c208635520829f21987fe6
doc/opam-solver/OpamSolver/index.html
Module OpamSolver
Source
Entry point to the solver, conversion of opam package universes to Cudf, dependencies computation. Front-end to Dose.
Solver
Convert a request to a string
Compute statistics about a solution
Return the new packages in the solution
Return removed new packages in the solution
Return all packages appearing in the solution
Pretty-printing of statistics
val print_solution :
messages:(OpamTypes.package -> string list) ->
append:(OpamTypes.package -> string) ->
requested:OpamTypes.name_set ->
reinstall:OpamTypes.package_set ->
available:OpamTypes.package_set ->
?skip:OpamTypes.package OpamPackage.Map.t ->
solution ->
unit
Display a solution. skip
skips printing the actions on the given packages and replaces their names in other places where they appear
Serialize a solution
Computes an opam->cudf version map from an universe
val load_cudf_universe :
OpamTypes.universe ->
?version_map:int OpamTypes.package_map ->
OpamTypes.package_set ->
?add_invariant:bool ->
?depopts:bool ->
build:bool ->
post:bool ->
unit ->
Cudf.universe
Creates a CUDF universe from an OPAM universe, including the given packages. Evaluation of the first 3 arguments is staged. Warning: when depopts
is true
, the optional dependencies may become strong dependencies.
Use add_invariant
if you expect to call the solver and need the switch invariants to be respected; remember in that case to call Cudf.remove_package universe OpamCudf.opam_invariant_package
before exporting the results
val request :
?criteria:OpamTypes.solver_criteria ->
?install:OpamTypes.atom list ->
?upgrade:OpamTypes.atom list ->
?remove:OpamTypes.atom list ->
?deprequest:OpamTypes.atom OpamFormula.formula ->
?all:OpamTypes.atom list ->
unit ->
OpamTypes.atom OpamTypes.request
Build a request. all
defaults to all atoms concerned by any action, and is used for limiting the solution to the relevant packages, an empty list implying all actions are relevant (no trimming)
val resolve :
OpamTypes.universe ->
OpamTypes.atom OpamTypes.request ->
(solution, OpamCudf.conflict) OpamTypes.result
Given a description of packages, return a solution preserving the consistency of the initial description.
Returns the graph of atomic actions (rm, inst) from a solution
Keep only the packages that are installable.
Like installable
, but within a subset and potentially much faster
val dependency_sort :
depopts:bool ->
build:bool ->
post:bool ->
OpamTypes.universe ->
OpamTypes.package_set ->
OpamTypes.package list
Sorts the given package set in topological order (as much as possible, beware of cycles in particular if post
is true
)
val dependency_graph :
depopts:bool ->
build:bool ->
post:bool ->
installed:bool ->
unavailable:bool ->
OpamTypes.universe ->
PkgGraph.t
Check the current set of installed packages in a universe for inconsistencies
val coinstallability_check :
OpamTypes.universe ->
OpamTypes.package_set ->
OpamCudf.conflict option
Checks the given package set for complete installability ; returns None if they can all be installed together
Checks if the given atoms can be honored at the same time in the given universe
val coinstallable_subset :
OpamTypes.universe ->
?add_invariant:bool ->
OpamTypes.package_set ->
OpamTypes.package_set ->
OpamTypes.package_set
coinstallable_subset univ set packages
returns the subset of packages
which are individually co-installable with set
, i.e. that can be installed while set
remains installed. This returns the empty set if set
is already not coinstallable. `add_invariant` defaults to true
Dumps a cudf file containing all available packages in the given universe, plus version bindings (as '#v2v' comments) for the other ones.
Filters actions in a solution. Dependents of a removed actions are removed to keep consistency unless recursive
is set to false