Skip to content

Commit 36b11f2

Browse files
authored
fix(pkg): exclude dune from overlapping workspace check (#12023)
If we're locking, dune is always provided anyway. It doesn't make sense that we need to build it first for packages outside the workspace. Signed-off-by: Rudi Grinberg <[email protected]>
1 parent 9e84561 commit 36b11f2

File tree

2 files changed

+6
-6
lines changed

2 files changed

+6
-6
lines changed

src/dune_pkg/opam_solver.ml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1697,12 +1697,13 @@ let solve_lock_dir
16971697
>>= function
16981698
| Error _ as e -> Fiber.return e
16991699
| Ok solution ->
1700+
let is_dune name = Package_name.equal Dune_dep.name name in
17001701
(* don't include local packages or dune in the lock dir *)
17011702
let opam_packages_to_lock =
17021703
let is_local_package = Package_name.Map.mem local_packages in
17031704
List.filter solution ~f:(fun package ->
17041705
let name = OpamPackage.name package |> Package_name.of_opam_package_name in
1705-
(not (is_local_package name)) && not (Package_name.equal Dune_dep.name name))
1706+
(not (is_local_package name)) && not (is_dune name))
17061707
in
17071708
let* candidates_cache = Fiber_cache.to_table context.candidates_cache in
17081709
let resolve_package name version =
@@ -1774,7 +1775,7 @@ let solve_lock_dir
17741775
Lock_dir.Conditional_choice.choose_for_platform depends ~platform:solver_env
17751776
|> Option.iter ~f:(fun depends ->
17761777
List.iter depends ~f:(fun { Lock_dir.Dependency.name = dep_name; loc } ->
1777-
if Package_name.Map.mem local_packages dep_name
1778+
if (not (is_dune dep_name)) && Package_name.Map.mem local_packages dep_name
17781779
then
17791780
User_error.raise
17801781
~loc

test/blackbox-tests/test-cases/pkg/local-dune.t

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ Dune is defined in the workspace where we're solving
2121
> (name foo)
2222
> (depends bar))
2323
> EOF
24-
Error: Dune does not support packages outside the workspace depending on
25-
packages in the workspace. The package "bar" is not in the workspace but it
26-
depends on the package "dune" which is in the workspace.
27-
[1]
24+
Solution for dune.lock:
25+
- bar.0.0.1
26+
- test-dep.0.0.1

0 commit comments

Comments
 (0)