Skip to content

Commit 5eb318e

Browse files
committed
fix #1135
1 parent d1adb5e commit 5eb318e

File tree

7 files changed

+104
-67
lines changed

7 files changed

+104
-67
lines changed

jscomp/all.depend

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -657,15 +657,15 @@ bsb/bsb_config.cmx : ext/string_set.cmx ext/literals.cmx \
657657
common/js_config.cmx ext/ext_string.cmx ext/ext_filename.cmx \
658658
bsb/bsb_config.cmi
659659
bsb/bsb_config_parse.cmx : ext/string_hash_set.cmx ext/literals.cmx \
660-
ext/ext_string.cmx ext/ext_pervasives.cmx ext/ext_json.cmx \
661-
ext/ext_filename.cmx ext/ext_file_pp.cmx bsb/bsb_default.cmx \
662-
bsb/bsb_config_types.cmx bsb/bsb_config.cmx bsb/bsb_build_util.cmx \
663-
bsb/bsb_build_ui.cmx bsb/bsb_build_schemas.cmx common/bs_pkg.cmx \
664-
bsb/bsb_config_parse.cmi
660+
ext/ext_string.cmx ext/ext_json.cmx ext/ext_filename.cmx \
661+
ext/ext_file_pp.cmx bsb/bsb_default.cmx bsb/bsb_config_types.cmx \
662+
bsb/bsb_config.cmx bsb/bsb_build_util.cmx bsb/bsb_build_ui.cmx \
663+
bsb/bsb_build_schemas.cmx bsb/bsb_config_parse.cmi
665664
bsb/bsb_config_types.cmx : ext/string_hash_set.cmx bsb/bsb_config.cmx \
666665
bsb/bsb_build_ui.cmx
667666
bsb/bsb_default.cmx : ext/string_set.cmx ext/literals.cmx \
668-
ext/ext_filename.cmx bsb/bsb_config.cmx bsb/bsb_build_util.cmx \
667+
ext/ext_pervasives.cmx ext/ext_filename.cmx bsb/bsb_config_types.cmx \
668+
bsb/bsb_config.cmx bsb/bsb_build_util.cmx common/bs_pkg.cmx \
669669
bsb/bsb_default.cmi
670670
bsb/bsb_dep_infos.cmx : bsb/bsb_dep_infos.cmi
671671
bsb/bsb_dir.cmx : bsb/bsb_dir.cmi
@@ -694,7 +694,8 @@ bsb/bsb_build_ui.cmi : ext/string_set.cmi ext/ext_json.cmi \
694694
bsb/bsb_build_util.cmi : ext/ext_json.cmi
695695
bsb/bsb_config.cmi : ext/string_set.cmi
696696
bsb/bsb_config_parse.cmi : bsb/bsb_config_types.cmx bsb/bsb_config.cmi
697-
bsb/bsb_default.cmi : ext/ext_json.cmi bsb/bsb_config.cmi
697+
bsb/bsb_default.cmi : ext/ext_json.cmi bsb/bsb_config_types.cmx \
698+
bsb/bsb_config.cmi
698699
bsb/bsb_dep_infos.cmi :
699700
bsb/bsb_dir.cmi :
700701
bsb/bsb_file.cmi :

jscomp/bin/bsb.ml

Lines changed: 48 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
}
74027410
end
74037411
module Bsb_default : sig
74047412
#1 "bsb_default.mli"
@@ -7453,8 +7461,8 @@ val get_refmt : unit -> string
74537461
val set_refmt_flags : Ext_json.t array -> unit
74547462
val 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

74607468
val 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 []
75237531
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+
75267548

75277549

75287550
let 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 "\nS ";
78197837
Buffer.add_string buffer path ;
78207838
Buffer.add_string buffer "\nB ";
@@ -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

87648782
let bsc_exe = "bsc.exe"
87658783
let bsb_helper_exe = "bsb_helper.exe"
8766-
8784+
let dash_i = "-I"
87678785
let 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 ;

jscomp/bsb/bsb_config_parse.ml

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -145,11 +145,7 @@ let interpret_json
145145
let () =
146146
Bsb_default.get_bs_dependencies ()
147147
|> List.iter (fun package ->
148-
match Bs_pkg.resolve_bs_package ~cwd package with
149-
| None ->
150-
Ext_pervasives.failwithf ~loc:__LOC__"package: %s not found when resolve bs-dependencies" package
151-
| Some x ->
152-
let path = ( x // "lib"//"ocaml") in
148+
let path = package.Bsb_config_types.package_install_path in
153149
Buffer.add_string buffer "\nS ";
154150
Buffer.add_string buffer path ;
155151
Buffer.add_string buffer "\nB ";
@@ -194,7 +190,7 @@ let interpret_json
194190
end)
195191
|? (Bsb_build_schemas.ocamllex, `Str (Bsb_default.set_ocamllex ~cwd))
196192
|? (Bsb_build_schemas.ninja, `Str (Bsb_default.set_ninja ~cwd))
197-
|? (Bsb_build_schemas.bs_dependencies, `Arr Bsb_default.set_bs_dependencies)
193+
|? (Bsb_build_schemas.bs_dependencies, `Arr (Bsb_default.set_bs_dependencies ~cwd))
198194
(* More design *)
199195
|? (Bsb_build_schemas.bs_external_includes, `Arr Bsb_default.set_bs_external_includes)
200196
|? (Bsb_build_schemas.bsc_flags, `Arr Bsb_default.set_bsc_flags)

jscomp/bsb/bsb_config_types.ml

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,26 @@
2323
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *)
2424

