Skip to content

Commit

Permalink
Fix combinations of opam tree --{tree,doc} and --no-switch
Browse files Browse the repository at this point in the history
  • Loading branch information
kit-ty-kate committed May 3, 2024
1 parent bee83b3 commit 3e2f531
Showing 1 changed file with 13 additions and 8 deletions.
21 changes: 13 additions & 8 deletions src/client/opamTreeCommand.ml
Original file line number Diff line number Diff line change
Expand Up @@ -386,14 +386,19 @@ let get_universe tog requested st =

let get_installed st atoms =
let open OpamPackage.Set.Op in
List.fold_left (fun (select, missing) atom ->
List.fold_left (fun (select, missing, requested) atom ->
let installed =
OpamPackage.Set.filter (OpamFormula.check atom) st.installed
in
if OpamPackage.Set.is_empty installed then
(select, atom :: missing)
else (installed ++ select, missing))
(OpamPackage.Set.empty, []) atoms
let missing_pkgs = OpamPackage.Set.filter (OpamFormula.check atom) st.packages in
if OpamPackage.Set.is_empty missing_pkgs then
assert false;
(select, atom :: missing, requested ++ missing_pkgs)
else
let select = installed ++ select in
(select, missing, requested ++ select))
(OpamPackage.Set.empty, [], OpamPackage.Set.empty) atoms

let dry_install tog st universe install =
match OpamSolver.resolve universe
Expand All @@ -403,8 +408,8 @@ let dry_install tog st universe install =
print_solution st new_st
(OpamPackage.Name.Set.of_list (List.map fst install))
solution;
let select, missing = get_installed new_st install in
if missing <> [] then
let select, missing, requested = get_installed new_st install in
if missing <> [] || not (Int.equal (OpamPackage.Set.cardinal select) (OpamPackage.Set.cardinal requested)) then
assert false;
new_st, get_universe tog select new_st
| Conflicts cs ->
Expand All @@ -417,9 +422,9 @@ let dry_install tog st universe install =

let run st tog ?no_constraint mode filter atoms =
let open OpamPackage.Set.Op in
let select, missing = get_installed st atoms in
let select, missing, requested = get_installed st atoms in
let st, universe =
let universe = get_universe tog select st in
let universe = get_universe tog requested st in
match mode, filter, missing with
| Deps, _, [] -> st, universe
| Deps, Roots_from, _::_ ->
Expand Down

0 comments on commit 3e2f531

Please sign in to comment.