@@ -427,6 +427,28 @@ let load_all_odoc_rules_pkg sctx ~pkg =
427427 in
428428 pkg_libs
429429
430+ let entry_modules_by_lib sctx lib =
431+ let info = Lib.Local. info lib in
432+ let dir = Lib_info. src_dir info in
433+ let name = Lib. name (Lib.Local. to_lib lib) in
434+ Dir_contents. get sctx ~dir >> = Dir_contents. ocaml
435+ >> | Ml_sources. modules ~for_: (Library name)
436+ >> | Modules. entry_modules
437+
438+ let entry_modules sctx ~pkg =
439+ let l =
440+ libs_of_pkg sctx ~pkg
441+ |> List. filter ~f: (fun lib ->
442+ Lib.Local. info lib |> Lib_info. status |> Lib_info.Status. is_private
443+ |> not )
444+ in
445+ let + l =
446+ Memo.Build. parallel_map l ~f: (fun l ->
447+ let + m = entry_modules_by_lib sctx l in
448+ (l, m))
449+ in
450+ Lib.Local.Map. of_list_exn l
451+
430452let create_odoc ctx ~target odoc_file =
431453 let html_base = Paths. html ctx target in
432454 let odocl_base = Paths. odocl ctx target in
@@ -491,16 +513,14 @@ let odoc_artefacts sctx target =
491513 |> create_odoc ctx ~target )
492514 | Lib lib ->
493515 let info = Lib.Local. info lib in
494- let dir = Lib_info. src_dir info in
495- let + modules =
496- let name = Lib_info. name info in
497- Dir_contents. get sctx ~dir >> = Dir_contents. ocaml
498- >> | Ml_sources. modules ~for_: (Library name)
499- in
500516 let obj_dir = Lib_info. obj_dir info in
501- Modules. fold_no_vlib modules ~init: [] ~f: (fun m acc ->
502- let odoc = Obj_dir.Module. odoc obj_dir m in
503- create_odoc ctx ~target odoc :: acc)
517+ let * modules = entry_modules_by_lib sctx lib in
518+ List. map
519+ ~f: (fun m ->
520+ let odoc_file = Obj_dir.Module. odoc obj_dir m in
521+ create_odoc ctx ~target odoc_file)
522+ modules
523+ |> Memo.Build. return
504524
505525let setup_lib_odocl_rules_def =
506526 let module Input = struct
@@ -674,28 +694,6 @@ let setup_package_aliases sctx (pkg : Package.t) =
674694 |> Action_builder. deps
675695 |> Rules.Produce.Alias. add_deps alias
676696
677- let entry_modules_by_lib sctx lib =
678- let info = Lib.Local. info lib in
679- let dir = Lib_info. src_dir info in
680- let name = Lib. name (Lib.Local. to_lib lib) in
681- Dir_contents. get sctx ~dir >> = Dir_contents. ocaml
682- >> | Ml_sources. modules ~for_: (Library name)
683- >> | Modules. entry_modules
684-
685- let entry_modules sctx ~pkg =
686- let l =
687- libs_of_pkg sctx ~pkg
688- |> List. filter ~f: (fun lib ->
689- Lib.Local. info lib |> Lib_info. status |> Lib_info.Status. is_private
690- |> not )
691- in
692- let + l =
693- Memo.Build. parallel_map l ~f: (fun l ->
694- let + m = entry_modules_by_lib sctx l in
695- (l, m))
696- in
697- Lib.Local.Map. of_list_exn l
698-
699697let default_index ~pkg entry_modules =
700698 let b = Buffer. create 512 in
701699 Printf. bprintf b " {0 %s index}\n " (Package.Name. to_string pkg);
0 commit comments