Add context for alias actions

This commit is contained in:
Rudi Grinberg 2018-03-15 18:19:20 +08:00
parent bd457ea549
commit 9a1910cf6f
3 changed files with 16 additions and 12 deletions

View File

@ -292,6 +292,7 @@ module Dir_status = struct
{ stamp : Digest.t { stamp : Digest.t
; action : (unit, Action.t) Build.t ; action : (unit, Action.t) Build.t
; locks : Path.t list ; locks : Path.t list
; context : Context.t
} }
@ -854,16 +855,17 @@ and load_dir_step2_exn t ~dir ~collector ~lazy_generators =
let base_path = Path.relative alias_dir name in let base_path = Path.relative alias_dir name in
let rules, deps = let rules, deps =
List.fold_left actions ~init:(rules, deps) List.fold_left actions ~init:(rules, deps)
~f:(fun (rules, deps) { Dir_status. stamp; action; locks } -> ~f:(fun (rules, deps)
let path = { Dir_status. stamp; action; locks ; context } ->
Path.extend_basename base_path let path =
~suffix:("-" ^ Digest.to_hex stamp) Path.extend_basename base_path
in ~suffix:("-" ^ Digest.to_hex stamp)
let rule = in
Pre_rule.make ~locks ~context:None let rule =
(Build.progn [ action; Build.create_file path ]) Pre_rule.make ~locks ~context:(Some context)
in (Build.progn [ action; Build.create_file path ])
(rule :: rules, Pset.add deps path)) in
(rule :: rules, Pset.add deps path))
in in
let path = Path.extend_basename base_path ~suffix:Alias0.suffix in let path = Path.extend_basename base_path ~suffix:Alias0.suffix in
(Pre_rule.make (Pre_rule.make
@ -1479,11 +1481,12 @@ module Alias = struct
let def = get_alias_def build_system t in let def = get_alias_def build_system t in
def.deps <- Pset.union def.deps (Pset.of_list deps) def.deps <- Pset.union def.deps (Pset.of_list deps)
let add_action build_system t ?(locks=[]) ~stamp action = let add_action build_system t ~context ?(locks=[]) ~stamp action =
let def = get_alias_def build_system t in let def = get_alias_def build_system t in
def.actions <- { stamp = Digest.string (Sexp.to_string stamp) def.actions <- { stamp = Digest.string (Sexp.to_string stamp)
; action ; action
; locks ; locks
; context
} :: def.actions } :: def.actions
end end

View File

@ -140,6 +140,7 @@ module Alias : sig
val add_action val add_action
: build_system : build_system
-> t -> t
-> context:Context.t
-> ?locks:Path.t list -> ?locks:Path.t list
-> stamp:Sexp.t -> stamp:Sexp.t
-> (unit, Action.t) Build.t -> (unit, Action.t) Build.t

View File

@ -227,7 +227,7 @@ let add_alias_deps t alias deps =
Alias.add_deps t.build_system alias deps Alias.add_deps t.build_system alias deps
let add_alias_action t alias ?locks ~stamp action = let add_alias_action t alias ?locks ~stamp action =
Alias.add_action t.build_system alias ?locks ~stamp action Alias.add_action t.build_system ~context:t.context alias ?locks ~stamp action
let eval_glob t ~dir re = Build_system.eval_glob t.build_system ~dir re let eval_glob t ~dir re = Build_system.eval_glob t.build_system ~dir re
let load_dir t ~dir = Build_system.load_dir t.build_system ~dir let load_dir t ~dir = Build_system.load_dir t.build_system ~dir