Skip to content

Commit 3c70b6b

Browse files
authored
Merge pull request #1112 from bloomberg/bsdoc
add install support, this is transparent to users, when -make-world it will install its dependencies at the same time, while dev does not need install
2 parents cd95f76 + c69ed29 commit 3c70b6b

File tree

5 files changed

+48
-16
lines changed

5 files changed

+48
-16
lines changed

jscomp/bin/bsb.ml

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2723,6 +2723,9 @@ val lib_bs : string
27232723
val rev_lib_bs_prefix : string -> string
27242724

27252725
val no_dev: bool ref
2726+
2727+
(** default not install, only when -make-world, its dependencies will be installed *)
2728+
val install : bool ref
27262729
end = struct
27272730
#1 "bsb_config.ml"
27282731
(* Copyright (C) 2015-2016 Bloomberg Finance L.P.
@@ -2770,6 +2773,8 @@ let proj_rel path = lazy_src_root_dir // path
27702773
*)
27712774

27722775
let no_dev = ref false
2776+
2777+
let install = ref false
27732778
end
27742779
module Ext_array : sig
27752780
#1 "ext_array.mli"
@@ -7504,6 +7509,7 @@ let handle_file_group oc ~package_specs ~js_post_build_cmd acc (group: Bsb_buil
75047509
bs_dependencies
75057510
info =
75067511
let installable =
7512+
!Bsb_config.install &&
75077513
match group.public with
75087514
| Export_all -> true
75097515
| Export_none -> false
@@ -8353,15 +8359,18 @@ let separator = "--"
83538359

83548360

83558361
let internal_package_specs = "-internal-package-specs"
8362+
let internal_install = "-internal-install"
83568363
let build_bs_deps package_specs =
83578364
let bsc_dir = Bsb_build_util.get_bsc_dir cwd in
83588365
let bsb_exe = bsc_dir // "bsb.exe" in
83598366
Bsb_default.walk_all_deps true cwd
83608367
(fun top cwd ->
83618368
if not top then
83628369
Bsb_unix.run_command_execv true
8363-
{cmd = bsb_exe; cwd = cwd; args =
8364-
[| bsb_exe ; no_dev; internal_package_specs; package_specs; regen; separator |]})
8370+
{cmd = bsb_exe;
8371+
cwd = cwd;
8372+
args =
8373+
[| bsb_exe ; internal_install ; no_dev; internal_package_specs; package_specs; regen; separator |]})
83658374

