Don't use color feature for ocaml 4.02.3

This commit is contained in:
François Bobot 2017-03-27 19:08:02 +02:00 committed by Jérémie Dimino
parent 2bf15067cb
commit 5cca590e34
4 changed files with 22 additions and 11 deletions

View File

@ -153,14 +153,8 @@ let strip_colors_for_stderr s =
(* We redirect the output of all commands, so by default the compiler will disable (* We redirect the output of all commands, so by default the compiler will disable
colors. Since we support colors in the output of commands, we force it via OCAMLPARAM colors. Since we support colors in the output of commands, we force it via OCAMLPARAM
if stderr supports colors. *) if stderr supports colors. *)
let setup_env_for_ocaml_colors = lazy( let setup_env_for_opam_colors = lazy(
if Lazy.force stderr_supports_colors then begin if Lazy.force stderr_supports_colors then begin
let value =
match Sys.getenv "OCAMLPARAM" with
| exception Not_found -> "color=always,_"
| s -> "color=always," ^ s
in
Unix.putenv "OCAMLPARAM" value;
match Sys.getenv "OPAMCOLOR" with match Sys.getenv "OPAMCOLOR" with
| exception Not_found -> Unix.putenv "OPAMCOLOR" "always" | exception Not_found -> Unix.putenv "OPAMCOLOR" "always"
| _ -> () | _ -> ()

View File

@ -2,7 +2,7 @@ val colorize : key:string -> string -> string
val strip : string -> string val strip : string -> string
val stderr_supports_colors : bool Lazy.t val stderr_supports_colors : bool Lazy.t
val setup_env_for_ocaml_colors : unit Lazy.t val setup_env_for_opam_colors : unit Lazy.t
(** Strip colors in [not (Lazy.force stderr_supports_colors)] *) (** Strip colors in [not (Lazy.force stderr_supports_colors)] *)
val strip_colors_for_stderr : string -> string val strip_colors_for_stderr : string -> string

View File

@ -251,6 +251,23 @@ let create ~(kind : Kind.t) ~path ~base_env ~env_extra ~name ~merlin ~use_findli
let get_path var = Path.absolute (get var) in let get_path var = Path.absolute (get var) in
let stdlib_dir = get_path "standard_library" in let stdlib_dir = get_path "standard_library" in
let natdynlink_supported = Path.exists (Path.relative stdlib_dir "dynlink.cmxa") in let natdynlink_supported = Path.exists (Path.relative stdlib_dir "dynlink.cmxa") in
let version = get "version" in
let env,env_extra =
(* We redirect the output of all commands, so by default the compiler will disable
colors. Since we support colors in the output of commands, we force it via OCAMLPARAM
if stderr supports colors. *)
let ocaml_version = Scanf.sscanf version "%u.%u.%u" (fun a b c -> a, b, c) in
if Lazy.force Ansi_color.stderr_supports_colors && ocaml_version > (4, 02, 3) then
let value =
match get_env env "OCAMLPARAM" with
| None -> "color=always,_"
| Some s -> "color=always," ^ s
in
extend_env ~env ~vars:((String_map.singleton "OCAMLPARAM" value)),
(String_map.add ~key:"OCAMLPARAM" ~data:value env_extra)
else
env,env_extra
in
return return
{ name { name
; kind ; kind
@ -280,7 +297,7 @@ let create ~(kind : Kind.t) ~path ~base_env ~env_extra ~name ~merlin ~use_findli
; stdlib_dir ; stdlib_dir
; ocamlc_config = String_map.bindings ocamlc_config ; ocamlc_config = String_map.bindings ocamlc_config
; version = get "version" ; version
; ccomp_type = get "ccomp_type" ; ccomp_type = get "ccomp_type"
; bytecomp_c_compiler = get "bytecomp_c_compiler" ; bytecomp_c_compiler = get "bytecomp_c_compiler"
; bytecomp_c_libraries = get "bytecomp_c_libraries" ; bytecomp_c_libraries = get "bytecomp_c_libraries"
@ -317,7 +334,7 @@ let create ~(kind : Kind.t) ~path ~base_env ~env_extra ~name ~merlin ~use_findli
let opam_config_var t var = opam_config_var ~env:t.env ~cache:t.opam_var_cache var let opam_config_var t var = opam_config_var ~env:t.env ~cache:t.opam_var_cache var
let initial_env = lazy ( let initial_env = lazy (
Lazy.force Ansi_color.setup_env_for_ocaml_colors; Lazy.force Ansi_color.setup_env_for_opam_colors;
Unix.environment ()) Unix.environment ())
let default ?(merlin=true) ?(use_findlib=true) () = let default ?(merlin=true) ?(use_findlib=true) () =

View File

@ -502,7 +502,7 @@ module Scheduler = struct
go_rec cwd log t go_rec cwd log t
let go ?(log=Log.no_log) t = let go ?(log=Log.no_log) t =
Lazy.force Ansi_color.setup_env_for_ocaml_colors; Lazy.force Ansi_color.setup_env_for_opam_colors;
let cwd = Sys.getcwd () in let cwd = Sys.getcwd () in
go_rec cwd log t go_rec cwd log t
end end