Skip to content

Commit 0b65038

Browse files
Julowjonludlam
authored andcommitted
Rename 'Packages.pkgdir' to 'pkgname'
The previous name didn't convey that this value was used to identify a package, the new name is slightly clearer. The type is rewritten as a record to make the two values even more locked together.
1 parent 9f7e813 commit 0b65038

File tree

6 files changed

+79
-75
lines changed

6 files changed

+79
-75
lines changed

src/driver/compile.ml

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ type compiled = {
1717
include_dirs : Fpath.Set.t;
1818
impl : impl option;
1919
pkg_args : pkg_args;
20-
pkgdir : Packages.pkgdir;
20+
pkgname : Packages.pkgname;
2121
}
2222

2323
let mk_byhash (pkgs : Packages.t Util.StringMap.t) =
@@ -197,7 +197,7 @@ let compile ?partial ~output_dir ?linked_dir all =
197197
include_dirs = includes;
198198
impl;
199199
pkg_args;
200-
pkgdir = modty.m_pkg;
200+
pkgname = modty.m_pkgname;
201201
}
202202
in
203203

@@ -225,7 +225,7 @@ let compile ?partial ~output_dir ?linked_dir all =
225225
Util.StringMap.fold
226226
(fun _pkgname (pkg : Packages.t) acc ->
227227
Logs.debug (fun m ->
228-
m "Package %s mlds: [%a]" pkg.name
228+
m "Package %s mlds: [%a]" pkg.pkgname.p_name
229229
Fmt.(list ~sep:sp Packages.pp_mld)
230230
pkg.mlds);
231231
List.fold_left
@@ -252,7 +252,7 @@ let compile ?partial ~output_dir ?linked_dir all =
252252
include_dirs;
253253
impl = None;
254254
pkg_args;
255-
pkgdir = mld.mld_pkg;
255+
pkgname = mld.mld_pkgname;
256256
}
257257
:: acc)
258258
acc pkg.mlds)
@@ -267,7 +267,7 @@ let compile ?partial ~output_dir ?linked_dir all =
267267
type linked = {
268268
output_file : Fpath.t;
269269
src : Fpath.t option;
270-
pkgdir : Packages.pkgdir;
270+
pkgname : Packages.pkgname;
271271
}
272272

273273
let link : compiled list -> _ =
@@ -276,9 +276,9 @@ let link : compiled list -> _ =
276276
fun c ->
277277
let includes = Fpath.Set.add c.odoc_output_dir c.include_dirs in
278278
let link input_file output_file =
279-
let { pkg_args = { libs; docs }; pkgdir = current_package, _; _ } = c in
280-
Odoc.link ~input_file ~output_file ~includes ~libs ~docs ~current_package
281-
()
279+
let { pkg_args = { libs; docs }; pkgname; _ } = c in
280+
Odoc.link ~input_file ~output_file ~includes ~libs ~docs
281+
~current_package:pkgname.p_name ()
282282
in
283283
let impl =
284284
match c.impl with
@@ -287,7 +287,7 @@ let link : compiled list -> _ =
287287
m "Linking impl: %a -> %a" Fpath.pp impl_odoc Fpath.pp impl_odocl);
288288
link impl_odoc impl_odocl;
289289
Atomic.incr Stats.stats.linked_impls;
290-
[ { pkgdir = c.pkgdir; output_file = impl_odocl; src = Some src } ]
290+
[ { pkgname = c.pkgname; output_file = impl_odocl; src = Some src } ]
291291
| None -> []
292292
in
293293
match c.m with
@@ -300,13 +300,14 @@ let link : compiled list -> _ =
300300
(match c.m with
301301
| Module _ -> Atomic.incr Stats.stats.linked_units
302302
| Mld _ -> Atomic.incr Stats.stats.linked_mlds);
303-
{ output_file = c.odocl_file; src = None; pkgdir = c.pkgdir } :: impl
303+
{ output_file = c.odocl_file; src = None; pkgname = c.pkgname } :: impl
304304
in
305305
Fiber.List.map link compiled |> List.concat
306306

