Skip to content

Commit b202280

Browse files
authored
Solving portable lockdir includes avoid-version message (#12679)
This message was accidentally removed in a recent change to the format of the output of `dune pkg lock` when using portable lockdirs, but it's a useful message, so add it back. Signed-off-by: Stephen Sherratt <[email protected]>
1 parent f3c70f0 commit b202280

File tree

2 files changed

+49
-8
lines changed

2 files changed

+49
-8
lines changed

bin/pkg/lock.ml

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -207,13 +207,22 @@ let summary_message
207207
if portable_lock_dir
208208
then (
209209
let pkgs_by_platform = Lock_dir.Packages.pkgs_by_platform lock_dir.packages in
210+
let opam_package_of_pkg (pkg : Lock_dir.Pkg.t) =
211+
OpamPackage.create
212+
(Dune_pkg.Package_name.to_opam_package_name pkg.info.name)
213+
(Dune_pkg.Package_version.to_opam_package_version pkg.info.version)
214+
in
215+
let pkgs_by_opam_package =
216+
Lock_dir.Packages.to_pkg_list lock_dir.packages
217+
|> List.map ~f:(fun pkg -> opam_package_of_pkg pkg, pkg)
218+
|> OpamPackage.Map.of_list
219+
in
220+
let opam_package_to_pkg opam_package =
221+
OpamPackage.Map.find opam_package pkgs_by_opam_package
222+
in
210223
let opam_package_sets_by_platform =
211224
Solver_env.Map.map pkgs_by_platform ~f:(fun pkgs ->
212-
List.map pkgs ~f:(fun (pkg : Dune_pkg.Lock_dir.Pkg.t) ->
213-
OpamPackage.create
214-
(Dune_pkg.Package_name.to_opam_package_name pkg.info.name)
215-
(Dune_pkg.Package_version.to_opam_package_version pkg.info.version))
216-
|> OpamPackage.Set.of_list)
225+
List.map pkgs ~f:opam_package_of_pkg |> OpamPackage.Set.of_list)
217226
in
218227
let common_packages =
219228
Solver_env.Map.values opam_package_sets_by_platform
@@ -223,9 +232,11 @@ let summary_message
223232
let pp_package_set package_set =
224233
if OpamPackage.Set.is_empty package_set
225234
then Pp.tag User_message.Style.Warning @@ Pp.text "(none)"
226-
else
227-
Pp.enumerate (OpamPackage.Set.elements package_set) ~f:(fun opam_package ->
228-
Pp.text (OpamPackage.to_string opam_package))
235+
else (
236+
let pkgs =
237+
OpamPackage.Set.elements package_set |> List.map ~f:opam_package_to_pkg
238+
in
239+
Pkg_common.pp_packages pkgs)
229240
in
230241
let uncommon_packages_by_platform =
231242
Solver_env.Map.map opam_package_sets_by_platform ~f:(fun package_set ->
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
When solving portable lockdirs, if any packages in the solution are marked
2+
avoid-version, include a message to that extent in the output.
3+
4+
$ . ../helpers.sh
5+
$ mkrepo
6+
$ add_mock_repo_if_needed
7+
8+
$ mkpkg foo <<EOF
9+
> conflicts: [ "a1" ]
10+
> flags: [avoid-version]
11+
> EOF
12+
13+
$ cat > dune-project <<EOF
14+
> (lang dune 3.18)
15+
> (package
16+
> (name x)
17+
> (depends foo))
18+
> EOF
19+
20+
$ DUNE_CONFIG__PORTABLE_LOCK_DIR=enabled dune pkg lock
21+
Solution for dune.lock
22+
23+
This solution supports the following platforms:
24+
- arch = x86_64; os = linux
25+
- arch = arm64; os = linux
26+
- arch = x86_64; os = macos
27+
- arch = arm64; os = macos
28+
29+
Dependencies on all supported platforms:
30+
- foo.0.0.1 (this version should be avoided)

0 commit comments

Comments
 (0)