Fix META generation wrt scope

We should respect the scope of the current internal library to generate the META
This commit is contained in:
Rudi Grinberg 2018-01-24 16:32:10 +08:00
parent d6601bf2bb
commit ab18b13a04
2 changed files with 26 additions and 8 deletions

View File

@ -199,7 +199,7 @@ let ppx_runtime_deps_for_deprecated_method_exn t ~dir lib_deps =
let lib_is_available name =
String_set.mem name !seen || lib_is_available t ~from:dir name
in
let rec loop lib_dep =
let rec loop dir lib_dep =
match lib_dep with
| Lib_dep.Direct name ->
if not (String_set.mem name !seen) then begin
@ -227,7 +227,7 @@ let ppx_runtime_deps_for_deprecated_method_exn t ~dir lib_deps =
| None -> Loc.fail loc "No solution found for this select form"
and process (lib : Lib.t) =
match lib with
| Internal (_, lib) ->
| Internal (dir, lib) ->
seen :=
(let set = String_set.add lib.name !seen in
match lib.public with
@ -235,14 +235,14 @@ let ppx_runtime_deps_for_deprecated_method_exn t ~dir lib_deps =
| Some p -> String_set.add p.name set);
result := String_set.union !result
(String_set.of_list lib.ppx_runtime_libraries);
List.iter lib.buildable.libraries ~f:loop
List.iter lib.buildable.libraries ~f:(loop dir)
| External pkg ->
seen := String_set.add pkg.name !seen;
result := String_set.union !result
(String_set.of_list
(List.map pkg.ppx_runtime_deps ~f:(fun p -> p.Findlib.name)))
in
List.iter lib_deps ~f:loop;
List.iter lib_deps ~f:(loop dir);
!result
type resolved_select =

View File

@ -1,5 +1,23 @@
$ $JBUILDER build -j1 --root . @install
Error: External library "sub" not found.
-> required by "alib/jbuild (context default)"
Hint: try: jbuilder external-lib-deps --missing --root . @install
[1]
ocamldep alib/alib.depends.ocamldep-output
ocamlc alib/alib__.{cmi,cmo,cmt}
ocamldep blib/blib.depends.ocamldep-output
ocamldep blib/sub/sub.depends.ocamldep-output
ocamlopt alib/alib__.{cmx,o}
ocamlc blib/sub/sub.{cmi,cmo,cmt}
ocamlopt blib/sub/sub.{cmx,o}
ocamlc blib/blib.{cmi,cmo,cmt}
ocamlc blib/sub/sub.cma
ocamlopt blib/sub/sub.{a,cmxa}
ocamlopt blib/blib.{cmx,o}
ocamlc alib/alib.{cmi,cmo,cmt}
ocamlc alib/alib__Main.{cmi,cmo,cmt}
ocamlc blib/blib.cma
ocamlopt blib/sub/sub.cmxs
ocamlopt blib/blib.{a,cmxa}
ocamlopt alib/alib.{cmx,o}
ocamlopt alib/alib__Main.{cmx,o}
ocamlc alib/alib.cma
ocamlopt blib/blib.cmxs
ocamlopt alib/alib.{a,cmxa}
ocamlopt alib/alib.cmxs