@@ -360,7 +360,7 @@ module Solver = struct
360360 and real_impl =
361361 { pkg : OpamPackage .t
362362 ; conflict_class : OpamPackage.Name .t list
363- ; requires : dependency list
363+ ; requires : dependency list Lazy .t
364364 }
365365
366366 and dependency =
@@ -454,7 +454,7 @@ module Solver = struct
454454 let requires _ = function
455455 | Dummy | Reject _ -> []
456456 | VirtualImpl (_ , deps ) -> deps
457- | RealImpl impl -> impl.requires
457+ | RealImpl impl -> Lazy. force impl.requires
458458 ;;
459459
460460 let conflict_class = function
@@ -565,15 +565,16 @@ module Solver = struct
565565 let pkg = OpamPackage. create role version in
566566 (* Note: we ignore depopts here: see opam/doc/design/depopts-and-features *)
567567 let requires =
568- let rank = Rank. assign () in
569- let make_deps importance xform get =
570- get opam
571- |> Context. filter_deps context pkg
572- |> xform
573- |> list_deps ~importance ~rank
574- in
575- make_deps Ensure ensure OpamFile.OPAM. depends
576- @ make_deps Prevent prevent OpamFile.OPAM. conflicts
568+ lazy
569+ (let rank = Rank. assign () in
570+ let make_deps importance xform get =
571+ get opam
572+ |> Context. filter_deps context pkg
573+ |> xform
574+ |> list_deps ~importance ~rank
575+ in
576+ make_deps Ensure ensure OpamFile.OPAM. depends
577+ @ make_deps Prevent prevent OpamFile.OPAM. conflicts)
577578 in
578579 let conflict_class = OpamFile.OPAM. conflict_class opam in
579580 Some (RealImpl { pkg; requires; conflict_class }))
0 commit comments