Skip to content

Commit

Permalink
get rid of the result record
Browse files Browse the repository at this point in the history
Signed-off-by: Arseniy Alekseyev <aalekseyev@janestreet.com>
  • Loading branch information
aalekseyev committed May 8, 2019
1 parent 443dd96 commit e9bdf06
Showing 1 changed file with 25 additions and 35 deletions.
60 changes: 25 additions & 35 deletions src/install_rules.ml
Original file line number Diff line number Diff line change
Expand Up @@ -461,58 +461,48 @@ let install_alias (ctx : Context.t) (package : Local_package.t) =
Build_system.Alias.add_deps
install_alias (Path.Set.singleton install_file)))

module Result =struct
module Scheme' =struct

type t = {
package_source_files : Path.t list Memo.Lazy.t;
scheme : Rules.Dir_rules.t Scheme.t;
}
type t = Rules.Dir_rules.t Scheme.t

let to_sexp _ = Sexp.Atom "<opaque>"
end

let memo =
Memo.create
~input:(module Sctx_and_package)
~output:(Simple (module Result))
~output:(Simple (module Scheme'))
"install-rules-and-pkg-entries"
~doc:"install rules and package entries"
~visibility:Hidden
Sync
(Some (fun (sctx, pkg) ->
let ctx = Super_context.context sctx in
let context_name = ctx.name in
let files_and_rules = Memo.lazy_ (fun () ->
Rules.collect (fun () ->
let rules = Memo.lazy_ (fun () ->
Rules.collect_unit (fun () ->
install_rules sctx pkg;
install_alias ctx pkg;

install_alias ctx pkg
))
in
let package_source_files = Memo.lazy_ (fun () ->
package_source_files sctx pkg)
in
{
package_source_files;
scheme = (
Approximation (
(Dir_set.union_all
[
Dir_set.subtree
(Config.local_install_dir ~context:context_name);
Dir_set.singleton (Local_package.build_dir pkg);
Dir_set.singleton (Path.as_in_build_dir_exn ctx.build_dir)
])
,
Thunk (fun () -> Finite (
Rules.to_map (snd (Memo.Lazy.force files_and_rules))))
)
);
}))
(
Approximation (
(Dir_set.union_all
[
Dir_set.subtree
(Config.local_install_dir ~context:context_name);
Dir_set.singleton (Local_package.build_dir pkg);
Dir_set.singleton (Path.as_in_build_dir_exn ctx.build_dir)
])
,
Thunk (fun () -> Finite (
Rules.to_map (Memo.Lazy.force rules)))
)
)))

let run sctx pkg = Memo.exec memo (sctx, pkg)
let scheme sctx pkg = Memo.exec memo (sctx, pkg)

let per_ctx_memo =
let scheme_per_ctx_memo =
Memo.create
~input:(module Super_context)
~output:
Expand All @@ -529,13 +519,13 @@ let per_ctx_memo =
let scheme =
Scheme.all (
List.map (Package.Name.Map.to_list packages)
~f:(fun (_, pkg) -> (run sctx pkg).scheme))
~f:(fun (_, pkg) -> (scheme sctx pkg)))
in
Scheme.evaluate ~union:Rules.Dir_rules.union scheme))

let gen_rules sctx ~dir =
let rules =
Scheme.Evaluated.get_rules (Memo.exec per_ctx_memo sctx) ~dir
Scheme.Evaluated.get_rules (Memo.exec scheme_per_ctx_memo sctx) ~dir
|> Option.value ~default:Rules.Dir_rules.empty
in
rules ()
Expand All @@ -545,7 +535,7 @@ let packages =
Package.Name.Map.foldi (Local_package.of_sctx sctx)
~init:[]
~f:(fun name pkg acc ->
List.fold_left (Memo.Lazy.force (run sctx pkg).package_source_files)
List.fold_left (package_source_files sctx pkg)
~init:acc ~f:(fun acc path -> (path, name) :: acc))
|> Path.Map.of_list_multi
in
Expand Down

0 comments on commit e9bdf06

Please sign in to comment.