diff --git a/src/build_system.ml b/src/build_system.ml index 05997a31..275fed05 100644 --- a/src/build_system.ml +++ b/src/build_system.ml @@ -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 diff --git a/src/build_system.mli b/src/build_system.mli index b10a10fc..df6edbc5 100644 --- a/src/build_system.mli +++ b/src/build_system.mli @@ -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 diff --git a/src/super_context.ml b/src/super_context.ml index 6865261d..a646304a 100644 --- a/src/super_context.ml +++ b/src/super_context.ml @@ -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