@@ -6673,7 +6673,7 @@ val set_package_specs_from_array : Ext_json.t array -> unit
66736673val get_generate_merlin : unit -> bool
66746674val set_generate_merlin : bool -> unit
66756675
6676- val walk_all_deps : string -> (string -> unit ) -> unit
6676+ val walk_all_deps : bool -> string -> (bool -> string -> unit ) -> unit
66776677end = struct
66786678#1 " bsb_default.ml"
66796679(* Copyright (C) 2015-2016 Bloomberg Finance L.P.
@@ -6738,7 +6738,7 @@ let (|?) m (key, cb) =
67386738 TODO: check duplicate package name
67396739 ?use path as identity?
67406740*)
6741- let rec walk_all_deps dir cb =
6741+ let rec walk_all_deps top dir cb =
67426742 let bsconfig_json = (dir // Literals. bsconfig_json) in
67436743 match Ext_json. parse_json_from_file bsconfig_json with
67446744 | `Obj map ->
@@ -6753,13 +6753,13 @@ let rec walk_all_deps dir cb =
67536753 begin match Bs_pkg. resolve_bs_package ~cwd: dir new_package with
67546754 | None -> failwith (new_package ^ " not found as dependency of " ^ bsconfig_json )
67556755 | Some package_dir ->
6756- walk_all_deps package_dir cb ;
6756+ walk_all_deps false package_dir cb ;
67576757 end ;
67586758 | _ -> () (* TODO: add a log framework, warning here *)
67596759 end
67606760 )))
67616761 |> ignore ;
6762- cb dir
6762+ cb top dir
67636763 | _ -> ()
67646764 | exception _ -> failwith ( " failed to parse" ^ bsconfig_json ^ " properly" )
67656765
@@ -7759,9 +7759,9 @@ type command =
77597759*)
77607760val run_commands : command list -> unit
77617761
7762- val run_command_execv : command -> unit
7762+ val run_command_execv : bool -> command -> unit
77637763
7764- val run_command_execvp : command -> unit
7764+ (* val run_command_execvp : command -> unit *)
77657765end = struct
77667766#1 " bsb_unix.ml"
77677767(* Copyright (C) 2015-2016 Bloomberg Finance L.P.
@@ -7855,7 +7855,7 @@ let run_command_execvp cmd =
78557855 exit 2
78567856 end
78577857
7858- let run_command_execv cmd =
7858+ let run_command_execv fail_exit cmd =
78597859 match Unix. fork () with
78607860 | 0 ->
78617861 print_endline ( " * Entering " ^ cmd.cwd);
@@ -7875,8 +7875,9 @@ let run_command_execv cmd =
78757875 if eid <> 0 then
78767876 begin
78777877 prerr_endline (" * Failure : " ^ cmd.cmd ^ " \n * Location: " ^ cmd.cwd);
7878- exit eid
7879- end
7878+ if fail_exit then exit eid
7879+ end ;
7880+
78807881 | Unix. WSIGNALED _ | Unix. WSTOPPED _ ->
78817882 begin
78827883 prerr_endline (cmd.cmd ^ " interrupted" );
@@ -8149,15 +8150,15 @@ let watch () =
81498150let build_bs_deps () =
81508151 let bsc_dir = Bsb_build_util. get_bsc_dir cwd in
81518152 let bsb_exe = bsc_dir // " bsb.exe" in
8152- Bsb_default. walk_all_deps cwd
8153- (fun cwd -> Bsb_unix. run_command_execv
8153+ Bsb_default. walk_all_deps true cwd
8154+ (fun top cwd -> Bsb_unix. run_command_execv ( not top)
81548155 {cmd = bsb_exe; cwd = cwd; args = [| bsb_exe |]})
81558156
81568157let clean_bs_deps () =
81578158 let bsc_dir = Bsb_build_util. get_bsc_dir cwd in
81588159 let bsb_exe = bsc_dir // " bsb.exe" in
8159- Bsb_default. walk_all_deps cwd
8160- (fun cwd -> Bsb_unix. run_command_execv
8160+ Bsb_default. walk_all_deps true cwd
8161+ (fun top cwd -> Bsb_unix. run_command_execv ( not top)
81618162 {cmd = bsb_exe; cwd = cwd; args = [| bsb_exe ; " --" ; " -t" ; " clean" |]})
81628163let annoymous filename =
81638164 String_vec. push filename targets
0 commit comments