From e604c695104bff520164de4f1248e79bbc9bce67 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Sun, 11 Mar 2018 12:13:04 +0700 Subject: [PATCH] Remove env_extra in Action It's simply to just use Env.t everywhere. Also, there's no need to have the env in the execution context since it's not used for anything. Only the env that is passed directly is used. --- src/action.ml | 41 +++++++++++++++++++---------------------- 1 file changed, 19 insertions(+), 22 deletions(-) diff --git a/src/action.ml b/src/action.ml index 16f5ca86..2e5bd7e7 100644 --- a/src/action.ml +++ b/src/action.ml @@ -697,10 +697,9 @@ end type exec_context = { context : Context.t option ; purpose : Process.purpose - ; env : Env.t } -let exec_run_direct ~ectx ~dir ~env_extra ~stdout_to ~stderr_to prog args = +let exec_run_direct ~ectx ~dir ~env ~stdout_to ~stderr_to prog args = begin match ectx.context with | None | Some { Context.for_host = None; _ } -> () @@ -715,7 +714,6 @@ let exec_run_direct ~ectx ~dir ~env_extra ~stdout_to ~stderr_to prog args = invalid_prefix ("_build/" ^ target.name); invalid_prefix ("_build/install/" ^ target.name); end; - let env = Env.extend ectx.env ~vars:env_extra in Process.run Strict ~dir:(Path.to_string dir) ~env ~stdout_to ~stderr_to ~purpose:ectx.purpose @@ -732,17 +730,17 @@ let exec_echo stdout_to str = | None -> print_string str; flush stdout | Some (_, oc) -> output_string oc str) -let rec exec t ~ectx ~dir ~env_extra ~stdout_to ~stderr_to = +let rec exec t ~ectx ~dir ~env ~stdout_to ~stderr_to = match t with | Run (Error e, _) -> Prog.Not_found.raise e | Run (Ok prog, args) -> - exec_run ~ectx ~dir ~env_extra ~stdout_to ~stderr_to prog args + exec_run ~ectx ~dir ~env ~stdout_to ~stderr_to prog args | Chdir (dir, t) -> - exec t ~ectx ~dir ~env_extra ~stdout_to ~stderr_to + exec t ~ectx ~dir ~env ~stdout_to ~stderr_to | Setenv (var, value, t) -> exec t ~ectx ~dir ~stdout_to ~stderr_to - ~env_extra:(Env.Map.add env_extra var value) + ~env:(Env.add env ~var ~value) | Redirect (Stdout, fn, Echo s) -> Io.write_file (Path.to_string fn) s; Fiber.return () @@ -754,13 +752,13 @@ let rec exec t ~ectx ~dir ~env_extra ~stdout_to ~stderr_to = | Stderr -> (get_std_output stdout_to, out) | Outputs -> (out, out) in - exec_run_direct ~ectx ~dir ~env_extra ~stdout_to ~stderr_to prog args + exec_run_direct ~ectx ~dir ~env ~stdout_to ~stderr_to prog args | Redirect (outputs, fn, t) -> - redirect ~ectx ~dir outputs fn t ~env_extra ~stdout_to ~stderr_to + redirect ~ectx ~dir outputs fn t ~env ~stdout_to ~stderr_to | Ignore (outputs, t) -> - redirect ~ectx ~dir outputs Config.dev_null t ~env_extra ~stdout_to ~stderr_to + redirect ~ectx ~dir outputs Config.dev_null t ~env ~stdout_to ~stderr_to | Progn l -> - exec_list l ~ectx ~dir ~env_extra ~stdout_to ~stderr_to + exec_list l ~ectx ~dir ~env ~stdout_to ~stderr_to | Echo str -> exec_echo stdout_to str | Cat fn -> Io.with_file_in (Path.to_string fn) ~f:(fun ic -> @@ -813,9 +811,9 @@ let rec exec t ~ectx ~dir ~env_extra ~stdout_to ~stderr_to = let path, arg = Utils.system_shell_exn ~needed_to:"interpret (system ...) actions" in - exec_run ~ectx ~dir ~env_extra ~stdout_to ~stderr_to path [arg; cmd] + exec_run ~ectx ~dir ~env ~stdout_to ~stderr_to path [arg; cmd] | Bash cmd -> - exec_run ~ectx ~dir ~env_extra ~stdout_to ~stderr_to + exec_run ~ectx ~dir ~env ~stdout_to ~stderr_to (Utils.bash_exn ~needed_to:"interpret (bash ...) actions") ["-e"; "-u"; "-o"; "pipefail"; "-c"; cmd] | Write_file (fn, s) -> @@ -867,7 +865,7 @@ let rec exec t ~ectx ~dir ~env_extra ~stdout_to ~stderr_to = Print_diff.print file1 file2 end -and redirect outputs fn t ~ectx ~dir ~env_extra ~stdout_to ~stderr_to = +and redirect outputs fn t ~ectx ~dir ~env ~stdout_to ~stderr_to = let fn = Path.to_string fn in let oc = Io.open_out fn in let out = Some (fn, oc) in @@ -877,18 +875,18 @@ and redirect outputs fn t ~ectx ~dir ~env_extra ~stdout_to ~stderr_to = | Stderr -> (stdout_to, out) | Outputs -> (out, out) in - exec t ~ectx ~dir ~env_extra ~stdout_to ~stderr_to >>| fun () -> + exec t ~ectx ~dir ~env ~stdout_to ~stderr_to >>| fun () -> close_out oc -and exec_list l ~ectx ~dir ~env_extra ~stdout_to ~stderr_to = +and exec_list l ~ectx ~dir ~env ~stdout_to ~stderr_to = match l with | [] -> Fiber.return () | [t] -> - exec t ~ectx ~dir ~env_extra ~stdout_to ~stderr_to + exec t ~ectx ~dir ~env ~stdout_to ~stderr_to | t :: rest -> - exec t ~ectx ~dir ~env_extra ~stdout_to ~stderr_to >>= fun () -> - exec_list rest ~ectx ~dir ~env_extra ~stdout_to ~stderr_to + exec t ~ectx ~dir ~env ~stdout_to ~stderr_to >>= fun () -> + exec_list rest ~ectx ~dir ~env ~stdout_to ~stderr_to let exec ~targets ?context t = let env = @@ -898,9 +896,8 @@ let exec ~targets ?context t = in let targets = Path.Set.to_list targets in let purpose = Process.Build_job targets in - let ectx = { purpose; context; env } in - exec t ~ectx ~dir:Path.root ~env_extra:Env.Map.empty - ~stdout_to:None ~stderr_to:None + let ectx = { purpose; context } in + exec t ~ectx ~dir:Path.root ~env ~stdout_to:None ~stderr_to:None let sandbox t ~sandboxed ~deps ~targets = Progn