Skip to content

Commit 3addbf9

Browse files
panglesdjonludlam
authored andcommitted
Driver: uniformize names for _odoc dir
`odoc_dir` was sometimes used to refer to the root of the directory containing .odoc files (`_odoc` by default), and sometimes used to refer to the direct parent of a `.odoc` file. The root of the directory containing `.odoc` files was referred as `odoc_dir`, `output_dir`. The root of the directory containing `.odocl` files was referred as `odocl_dir`, `link_dir`, `linked_dir`. This commit cleans that. The root of the directory for `.odoc` files is consistently named `odoc_dir`, the root for `.odocl` files is `odocl_dir`.
1 parent 770c17d commit 3addbf9

File tree

7 files changed

+65
-109
lines changed

7 files changed

+65
-109
lines changed

src/driver/compile.ml

+1-1
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ let find_partials odoc_dir :
9292
| Ok h -> (h, tbl)
9393
| Error _ -> (* odoc_dir doesn't exist...? *) (Util.StringMap.empty, tbl)
9494

95-
let compile ?partial ~partial_dir ?linked_dir:_ (all : Odoc_unit.t list) =
95+
let compile ?partial ~partial_dir (all : Odoc_unit.t list) =
9696
let hashes = mk_byhash all in
9797
let compile_mod =
9898
(* Modules have a more complicated compilation because:

src/driver/compile.mli

+1-5
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,7 @@ type compiled
33
val init_stats : Odoc_unit.t list -> unit
44

55
val compile :
6-
?partial:Fpath.t ->
7-
partial_dir:Fpath.t ->
8-
?linked_dir:Fpath.t ->
9-
Odoc_unit.t list ->
10-
compiled list
6+
?partial:Fpath.t -> partial_dir:Fpath.t -> Odoc_unit.t list -> compiled list
117
(** Use [partial] to reuse the output of a previous call to [compile]. Useful in
128
the voodoo context.
139

src/driver/landing_pages.ml

+25-46
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ open Odoc_unit
33

44
let fpf = Format.fprintf
55

6-
let make_unit ~odoc_dir ~odocl_dir ~mld_dir ~output_dir rel_path ~content
6+
let make_unit ~odoc_dir ~odocl_dir ~mld_dir rel_path ~content
77
?(include_dirs = Fpath.Set.empty) ~pkgname ~pkg_args () =
88
let input_file = Fpath.(mld_dir // rel_path / "index.mld") in
99
let odoc_file = Fpath.(odoc_dir // rel_path / "page-index.odoc") in
@@ -14,9 +14,8 @@ let make_unit ~odoc_dir ~odocl_dir ~mld_dir ~output_dir rel_path ~content
1414
let parent_id = rel_path |> Odoc.Id.of_fpath in
1515
{
1616
parent_id;
17-
odoc_dir;
1817
input_file;
19-
output_dir;
18+
output_dir = odoc_dir;
2019
odoc_file;
2120
odocl_file;
2221
pkg_args;
@@ -37,20 +36,15 @@ module PackageLanding = struct
3736
fpf ppf "{1 Libraries}@\n@\n{{!/%s/lib/index}Libraries for %s}@\n"
3837
pkg.name pkg.name
3938

40-
let page ~odoc_dir ~odocl_dir ~mld_dir ~output_dir ~pkg =
39+
let page ~odoc_dir ~odocl_dir ~mld_dir ~pkg =
4140
let content = content pkg in
4241
let rel_path = pkg.pkg_dir in
4342
let pages_rel = [ (pkg.name, rel_path) ] in
4443
let pkg_args =
45-
{
46-
Pkg_args.pages = pages_rel;
47-
libs = [];
48-
compile_dir = output_dir;
49-
link_dir = odocl_dir;
50-
}
44+
{ Pkg_args.pages = pages_rel; libs = []; odoc_dir; odocl_dir }
5145
in
52-
make_unit ~odoc_dir ~odocl_dir ~mld_dir ~output_dir rel_path ~content
53-
~pkgname:pkg.name ~pkg_args ()
46+
make_unit ~odoc_dir ~odocl_dir ~mld_dir rel_path ~content ~pkgname:pkg.name
47+
~pkg_args ()
5448
end
5549

5650
module PackageList = struct
@@ -64,21 +58,16 @@ module PackageList = struct
6458
in
6559
List.iter print_pkg sorted_packages
6660

67-
let page ~mld_dir ~odoc_dir ~odocl_dir ~output_dir all =
61+
let page ~mld_dir ~odoc_dir ~odocl_dir all =
6862
let content = content all in
6963
let rel_path = Fpath.v "./" in
7064
let pkgname = "__driver" in
7165
let pages_rel = [ (pkgname, rel_path) ] in
7266
let pkg_args =
73-
{
74-
Pkg_args.pages = pages_rel;
75-
libs = [];
76-
compile_dir = output_dir;
77-
link_dir = odocl_dir;
78-
}
67+
{ Pkg_args.pages = pages_rel; libs = []; odoc_dir; odocl_dir }
7968
in
80-
make_unit ~odoc_dir ~odocl_dir ~mld_dir ~output_dir ~content ~pkgname
81-
~pkg_args rel_path ()
69+
make_unit ~odoc_dir ~odocl_dir ~mld_dir ~content ~pkgname ~pkg_args rel_path
70+
()
8271
end
8372

8473
module LibraryLanding = struct
@@ -89,21 +78,16 @@ module LibraryLanding = struct
8978
in
9079
List.iter print_module lib.modules
9180

92-
let page ~pkg ~odoc_dir ~odocl_dir ~mld_dir ~output_dir ~pkg_dir lib =
81+
let page ~pkg ~odoc_dir ~odocl_dir ~mld_dir ~pkg_dir lib =
9382
let content = content lib in
9483
let rel_path = Fpath.(pkg_dir / "lib" / lib.lib_name) in
9584
let pages_rel = [ (pkg.name, rel_path) ] in
9685
let pkg_args =
97-
{
98-
Pkg_args.pages = pages_rel;
99-
libs = [];
100-
link_dir = odocl_dir;
101-
compile_dir = output_dir;
102-
}
86+
{ Pkg_args.pages = pages_rel; libs = []; odocl_dir; odoc_dir }
10387
in
10488
let include_dirs = Fpath.Set.singleton Fpath.(odoc_dir // rel_path) in
105-
make_unit ~odoc_dir ~odocl_dir ~mld_dir ~output_dir rel_path ~content
106-
~pkgname:pkg.name ~include_dirs ~pkg_args ()
89+
make_unit ~odoc_dir ~odocl_dir ~mld_dir rel_path ~content ~pkgname:pkg.name
90+
~include_dirs ~pkg_args ()
10791
end
10892

10993
module PackageLibLanding = struct
@@ -114,37 +98,32 @@ module PackageLibLanding = struct
11498
in
11599
List.iter print_lib pkg.libraries
116100

117-
let page ~pkg ~odoc_dir ~odocl_dir ~mld_dir ~output_dir =
101+
let page ~pkg ~odoc_dir ~odocl_dir ~mld_dir =
118102
let content = content pkg in
119103
let rel_path = Fpath.(pkg.pkg_dir / "lib") in
120104
let pages_rel = [ (pkg.name, rel_path) ] in
121105
let pkg_args =
122-
{
123-
Pkg_args.pages = pages_rel;
124-
libs = [];
125-
compile_dir = output_dir;
126-
link_dir = odocl_dir;
127-
}
106+
{ Pkg_args.pages = pages_rel; libs = []; odoc_dir; odocl_dir }
128107
in
129-
make_unit ~odoc_dir ~odocl_dir ~mld_dir ~output_dir rel_path ~content
130-
~pkgname:pkg.name ~pkg_args ()
108+
make_unit ~odoc_dir ~odocl_dir ~mld_dir rel_path ~content ~pkgname:pkg.name
109+
~pkg_args ()
131110
end
132111

133-
let of_package ~mld_dir ~odoc_dir ~odocl_dir ~output_dir pkg =
112+
let of_package ~mld_dir ~odoc_dir ~odocl_dir pkg =
134113
let library_pages =
135114
List.map
136115
(LibraryLanding.page ~pkg ~odoc_dir ~odocl_dir ~mld_dir
137-
~pkg_dir:pkg.pkg_dir ~output_dir)
116+
~pkg_dir:pkg.pkg_dir)
138117
pkg.libraries
139118
in
140119
let package_landing_page =
141-
PackageLanding.page ~odoc_dir ~odocl_dir ~mld_dir ~output_dir ~pkg
120+
PackageLanding.page ~odoc_dir ~odocl_dir ~mld_dir ~pkg
142121
in
143122
let library_list_page =
144-
PackageLibLanding.page ~odoc_dir ~odocl_dir ~mld_dir ~output_dir ~pkg
123+
PackageLibLanding.page ~odoc_dir ~odocl_dir ~mld_dir ~pkg
145124
in
146125
package_landing_page :: library_list_page :: library_pages
147126

148-
let of_packages ~mld_dir ~odoc_dir ~odocl_dir ~output_dir all =
149-
PackageList.page ~mld_dir ~odoc_dir ~odocl_dir ~output_dir all
150-
:: List.concat_map (of_package ~mld_dir ~odoc_dir ~odocl_dir ~output_dir) all
127+
let of_packages ~mld_dir ~odoc_dir ~odocl_dir all =
128+
PackageList.page ~mld_dir ~odoc_dir ~odocl_dir all
129+
:: List.concat_map (of_package ~mld_dir ~odoc_dir ~odocl_dir) all

src/driver/landing_pages.mli

-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,5 @@ val of_packages :
22
mld_dir:Fpath.t ->
33
odoc_dir:Fpath.t ->
44
odocl_dir:Fpath.t ->
5-
output_dir:Fpath.t ->
65
Packages.t list ->
76
[> `Mld ] Odoc_unit.unit list

src/driver/odoc_driver.ml

+4-8
Original file line numberDiff line numberDiff line change
@@ -625,22 +625,18 @@ let run libs verbose packages_dir odoc_dir odocl_dir html_dir stats nb_workers
625625
let all =
626626
let all = Util.StringMap.bindings all |> List.map snd in
627627
let internal =
628-
Odoc_unit.of_packages ~output_dir:odoc_dir ~linked_dir:odocl_dir
629-
~index_dir:None ~extra_libs_paths all
628+
Odoc_unit.of_packages ~odoc_dir ~odocl_dir ~index_dir:None
629+
~extra_libs_paths all
630630
in
631631
let external_ =
632632
let mld_dir = odoc_dir in
633633
let odocl_dir = Option.value odocl_dir ~default:odoc_dir in
634-
Landing_pages.of_packages ~mld_dir ~odoc_dir ~odocl_dir
635-
~output_dir:odoc_dir all
634+
Landing_pages.of_packages ~mld_dir ~odoc_dir ~odocl_dir all
636635
in
637636
internal @ external_
638637
in
639638
Compile.init_stats all;
640-
let compiled =
641-
Compile.compile ?partial ~partial_dir:odoc_dir ?linked_dir:odocl_dir
642-
all
643-
in
639+
let compiled = Compile.compile ?partial ~partial_dir:odoc_dir all in
644640
let linked = Compile.link compiled in
645641
let occurrence_file =
646642
let output =

src/driver/odoc_unit.ml

+30-43
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,26 @@
11
module Pkg_args = struct
22
type t = {
3-
compile_dir : Fpath.t;
4-
link_dir : Fpath.t;
3+
odoc_dir : Fpath.t;
4+
odocl_dir : Fpath.t;
55
pages : (string * Fpath.t) list;
66
libs : (string * Fpath.t) list;
77
}
88

99
let map_rel dir = List.map (fun (a, b) -> (a, Fpath.(dir // b)))
1010

11-
let compiled_pages v = map_rel v.compile_dir v.pages
12-
let compiled_libs v = map_rel v.compile_dir v.libs
13-
let linked_pages v = map_rel v.link_dir v.pages
14-
let linked_libs v = map_rel v.link_dir v.libs
11+
let compiled_pages v = map_rel v.odoc_dir v.pages
12+
let compiled_libs v = map_rel v.odoc_dir v.libs
13+
let linked_pages v = map_rel v.odocl_dir v.pages
14+
let linked_libs v = map_rel v.odocl_dir v.libs
1515

1616
let combine v1 v2 =
17-
if v1.compile_dir <> v2.compile_dir then
18-
Fmt.invalid_arg "combine: compile_dir differs";
19-
if v1.link_dir <> v2.link_dir then
20-
Fmt.invalid_arg "combine: link_dir differs";
17+
if v1.odoc_dir <> v2.odoc_dir then
18+
Fmt.invalid_arg "combine: odoc_dir differs";
19+
if v1.odocl_dir <> v2.odocl_dir then
20+
Fmt.invalid_arg "combine: odocl_dir differs";
2121
{
22-
compile_dir = v1.compile_dir;
23-
link_dir = v1.link_dir;
22+
odoc_dir = v1.odoc_dir;
23+
odocl_dir = v1.odocl_dir;
2424
pages = v1.pages @ v2.pages;
2525
libs = v1.libs @ v2.libs;
2626
}
@@ -32,8 +32,8 @@ module Pkg_args = struct
3232
Format.fprintf fmt "(%s, %a)" a Fpath.pp b))
3333
in
3434
Format.fprintf fmt
35-
"@[<hov>compile_dir: %a@;link_dir: %a@;pages: [%a]@;libs: [%a]@]" Fpath.pp
36-
x.compile_dir Fpath.pp x.link_dir sfp_pp x.pages sfp_pp x.libs
35+
"@[<hov>odoc_dir: %a@;odocl_dir: %a@;pages: [%a]@;libs: [%a]@]" Fpath.pp
36+
x.odoc_dir Fpath.pp x.odocl_dir sfp_pp x.pages sfp_pp x.libs
3737
end
3838

3939
type index = {
@@ -50,7 +50,6 @@ let pp_index fmt x =
5050

5151
type 'a unit = {
5252
parent_id : Odoc.Id.t;
53-
odoc_dir : Fpath.t;
5453
input_file : Fpath.t;
5554
output_dir : Fpath.t;
5655
odoc_file : Fpath.t;
@@ -98,7 +97,6 @@ and pp : all_kinds unit Fmt.t =
9897
fun fmt x ->
9998
Format.fprintf fmt
10099
"@[<hov>parent_id: %s@;\
101-
odoc_dir: %a@;\
102100
input_file: %a@;\
103101
output_dir: %a@;\
104102
odoc_file: %a@;\
@@ -110,8 +108,8 @@ and pp : all_kinds unit Fmt.t =
110108
kind:%a@;\
111109
@]"
112110
(Odoc.Id.to_string x.parent_id)
113-
Fpath.pp x.odoc_dir Fpath.pp x.input_file Fpath.pp x.output_dir Fpath.pp
114-
x.odoc_file Fpath.pp x.odocl_file Pkg_args.pp x.pkg_args x.pkgname
111+
Fpath.pp x.input_file Fpath.pp x.output_dir Fpath.pp x.odoc_file Fpath.pp
112+
x.odocl_file Pkg_args.pp x.pkg_args x.pkgname
115113
Fmt.(list ~sep:comma Fpath.pp)
116114
(Fpath.Set.to_list x.include_dirs)
117115
(Fmt.option pp_index) x.index pp_kind
@@ -121,12 +119,10 @@ let doc_dir pkg = Fpath.(pkg.Packages.pkg_dir / "doc")
121119
let lib_dir pkg lib =
122120
Fpath.(pkg.Packages.pkg_dir / "lib" / lib.Packages.lib_name)
123121

124-
let of_packages ~output_dir ~linked_dir ~index_dir ~extra_libs_paths
122+
let of_packages ~odoc_dir ~odocl_dir ~index_dir ~extra_libs_paths
125123
(pkgs : Packages.t list) : t list =
126-
let linked_dir =
127-
match linked_dir with None -> output_dir | Some dir -> dir
128-
in
129-
let index_dir = match index_dir with None -> output_dir | Some dir -> dir in
124+
let odocl_dir = match odocl_dir with None -> odoc_dir | Some dir -> dir in
125+
let index_dir = match index_dir with None -> odoc_dir | Some dir -> dir in
130126

131127
(* [module_of_hash] Maps a hash to the corresponding [Package.t], library name and
132128
[Packages.modulety]. [lib_dirs] maps a library name to the odoc dir containing its
@@ -168,12 +164,7 @@ let of_packages ~output_dir ~linked_dir ~index_dir ~extra_libs_paths
168164
let base_args pkg lib_deps : Pkg_args.t =
169165
let own_page = dash_p pkg in
170166
let own_libs = List.concat_map dash_l (Util.StringSet.to_list lib_deps) in
171-
{
172-
pages = [ own_page ];
173-
libs = own_libs;
174-
compile_dir = output_dir;
175-
link_dir = linked_dir;
176-
}
167+
{ pages = [ own_page ]; libs = own_libs; odoc_dir; odocl_dir }
177168
in
178169
let args_of_config config : Pkg_args.t =
179170
let { Global_config.deps = { packages; libraries } } = config in
@@ -186,12 +177,7 @@ let of_packages ~output_dir ~linked_dir ~index_dir ~extra_libs_paths
186177
packages
187178
in
188179
let libs_rel = List.concat_map dash_l libraries in
189-
{
190-
pages = pages_rel;
191-
libs = libs_rel;
192-
compile_dir = output_dir;
193-
link_dir = linked_dir;
194-
}
180+
{ pages = pages_rel; libs = libs_rel; odoc_dir; odocl_dir }
195181
in
196182
let args_of =
197183
let cache = Hashtbl.create 10 in
@@ -222,19 +208,19 @@ let of_packages ~output_dir ~linked_dir ~index_dir ~extra_libs_paths
222208
let ( // ) = Fpath.( // ) in
223209
let ( / ) = Fpath.( / ) in
224210
let pkg_args = args_of pkg lib_deps in
225-
let odoc_dir = output_dir // rel_dir in
226211
let parent_id = rel_dir |> Odoc.Id.of_fpath in
227-
let odoc_file = odoc_dir / (String.uncapitalize_ascii name ^ ".odoc") in
212+
let odoc_file =
213+
odoc_dir // rel_dir / (String.uncapitalize_ascii name ^ ".odoc")
214+
in
228215
(* odoc will uncapitalise the output filename *)
229216
let odocl_file =
230-
linked_dir // rel_dir / (String.uncapitalize_ascii name ^ ".odocl")
217+
odocl_dir // rel_dir / (String.uncapitalize_ascii name ^ ".odocl")
231218
in
232219
{
233-
output_dir;
220+
output_dir = odoc_dir;
234221
pkgname = pkg.Packages.name;
235222
pkg_args;
236223
parent_id;
237-
odoc_dir;
238224
input_file;
239225
odoc_file;
240226
odocl_file;
@@ -268,7 +254,8 @@ let of_packages ~output_dir ~linked_dir ~index_dir ~extra_libs_paths
268254
let include_dirs, kind =
269255
let deps = build_deps intf.mif_deps in
270256
let include_dirs =
271-
List.map (fun u -> u.odoc_dir) deps |> Fpath.Set.of_list
257+
List.map (fun u -> Fpath.parent u.odoc_file) deps
258+
|> Fpath.Set.of_list
272259
in
273260
let kind = `Intf { hidden; hash = intf.mif_hash; deps } in
274261
(include_dirs, kind)
@@ -291,7 +278,7 @@ let of_packages ~output_dir ~linked_dir ~index_dir ~extra_libs_paths
291278
let rel_dir = lib_dir pkg lib in
292279
let include_dirs =
293280
let deps = build_deps impl.mip_deps in
294-
List.map (fun u -> u.odoc_dir) deps |> Fpath.Set.of_list
281+
List.map (fun u -> Fpath.parent u.odoc_file) deps |> Fpath.Set.of_list
295282
in
296283
let kind =
297284
let src_name = Fpath.filename src_path in
@@ -334,7 +321,7 @@ let of_packages ~output_dir ~linked_dir ~index_dir ~extra_libs_paths
334321
List.map (fun (lib : Packages.libty) -> lib_dir pkg lib) pkg.libraries
335322
in
336323
let include_dirs =
337-
(output_dir // rel_dir) :: include_dirs |> Fpath.Set.of_list
324+
(odoc_dir // rel_dir) :: include_dirs |> Fpath.Set.of_list
338325
in
339326
let kind = `Mld in
340327
let name = mld_path |> Fpath.rem_ext |> Fpath.basename |> ( ^ ) "page-" in

0 commit comments

Comments
 (0)