307307
let index_one ~odocl_dir pkgname pkg =
308-
let _, dir = pkg.Packages.pkgdir in
309-
let output_file = Fpath.(odocl_dir // dir / Odoc.index_filename) in
308+
let output_file =
309+
Fpath.(odocl_dir // pkg.Packages.pkgname.p_dir / Odoc.index_filename)
310+
in
310311
let libs =
311312
List.map
312313
(fun lib -> (lib.Packages.lib_name, Fpath.(odocl_dir // lib.odoc_dir)))
@@ -319,7 +320,7 @@ let index_one ~odocl_dir pkgname pkg =
319320
let index ~odocl_dir pkgs = Util.StringMap.iter (index_one ~odocl_dir) pkgs
320321

321322
let sherlodoc_index_one ~html_dir ~odocl_dir _ pkg_content =
322-
let _, pkg_dir = pkg_content.Packages.pkgdir in
323+
let pkg_dir = pkg_content.Packages.pkgname.p_dir in
323324
let inputs = [ Fpath.(odocl_dir // pkg_dir / Odoc.index_filename) ] in
324325
let dst = Fpath.(html_dir // Sherlodoc.db_js_file pkg_dir) in
325326
let dst_dir, _ = Fpath.split_base dst in
@@ -337,15 +338,14 @@ let sherlodoc ~html_dir ~odocl_dir pkgs =
337338
let inputs =
338339
pkgs |> Util.StringMap.bindings
339340
|> List.map (fun (_pkgname, pkg) ->
340-
let _, pkg_dir = pkg.Packages.pkgdir in
341-
Fpath.(odocl_dir // pkg_dir / Odoc.index_filename))
341+
Fpath.(odocl_dir // pkg.Packages.pkgname.p_dir / Odoc.index_filename))
342342
in
343343
Sherlodoc.index ~format ~inputs ~dst ()
344344

345345
let html_generate output_dir ~odocl_dir linked =
346346
let html_generate : linked -> unit =
347347
fun l ->
348-
let _, pkg_dir = l.pkgdir in
348+
let pkg_dir = l.pkgname.p_dir in
349349
let search_uris = [ Sherlodoc.db_js_file pkg_dir; Sherlodoc.js_file ] in
350350
let index = Some Fpath.(odocl_dir // pkg_dir / Odoc.index_filename) in
351351
Odoc.html_generate ~search_uris ?index

src/driver/dune_style.ml

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
(* Dune build tree *)
22

3+
(* Map lib names to package names. *)
4+
let mk_pkgname ~dir libname path =
5+
let p_dir = Fpath.rem_prefix dir path |> Option.get in
6+
{ Packages.p_name = libname; p_dir }
7+
38
let of_dune_build dir =
49
let contents =
510
Bos.OS.Dir.fold_contents ~dotfiles:true (fun p acc -> p :: acc) [] dir
@@ -34,28 +39,27 @@ let of_dune_build dir =
3439
let cmtidir =
3540
Fpath.(path / Printf.sprintf ".%s.objs" libname / "byte")
3641
in
37-
(* Map lib names to package names. *)
38-
let pkgdir = (libname, Fpath.rem_prefix dir path |> Option.get) in
39-
( pkgdir,
40-
Packages.Lib.v ~pkgdir
42+
let pkgname = mk_pkgname ~dir libname path in
43+
( pkgname,
44+
Packages.Lib.v ~pkgname
4145
~libname_of_archive:(Util.StringMap.singleton libname libname)
4246
~dir:path ~cmtidir:(Some cmtidir) ))
4347
libs
4448
in
4549
let packages =
4650
List.filter_map
47-
(fun (pkgdir, lib) ->
51+
(fun (pkgname, lib) ->
4852
match lib with
4953
| [ lib ] ->
54+
(* Accept only one library per package for now. *)
5055
Some
5156
( lib.Packages.lib_name,
5257
{
53-
Packages.name = lib.Packages.lib_name;
54-
version = "1.0";
58+
Packages.version = "1.0";
5559
libraries = [ lib ];
5660
mlds = [];
5761
mld_odoc_dir = Fpath.v lib.Packages.lib_name;
58-
pkgdir;
62+
pkgname;
5963
other_docs = Fpath.Set.empty;
6064
} )
6165
| _ -> None)

src/driver/indexes.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
let package fmt (pkg : Packages.t) =
2-
Format.fprintf fmt "{0 Package %s}\n" pkg.name;
2+
Format.fprintf fmt "{0 Package %s}\n" pkg.pkgname.p_name;
33
Format.fprintf fmt "{1 Libraries}\n";
44
List.iter
55
(fun (lib : Packages.libty) ->

src/driver/packages.ml

Lines changed: 30 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
(* Packages *)
22

3-
type pkgdir = string * Fpath.t
3+
type pkgname = { p_name : string; p_dir : Fpath.t }
44

55
type dep = string * Digest.t
66

@@ -34,7 +34,7 @@ type modulety = {
3434
m_intf : intf;
3535
m_impl : impl option;
3636
m_hidden : bool;
37-
m_pkg : pkgdir;
37+
m_pkgname : pkgname;
3838
(* The 'top dir' of a package, relative to [_odoc] or [_html] *)
3939
}
4040

@@ -44,7 +44,7 @@ type mld = {
4444
mld_parent_id : id;
4545
mld_path : Fpath.t; (* Absolute or relative to cwd *)
4646
mld_deps : Fpath.t list;
47-
mld_pkg : pkgdir;
47+
mld_pkgname : pkgname;
4848
(* The 'top dir' of a package, relative to [_odoc] or [_html] *)
4949
}
5050

@@ -58,26 +58,26 @@ type libty = {
5858
}
5959

6060
type t = {
61-
name : string;
61+
pkgname : pkgname;
6262
version : string;
6363
libraries : libty list;
6464
mlds : mld list;
6565
mld_odoc_dir : Fpath.t; (* Relative to [odoc] dir *)
66-
pkgdir : pkgdir;
6766
other_docs : Fpath.Set.t;
6867
}
6968

7069
let maybe_prepend_top top_dir dir =
7170
match top_dir with None -> dir | Some d -> Fpath.(d // dir)
7271

73-
let find_pkg top_dir pkg_name =
74-
(pkg_name, maybe_prepend_top top_dir Fpath.(v pkg_name))
72+
let mk_pkgname top_dir p_name =
73+
let p_dir = maybe_prepend_top top_dir Fpath.(v p_name) in
74+
{ p_name; p_dir }
7575

76-
let parent_of_lib (_, pkg_dir) lib_name = Fpath.(pkg_dir / "lib" / lib_name)
76+
let parent_of_lib pkgname lib_name = Fpath.(pkgname.p_dir / "lib" / lib_name)
7777

78-
let parent_of_pages (_, pkg_dir) = Fpath.(pkg_dir / "doc")
78+
let parent_of_pages pkgname = Fpath.(pkgname.p_dir / "doc")
7979

80-
let parent_of_src (_, pkg_dir) lib_name = Fpath.(pkg_dir / "src" / lib_name)
80+
let parent_of_src pkgname lib_name = Fpath.(pkgname.p_dir / "src" / lib_name)
8181

8282
module Module = struct
8383
type t = modulety
@@ -88,7 +88,7 @@ module Module = struct
8888

8989
let is_hidden name = Astring.String.is_infix ~affix:"__" name
9090

91-
let vs pkgdir lib_name libsdir cmtidir modules =
91+
let vs pkgname lib_name libsdir cmtidir modules =
9292
let dir = match cmtidir with None -> libsdir | Some dir -> dir in
9393
let mk m_name =
9494
let exists ext =
@@ -108,7 +108,7 @@ module Module = struct
108108
| _ -> None)
109109
in
110110
let mk_intf mif_path =
111-
let mif_parent_id = parent_of_lib pkgdir lib_name in
111+
let mif_parent_id = parent_of_lib pkgname lib_name in
112112
let mif_odoc_file =
113113
Fpath.(
114114
mif_parent_id
@@ -128,7 +128,7 @@ module Module = struct
128128
| Error _ -> failwith "bad deps"
129129
in
130130
let mk_impl mip_path =
131-
let mip_parent_id = parent_of_lib pkgdir lib_name in
131+
let mip_parent_id = parent_of_lib pkgname lib_name in
132132
let mip_odoc_file =
133133
Fpath.(
134134
mip_parent_id
@@ -151,7 +151,7 @@ module Module = struct
151151
m "Found source file %a for %s" Fpath.pp src_path m_name);
152152
let src_name = Fpath.filename src_path in
153153
let src_id =
154-
Fpath.(parent_of_src pkgdir lib_name / src_name)
154+
Fpath.(parent_of_src pkgname lib_name / src_name)
155155
|> Odoc.id_of_fpath
156156
in
157157
Some { src_path; src_id }
@@ -169,7 +169,7 @@ module Module = struct
169169
let m_hidden = is_hidden m_name in
170170
try
171171
let r (m_intf, m_impl) =
172-
Some { m_name; m_intf; m_impl; m_hidden; m_pkg = pkgdir }
172+
Some { m_name; m_intf; m_impl; m_hidden; m_pkgname = pkgname }
173173
in
174174
match state with
175175
| Some cmt, Some cmti -> r (mk_intf cmti, Some (mk_impl cmt))
@@ -187,10 +187,10 @@ module Module = struct
187187
end
188188

189189
module Lib = struct
190-
let v ~pkgdir ~libname_of_archive ~dir ~cmtidir =
191-
let pkg_name, _ = pkgdir in
190+
let v ~pkgname ~libname_of_archive ~dir ~cmtidir =
191+
let { p_name; _ } = pkgname in
192192
Logs.debug (fun m ->
193-
m "Classifying dir %a for package %s" Fpath.pp dir pkg_name);
193+
m "Classifying dir %a for package %s" Fpath.pp dir p_name);
194194
let dirs =
195195
match cmtidir with None -> [ dir ] | Some dir2 -> [ dir; dir2 ]
196196
in
@@ -206,7 +206,7 @@ module Lib = struct
206206
m
207207
"Unable to determine library in package '%s' to which \
208208
archive '%s' belongs"
209-
pkg_name archive_name);
209+
p_name archive_name);
210210
Logs.debug (fun m ->
211211
m "These are the archives I know about: [%a]"
212212
Fmt.(list ~sep:sp string)
@@ -215,8 +215,8 @@ module Lib = struct
215215
m "Defaulting to name of library: %s" archive_name);
216216
archive_name
217217
in
218-
let modules = Module.vs pkgdir lib_name dir cmtidir modules in
219-
let odoc_dir = parent_of_lib pkgdir lib_name in
218+
let modules = Module.vs pkgname lib_name dir cmtidir modules in
219+
let odoc_dir = parent_of_lib pkgname lib_name in
220220
Some { lib_name; odoc_dir; archive_name; modules }
221221
with _ ->
222222
Logs.err (fun m ->
@@ -232,8 +232,8 @@ module Lib = struct
232232
end
233233

234234
let pp ppf t =
235-
Fmt.pf ppf "name: %[email protected]: %[email protected]: [@[<hov 2>@,%a@]@,]" t.name
236-
t.version
235+
Fmt.pf ppf "name: %[email protected]: %[email protected]: [@[<hov 2>@,%a@]@,]"
236+
t.pkgname.p_name t.version
237237
Fmt.(list ~sep:sp Lib.pp)
238238
t.libraries
239239

@@ -339,8 +339,8 @@ let of_libs ~packages_dir libs =
339339
match rel_path with
340340
| None -> acc
341341
| Some rel_path ->
342-
let pkgdir = find_pkg packages_dir pkg_name in
343-
let id = Fpath.(parent_of_pages pkgdir // rel_path) in
342+
let pkgname = mk_pkgname packages_dir pkg_name in
343+
let id = Fpath.(parent_of_pages pkgname // rel_path) in
344344
let mld_parent_id = id |> Fpath.parent |> Fpath.rem_empty_seg in
345345
let page_name = Fpath.(rem_ext mld_path |> filename) in
346346
let odoc_file =
@@ -354,7 +354,7 @@ let of_libs ~packages_dir libs =
354354
mld_parent_id = Odoc.id_of_fpath mld_parent_id;
355355
mld_path;
356356
mld_deps;
357-
mld_pkg = pkgdir;
357+
mld_pkgname = pkgname;
358358
}
359359
:: acc)
360360
odoc_pages []
@@ -373,10 +373,10 @@ let of_libs ~packages_dir libs =
373373
Logs.debug (fun m -> m "No package for dir %a\n%!" Fpath.pp dir);
374374
acc
375375
| Some pkg ->
376-
let pkgdir = find_pkg packages_dir pkg.name in
376+
let pkgname = mk_pkgname packages_dir pkg.name in
377377

378378
let libraries =
379-
Lib.v ~pkgdir ~libname_of_archive ~dir ~cmtidir:None
379+
Lib.v ~pkgname ~libname_of_archive ~dir ~cmtidir:None
380380
in
381381
let libraries =
382382
List.filter
@@ -407,16 +407,15 @@ let of_libs ~packages_dir libs =
407407
mlds = update_mlds pkg.mlds libraries;
408408
}
409409
| None ->
410-
let mld_odoc_dir = parent_of_pages pkgdir in
410+
let mld_odoc_dir = parent_of_pages pkgname in
411411
Some
412412
{
413-
name = pkg.name;
413+
pkgname;
414414
version = pkg.version;
415415
libraries;
416416
mlds;
417417
mld_odoc_dir;
418418
other_docs;
419-
pkgdir;
420419
})
421420
acc)
422421
dirs Util.StringMap.empty

0 commit comments

Comments
 (0)