Add context for alias actions
This commit is contained in:
parent
bd457ea549
commit
9a1910cf6f
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue