From fae09828afedc795bde064e6f53f0d69b718d5bb Mon Sep 17 00:00:00 2001 From: Jeremie Dimino Date: Mon, 19 Mar 2018 19:22:58 -0400 Subject: [PATCH] Use ; as path separator for OCAMLPATH on Cygwin Since this is what ocamlfind expects --- src/bin.mli | 2 ++ src/context.ml | 15 +++++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/bin.mli b/src/bin.mli index 0c927b00..7559442a 100644 --- a/src/bin.mli +++ b/src/bin.mli @@ -1,5 +1,7 @@ (** OCaml binaries *) +(** Character used to separate entries in [PATH] and similar + environment variables *) val path_sep : char (** Contents of [PATH] *) diff --git a/src/context.ml b/src/context.ml index b358f05c..60d373ad 100644 --- a/src/context.ml +++ b/src/context.ml @@ -255,18 +255,25 @@ let create ~(kind : Kind.t) ~path ~env ~name ~merlin ~targets () = in let env = 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 match Env.get env var with | 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 let vars = [ extend_var "CAML_LD_LIBRARY_PATH" (Path.relative (Config.local_install_dir ~context:name) "lib/stublibs") - ; extend_var "OCAMLPATH" + ; extend_var "OCAMLPATH" ~path_sep:ocamlpath_sep (Path.relative (Config.local_install_dir ~context:name) "lib") @@ -399,7 +406,7 @@ let create_for_opam ?root ~targets ~switch ~name ?(merlin=false) () = in let path = match Env.Map.find vars "PATH" with - | None -> Bin.path + | None -> Bin.path | Some s -> Bin.parse_path s in let env = Env.extend (Env.initial ()) ~vars in