Opam_0install.Dir_context
A context that reads opam files directly from an opam-repository checkout. It does not use a switch, and therefore does not pick up any pins the user has set. It also does not get any opam variables from the environment - instead, the caller must provide them explicitly.
include S.CONTEXT
A reason why a package can't be used as input to the solver. e.g. it is for a different platform, or conflicts with a user-provided constraint.
val pp_rejection : rejection Fmt.t
val candidates :
t ->
OpamPackage.Name.t ->
(OpamPackage.Version.t * (OpamFile.OPAM.t, rejection) Stdlib.result) list
candidates t name
is the list of available versions of name
, in order of decreasing preference. If the user or environment provides additional constraints that mean a version should be rejected, include that here too. Rejects are only used for generating diagnostics reports. Candidates whose "availablity" field isn't satisfied must be rejected here.
val user_restrictions :
t ->
OpamPackage.Name.t ->
OpamFormula.version_constraint option
user_restrictions t pkg
is the user's constraint on pkg
, if any. This is just used for diagnostics; you still have to filter them out yourself in candidates
.
val filter_deps :
t ->
OpamPackage.t ->
OpamTypes.filtered_formula ->
OpamTypes.formula
filter_deps t pkg f
is used to pre-process depends and conflicts. pkg
is the package which has the dependency f
. For example, you can use this to filter out dependencies that are only needed on Windows if the platform is Linux.
val std_env :
?ocaml_native:bool ->
?sys_ocaml_version:string ->
?opam_version:string ->
arch:string ->
os:string ->
os_distribution:string ->
os_family:string ->
os_version:string ->
unit ->
string ->
OpamVariable.variable_contents option
std_env ~arch ~os ~os_distribution ~os_family ~os_version
is an environment function that returns the given values for the standard opam variables, and None
for anything else. If opam_version
is not provided, use the version of the linked opam library.
val create :
?prefer_oldest:bool ->
?test:OpamPackage.Name.Set.t ->
?pins:(OpamTypes.version * OpamFile.OPAM.t) OpamTypes.name_map ->
constraints:OpamFormula.version_constraint OpamTypes.name_map ->
env:(string -> OpamVariable.variable_contents option) ->
string ->
t
create ~constraints ~env packages_dir
is a solver that gets candidates from packages_dir
, filtering them using constraints
. packages_dir
contains one sub-directory for each package name, each with subdirectories for each version, in the same format used by opam-repository.