@@ -17,17 +17,18 @@ type compiled = {
17
17
include_dirs : Fpath.Set .t ;
18
18
impl : impl option ;
19
19
pkg_args : pkg_args ;
20
- pkgdir : Packages .pkgdir ;
20
+ pkg_name : string ;
21
+ pkg_dir : Fpath .t ;
21
22
}
22
23
23
24
let mk_byhash (pkgs : Packages.t Util.StringMap.t ) =
24
25
Util.StringMap. fold
25
- (fun _pkgname pkg acc ->
26
+ (fun pkgname pkg acc ->
26
27
List. fold_left
27
28
(fun acc (lib : Packages.libty ) ->
28
29
List. fold_left
29
30
(fun acc (m : Packages.modulety ) ->
30
- Util.StringMap. add m.m_intf.mif_hash m acc)
31
+ Util.StringMap. add m.m_intf.mif_hash (pkgname, m) acc)
31
32
acc lib.modules)
32
33
acc pkg.Packages. libraries)
33
34
pkgs Util.StringMap. empty
@@ -68,7 +69,8 @@ let init_stats (pkgs : Packages.t Util.StringMap.t) =
68
69
69
70
open Eio.Std
70
71
71
- type partial = (string * compiled ) list * Packages .modulety Util.StringMap .t
72
+ type partial =
73
+ (string * compiled ) list * (string * Packages .modulety ) Util.StringMap .t
72
74
73
75
let unmarshal filename : partial =
74
76
let ic = open_in_bin (Fpath. to_string filename) in
@@ -140,7 +142,7 @@ let compile ?partial ~output_dir ?linked_dir all =
140
142
| None ->
141
143
Logs. debug (fun m -> m " Error locating hash: %s" hash);
142
144
Error Not_found
143
- | Some modty ->
145
+ | Some ( package_name , modty ) ->
144
146
let deps = modty.m_intf.mif_deps in
145
147
let odoc_file = Fpath. (output_dir // modty.m_intf.mif_odoc_file) in
146
148
let odocl_file = Fpath. (linked_dir // modty.m_intf.mif_odocl_file) in
@@ -200,7 +202,8 @@ let compile ?partial ~output_dir ?linked_dir all =
200
202
include_dirs = includes;
201
203
impl;
202
204
pkg_args;
203
- pkgdir = modty.m_pkg;
205
+ pkg_dir = modty.m_pkg_dir;
206
+ pkg_name = package_name;
204
207
}
205
208
in
206
209
@@ -226,7 +229,7 @@ let compile ?partial ~output_dir ?linked_dir all =
226
229
in
227
230
let result =
228
231
Util.StringMap. fold
229
- (fun _pkgname (pkg : Packages.t ) acc ->
232
+ (fun package_name (pkg : Packages.t ) acc ->
230
233
Logs. debug (fun m ->
231
234
m " Package %s mlds: [%a]" pkg.name
232
235
Fmt. (list ~sep: sp Packages. pp_mld)
@@ -255,7 +258,8 @@ let compile ?partial ~output_dir ?linked_dir all =
255
258
include_dirs;
256
259
impl = None ;
257
260
pkg_args;
258
- pkgdir = mld.mld_pkg;
261
+ pkg_dir = mld.mld_pkg_dir;
262
+ pkg_name = package_name;
259
263
}
260
264
:: acc)
261
265
acc pkg.mlds)
@@ -267,21 +271,17 @@ let compile ?partial ~output_dir ?linked_dir all =
267
271
| None -> () );
268
272
result
269
273
270
- type linked = {
271
- output_file : Fpath .t ;
272
- src : Fpath .t option ;
273
- pkgdir : Packages .pkgdir ;
274
- }
274
+ type linked = { output_file : Fpath .t ; src : Fpath .t option ; pkg_dir : Fpath .t }
275
275
276
276
let link : compiled list -> _ =
277
277
fun compiled ->
278
278
let link : compiled -> linked list =
279
279
fun c ->
280
280
let includes = Fpath.Set. add c.odoc_output_dir c.include_dirs in
281
281
let link input_file output_file =
282
- let { pkg_args = { libs; docs }; pkgdir = current_package, _ ; _ } = c in
283
- Odoc. link ~input_file ~output_file ~includes ~libs ~docs ~current_package
284
- ()
282
+ let { pkg_args = { libs; docs }; pkg_name ; _ } = c in
283
+ Odoc. link ~input_file ~output_file ~includes ~libs ~docs
284
+ ~current_package: pkg_name ()
285
285
in
286
286
let impl =
287
287
match c.impl with
@@ -290,7 +290,7 @@ let link : compiled list -> _ =
290
290
m " Linking impl: %a -> %a" Fpath. pp impl_odoc Fpath. pp impl_odocl);
291
291
link impl_odoc impl_odocl;
292
292
Atomic. incr Stats. stats.linked_impls;
293
- [ { pkgdir = c.pkgdir ; output_file = impl_odocl; src = Some src } ]
293
+ [ { pkg_dir = c.pkg_dir ; output_file = impl_odocl; src = Some src } ]
294
294
| None -> []
295
295
in
296
296
match c.m with
@@ -303,12 +303,12 @@ let link : compiled list -> _ =
303
303
(match c.m with
304
304
| Module _ -> Atomic. incr Stats. stats.linked_units
305
305
| Mld _ -> Atomic. incr Stats. stats.linked_mlds);
306
- { output_file = c.odocl_file; src = None ; pkgdir = c.pkgdir } :: impl
306
+ { output_file = c.odocl_file; src = None ; pkg_dir = c.pkg_dir } :: impl
307
307
in
308
308
Fiber.List. map link compiled |> List. concat
309
309
310
310
let index_one ~odocl_dir pkgname pkg =
311
- let _, dir = pkg.Packages. pkgdir in
311
+ let dir = pkg.Packages. pkg_dir in
312
312
let output_file = Fpath. (odocl_dir // dir / Odoc. index_filename) in
313
313
let libs =
314
314
List. map
@@ -322,9 +322,10 @@ let index_one ~odocl_dir pkgname pkg =
322
322
let index ~odocl_dir pkgs = Util.StringMap. iter (index_one ~odocl_dir ) pkgs
323
323
324
324
let sherlodoc_index_one ~html_dir ~odocl_dir _ pkg_content =
325
- let _, pkg_dir = pkg_content.Packages. pkgdir in
326
- let inputs = [ Fpath. (odocl_dir // pkg_dir / Odoc. index_filename) ] in
327
- let dst = Fpath. (html_dir // Sherlodoc. db_js_file pkg_dir) in
325
+ let inputs =
326
+ [ Fpath. (odocl_dir // pkg_content.Packages. pkg_dir / Odoc. index_filename) ]
327
+ in
328
+ let dst = Fpath. (html_dir // Sherlodoc. db_js_file pkg_content.pkg_dir) in
328
329
let dst_dir, _ = Fpath. split_base dst in
329
330
Util. mkdir_p dst_dir;
330
331
Sherlodoc. index ~format: `js ~inputs ~dst ()
@@ -340,17 +341,15 @@ let sherlodoc ~html_dir ~odocl_dir pkgs =
340
341
let inputs =
341
342
pkgs |> Util.StringMap. bindings
342
343
|> List. map (fun (_pkgname , pkg ) ->
343
- let _, pkg_dir = pkg.Packages. pkgdir in
344
- Fpath. (odocl_dir // pkg_dir / Odoc. index_filename))
344
+ Fpath. (odocl_dir // pkg.Packages. pkg_dir / Odoc. index_filename))
345
345
in
346
346
Sherlodoc. index ~format ~inputs ~dst ()
347
347
348
348
let html_generate output_dir ~odocl_dir linked =
349
349
let html_generate : linked -> unit =
350
350
fun l ->
351
- let _, pkg_dir = l.pkgdir in
352
- let search_uris = [ Sherlodoc. db_js_file pkg_dir; Sherlodoc. js_file ] in
353
- let index = Some Fpath. (odocl_dir // pkg_dir / Odoc. index_filename) in
351
+ let search_uris = [ Sherlodoc. db_js_file l.pkg_dir; Sherlodoc. js_file ] in
352
+ let index = Some Fpath. (odocl_dir // l.pkg_dir / Odoc. index_filename) in
354
353
Odoc. html_generate ~search_uris ?index
355
354
~output_dir: (Fpath. to_string output_dir)
356
355
~input_file: l.output_file ?source:l.src () ;
0 commit comments