83668375
let annoymous filename =
83678376
String_vec.push filename targets
@@ -8373,7 +8382,7 @@ let lib_bs = "lib" // "bs"
83738382
let lib_amdjs = "lib" // "amdjs"
83748383
let lib_goog = "lib" // "goog"
83758384
let lib_js = "lib" // "js"
8376-
8385+
let lib_ocaml = "lib" // "ocaml" (* installed binary artifacts *)
83778386
let clean_bs_garbage cwd =
83788387
print_string "Doing cleaning in ";
83798388
print_endline cwd;
@@ -8385,7 +8394,8 @@ let clean_bs_garbage cwd =
83858394
aux lib_bs ;
83868395
aux lib_amdjs ;
83878396
aux lib_goog;
8388-
aux lib_js
8397+
aux lib_js ;
8398+
aux lib_ocaml
83898399
with
83908400
e ->
83918401
prerr_endline ("Failed to clean due to " ^ Printexc.to_string e)
@@ -8394,10 +8404,16 @@ let clean_bs_deps () =
83948404
Bsb_default.walk_all_deps true cwd (fun top cwd ->
83958405
clean_bs_garbage cwd
83968406
)
8407+
8408+
8409+
8410+
83978411
let bsb_main_flags =
83988412
[
83998413
"-w", Arg.Set watch_mode,
84008414
" Watch mode" ;
8415+
internal_install, Arg.Set Bsb_config.install,
8416+
" (internal)Install public interface or not, when make-world it will install(in combination with -regen to make sure it has effect)";
84018417
no_dev, Arg.Set Bsb_config.no_dev,
84028418
" (internal)Build dev dependencies in make-world and dev group(in combination with -regen)";
84038419
regen, Arg.Set force_regenerate,
@@ -8542,9 +8558,9 @@ let () =
85428558
(* don't regenerate files when we only run [bsb -clean-world] *)
85438559
let deps = regenerate_ninja cwd bsc_dir !force_regenerate in
85448560
make_world_deps deps ;
8545-
if !watch_mode then
8546-
watch ()
8547-
(* ninja is not triggered in this case *)
8561+
if !watch_mode then
8562+
watch ()
8563+
(* ninja is not triggered in this case *)
85488564
end
85498565
| `Split (bsb_args,ninja_args)
85508566
->

jscomp/bsb/bsb_config.ml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,4 +42,6 @@ let proj_rel path = lazy_src_root_dir // path
4242
of bsb in configuration time
4343
*)
4444

45-
let no_dev = ref false
45+
let no_dev = ref false
46+
47+
let install = ref false

jscomp/bsb/bsb_config.mli

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,7 @@ val lib_bs : string
3232
(* we need generate path relative to [lib/bs] directory in the opposite direction *)
3333
val rev_lib_bs_prefix : string -> string
3434

35-
val no_dev: bool ref
35+
val no_dev: bool ref
36+
37+
(** default not install, only when -make-world, its dependencies will be installed *)
38+
val install : bool ref

jscomp/bsb/bsb_main.ml

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -259,15 +259,18 @@ let separator = "--"
259259

260260

261261
let internal_package_specs = "-internal-package-specs"
262+
let internal_install = "-internal-install"
262263
let build_bs_deps package_specs =
263264
let bsc_dir = Bsb_build_util.get_bsc_dir cwd in
264265
let bsb_exe = bsc_dir // "bsb.exe" in
265266
Bsb_default.walk_all_deps true cwd
266267
(fun top cwd ->
267268
if not top then
268269
Bsb_unix.run_command_execv true
269-
{cmd = bsb_exe; cwd = cwd; args =
270-
[| bsb_exe ; no_dev; internal_package_specs; package_specs; regen; separator |]})
270+
{cmd = bsb_exe;
271+
cwd = cwd;
272+
args =
273+
[| bsb_exe ; internal_install ; no_dev; internal_package_specs; package_specs; regen; separator |]})
271274

272275
let annoymous filename =
273276
String_vec.push filename targets
@@ -279,7 +282,7 @@ let lib_bs = "lib" // "bs"
279282
let lib_amdjs = "lib" // "amdjs"
280283
let lib_goog = "lib" // "goog"
281284
let lib_js = "lib" // "js"
282-
285+
let lib_ocaml = "lib" // "ocaml" (* installed binary artifacts *)
283286
let clean_bs_garbage cwd =
284287
print_string "Doing cleaning in ";
285288
print_endline cwd;
@@ -291,7 +294,8 @@ let clean_bs_garbage cwd =
291294
aux lib_bs ;
292295
aux lib_amdjs ;
293296
aux lib_goog;
294-
aux lib_js
297+
aux lib_js ;
298+
aux lib_ocaml
295299
with
296300
e ->
297301
prerr_endline ("Failed to clean due to " ^ Printexc.to_string e)
@@ -300,10 +304,16 @@ let clean_bs_deps () =
300304
Bsb_default.walk_all_deps true cwd (fun top cwd ->
301305
clean_bs_garbage cwd
302306
)
307+
308+
309+
310+
303311
let bsb_main_flags =
304312
[
305313
"-w", Arg.Set watch_mode,
306314
" Watch mode" ;
315+
internal_install, Arg.Set Bsb_config.install,
316+
" (internal)Install public interface or not, when make-world it will install(in combination with -regen to make sure it has effect)";
307317
no_dev, Arg.Set Bsb_config.no_dev,
308318
" (internal)Build dev dependencies in make-world and dev group(in combination with -regen)";
309319
regen, Arg.Set force_regenerate,
@@ -448,9 +458,9 @@ let () =
448458
(* don't regenerate files when we only run [bsb -clean-world] *)
449459
let deps = regenerate_ninja cwd bsc_dir !force_regenerate in
450460
make_world_deps deps ;
451-
if !watch_mode then
452-
watch ()
453-
(* ninja is not triggered in this case *)
461+
if !watch_mode then
462+
watch ()
463+
(* ninja is not triggered in this case *)
454464
end
455465
| `Split (bsb_args,ninja_args)
456466
->

jscomp/bsb/bsb_ninja.ml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,7 @@ let handle_file_group oc ~package_specs ~js_post_build_cmd acc (group: Bsb_buil
296296
bs_dependencies
297297
info =
298298
let installable =
299+
!Bsb_config.install &&
299300
match group.public with
300301
| Export_all -> true
301302
| Export_none -> false

0 commit comments

Comments
 (0)