File tree Expand file tree Collapse file tree 3 files changed +50
-8
lines changed
test/blackbox-tests/test-cases/pkg Expand file tree Collapse file tree 3 files changed +50
-8
lines changed Original file line number Diff line number Diff line change @@ -15,10 +15,15 @@ module Context_for_dune = struct
1515 ; version_preference : Version_preference .t
1616 ; local_packages : OpamFile.OPAM .t OpamPackage.Name.Map .t
1717 ; solver_env : Solver_env .t
18+ ; dune_version : OpamPackage.Version .t
1819 }
1920
2021 let create ~solver_env ~repos ~local_packages ~version_preference =
21- { repos; version_preference; local_packages; solver_env }
22+ let dune_version =
23+ let major, minor = Dune_lang.Stanza. latest_version in
24+ OpamPackage.Version. of_string @@ sprintf " %d.%d" major minor
25+ in
26+ { repos; version_preference; local_packages; solver_env; dune_version }
2227 ;;
2328
2429 type rejection = Unavailable
@@ -122,7 +127,12 @@ module Context_for_dune = struct
122127 OpamFile.OPAM. version opam_file, opam_file_result))
123128 ;;
124129
125- let user_restrictions _ _ = None
130+ let user_restrictions : t -> OpamPackage.Name. t -> OpamFormula. version_constraint option
131+ =
132+ let dune = OpamPackage.Name. of_string " dune" in
133+ fun t pkg ->
134+ if OpamPackage.Name. equal dune pkg then Some (`Eq , t.dune_version) else None
135+ ;;
126136
127137 let map_filters ~(f : filter -> filter ) : filtered_formula -> filtered_formula =
128138 OpamFilter. gen_filter_formula
Original file line number Diff line number Diff line change @@ -845,12 +845,13 @@ module DB = struct
845845 let get context =
846846 let + all = Lock_dir. get context in
847847 let system_provided =
848- if Env. mem Env. initial ~var: " DUNE_PKG_OVERRIDE_OCAML"
849- then (
850- match all.ocaml with
851- | None -> Package.Name.Set. singleton ocaml_package_name
852- | Some (_ , name ) -> Package.Name.Set. singleton name)
853- else Package.Name.Set. empty
848+ let base = Package.Name.Set. singleton (Package.Name. of_string " dune" ) in
849+ match Env. mem Env. initial ~var: " DUNE_PKG_OVERRIDE_OCAML" with
850+ | false -> base
851+ | true ->
852+ (match all.ocaml with
853+ | None -> Package.Name.Set. add base ocaml_package_name
854+ | Some (_ , name ) -> Package.Name.Set. singleton name)
854855 in
855856 { all = all.packages; system_provided }
856857 ;;
Original file line number Diff line number Diff line change 1+ By default , we introduce a constraint on in the build plan that will require
2+ the dune version to match the version of dune being used to generate the
3+ constraint.
4+
5+ $ . ./ helpers. sh
6+ $ mkrepo
7+
8+ $ mkpkg dune 3.11 . 0 << EOF
9+ > EOF
10+
11+ $ test() {
12+ > mkpkg foo << EOF
13+ > depends: [ " dune" {<= " $1" } ]
14+ > EOF
15+ > solve foo
16+ > }
17+
18+ $ test " 2.0.0"
19+ Error: Unable to solve dependencies in build context : default
20+ Can't find all required versions.
21+ Selected: foo. 0. 0. 1 x . dev
22+ - dune -> (problem)
23+ User requested = 3.11
24+ Rejected candidates:
25+ dune. 3. 11. 0: Incompatible with restriction: = 3.11
26+ [1 ]
27+ $ test " 4.0.0"
28+ Solution for dune. lock:
29+ dune. 3. 11. 0
30+ foo. 0. 0. 1
31+
You can’t perform that action at this time.
0 commit comments