Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 10 additions & 26 deletions src/dune_rules/findlib.ml
Original file line number Diff line number Diff line change
Expand Up @@ -40,45 +40,29 @@ let builtin_for_dune : Dune_package.t =
;;

module DB = struct
module Id = Id.Make ()

type t =
{ stdlib_dir : Path.t
{ id : Id.t
; stdlib_dir : Path.t
; paths : Path.t list
; builtins : Meta.Simplified.t Package.Name.Map.t
; ext_lib : Filename.Extension.t
}

let to_dyn { stdlib_dir; paths; builtins; ext_lib } =
let to_dyn { id; stdlib_dir; paths; builtins; ext_lib } =
let open Dyn in
record
[ "stdlib_dir", Path.to_dyn stdlib_dir
[ "id", Id.to_dyn id
; "stdlib_dir", Path.to_dyn stdlib_dir
; "paths", list Path.to_dyn paths
; "builtins", Package.Name.Map.to_dyn Meta.Simplified.to_dyn builtins
; "ext_lib", string ext_lib
]
;;

let equal t { stdlib_dir; paths; builtins; ext_lib } =
Path.equal t.stdlib_dir stdlib_dir
&& List.equal Path.equal t.paths paths
&& Package.Name.Map.equal ~equal:Meta.Simplified.equal t.builtins builtins
&& String.equal t.ext_lib ext_lib
;;

let equal a b =
(* Since the DB is cached per context, physical equality will
shortcut almost all equality tests. *)
phys_equal a b || equal a b
;;

let hash { stdlib_dir; paths; builtins; ext_lib } =
Poly.hash
( Path.hash stdlib_dir
, List.hash Path.hash paths
, Package.Name.Map.to_list builtins
|> List.hash (fun (k, v) ->
Tuple.T2.hash Package.Name.hash Meta.Simplified.hash (k, v))
, String.hash ext_lib )
;;
let equal x y = Id.equal x.id y.id
let hash t = Id.hash t.id

let create ~paths ~(lib_config : Lib_config.t) =
let stdlib_dir = lib_config.stdlib_dir in
Expand All @@ -87,7 +71,7 @@ module DB = struct
let version = lib_config.ocaml_version in
Meta.builtins ~stdlib_dir ~version
in
{ stdlib_dir; paths; builtins; ext_lib }
{ id = Id.gen (); stdlib_dir; paths; builtins; ext_lib }
;;
end

Expand Down
Loading