@@ -9833,8 +9833,8 @@ type package_context = {
9833
9833
9834
9834
val walk_all_deps :
9835
9835
string ->
9836
- ( package_context -> unit) ->
9837
- unit
9836
+ package_context Queue.t
9837
+
9838
9838
9839
9839
end = struct
9840
9840
#1 "bsb_build_util.ml"
@@ -10022,7 +10022,7 @@ let rec walk_all_deps_aux
10022
10022
(paths : string list)
10023
10023
~(top : top)
10024
10024
(dir : string)
10025
- (cb : package_context -> unit ) =
10025
+ (queue : _ Queue.t ) =
10026
10026
let bsconfig_json = dir // Literals.bsconfig_json in
10027
10027
match Ext_json_parse.parse_json_from_file bsconfig_json with
10028
10028
| Obj {map; loc} ->
@@ -10039,15 +10039,15 @@ let rec walk_all_deps_aux
10039
10039
str
10040
10040
| Some _
10041
10041
| None -> Bsb_exception.errorf ~loc "package name missing in %s/bsconfig.json" dir
10042
- in
10043
- let package_stacks = cur_package_name :: paths in
10044
- Bsb_log.info "@{<info>Package stack:@} %a @." pp_packages_rev
10045
- package_stacks ;
10042
+ in
10046
10043
if Ext_list.mem_string paths cur_package_name then
10047
10044
begin
10048
10045
Bsb_log.error "@{<error>Cyclic dependencies in package stack@}@.";
10049
10046
exit 2
10050
10047
end;
10048
+ let package_stacks = cur_package_name :: paths in
10049
+ Bsb_log.info "@{<info>Package stack:@} %a @." pp_packages_rev
10050
+ package_stacks ;
10051
10051
if Hash_string.mem visited cur_package_name then
10052
10052
Bsb_log.info
10053
10053
"@{<info>Visited before@} %s@." cur_package_name
@@ -10063,7 +10063,7 @@ let rec walk_all_deps_aux
10063
10063
let package_dir =
10064
10064
Bsb_pkg.resolve_bs_package ~cwd:dir
10065
10065
(Bsb_pkg_types.string_as_package new_package) in
10066
- walk_all_deps_aux visited package_stacks ~top:(Expect_name new_package) package_dir cb ;
10066
+ walk_all_deps_aux visited package_stacks ~top:(Expect_name new_package) package_dir queue ;
10067
10067
| _ ->
10068
10068
Bsb_exception.errorf ~loc
10069
10069
"%s expect an array"
@@ -10073,17 +10073,19 @@ let rec walk_all_deps_aux
10073
10073
begin
10074
10074
explore_deps Bsb_build_schemas.bs_dependencies;
10075
10075
if top = Expect_none then explore_deps Bsb_build_schemas.bs_dev_dependencies;
10076
- cb {top ; proj_dir = dir};
10076
+ Queue.add {top ; proj_dir = dir} queue ;
10077
10077
Hash_string.add visited cur_package_name dir;
10078
10078
end
10079
10079
| _ -> ()
10080
10080
| exception _ ->
10081
10081
Bsb_exception.invalid_json bsconfig_json
10082
10082
10083
10083
10084
- let walk_all_deps dir cb =
10084
+ let walk_all_deps dir : package_context Queue.t =
10085
10085
let visited = Hash_string.create 0 in
10086
- walk_all_deps_aux visited [] ~top:Expect_none dir cb
10086
+ let cb = Queue.create () in
10087
+ walk_all_deps_aux visited [] ~top:Expect_none dir cb ;
10088
+ cb
10087
10089
10088
10090
end
10089
10091
module Bsb_global_paths : sig
@@ -11274,10 +11276,12 @@ let clean_bs_garbage proj_dir =
11274
11276
11275
11277
11276
11278
let clean_bs_deps proj_dir =
11277
- Bsb_build_util.walk_all_deps proj_dir (fun pkg_cxt ->
11279
+ let queue =
11280
+ Bsb_build_util.walk_all_deps proj_dir in
11281
+ Queue.iter (fun (pkg_cxt : Bsb_build_util.package_context )->
11278
11282
(* whether top or not always do the cleaning *)
11279
11283
clean_bs_garbage pkg_cxt.proj_dir
11280
- )
11284
+ ) queue
11281
11285
11282
11286
let clean_self proj_dir =
11283
11287
clean_bs_garbage proj_dir
@@ -16270,21 +16274,42 @@ end = struct
16270
16274
let (//) = Ext_path.combine
16271
16275
16272
16276
16277
+ let vendor_ninja = Bsb_global_paths.vendor_ninja
16273
16278
16274
-
16275
- let build_bs_deps cwd (deps : Bsb_package_specs.t) (ninja_args : string array) =
16276
-
16277
- let vendor_ninja = Bsb_global_paths.vendor_ninja in
16279
+ let make_world_deps cwd (config : Bsb_config_types.t option) (ninja_args : string array) =
16280
+ let deps =
16281
+ match config with
16282
+ | None ->
16283
+ (* When this running bsb does not read bsconfig.json,
16284
+ we will read such json file to know which [package-specs]
16285
+ it wants
16286
+ *)
16287
+ Bsb_config_parse.package_specs_from_bsconfig ()
16288
+ | Some config -> config.package_specs in
16278
16289
let args =
16279
16290
if Ext_array.is_empty ninja_args then [|vendor_ninja|]
16280
16291
else Array.append [|vendor_ninja|] ninja_args
16281
16292
in
16282
16293
let lib_artifacts_dir = Bsb_config.lib_bs in
16283
- Bsb_build_util.walk_all_deps cwd (fun ({top; proj_dir} : Bsb_build_util.package_context) ->
16294
+ let queue =
16295
+ Bsb_build_util.walk_all_deps cwd in
16296
+ (* let oc = open_out_bin ".deps.log" in
16297
+ queue |> Queue.iter (fun ({top; proj_dir} : Bsb_build_util.package_context) ->
16298
+ match top with
16299
+ | Expect_none -> ()
16300
+ | Expect_name s ->
16301
+ output_string oc s ;
16302
+ output_string oc " : ";
16303
+ output_string oc proj_dir;
16304
+ output_string oc "\n"
16305
+ );
16306
+ close_out oc ; *)
16307
+ queue |> Queue.iter (fun ({top; proj_dir} : Bsb_build_util.package_context) ->
16284
16308
match top with
16285
16309
| Expect_none -> ()
16286
- | Expect_name _ ->
16310
+ | Expect_name s ->
16287
16311
begin
16312
+ output_string stdout ("Start building dependency " ^ s ^ "\n");
16288
16313
let lib_bs_dir = proj_dir // lib_artifacts_dir in
16289
16314
Bsb_build_util.mkp lib_bs_dir;
16290
16315
let _config : _ option =
@@ -16320,23 +16345,10 @@ let build_bs_deps cwd (deps : Bsb_package_specs.t) (ninja_args : string array) =
16320
16345
if eid <> 0 then
16321
16346
Bsb_unix.command_fatal_error install_command eid;
16322
16347
Bsb_log.info "@{<info>Installation finished@}@.";
16348
+ output_string stdout ("Finish building dependency " ^ s ^ "\n")
16323
16349
end
16324
16350
)
16325
16351
16326
-
16327
- let make_world_deps cwd (config : Bsb_config_types.t option) (ninja_args : string array) =
16328
- Bsb_log.info "Making the dependency world!@.";
16329
- let deps =
16330
- match config with
16331
- | None ->
16332
- (* When this running bsb does not read bsconfig.json,
16333
- we will read such json file to know which [package-specs]
16334
- it wants
16335
- *)
16336
- Bsb_config_parse.package_specs_from_bsconfig ()
16337
- | Some config -> config.package_specs in
16338
- build_bs_deps cwd deps ninja_args
16339
-
16340
16352
end
16341
16353
module Bsc_args : sig
16342
16354
#1 "bsc_args.mli"
@@ -16808,7 +16820,7 @@ let () =
16808
16820
~forced:!force_regenerate) in
16809
16821
(* [-make-world] should never be combined with [-package-specs] *)
16810
16822
if !make_world then
16811
- Bsb_world.make_world_deps Bsb_global_paths.cwd ( config_opt) ninja_args;
16823
+ Bsb_world.make_world_deps Bsb_global_paths.cwd config_opt ninja_args;
16812
16824
if !do_install then
16813
16825
install_target ();
16814
16826
if !watch_mode then program_exit ()
0 commit comments