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