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
; action : (unit, Action.t) Build.t
; 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 rules, deps =
List.fold_left actions ~init:(rules, deps)
~f:(fun (rules, deps) { Dir_status. stamp; action; locks } ->
let path =
Path.extend_basename base_path
~suffix:("-" ^ Digest.to_hex stamp)
in
let rule =
Pre_rule.make ~locks ~context:None
(Build.progn [ action; Build.create_file path ])
in
(rule :: rules, Pset.add deps path))
~f:(fun (rules, deps)
{ Dir_status. stamp; action; locks ; context } ->
let path =
Path.extend_basename base_path
~suffix:("-" ^ Digest.to_hex stamp)
in
let rule =
Pre_rule.make ~locks ~context:(Some context)
(Build.progn [ action; Build.create_file path ])
in
(rule :: rules, Pset.add deps path))
in
let path = Path.extend_basename base_path ~suffix:Alias0.suffix in
(Pre_rule.make
@ -1479,11 +1481,12 @@ module Alias = struct
let def = get_alias_def build_system t in
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
def.actions <- { stamp = Digest.string (Sexp.to_string stamp)
; action
; locks
; context
} :: def.actions
end

View File

@ -140,6 +140,7 @@ module Alias : sig
val add_action
: build_system
-> t
-> context:Context.t
-> ?locks:Path.t list
-> stamp:Sexp.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
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 load_dir t ~dir = Build_system.load_dir t.build_system ~dir