@@ -111,10 +111,6 @@ module Context_for_dune = struct
111111 ~stats_updater
112112 ~constraints
113113 =
114- let dune_version =
115- let major, minor = Dune_lang.Stanza. latest_version in
116- OpamPackage.Version. of_string @@ sprintf " %d.%d" major minor
117- in
118114 let candidates_cache = Fiber_cache. create (module Package_name ) in
119115 let constraints =
120116 List. map constraints ~f: (fun (constraint_ : Package_dependency.t ) ->
@@ -136,7 +132,7 @@ module Context_for_dune = struct
136132 ; local_packages
137133 ; pinned_packages
138134 ; solver_env
139- ; dune_version
135+ ; dune_version = Dune_dep. version
140136 ; stats_updater
141137 ; candidates_cache
142138 ; available_cache
@@ -785,7 +781,7 @@ let reject_unreachable_packages =
785781 loop roots;
786782 ! seen
787783 in
788- fun solver_env ~local_packages ~pkgs_by_name ->
784+ fun solver_env ~dune_version ~ local_packages ~pkgs_by_name ->
789785 let roots = Package_name.Map. keys local_packages in
790786 let pkgs_by_version =
791787 Package_name.Map. merge pkgs_by_name local_packages ~f: (fun name lhs rhs ->
@@ -810,7 +806,7 @@ let reject_unreachable_packages =
810806 [ " name" , Package_name. to_dyn name ]
811807 | Some (pkg : Lock_dir.Pkg.t ), None -> Some (List. map pkg.depends ~f: snd)
812808 | None , Some (pkg : Local_package.For_solver.t ) ->
813- let formula = pkg.dependencies |> Dependency_formula. to_filtered_formula in
809+ let formula = Dependency_formula. to_filtered_formula pkg.dependencies in
814810 (* Use `dev` because at this point we don't have any version *)
815811 let opam_package =
816812 OpamPackage. of_string (sprintf " %s.dev" (Package_name. to_string pkg.name))
@@ -820,14 +816,15 @@ let reject_unreachable_packages =
820816 Resolve_opam_formula. filtered_formula_to_package_names
821817 env
822818 ~with_test: true
823- pkgs_by_version
819+ ( Package_name.Map. set pkgs_by_version Dune_dep. name dune_version)
824820 formula
825821 in
826822 let deps =
827823 match resolved with
828- | Ok { regular; post = _ } ->
829- (* discard post deps *)
830- regular
824+ | Ok { regular; post = _ (* discard post deps *) } ->
825+ (* remove Dune from the formula as we remove it from solutions *)
826+ List. filter regular ~f: (fun pkg ->
827+ not (Package_name. equal Dune_dep. name pkg))
831828 | Error _ ->
832829 Code_error. raise
833830 " can't find a valid solution for the dependencies"
@@ -948,7 +945,11 @@ let solve_lock_dir
948945 (Package_name. to_string dep_name)
949946 ]));
950947 let reachable =
951- reject_unreachable_packages solver_env ~local_packages ~pkgs_by_name
948+ reject_unreachable_packages
949+ solver_env
950+ ~dune_version: (Package_version. of_opam_package_version context.dune_version)
951+ ~local_packages
952+ ~pkgs_by_name
952953 in
953954 let pkgs_by_name =
954955 Package_name.Map. filteri pkgs_by_name ~f: (fun name _ ->
0 commit comments