Use ; as path separator for OCAMLPATH on Cygwin

Since this is what ocamlfind expects
This commit is contained in:
Jeremie Dimino 2018-03-19 19:22:58 -04:00
parent 3f22d9f82b
commit fae09828af
2 changed files with 13 additions and 4 deletions

View File

@ -1,5 +1,7 @@
(** OCaml binaries *) (** OCaml binaries *)
(** Character used to separate entries in [PATH] and similar
environment variables *)
val path_sep : char val path_sep : char
(** Contents of [PATH] *) (** Contents of [PATH] *)

View File

@ -255,18 +255,25 @@ let create ~(kind : Kind.t) ~path ~env ~name ~merlin ~targets () =
in in
let env = let env =
let cwd = Sys.getcwd () in let cwd = Sys.getcwd () in
let extend_var var v = let ocamlpath_sep =
if Sys.cygwin then
(* because that's what ocamlfind expects *)
';'
else
Bin.path_sep
in
let extend_var var ?(path_sep=Bin.path_sep) v =
let v = Filename.concat cwd (Path.to_string v) in let v = Filename.concat cwd (Path.to_string v) in
match Env.get env var with match Env.get env var with
| None -> (var, v) | None -> (var, v)
| Some prev -> (var, sprintf "%s%c%s" v Bin.path_sep prev) | Some prev -> (var, sprintf "%s%c%s" v path_sep prev)
in in
let vars = let vars =
[ extend_var "CAML_LD_LIBRARY_PATH" [ extend_var "CAML_LD_LIBRARY_PATH"
(Path.relative (Path.relative
(Config.local_install_dir ~context:name) (Config.local_install_dir ~context:name)
"lib/stublibs") "lib/stublibs")
; extend_var "OCAMLPATH" ; extend_var "OCAMLPATH" ~path_sep:ocamlpath_sep
(Path.relative (Path.relative
(Config.local_install_dir ~context:name) (Config.local_install_dir ~context:name)
"lib") "lib")
@ -399,7 +406,7 @@ let create_for_opam ?root ~targets ~switch ~name ?(merlin=false) () =
in in
let path = let path =
match Env.Map.find vars "PATH" with match Env.Map.find vars "PATH" with
| None -> Bin.path | None -> Bin.path
| Some s -> Bin.parse_path s | Some s -> Bin.parse_path s
in in
let env = Env.extend (Env.initial ()) ~vars in let env = Env.extend (Env.initial ()) ~vars in