Skip to content

Commit f72a104

Browse files
authored
Merge pull request #1045 from bloomberg/fix_ninja_issues
better error message when ninja not installed #1044
2 parents 9ac6973 + b4dc6d6 commit f72a104

File tree

2 files changed

+33
-29
lines changed

2 files changed

+33
-29
lines changed

jscomp/bin/bsb.ml

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7913,22 +7913,31 @@ let regenerate_ninja cwd bsc_dir forced =
79137913

79147914
end
79157915

7916+
let ninja_error_message = "ninja (required for bsb build system) is not installed, \n\
7917+
please visit https://github.com/ninja-build/ninja to have it installed\n"
7918+
let () =
7919+
Printexc.register_printer (function
7920+
| Unix.Unix_error(Unix.ENOENT, "execvp", "ninja") ->
7921+
Some ninja_error_message
7922+
| _ -> None
7923+
)
79167924

7925+
7926+
(* Note that [keepdepfile] only makes sense when combined with [deps] for optimizatoin *)
79177927
let ninja_command ninja ninja_args =
79187928
let ninja_args_len = Array.length ninja_args in
7919-
if ninja_args_len = 0 then
7920-
Unix.execvp ninja [|"ninja"; "-C"; Bsb_config.lib_bs ; "-d"; "keepdepfile" |]
7929+
if ninja_args_len = 0 then
7930+
Unix.execvp ninja [|"ninja"; "-C"; Bsb_config.lib_bs |]
79217931
else
7922-
let fixed_args_length = 5 in
7923-
Unix.execvp ninja
7932+
let fixed_args_length = 3 in
7933+
begin Unix.execvp ninja
79247934
(Array.init (fixed_args_length + ninja_args_len)
79257935
(fun i -> match i with
79267936
| 0 -> "ninja"
79277937
| 1 -> "-C"
79287938
| 2 -> Bsb_config.lib_bs
7929-
| 3 -> "-d"
7930-
| 4 -> "keepdepfile"
7931-
| _ -> Array.unsafe_get ninja_args (i - fixed_args_length) ))
7939+
| _ -> Array.unsafe_get ninja_args (i - fixed_args_length) ))
7940+
end
79327941

79337942
(**
79347943
Cache files generated:
@@ -7958,7 +7967,6 @@ let () =
79587967
begin
79597968
regenerate_ninja cwd bsc_dir false;
79607969
ninja_command ninja [||]
7961-
(* Unix.execvp ninja [|ninja; "-C"; Bsb_config.lib_bs ; "-d"; "keepdepfile" |]*)
79627970
end
79637971
else
79647972
begin
@@ -7978,12 +7986,6 @@ let () =
79787986
(* String_vec.iter (fun s -> print_endline s) targets; *)
79797987
regenerate_ninja cwd bsc_dir !force_regenerate;
79807988
ninja_command ninja ninja_args
7981-
(*Unix.execvp ninja
7982-
(Array.append
7983-
[|ninja ; "-C"; Bsb_config.lib_bs; "-d"; "keepdepfile"|]
7984-
ninja_args
7985-
)*)
7986-
79877989
end
79887990
end
79897991
with x ->

jscomp/bsb/bsb_main.ml

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -288,22 +288,31 @@ let regenerate_ninja cwd bsc_dir forced =
288288

289289
end
290290

291-
291+
let ninja_error_message = "ninja (required for bsb build system) is not installed, \n\
292+
please visit https://github.com/ninja-build/ninja to have it installed\n"
293+
let () =
294+
Printexc.register_printer (function
295+
| Unix.Unix_error(Unix.ENOENT, "execvp", "ninja") ->
296+
Some ninja_error_message
297+
| _ -> None
298+
)
299+
300+
301+
(* Note that [keepdepfile] only makes sense when combined with [deps] for optimizatoin *)
292302
let ninja_command ninja ninja_args =
293303
let ninja_args_len = Array.length ninja_args in
294-
if ninja_args_len = 0 then
295-
Unix.execvp ninja [|"ninja"; "-C"; Bsb_config.lib_bs ; "-d"; "keepdepfile" |]
304+
if ninja_args_len = 0 then
305+
Unix.execvp ninja [|"ninja"; "-C"; Bsb_config.lib_bs |]
296306
else
297-
let fixed_args_length = 5 in
298-
Unix.execvp ninja
307+
let fixed_args_length = 3 in
308+
begin Unix.execvp ninja
299309
(Array.init (fixed_args_length + ninja_args_len)
300310
(fun i -> match i with
301311
| 0 -> "ninja"
302312
| 1 -> "-C"
303313
| 2 -> Bsb_config.lib_bs
304-
| 3 -> "-d"
305-
| 4 -> "keepdepfile"
306-
| _ -> Array.unsafe_get ninja_args (i - fixed_args_length) ))
314+
| _ -> Array.unsafe_get ninja_args (i - fixed_args_length) ))
315+
end
307316

308317
(**
309318
Cache files generated:
@@ -333,7 +342,6 @@ let () =
333342
begin
334343
regenerate_ninja cwd bsc_dir false;
335344
ninja_command ninja [||]
336-
(* Unix.execvp ninja [|ninja; "-C"; Bsb_config.lib_bs ; "-d"; "keepdepfile" |]*)
337345
end
338346
else
339347
begin
@@ -353,12 +361,6 @@ let () =
353361
(* String_vec.iter (fun s -> print_endline s) targets; *)
354362
regenerate_ninja cwd bsc_dir !force_regenerate;
355363
ninja_command ninja ninja_args
356-
(*Unix.execvp ninja
357-
(Array.append
358-
[|ninja ; "-C"; Bsb_config.lib_bs; "-d"; "keepdepfile"|]
359-
ninja_args
360-
)*)
361-
362364
end
363365
end
364366
with x ->

0 commit comments

Comments
 (0)