diff --git a/bin/main.ml b/bin/main.ml index 5271a909..39e3d5bf 100644 --- a/bin/main.ml +++ b/bin/main.ml @@ -400,7 +400,7 @@ let external_lib_deps = in let missing = String_map.filter externals ~f:(fun name _ -> - not (Findlib.available context.findlib name)) + not (Findlib.available context.findlib name ~required_by:[])) in if String_map.is_empty missing then acc diff --git a/src/findlib.ml b/src/findlib.ml index 8113c0ab..1a902d25 100644 --- a/src/findlib.ml +++ b/src/findlib.ml @@ -424,9 +424,9 @@ let find t ~required_by name = | exception (Package_not_found _) -> None | x -> Some x -let available t name = - match find_exn t name with - | _ -> true +let available t ~required_by name = + match find_exn t name ~required_by with + | (_ : package) -> true | exception (Package_not_found _) -> false let closure pkgs = diff --git a/src/findlib.mli b/src/findlib.mli index d74d2988..362f4f26 100644 --- a/src/findlib.mli +++ b/src/findlib.mli @@ -34,7 +34,7 @@ type package = val find : t -> required_by:string list -> string -> package option val find_exn : t -> required_by:string list -> string -> package -val available : t -> string -> bool +val available : t -> required_by:string list -> string -> bool val root_package_name : string -> string diff --git a/src/lib_db.ml b/src/lib_db.ml index b765a57e..b375dc0e 100644 --- a/src/lib_db.ml +++ b/src/lib_db.ml @@ -70,7 +70,7 @@ let top_sort_internals t ~internal_libraries = let lib_is_installable t ~from name = match find_internal t ~from name with | Some (_, lib) -> String_map.mem lib.name t.instalable_internal_libs - | None -> Findlib.available t.findlib name + | None -> Findlib.available t.findlib name ~required_by:[Utils.jbuild_name_in ~dir:from] let choice_is_possible t ~from { Lib_dep. lits; _ } = List.for_all lits ~f:(function