2525

26-
type t = {
27-
package_name : string option ;
28-
ocamllex : string ;
29-
external_includes : string list ;
30-
bsc_flags : string list ;
31-
ppx_flags : string list ;
32-
bs_dependencies : string list;
33-
refmt : string ;
34-
refmt_flags : string list;
35-
js_post_build_cmd : string option;
36-
package_specs : Bsb_config.package_specs ;
37-
globbed_dirs : string list;
38-
bs_file_groups : Bsb_build_ui.file_group list ;
39-
files_to_install : String_hash_set.t ;
40-
}
26+
type bs_dependency =
27+
{
28+
package_name : string ;
29+
package_install_path : string ;
30+
}
31+
type bs_dependencies =
32+
bs_dependency list
33+
type t =
34+
{
35+
package_name : string option ;
36+
ocamllex : string ;
37+
external_includes : string list ;
38+
bsc_flags : string list ;
39+
ppx_flags : string list ;
40+
bs_dependencies : bs_dependencies;
41+
refmt : string ;
42+
refmt_flags : string list;
43+
js_post_build_cmd : string option;
44+
package_specs : Bsb_config.package_specs ;
45+
globbed_dirs : string list;
46+
bs_file_groups : Bsb_build_ui.file_group list ;
47+
files_to_install : String_hash_set.t ;
48+
}

jscomp/bsb/bsb_default.ml

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,24 @@ let set_bsc_flags s = bsc_flags := get_list_string s
4343

4444

4545

46-
let bs_dependencies = ref []
46+
let bs_dependencies : Bsb_config_types.bs_dependency list ref = ref []
4747
let get_bs_dependencies () = !bs_dependencies
48-
let set_bs_dependencies s =
49-
bs_dependencies := get_list_string s
48+
let set_bs_dependencies ~cwd s =
49+
let package_names = get_list_string s in
50+
bs_dependencies :=
51+
package_names
52+
|> List.map
53+
(fun package_name ->
54+
match Bs_pkg.resolve_bs_package ~cwd package_name with
55+
| None ->
56+
Ext_pervasives.failwithf ~loc:__LOC__"package: %s not found when resolve bs-dependencies" package_name
57+
| Some x ->
58+
{
59+
Bsb_config_types.package_name ;
60+
package_install_path = x // "lib" // "ocaml"
61+
}
62+
)
63+
5064

5165

5266
let bs_external_includes = ref []

jscomp/bsb/bsb_default.mli

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ val get_refmt : unit -> string
4949
val set_refmt_flags : Ext_json.t array -> unit
5050
val get_refmt_flags : unit -> string list
5151

52-
val get_bs_dependencies : unit -> string list
53-
val set_bs_dependencies : Ext_json.t array -> unit
52+
val get_bs_dependencies : unit -> Bsb_config_types.bs_dependencies
53+
val set_bs_dependencies : cwd:string -> Ext_json.t array -> unit
5454

5555

5656
val get_js_post_build_cmd : unit -> string option

jscomp/bsb/bsb_gen.ml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ let merge_module_info_map acc sources =
4242

4343
let bsc_exe = "bsc.exe"
4444
let bsb_helper_exe = "bsb_helper.exe"
45-
45+
let dash_i = "-I"
4646
let output_ninja
4747
~cwd
4848
~bsc_dir
@@ -86,7 +86,7 @@ let output_ninja
8686
"ocamllex", ocamllex;
8787
"bsc_flags", bsc_flags ;
8888
"ppx_flags", ppx_flags;
89-
"bs_package_includes", (Bsb_build_util.flag_concat "-bs-package-include" bs_dependencies);
89+
"bs_package_includes", (Bsb_build_util.flag_concat dash_i @@ List.map (fun x -> x.Bsb_config_types.package_install_path) bs_dependencies);
9090
"refmt", refmt;
9191
"refmt_flags", refmt_flags;
9292
Bsb_build_schemas.bsb_dir_group, "0" (*TODO: avoid name conflict in the future *)
@@ -101,7 +101,7 @@ let output_ninja
101101
) (String_map.empty,[],[]) bs_file_groups in
102102
Binary_cache.write_build_cache (builddir // Binary_cache.bsbuild_cache) [|bs_groups|] ;
103103
Bsb_ninja.output_kv
104-
Bsb_build_schemas.bsc_lib_includes (Bsb_build_util.flag_concat "-I" @@ (bs_external_includes @ source_dirs )) oc ;
104+
Bsb_build_schemas.bsc_lib_includes (Bsb_build_util.flag_concat dash_i @@ (bs_external_includes @ source_dirs )) oc ;
105105
static_resources
106106
else
107107
let bs_groups = Array.init (number_of_dev_groups + 1 ) (fun i -> String_map.empty) in
@@ -115,7 +115,7 @@ let output_ninja
115115
(* Make sure [sources] does not have files in [lib] we have to check later *)
116116
let lib = bs_groups.(0) in
117117
Bsb_ninja.output_kv
118-
Bsb_build_schemas.bsc_lib_includes (Bsb_build_util.flag_concat "-I" @@ (bs_external_includes @ source_dirs.(0))) oc ;
118+
Bsb_build_schemas.bsc_lib_includes (Bsb_build_util.flag_concat dash_i @@ (bs_external_includes @ source_dirs.(0))) oc ;
119119
for i = 1 to number_of_dev_groups do
120120
let c = bs_groups.(i) in
121121
String_map.iter (fun k _ -> if String_map.mem k lib then failwith ("conflict files found:" ^ k)) c ;

0 commit comments

Comments
 (0)