@@ -7384,21 +7384,29 @@ module Bsb_config_types
73847384 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *)
73857385
73867386
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+ }
74027410end
74037411module Bsb_default : sig
74047412#1 " bsb_default.mli"
@@ -7453,8 +7461,8 @@ val get_refmt : unit -> string
74537461val set_refmt_flags : Ext_json .t array -> unit
74547462val get_refmt_flags : unit -> string list
74557463
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
74587466
74597467
74607468val get_js_post_build_cmd : unit -> string option
@@ -7519,10 +7527,24 @@ let set_bsc_flags s = bsc_flags := get_list_string s
75197527
75207528
75217529
7522- let bs_dependencies = ref []
7530+ let bs_dependencies : Bsb_config_types.bs_dependency list ref = ref []
75237531let 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+
75267548
75277549
75287550let bs_external_includes = ref []
@@ -7810,11 +7832,7 @@ let interpret_json
78107832 let () =
78117833 Bsb_default. get_bs_dependencies ()
78127834 |> 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
78187836 Buffer. add_string buffer " \n S " ;
78197837 Buffer. add_string buffer path ;
78207838 Buffer. add_string buffer " \n B " ;
@@ -7859,7 +7877,7 @@ let interpret_json
78597877 end)
78607878 |? (Bsb_build_schemas. ocamllex, `Str (Bsb_default. set_ocamllex ~cwd ))
78617879 |? (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 ) )
78637881 (* More design *)
78647882 |? (Bsb_build_schemas. bs_external_includes, `Arr Bsb_default. set_bs_external_includes)
78657883 |? (Bsb_build_schemas. bsc_flags, `Arr Bsb_default. set_bsc_flags)
@@ -8763,7 +8781,7 @@ let merge_module_info_map acc sources =
87638781
87648782let bsc_exe = " bsc.exe"
87658783let bsb_helper_exe = " bsb_helper.exe"
8766-
8784+ let dash_i = " -I "
87678785let output_ninja
87688786 ~cwd
87698787 ~bsc_dir
@@ -8807,7 +8825,7 @@ let output_ninja
88078825 " ocamllex" , ocamllex;
88088826 " bsc_flags" , bsc_flags ;
88098827 " 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);
88118829 " refmt" , refmt;
88128830 " refmt_flags" , refmt_flags;
88138831 Bsb_build_schemas. bsb_dir_group, " 0" (* TODO: avoid name conflict in the future *)
@@ -8822,7 +8840,7 @@ let output_ninja
88228840 ) (String_map. empty,[] ,[] ) bs_file_groups in
88238841 Binary_cache. write_build_cache (builddir // Binary_cache. bsbuild_cache) [|bs_groups|] ;
88248842 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 ;
88268844 static_resources
88278845 else
88288846 let bs_groups = Array. init (number_of_dev_groups + 1 ) (fun i -> String_map. empty) in
@@ -8836,7 +8854,7 @@ let output_ninja
88368854 (* Make sure [sources] does not have files in [lib] we have to check later *)
88378855 let lib = bs_groups.(0 ) in
88388856 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 ;
88408858 for i = 1 to number_of_dev_groups do
88418859 let c = bs_groups.(i) in
88428860 String_map. iter (fun k _ -> if String_map. mem k lib then failwith (" conflict files found:" ^ k)) c ;
0 commit comments