From 9f3eb956d3f24c490680fe89d570bf6eda19a7a9 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Thu, 22 Mar 2018 22:42:42 +0800 Subject: [PATCH 1/2] Add Env.update --- src/env.ml | 3 +++ src/env.mli | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/env.ml b/src/env.ml index 69a9ab75..4546584f 100644 --- a/src/env.ml +++ b/src/env.ml @@ -77,3 +77,6 @@ let diff x y = | Some _ -> None | None -> vx) |> make + +let update t ~var ~f = + make (Map.update t.vars var ~f) diff --git a/src/env.mli b/src/env.mli index 37cd5fe1..904a8d15 100644 --- a/src/env.mli +++ b/src/env.mli @@ -23,4 +23,7 @@ val add : t -> var:Var.t -> value:string -> t val diff : t -> t -> t +val update : t -> var:string -> f:(string option -> string option) -> t + val sexp_of_t : t -> Sexp.t + From 8859a644e9b5b2ab733977b837cc62fae4939456 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Thu, 22 Mar 2018 22:44:21 +0800 Subject: [PATCH 2/2] When executing in the target, use the host's PATH variable --- src/context.ml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/context.ml b/src/context.ml index 22cb0caf..cda1caec 100644 --- a/src/context.ml +++ b/src/context.ml @@ -300,13 +300,20 @@ let create ~(kind : Kind.t) ~path ~env ~name ~merlin ~targets () = (Path.relative (Config.local_install_dir ~context:name) "lib") - ; extend_var "PATH" - (Config.local_install_bin_dir ~context:name) ; extend_var "MANPATH" (Config.local_install_man_dir ~context:name) ] in Env.extend env ~vars:(Env.Map.of_list_exn vars) + |> Env.update ~var:"PATH" ~f:(fun _ -> + match host with + | None -> + let _key, path = + extend_var "PATH" (Config.local_install_bin_dir ~context:name) in + Some path + | Some host -> + Env.get host.env "PATH" + ) in let stdlib_dir = Path.of_string (Ocaml_config.standard_library ocfg) in let natdynlink_supported = Ocaml_config.natdynlink_supported ocfg in