@@ -7384,21 +7384,29 @@ module Bsb_config_types
7384
7384
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *)
7385
7385
7386
7386
7387
- type t = {
7388
- package_name : string option ;
7389
- ocamllex : string ;
7390
- external_includes : string list ;
7391
- bsc_flags : string list ;
7392
- ppx_flags : string list ;
7393
- bs_dependencies : string list ;
7394
- refmt : string ;
7395
- refmt_flags : string list ;
7396
- js_post_build_cmd : string option ;
7397
- package_specs : Bsb_config .package_specs ;
7398
- globbed_dirs : string list ;
7399
- bs_file_groups : Bsb_build_ui .file_group list ;
7400
- files_to_install : String_hash_set .t ;
7401
- }
7387
+ type bs_dependency =
7388
+ {
7389
+ package_name : string ;
7390
+ package_install_path : string ;
7391
+ }
7392
+ type bs_dependencies =
7393
+ bs_dependency list
7394
+ type t =
7395
+ {
7396
+ package_name : string option ;
7397
+ ocamllex : string ;
7398
+ external_includes : string list ;
7399
+ bsc_flags : string list ;
7400
+ ppx_flags : string list ;
7401
+ bs_dependencies : bs_dependencies ;
7402
+ refmt : string ;
7403
+ refmt_flags : string list ;
7404
+ js_post_build_cmd : string option ;
7405
+ package_specs : Bsb_config .package_specs ;
7406
+ globbed_dirs : string list ;
7407
+ bs_file_groups : Bsb_build_ui .file_group list ;
7408
+ files_to_install : String_hash_set .t ;
7409
+ }
7402
7410
end
7403
7411
module Bsb_default : sig
7404
7412
#1 " bsb_default.mli"
@@ -7453,8 +7461,8 @@ val get_refmt : unit -> string
7453
7461
val set_refmt_flags : Ext_json .t array -> unit
7454
7462
val get_refmt_flags : unit -> string list
7455
7463
7456
- val get_bs_dependencies : unit -> string list
7457
- val set_bs_dependencies : Ext_json .t array -> unit
7464
+ val get_bs_dependencies : unit -> Bsb_config_types .bs_dependencies
7465
+ val set_bs_dependencies : cwd : string -> Ext_json .t array -> unit
7458
7466
7459
7467
7460
7468
val get_js_post_build_cmd : unit -> string option
@@ -7519,10 +7527,24 @@ let set_bsc_flags s = bsc_flags := get_list_string s
7519
7527
7520
7528
7521
7529
7522
- let bs_dependencies = ref []
7530
+ let bs_dependencies : Bsb_config_types.bs_dependency list ref = ref []
7523
7531
let get_bs_dependencies () = ! bs_dependencies
7524
- let set_bs_dependencies s =
7525
- bs_dependencies := get_list_string s
7532
+ let set_bs_dependencies ~cwd s =
7533
+ let package_names = get_list_string s in
7534
+ bs_dependencies :=
7535
+ package_names
7536
+ |> List. map
7537
+ (fun package_name ->
7538
+ match Bs_pkg. resolve_bs_package ~cwd package_name with
7539
+ | None ->
7540
+ Ext_pervasives. failwithf ~loc: __LOC__" package: %s not found when resolve bs-dependencies" package_name
7541
+ | Some x ->
7542
+ {
7543
+ Bsb_config_types. package_name ;
7544
+ package_install_path = x // " lib" // " ocaml"
7545
+ }
7546
+ )
7547
+
7526
7548
7527
7549
7528
7550
let bs_external_includes = ref []
@@ -7810,11 +7832,7 @@ let interpret_json
7810
7832
let () =
7811
7833
Bsb_default. get_bs_dependencies ()
7812
7834
|> List. iter (fun package ->
7813
- match Bs_pkg. resolve_bs_package ~cwd package with
7814
- | None ->
7815
- Ext_pervasives. failwithf ~loc: __LOC__" package: %s not found when resolve bs-dependencies" package
7816
- | Some x ->
7817
- let path = ( x // " lib" // " ocaml" ) in
7835
+ let path = package.Bsb_config_types. package_install_path in
7818
7836
Buffer. add_string buffer " \n S " ;
7819
7837
Buffer. add_string buffer path ;
7820
7838
Buffer. add_string buffer " \n B " ;
@@ -7859,7 +7877,7 @@ let interpret_json
7859
7877
end)
7860
7878
|? (Bsb_build_schemas. ocamllex, `Str (Bsb_default. set_ocamllex ~cwd ))
7861
7879
|? (Bsb_build_schemas. ninja, `Str (Bsb_default. set_ninja ~cwd ))
7862
- |? (Bsb_build_schemas. bs_dependencies, `Arr Bsb_default. set_bs_dependencies)
7880
+ |? (Bsb_build_schemas. bs_dependencies, `Arr ( Bsb_default. set_bs_dependencies ~cwd ) )
7863
7881
(* More design *)
7864
7882
|? (Bsb_build_schemas. bs_external_includes, `Arr Bsb_default. set_bs_external_includes)
7865
7883
|? (Bsb_build_schemas. bsc_flags, `Arr Bsb_default. set_bsc_flags)
@@ -8763,7 +8781,7 @@ let merge_module_info_map acc sources =
8763
8781
8764
8782
let bsc_exe = " bsc.exe"
8765
8783
let bsb_helper_exe = " bsb_helper.exe"
8766
-
8784
+ let dash_i = " -I "
8767
8785
let output_ninja
8768
8786
~cwd
8769
8787
~bsc_dir
@@ -8807,7 +8825,7 @@ let output_ninja
8807
8825
" ocamllex" , ocamllex;
8808
8826
" bsc_flags" , bsc_flags ;
8809
8827
" ppx_flags" , ppx_flags;
8810
- " bs_package_includes" , (Bsb_build_util. flag_concat " -bs-package-include " bs_dependencies);
8828
+ " bs_package_includes" , (Bsb_build_util. flag_concat dash_i @@ List. map ( fun x -> x. Bsb_config_types. package_install_path) bs_dependencies);
8811
8829
" refmt" , refmt;
8812
8830
" refmt_flags" , refmt_flags;
8813
8831
Bsb_build_schemas. bsb_dir_group, " 0" (* TODO: avoid name conflict in the future *)
@@ -8822,7 +8840,7 @@ let output_ninja
8822
8840
) (String_map. empty,[] ,[] ) bs_file_groups in
8823
8841
Binary_cache. write_build_cache (builddir // Binary_cache. bsbuild_cache) [|bs_groups|] ;
8824
8842
Bsb_ninja. output_kv
8825
- Bsb_build_schemas. bsc_lib_includes (Bsb_build_util. flag_concat " -I " @@ (bs_external_includes @ source_dirs )) oc ;
8843
+ Bsb_build_schemas. bsc_lib_includes (Bsb_build_util. flag_concat dash_i @@ (bs_external_includes @ source_dirs )) oc ;
8826
8844
static_resources
8827
8845
else
8828
8846
let bs_groups = Array. init (number_of_dev_groups + 1 ) (fun i -> String_map. empty) in
@@ -8836,7 +8854,7 @@ let output_ninja
8836
8854
(* Make sure [sources] does not have files in [lib] we have to check later *)
8837
8855
let lib = bs_groups.(0 ) in
8838
8856
Bsb_ninja. output_kv
8839
- Bsb_build_schemas. bsc_lib_includes (Bsb_build_util. flag_concat " -I " @@ (bs_external_includes @ source_dirs.(0 ))) oc ;
8857
+ Bsb_build_schemas. bsc_lib_includes (Bsb_build_util. flag_concat dash_i @@ (bs_external_includes @ source_dirs.(0 ))) oc ;
8840
8858
for i = 1 to number_of_dev_groups do
8841
8859
let c = bs_groups.(i) in
8842
8860
String_map. iter (fun k _ -> if String_map. mem k lib then failwith (" conflict files found:" ^ k)) c ;
0 commit comments