Skip to content

Commit 7576f34

Browse files
committed
no reliance on working ocamlfind
1 parent 0343a74 commit 7576f34

File tree

2 files changed

+25
-15
lines changed

2 files changed

+25
-15
lines changed

src/driver/ocamlfind.ml

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,22 @@
1-
let init () =
2-
let prefix = Opam.prefix () in
3-
let env_camllib = Fpath.(v prefix / "lib" / "ocaml" |> to_string) in
4-
let config = Fpath.(v prefix / "lib" / "findlib.conf" |> to_string) in
5-
Findlib.init ~config ~env_camllib ()
61

7-
let () = init ()
2+
3+
let init =
4+
let initialized = ref false in
5+
fun () ->
6+
if !initialized then () else
7+
let prefix = Opam.prefix () in
8+
let env_camllib = Fpath.(v prefix / "lib" / "ocaml" |> to_string) in
9+
let config = Fpath.(v prefix / "lib" / "findlib.conf" |> to_string) in
10+
Findlib.init ~config ~env_camllib ()
811

912
let all () =
13+
init ();
1014
Fl_package_base.list_packages ()
1115

1216

1317
let get_dir lib =
1418
try
19+
init ();
1520
Fl_package_base.query lib |> fun x ->
1621
Logs.debug (fun m -> m "Package %s is in directory %s@." lib x.package_dir);
1722
Ok Fpath.(v x.package_dir |> to_dir_path)
@@ -20,6 +25,7 @@ let get_dir lib =
2025
Error (`Msg "Error getting directory")
2126

2227
let archives pkg =
28+
init ();
2329
let package = Fl_package_base.query pkg in
2430
let get_1 preds =
2531
try
@@ -39,6 +45,7 @@ let archives pkg =
3945
|> List.sort_uniq String.compare
4046

4147
let sub_libraries top =
48+
init ();
4249
let packages = Fl_package_base.list_packages () in
4350
List.fold_left
4451
(fun acc lib ->
@@ -47,6 +54,7 @@ let sub_libraries top =
4754
Util.StringSet.empty packages
4855

4956
let deps pkgs =
57+
init ();
5058
try
5159
let packages =
5260
Fl_package_base.requires_deeply ~preds:[ "ppx_driver" ] pkgs

src/driver/odoc_driver.ml

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -503,22 +503,24 @@ let run libs verbose packages_dir odoc_dir odocl_dir html_dir stats nb_workers o
503503
Eio_main.run @@ fun env ->
504504
Eio.Switch.run @@ fun sw ->
505505
if verbose then Logs.set_level (Some Logs.Debug);
506-
let libs =
507-
if libs = [] then Ocamlfind.all ()
508-
else libs
509-
in
510506
Logs.set_reporter (Logs_fmt.reporter ());
511507
let () = Worker_pool.start_workers env sw nb_workers in
512-
let libs =
513-
List.map Ocamlfind.sub_libraries libs
514-
|> List.fold_left Util.StringSet.union Util.StringSet.empty
515-
in
508+
516509
let all =
517510
if voodoo then
518511
match package_name with
519512
| Some p -> Voodoo.of_voodoo p blessed
520513
| None -> failwith "Need a package name for voodoo"
521-
else Packages.of_libs packages_dir libs in
514+
else
515+
let libs =
516+
if libs = [] then Ocamlfind.all ()
517+
else libs
518+
in
519+
let libs =
520+
List.map Ocamlfind.sub_libraries libs
521+
|> List.fold_left Util.StringSet.union Util.StringSet.empty
522+
in
523+
Packages.of_libs packages_dir libs in
522524
let partial =
523525
if voodoo
524526
then

0 commit comments

Comments
 (0)