From bc07d073140deff73514d16fd494030dba85dc48 Mon Sep 17 00:00:00 2001 From: Hongbo Zhang Date: Wed, 14 Oct 2020 14:21:06 +0800 Subject: [PATCH 01/10] tweak --- jscomp/bsb/bsb_ninja_targets.ml | 6 +++--- lib/4.06.1/bsb.ml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/jscomp/bsb/bsb_ninja_targets.ml b/jscomp/bsb/bsb_ninja_targets.ml index 887635de92..3e9b0e65fc 100644 --- a/jscomp/bsb/bsb_ninja_targets.ml +++ b/jscomp/bsb/bsb_ninja_targets.ml @@ -57,10 +57,10 @@ let output_build ~rule oc = let rule = Bsb_ninja_rule.get_name rule oc in (* Trigger building if not used *) - output_string oc "o "; + output_string oc "o"; Ext_list.iter outputs (fun s -> output_string oc Ext_string.single_space ; output_string oc s ); if implicit_outputs <> [] then begin - output_string oc " | "; + output_string oc " |"; Ext_list.iter implicit_outputs (fun s -> output_string oc Ext_string.single_space ; output_string oc s) end; output_string oc " : "; @@ -74,7 +74,7 @@ let output_build ; if order_only_deps <> [] then begin - output_string oc " || "; + output_string oc " ||"; Ext_list.iter order_only_deps (fun s -> output_string oc Ext_string.single_space ; output_string oc s) end ; diff --git a/lib/4.06.1/bsb.ml b/lib/4.06.1/bsb.ml index e66765521a..a7f8e5f228 100644 --- a/lib/4.06.1/bsb.ml +++ b/lib/4.06.1/bsb.ml @@ -13451,10 +13451,10 @@ let output_build ~rule oc = let rule = Bsb_ninja_rule.get_name rule oc in (* Trigger building if not used *) - output_string oc "o "; + output_string oc "o"; Ext_list.iter outputs (fun s -> output_string oc Ext_string.single_space ; output_string oc s ); if implicit_outputs <> [] then begin - output_string oc " | "; + output_string oc " |"; Ext_list.iter implicit_outputs (fun s -> output_string oc Ext_string.single_space ; output_string oc s) end; output_string oc " : "; @@ -13468,7 +13468,7 @@ let output_build ; if order_only_deps <> [] then begin - output_string oc " || "; + output_string oc " ||"; Ext_list.iter order_only_deps (fun s -> output_string oc Ext_string.single_space ; output_string oc s) end ; From f561170d81695d87ef2b56556dc43b49e375281c Mon Sep 17 00:00:00 2001 From: Hongbo Zhang Date: Wed, 14 Oct 2020 14:31:43 +0800 Subject: [PATCH 02/10] generate cmi file does not need package-specs --- jscomp/bsb/bsb_ninja_rule.ml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/jscomp/bsb/bsb_ninja_rule.ml b/jscomp/bsb/bsb_ninja_rule.ml index 1599e56002..3c4788a3f9 100644 --- a/jscomp/bsb/bsb_ninja_rule.ml +++ b/jscomp/bsb/bsb_ninja_rule.ml @@ -50,9 +50,10 @@ let print_rule (oc : out_channel) begin match description with | None -> () | Some description -> - output_string oc " description = " ; output_string oc description - end ; - output_string oc "\n" + output_string oc " description = " ; output_string oc description; + output_string oc "\n" + end + @@ -134,7 +135,8 @@ let make_custom_rules Ext_buffer.clear buf; Ext_buffer.add_string buf "$bsc"; Ext_buffer.add_ninja_prefix_var buf Bsb_ninja_global_vars.g_pkg_flg; - Ext_buffer.add_string buf (Bsb_package_specs.package_flag_of_package_specs package_specs "$in_d"); + if read_cmi <> `is_cmi then + Ext_buffer.add_string buf (Bsb_package_specs.package_flag_of_package_specs package_specs "$in_d"); if read_cmi = `yes then Ext_buffer.add_string buf " -bs-read-cmi"; if is_dev then From 8045d3d1787b0dc681bafabb912636e0f63479b6 Mon Sep 17 00:00:00 2001 From: Hongbo Zhang Date: Wed, 14 Oct 2020 14:36:38 +0800 Subject: [PATCH 03/10] not dumping empty strings --- jscomp/bsb/bsb_ninja_targets.ml | 2 +- lib/4.06.1/bsb.ml | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/jscomp/bsb/bsb_ninja_targets.ml b/jscomp/bsb/bsb_ninja_targets.ml index 3e9b0e65fc..5c69722b44 100644 --- a/jscomp/bsb/bsb_ninja_targets.ml +++ b/jscomp/bsb/bsb_ninja_targets.ml @@ -146,6 +146,6 @@ let output_kv key value oc = output_string oc "\n" let output_kvs kvs oc = - Ext_array.iter kvs (fun (k,v) -> output_kv k v oc) + Ext_array.iter kvs (fun (k,v) -> if v <> "" then output_kv k v oc) diff --git a/lib/4.06.1/bsb.ml b/lib/4.06.1/bsb.ml index a7f8e5f228..0de012264d 100644 --- a/lib/4.06.1/bsb.ml +++ b/lib/4.06.1/bsb.ml @@ -13107,9 +13107,10 @@ let print_rule (oc : out_channel) begin match description with | None -> () | Some description -> - output_string oc " description = " ; output_string oc description - end ; - output_string oc "\n" + output_string oc " description = " ; output_string oc description; + output_string oc "\n" + end + @@ -13191,7 +13192,8 @@ let make_custom_rules Ext_buffer.clear buf; Ext_buffer.add_string buf "$bsc"; Ext_buffer.add_ninja_prefix_var buf Bsb_ninja_global_vars.g_pkg_flg; - Ext_buffer.add_string buf (Bsb_package_specs.package_flag_of_package_specs package_specs "$in_d"); + if read_cmi <> `is_cmi then + Ext_buffer.add_string buf (Bsb_package_specs.package_flag_of_package_specs package_specs "$in_d"); if read_cmi = `yes then Ext_buffer.add_string buf " -bs-read-cmi"; if is_dev then From 37d850576d6e67d57aa2b0536733756cafa4825a Mon Sep 17 00:00:00 2001 From: Hongbo Zhang Date: Wed, 14 Oct 2020 14:50:45 +0800 Subject: [PATCH 04/10] change package specs should not trigger rebuilding cmi files --- jscomp/bsb/bsb_ninja_gen.ml | 16 ++++-------- jscomp/bsb/bsb_ninja_global_vars.ml | 2 +- jscomp/bsb/bsb_ninja_rule.ml | 18 +++++++++---- jscomp/bsb/bsb_ninja_rule.mli | 1 + lib/4.06.1/bsb.ml | 39 ++++++++++++++++------------- 5 files changed, 41 insertions(+), 35 deletions(-) diff --git a/jscomp/bsb/bsb_ninja_gen.ml b/jscomp/bsb/bsb_ninja_gen.ml index 3413a0b941..ad788f7942 100644 --- a/jscomp/bsb/bsb_ninja_gen.ml +++ b/jscomp/bsb/bsb_ninja_gen.ml @@ -122,16 +122,9 @@ let output_ninja_and_namespace_map let cwd_lib_bs = per_proj_dir // lib_artifacts_dir in let ppx_flags = Bsb_build_util.ppx_flags ppx_files in let oc = open_out_bin (cwd_lib_bs // Literals.build_ninja) in - let g_pkg_flg , g_ns_flg = - match namespace with - | None -> - Ext_string.inter2 "-bs-package-name" package_name, Ext_string.empty - | Some s -> - Ext_string.inter4 - "-bs-package-name" package_name - "-bs-ns" s - , - Ext_string.inter2 "-bs-ns" s in + let g_pkg_flg = + Ext_string.inter2 "-bs-package-name" package_name + in let () = Ext_option.iter pp_file (fun flag -> Bsb_ninja_targets.output_kv Bsb_ninja_global_vars.pp_flags @@ -158,7 +151,7 @@ let output_ninja_and_namespace_map (Bsb_build_util.include_dirs_by bs_dev_dependencies (fun x -> x.package_install_path)); - Bsb_ninja_global_vars.g_ns , g_ns_flg ; + |] oc in let bs_groups : Bsb_db.t = {lib = Map_string.empty; dev = Map_string.empty} in @@ -205,6 +198,7 @@ let output_ninja_and_namespace_map ~has_builtin:(built_in_dependency <> None) ~reason_react_jsx ~package_specs + ~namespace ~digest generators in emit_bsc_lib_includes bs_dependencies source_dirs.lib external_includes namespace oc; diff --git a/jscomp/bsb/bsb_ninja_global_vars.ml b/jscomp/bsb/bsb_ninja_global_vars.ml index c0c6f2a548..ddb04fd699 100644 --- a/jscomp/bsb/bsb_ninja_global_vars.ml +++ b/jscomp/bsb/bsb_ninja_global_vars.ml @@ -46,7 +46,7 @@ let refmt_flags = "refmt_flags" let postbuild = "postbuild" -let g_ns = "g_ns" + let warnings = "warnings" diff --git a/jscomp/bsb/bsb_ninja_rule.ml b/jscomp/bsb/bsb_ninja_rule.ml index 3c4788a3f9..d6469f1c36 100644 --- a/jscomp/bsb/bsb_ninja_rule.ml +++ b/jscomp/bsb/bsb_ninja_rule.ml @@ -123,20 +123,27 @@ let make_custom_rules ~(digest : string) ~(refmt : string option) (* set refmt path when needed *) ~(package_specs: Bsb_package_specs.t) + ~namespace (custom_rules : command Map_string.t) : builtin = (** FIXME: We don't need set [-o ${out}] when building ast since the default is already good -- it does not*) let buf = Ext_buffer.create 100 in + let ns_flag = + match namespace with None -> "" + | Some n -> " -bs-ns " ^ n in let mk_ml_cmj_cmd ~(read_cmi : [`yes | `is_cmi | `no]) ~is_dev ~postbuild : string = Ext_buffer.clear buf; Ext_buffer.add_string buf "$bsc"; - Ext_buffer.add_ninja_prefix_var buf Bsb_ninja_global_vars.g_pkg_flg; - if read_cmi <> `is_cmi then - Ext_buffer.add_string buf (Bsb_package_specs.package_flag_of_package_specs package_specs "$in_d"); + + Ext_buffer.add_string buf ns_flag; + if read_cmi <> `is_cmi then begin + Ext_buffer.add_ninja_prefix_var buf Bsb_ninja_global_vars.g_pkg_flg; + Ext_buffer.add_string buf (Bsb_package_specs.package_flag_of_package_specs package_specs "$in_d") + end; if read_cmi = `yes then Ext_buffer.add_string buf " -bs-read-cmi"; if is_dev then @@ -194,17 +201,18 @@ let make_custom_rules else "cp $in $out" ) "copy_resource" in + let build_bin_deps = define ~restat:() ~command: - ("$bsdep -hash " ^ digest ^" $g_ns $in") + ("$bsdep -hash " ^ digest ^ ns_flag ^ " $in") "deps" in let build_bin_deps_dev = define ~restat:() ~command: - ("$bsdep -g -hash " ^ digest ^" $g_ns $in") + ("$bsdep -g -hash " ^ digest ^ ns_flag ^ " $in") "deps_dev" in let aux ~name ~read_cmi ~postbuild = define diff --git a/jscomp/bsb/bsb_ninja_rule.mli b/jscomp/bsb/bsb_ninja_rule.mli index 9b0955847e..4f7a68432f 100644 --- a/jscomp/bsb/bsb_ninja_rule.mli +++ b/jscomp/bsb/bsb_ninja_rule.mli @@ -78,6 +78,7 @@ val make_custom_rules : digest:string -> refmt:string option -> package_specs:Bsb_package_specs.t -> + namespace:string option -> command Map_string.t -> builtin diff --git a/lib/4.06.1/bsb.ml b/lib/4.06.1/bsb.ml index 0de012264d..7770d46574 100644 --- a/lib/4.06.1/bsb.ml +++ b/lib/4.06.1/bsb.ml @@ -12957,7 +12957,7 @@ let refmt_flags = "refmt_flags" let postbuild = "postbuild" -let g_ns = "g_ns" + let warnings = "warnings" @@ -13049,6 +13049,7 @@ val make_custom_rules : digest:string -> refmt:string option -> package_specs:Bsb_package_specs.t -> + namespace:string option -> command Map_string.t -> builtin @@ -13180,20 +13181,27 @@ let make_custom_rules ~(digest : string) ~(refmt : string option) (* set refmt path when needed *) ~(package_specs: Bsb_package_specs.t) + ~namespace (custom_rules : command Map_string.t) : builtin = (** FIXME: We don't need set [-o ${out}] when building ast since the default is already good -- it does not*) let buf = Ext_buffer.create 100 in + let ns_flag = + match namespace with None -> "" + | Some n -> " -bs-ns " ^ n in let mk_ml_cmj_cmd ~(read_cmi : [`yes | `is_cmi | `no]) ~is_dev ~postbuild : string = Ext_buffer.clear buf; Ext_buffer.add_string buf "$bsc"; - Ext_buffer.add_ninja_prefix_var buf Bsb_ninja_global_vars.g_pkg_flg; - if read_cmi <> `is_cmi then - Ext_buffer.add_string buf (Bsb_package_specs.package_flag_of_package_specs package_specs "$in_d"); + + Ext_buffer.add_string buf ns_flag; + if read_cmi <> `is_cmi then begin + Ext_buffer.add_ninja_prefix_var buf Bsb_ninja_global_vars.g_pkg_flg; + Ext_buffer.add_string buf (Bsb_package_specs.package_flag_of_package_specs package_specs "$in_d") + end; if read_cmi = `yes then Ext_buffer.add_string buf " -bs-read-cmi"; if is_dev then @@ -13251,17 +13259,18 @@ let make_custom_rules else "cp $in $out" ) "copy_resource" in + let build_bin_deps = define ~restat:() ~command: - ("$bsdep -hash " ^ digest ^" $g_ns $in") + ("$bsdep -hash " ^ digest ^ ns_flag ^ " $in") "deps" in let build_bin_deps_dev = define ~restat:() ~command: - ("$bsdep -g -hash " ^ digest ^" $g_ns $in") + ("$bsdep -g -hash " ^ digest ^ ns_flag ^ " $in") "deps_dev" in let aux ~name ~read_cmi ~postbuild = define @@ -13542,7 +13551,7 @@ let output_kv key value oc = output_string oc "\n" let output_kvs kvs oc = - Ext_array.iter kvs (fun (k,v) -> output_kv k v oc) + Ext_array.iter kvs (fun (k,v) -> if v <> "" then output_kv k v oc) @@ -14016,16 +14025,9 @@ let output_ninja_and_namespace_map let cwd_lib_bs = per_proj_dir // lib_artifacts_dir in let ppx_flags = Bsb_build_util.ppx_flags ppx_files in let oc = open_out_bin (cwd_lib_bs // Literals.build_ninja) in - let g_pkg_flg , g_ns_flg = - match namespace with - | None -> - Ext_string.inter2 "-bs-package-name" package_name, Ext_string.empty - | Some s -> - Ext_string.inter4 - "-bs-package-name" package_name - "-bs-ns" s - , - Ext_string.inter2 "-bs-ns" s in + let g_pkg_flg = + Ext_string.inter2 "-bs-package-name" package_name + in let () = Ext_option.iter pp_file (fun flag -> Bsb_ninja_targets.output_kv Bsb_ninja_global_vars.pp_flags @@ -14052,7 +14054,7 @@ let output_ninja_and_namespace_map (Bsb_build_util.include_dirs_by bs_dev_dependencies (fun x -> x.package_install_path)); - Bsb_ninja_global_vars.g_ns , g_ns_flg ; + |] oc in let bs_groups : Bsb_db.t = {lib = Map_string.empty; dev = Map_string.empty} in @@ -14099,6 +14101,7 @@ let output_ninja_and_namespace_map ~has_builtin:(built_in_dependency <> None) ~reason_react_jsx ~package_specs + ~namespace ~digest generators in emit_bsc_lib_includes bs_dependencies source_dirs.lib external_includes namespace oc; From 5e7986c07109911790d8f566feb68af7bbed0506 Mon Sep 17 00:00:00 2001 From: Hongbo Zhang Date: Wed, 14 Oct 2020 14:59:21 +0800 Subject: [PATCH 05/10] tweak --- jscomp/bsb/bsb_ninja_rule.ml | 2 +- jscomp/main/js_main.ml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/jscomp/bsb/bsb_ninja_rule.ml b/jscomp/bsb/bsb_ninja_rule.ml index d6469f1c36..78283edd66 100644 --- a/jscomp/bsb/bsb_ninja_rule.ml +++ b/jscomp/bsb/bsb_ninja_rule.ml @@ -181,7 +181,7 @@ let make_custom_rules ); if has_ppx then Ext_buffer.add_ninja_prefix_var buf Bsb_ninja_global_vars.ppx_flags; - Ext_buffer.add_string buf " $bsc_flags -o $out -bs-syntax-only -bs-binary-ast $in"; + Ext_buffer.add_string buf " $bsc_flags -o $out -bs-ast $in"; Ext_buffer.contents buf in let build_ast = diff --git a/jscomp/main/js_main.ml b/jscomp/main/js_main.ml index 81d6e9e105..be6ac912fc 100644 --- a/jscomp/main/js_main.ml +++ b/jscomp/main/js_main.ml @@ -317,8 +317,8 @@ let buckle_script_flags : (string * Bsc_args.spec * string) array = "-bs-package-output", string_call Js_packages_state.update_npm_package_path, "*internal* Set npm-output-path: [opt_module]:path, for example: 'lib/cjs', 'amdjs:lib/amdjs', 'es6:lib/es6' "; - "-bs-binary-ast", set Js_config.binary_ast, - "*internal* Generate binary .mli_ast and ml_ast"; + "-bs-ast", unit_call(fun _ -> Js_config.binary_ast := true; Js_config.syntax_only := true), + "*internal* Generate binary .mli_ast and ml_ast and stop"; "-bs-syntax-only", set Js_config.syntax_only, "Only check syntax"; From 78e01bd6a1b67d1254c05bb4c6f7dfed5f4aa15d Mon Sep 17 00:00:00 2001 From: Hongbo Zhang Date: Wed, 14 Oct 2020 14:59:29 +0800 Subject: [PATCH 06/10] snapshot --- lib/4.06.1/bsb.ml | 2 +- lib/4.06.1/whole_compiler.ml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/4.06.1/bsb.ml b/lib/4.06.1/bsb.ml index 7770d46574..d725ed67b9 100644 --- a/lib/4.06.1/bsb.ml +++ b/lib/4.06.1/bsb.ml @@ -13239,7 +13239,7 @@ let make_custom_rules ); if has_ppx then Ext_buffer.add_ninja_prefix_var buf Bsb_ninja_global_vars.ppx_flags; - Ext_buffer.add_string buf " $bsc_flags -o $out -bs-syntax-only -bs-binary-ast $in"; + Ext_buffer.add_string buf " $bsc_flags -o $out -bs-ast $in"; Ext_buffer.contents buf in let build_ast = diff --git a/lib/4.06.1/whole_compiler.ml b/lib/4.06.1/whole_compiler.ml index 569772adb3..32d94369b1 100644 --- a/lib/4.06.1/whole_compiler.ml +++ b/lib/4.06.1/whole_compiler.ml @@ -436321,8 +436321,8 @@ let buckle_script_flags : (string * Bsc_args.spec * string) array = "-bs-package-output", string_call Js_packages_state.update_npm_package_path, "*internal* Set npm-output-path: [opt_module]:path, for example: 'lib/cjs', 'amdjs:lib/amdjs', 'es6:lib/es6' "; - "-bs-binary-ast", set Js_config.binary_ast, - "*internal* Generate binary .mli_ast and ml_ast"; + "-bs-ast", unit_call(fun _ -> Js_config.binary_ast := true; Js_config.syntax_only := true), + "*internal* Generate binary .mli_ast and ml_ast and stop"; "-bs-syntax-only", set Js_config.syntax_only, "Only check syntax"; From 0e0cd02b93d1f9dfcdcd6165cb711c656158ba3a Mon Sep 17 00:00:00 2001 From: Hongbo Zhang Date: Wed, 14 Oct 2020 16:32:22 +0800 Subject: [PATCH 07/10] better postbuild support no shadows needed --- jscomp/bsb/bsb_ninja_file_groups.ml | 13 --------- jscomp/bsb/bsb_ninja_file_groups.mli | 1 - jscomp/bsb/bsb_ninja_gen.ml | 9 ++++--- jscomp/bsb/bsb_ninja_rule.ml | 15 +++++++---- jscomp/bsb/bsb_ninja_rule.mli | 2 +- lib/4.06.1/bsb.ml | 40 +++++++++++----------------- 6 files changed, 32 insertions(+), 48 deletions(-) diff --git a/jscomp/bsb/bsb_ninja_file_groups.ml b/jscomp/bsb/bsb_ninja_file_groups.ml index 99d4df6636..9a3a6801bc 100644 --- a/jscomp/bsb/bsb_ninja_file_groups.ml +++ b/jscomp/bsb/bsb_ninja_file_groups.ml @@ -80,7 +80,6 @@ let emit_module_build (package_specs : Bsb_package_specs.t) (is_dev : bool) oc - js_post_build_cmd namespace (module_info : Bsb_db.module_info) = @@ -131,15 +130,6 @@ let emit_module_build ~rule:(if is_dev then rules.mi_dev else rules.mi) ; end; - - let shadows : Bsb_ninja_targets.shadow list = - match js_post_build_cmd with - | None -> [] - | Some cmd -> - [{key = Bsb_ninja_global_vars.postbuild; - op = Overwrite ("&& " ^ cmd ^ Ext_string.single_space ^ String.concat Ext_string.single_space output_js)}] - - in let rule = if has_intf_file then (if is_dev then rules.mj_dev @@ -151,7 +141,6 @@ let emit_module_build in Bsb_ninja_targets.output_build oc ~outputs:[output_cmj] - ~shadows ~implicit_outputs: (if has_intf_file then output_js else output_cmi::output_js ) ~inputs:[output_mlast] @@ -170,7 +159,6 @@ let handle_files_per_dir oc ~(rules : Bsb_ninja_rule.builtin) ~package_specs - ~js_post_build_cmd ~(files_to_install : Hash_set_string.t) ~(namespace : string option) (group: Bsb_file_groups.file_group ) @@ -192,7 +180,6 @@ let handle_files_per_dir package_specs group.dev_index oc - js_post_build_cmd namespace module_info ) diff --git a/jscomp/bsb/bsb_ninja_file_groups.mli b/jscomp/bsb/bsb_ninja_file_groups.mli index 04856bd9d8..6dcc37e689 100644 --- a/jscomp/bsb/bsb_ninja_file_groups.mli +++ b/jscomp/bsb/bsb_ninja_file_groups.mli @@ -29,7 +29,6 @@ val handle_files_per_dir : out_channel -> rules:Bsb_ninja_rule.builtin -> package_specs:Bsb_package_specs.t -> - js_post_build_cmd:string option -> files_to_install:Hash_set_string.t -> namespace:string option -> Bsb_file_groups.file_group -> unit diff --git a/jscomp/bsb/bsb_ninja_gen.ml b/jscomp/bsb/bsb_ninja_gen.ml index ad788f7942..c075e19c85 100644 --- a/jscomp/bsb/bsb_ninja_gen.ml +++ b/jscomp/bsb/bsb_ninja_gen.ml @@ -125,6 +125,8 @@ let output_ninja_and_namespace_map let g_pkg_flg = Ext_string.inter2 "-bs-package-name" package_name in + let warnings = Bsb_warning.to_bsb_string ~toplevel warning in + let bsc_flags = (get_bsc_flags bsc_flags) in let () = Ext_option.iter pp_file (fun flag -> Bsb_ninja_targets.output_kv Bsb_ninja_global_vars.pp_flags @@ -143,8 +145,8 @@ let output_ninja_and_namespace_map Bsb_ninja_global_vars.bsc, (Ext_filename.maybe_quote Bsb_global_paths.vendor_bsc); (* The path to [bsb_heler.exe] *) Bsb_ninja_global_vars.bsdep, (Ext_filename.maybe_quote Bsb_global_paths.vendor_bsdep) ; - Bsb_ninja_global_vars.warnings, Bsb_warning.to_bsb_string ~toplevel warning ; - Bsb_ninja_global_vars.bsc_flags, (get_bsc_flags bsc_flags) ; + Bsb_ninja_global_vars.warnings, warnings; + Bsb_ninja_global_vars.bsc_flags, bsc_flags; Bsb_ninja_global_vars.ppx_flags, ppx_flags; Bsb_ninja_global_vars.g_dpkg_incls, @@ -192,7 +194,7 @@ let output_ninja_and_namespace_map Bsb_ninja_rule.make_custom_rules ~refmt ~has_gentype:(gentype_config <> None) - ~has_postbuild:(js_post_build_cmd <> None) + ~has_postbuild:js_post_build_cmd ~has_ppx:(ppx_files <> []) ~has_pp:(pp_file <> None) ~has_builtin:(built_in_dependency <> None) @@ -208,7 +210,6 @@ let output_ninja_and_namespace_map (fun files_per_dir -> Bsb_ninja_file_groups.handle_files_per_dir oc ~rules - ~js_post_build_cmd ~package_specs ~files_to_install ~namespace files_per_dir) diff --git a/jscomp/bsb/bsb_ninja_rule.ml b/jscomp/bsb/bsb_ninja_rule.ml index 78283edd66..297aa8b24f 100644 --- a/jscomp/bsb/bsb_ninja_rule.ml +++ b/jscomp/bsb/bsb_ninja_rule.ml @@ -115,7 +115,7 @@ type builtin = { let make_custom_rules ~(has_gentype : bool) - ~(has_postbuild : bool) + ~(has_postbuild : string option) ~(has_ppx : bool) ~(has_pp : bool) ~(has_builtin : bool) @@ -157,8 +157,13 @@ let make_custom_rules if has_gentype then Ext_buffer.add_ninja_prefix_var buf Bsb_ninja_global_vars.gentypeconfig; Ext_buffer.add_string buf " -o $out $in"; - if postbuild then - Ext_buffer.add_string buf " $postbuild"; + begin match postbuild with + | None -> () + | Some cmd -> + Ext_buffer.add_string buf " && "; + Ext_buffer.add_string buf cmd ; + Ext_buffer.add_string buf " $out_last" + end ; Ext_buffer.contents buf in let mk_ast ~(has_pp : bool) ~has_ppx ~has_reason_react_jsx : string = @@ -181,7 +186,7 @@ let make_custom_rules ); if has_ppx then Ext_buffer.add_ninja_prefix_var buf Bsb_ninja_global_vars.ppx_flags; - Ext_buffer.add_string buf " $bsc_flags -o $out -bs-ast $in"; + Ext_buffer.add_string buf " $bsc_flags -o $out -bs-ast $in"; Ext_buffer.contents buf in let build_ast = @@ -239,7 +244,7 @@ let make_custom_rules ~name:"mij" ~postbuild:has_postbuild in let mi, mi_dev = aux - ~read_cmi:`is_cmi ~postbuild:false + ~read_cmi:`is_cmi ~postbuild:None ~name:"mi" in let build_package = define diff --git a/jscomp/bsb/bsb_ninja_rule.mli b/jscomp/bsb/bsb_ninja_rule.mli index 4f7a68432f..24805a28ef 100644 --- a/jscomp/bsb/bsb_ninja_rule.mli +++ b/jscomp/bsb/bsb_ninja_rule.mli @@ -70,7 +70,7 @@ type command = string *) val make_custom_rules : has_gentype:bool -> - has_postbuild:bool -> + has_postbuild:string option -> has_ppx:bool -> has_pp:bool -> has_builtin:bool -> diff --git a/lib/4.06.1/bsb.ml b/lib/4.06.1/bsb.ml index d725ed67b9..1a10682f8b 100644 --- a/lib/4.06.1/bsb.ml +++ b/lib/4.06.1/bsb.ml @@ -13041,7 +13041,7 @@ type command = string *) val make_custom_rules : has_gentype:bool -> - has_postbuild:bool -> + has_postbuild:string option -> has_ppx:bool -> has_pp:bool -> has_builtin:bool -> @@ -13173,7 +13173,7 @@ type builtin = { let make_custom_rules ~(has_gentype : bool) - ~(has_postbuild : bool) + ~(has_postbuild : string option) ~(has_ppx : bool) ~(has_pp : bool) ~(has_builtin : bool) @@ -13215,8 +13215,13 @@ let make_custom_rules if has_gentype then Ext_buffer.add_ninja_prefix_var buf Bsb_ninja_global_vars.gentypeconfig; Ext_buffer.add_string buf " -o $out $in"; - if postbuild then - Ext_buffer.add_string buf " $postbuild"; + begin match postbuild with + | None -> () + | Some cmd -> + Ext_buffer.add_string buf " && "; + Ext_buffer.add_string buf cmd ; + Ext_buffer.add_string buf " $out_last" + end ; Ext_buffer.contents buf in let mk_ast ~(has_pp : bool) ~has_ppx ~has_reason_react_jsx : string = @@ -13239,7 +13244,7 @@ let make_custom_rules ); if has_ppx then Ext_buffer.add_ninja_prefix_var buf Bsb_ninja_global_vars.ppx_flags; - Ext_buffer.add_string buf " $bsc_flags -o $out -bs-ast $in"; + Ext_buffer.add_string buf " $bsc_flags -o $out -bs-ast $in"; Ext_buffer.contents buf in let build_ast = @@ -13297,7 +13302,7 @@ let make_custom_rules ~name:"mij" ~postbuild:has_postbuild in let mi, mi_dev = aux - ~read_cmi:`is_cmi ~postbuild:false + ~read_cmi:`is_cmi ~postbuild:None ~name:"mi" in let build_package = define @@ -13653,7 +13658,6 @@ val handle_files_per_dir : out_channel -> rules:Bsb_ninja_rule.builtin -> package_specs:Bsb_package_specs.t -> - js_post_build_cmd:string option -> files_to_install:Hash_set_string.t -> namespace:string option -> Bsb_file_groups.file_group -> unit @@ -13742,7 +13746,6 @@ let emit_module_build (package_specs : Bsb_package_specs.t) (is_dev : bool) oc - js_post_build_cmd namespace (module_info : Bsb_db.module_info) = @@ -13793,15 +13796,6 @@ let emit_module_build ~rule:(if is_dev then rules.mi_dev else rules.mi) ; end; - - let shadows : Bsb_ninja_targets.shadow list = - match js_post_build_cmd with - | None -> [] - | Some cmd -> - [{key = Bsb_ninja_global_vars.postbuild; - op = Overwrite ("&& " ^ cmd ^ Ext_string.single_space ^ String.concat Ext_string.single_space output_js)}] - - in let rule = if has_intf_file then (if is_dev then rules.mj_dev @@ -13813,7 +13807,6 @@ let emit_module_build in Bsb_ninja_targets.output_build oc ~outputs:[output_cmj] - ~shadows ~implicit_outputs: (if has_intf_file then output_js else output_cmi::output_js ) ~inputs:[output_mlast] @@ -13832,7 +13825,6 @@ let handle_files_per_dir oc ~(rules : Bsb_ninja_rule.builtin) ~package_specs - ~js_post_build_cmd ~(files_to_install : Hash_set_string.t) ~(namespace : string option) (group: Bsb_file_groups.file_group ) @@ -13854,7 +13846,6 @@ let handle_files_per_dir package_specs group.dev_index oc - js_post_build_cmd namespace module_info ) @@ -14028,6 +14019,8 @@ let output_ninja_and_namespace_map let g_pkg_flg = Ext_string.inter2 "-bs-package-name" package_name in + let warnings = Bsb_warning.to_bsb_string ~toplevel warning in + let bsc_flags = (get_bsc_flags bsc_flags) in let () = Ext_option.iter pp_file (fun flag -> Bsb_ninja_targets.output_kv Bsb_ninja_global_vars.pp_flags @@ -14046,8 +14039,8 @@ let output_ninja_and_namespace_map Bsb_ninja_global_vars.bsc, (Ext_filename.maybe_quote Bsb_global_paths.vendor_bsc); (* The path to [bsb_heler.exe] *) Bsb_ninja_global_vars.bsdep, (Ext_filename.maybe_quote Bsb_global_paths.vendor_bsdep) ; - Bsb_ninja_global_vars.warnings, Bsb_warning.to_bsb_string ~toplevel warning ; - Bsb_ninja_global_vars.bsc_flags, (get_bsc_flags bsc_flags) ; + Bsb_ninja_global_vars.warnings, warnings; + Bsb_ninja_global_vars.bsc_flags, bsc_flags; Bsb_ninja_global_vars.ppx_flags, ppx_flags; Bsb_ninja_global_vars.g_dpkg_incls, @@ -14095,7 +14088,7 @@ let output_ninja_and_namespace_map Bsb_ninja_rule.make_custom_rules ~refmt ~has_gentype:(gentype_config <> None) - ~has_postbuild:(js_post_build_cmd <> None) + ~has_postbuild:js_post_build_cmd ~has_ppx:(ppx_files <> []) ~has_pp:(pp_file <> None) ~has_builtin:(built_in_dependency <> None) @@ -14111,7 +14104,6 @@ let output_ninja_and_namespace_map (fun files_per_dir -> Bsb_ninja_file_groups.handle_files_per_dir oc ~rules - ~js_post_build_cmd ~package_specs ~files_to_install ~namespace files_per_dir) From 6c9fdc03726ad9899f663b563a90abe66d06355a Mon Sep 17 00:00:00 2001 From: Hongbo Zhang Date: Wed, 14 Oct 2020 16:39:56 +0800 Subject: [PATCH 08/10] add a testcase for postbuild --- jscomp/build_tests/post-build/.gitignore | 26 +++++++++++++++++++++ jscomp/build_tests/post-build/README.md | 13 +++++++++++ jscomp/build_tests/post-build/bsconfig.json | 12 ++++++++++ jscomp/build_tests/post-build/input.js | 8 +++++++ jscomp/build_tests/post-build/package.json | 17 ++++++++++++++ jscomp/build_tests/post-build/src/demo.ml | 3 +++ jscomp/build_tests/post-build/src/hello.ml | 1 + 7 files changed, 80 insertions(+) create mode 100644 jscomp/build_tests/post-build/.gitignore create mode 100644 jscomp/build_tests/post-build/README.md create mode 100644 jscomp/build_tests/post-build/bsconfig.json create mode 100644 jscomp/build_tests/post-build/input.js create mode 100644 jscomp/build_tests/post-build/package.json create mode 100644 jscomp/build_tests/post-build/src/demo.ml create mode 100644 jscomp/build_tests/post-build/src/hello.ml diff --git a/jscomp/build_tests/post-build/.gitignore b/jscomp/build_tests/post-build/.gitignore new file mode 100644 index 0000000000..1c2bb277a5 --- /dev/null +++ b/jscomp/build_tests/post-build/.gitignore @@ -0,0 +1,26 @@ +*.exe +*.obj +*.out +*.compile +*.native +*.byte +*.cmo +*.annot +*.cmi +*.cmx +*.cmt +*.cmti +*.cma +*.a +*.cmxa +*.obj +*~ +*.annot +*.cmj +*.bak +lib/bs +*.mlast +*.mliast +.vscode +.merlin +.bsb.lock \ No newline at end of file diff --git a/jscomp/build_tests/post-build/README.md b/jscomp/build_tests/post-build/README.md new file mode 100644 index 0000000000..b20ab1bade --- /dev/null +++ b/jscomp/build_tests/post-build/README.md @@ -0,0 +1,13 @@ + + +# Build +``` +npm run build +``` + +# Watch + +``` +npm run watch +``` + diff --git a/jscomp/build_tests/post-build/bsconfig.json b/jscomp/build_tests/post-build/bsconfig.json new file mode 100644 index 0000000000..a5bac3ab6f --- /dev/null +++ b/jscomp/build_tests/post-build/bsconfig.json @@ -0,0 +1,12 @@ +{ + "name": "post-build", + "version": "0.1.0", + "sources": { + "dir" : "src", + "subdirs" : true + }, + "js-post-build": {"cmd":"cat"}, + "warnings": { + "error" : "+101" + } +} diff --git a/jscomp/build_tests/post-build/input.js b/jscomp/build_tests/post-build/input.js new file mode 100644 index 0000000000..e758103cb2 --- /dev/null +++ b/jscomp/build_tests/post-build/input.js @@ -0,0 +1,8 @@ +var child_process = require('child_process') +var assert = require('assert') + +var out = child_process.spawnSync(`bsb`,{encoding : 'utf8'}) + +if(out.status !== '' ){ + assert.fail(out.stdout + out.stderr) +} \ No newline at end of file diff --git a/jscomp/build_tests/post-build/package.json b/jscomp/build_tests/post-build/package.json new file mode 100644 index 0000000000..8479bb9507 --- /dev/null +++ b/jscomp/build_tests/post-build/package.json @@ -0,0 +1,17 @@ +{ + "name": "post-build", + "version": "0.1.0", + "scripts": { + "clean": "bsb -clean-world", + "build": "bsb -make-world", + "watch": "bsb -make-world -w" + }, + "keywords": [ + "BuckleScript" + ], + "author": "", + "license": "MIT", + "devDependencies": { + "bs-platform": "^8.3.0-dev.2" + } +} \ No newline at end of file diff --git a/jscomp/build_tests/post-build/src/demo.ml b/jscomp/build_tests/post-build/src/demo.ml new file mode 100644 index 0000000000..923b77316d --- /dev/null +++ b/jscomp/build_tests/post-build/src/demo.ml @@ -0,0 +1,3 @@ + + +let () = Js.log "Hello, BuckleScript" \ No newline at end of file diff --git a/jscomp/build_tests/post-build/src/hello.ml b/jscomp/build_tests/post-build/src/hello.ml new file mode 100644 index 0000000000..b7660e86d3 --- /dev/null +++ b/jscomp/build_tests/post-build/src/hello.ml @@ -0,0 +1 @@ +let a = 3 \ No newline at end of file From 746df7102dde75b38955b091b9268d70d69257f9 Mon Sep 17 00:00:00 2001 From: Hongbo Zhang Date: Wed, 14 Oct 2020 09:45:29 +0100 Subject: [PATCH 09/10] update ninja --- linux/ninja.exe | Bin 171080 -> 171080 bytes ninja | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/linux/ninja.exe b/linux/ninja.exe index d396049626ebf1f696ab902843cb6a2ea1eab730..e7e44fad36d1180bf7b176d133c5079ff1afb1db 100755 GIT binary patch delta 21845 zcma)kX;@T86YkW(1>68va2*r{cQ7uvgQ5wee~J{^<%nPyY<444KEtsn3y~>$8asnFRj7b zt<=mkC9oQmW}c|AtS%kN3~9czG6k!b+jJ+3TC;6Lozic@3|f!B91c@Tlz%%@$|`@a z+_zLq+b(F|SKhw&xwE~!v>S7Gs+HPJA+tKWou7MA^*#pExfABhH`~P!g{x262hjkv zdC)`}swM{Qp)qQU;28JNntcqx`PwA)jbM$|t8pFd?%#UpRSVTMudQq_zD6HIr1eg? z^`Tbw*x^VlbHu)uST-%TabC1qyW=AIR^8Cik0z=6I`*fr>cfs%G)MiY(`Ao+=+`g! zwl-7U(76RIRX^#R)hHEp7;Ei5G8BJicQ`zogrb}$<7xBMwOv|zEO+(lmYLZlm?%yC zEhL!ksP(#*&~4SNTT@C^TXdV~WAj9h(+?bu_4%Gjw_sR)Hc03Q9pG`FB1(^5ANBz^=?J;)akuvH>%YM9DUz|9WIEFwpjn5aznVKt0lb~R&NC! z!TDbhl+&(c)(#y&U@##piDK0oVT~0-EtUEdSBeuuyvQu=Q;+Ix#q-%D|5YA3~LDaZYTFrevN zlD`pHpvL#>N9WZu{RY5ItM~th>Mxl^hP*1eOxHy2NdFL1>q!5g+(5ONX)qngTx1$Z zZ9f#LHeZ+NiJd513m{YOeyLsNtey9=Hbd1SdNs+YCEoJ8*6tUFqvVpwcGy1yU3AZY z!|YT04V*&h>b`;f>g&A6VQ`t@zaUAjI78T%hDK`TL33+KLF7+BclmsQ`t^f`nr7{E zImO3Vp2EKf1n`TzS#@-uEZYjj+~J7A33874+2P0$W}Zz95w^kZru7$My>orM)P|7* z75Dn;tVn;#R#PH7d*nG+OVh3D#Yi)qRvQf--#{1g+pA6?cR~zNw^WSKQB?FJSI>YW1Q1wTeKg-T4Xa)>9h7h9T#s8a}imJZ#0# zW^_^AIW#A-P0nSf^depGceyRpn&zgoK<#91 z-~XaaO!jH~J(i6>IT`q)dx7a(1%H_wZEyLkJQEv1M{yLHmBQLGD`KL)>V9);#E;A7 znecvljs>g=nPfi&A*ER!PxTk4i~tgr>v%m3Tq$a8nP$R9T6JP2vtR&a0*@Cz(doF;T3PP(r_ zm-mM*fR=~n)EP6>j>E<jq-4wTMF1lo3h3&KT>Qr*A=2lA=edTw7+VsI^4B)q^9u zBU)=Cdq(tzra86_5W5?mv@&*z-B_ZAgtols`XY;y*Sl6o^W8s~6KT!siyq}o@#=z6 z4!G8W(F+kuu8sDgw9IFt>ro{={$5dQk6qnhCFo7oYvERh7X6Jg+ILSZi;HcMXUse} zwi8jldUIS0x}YyH75=Eb@Rby|_8uel90UEAuU)rKpknDaNJ`+)6{X-+I&$O}X4@;+0 zrrK>;L%OVvUbYcVeSKMr+B#*QPo0#o-!rYw1J!r=hJLFb7!1WH^$ixY9Q++zO!GJ^ zI>q{%^|{o((g(n-=15@4)mbh3#K|gJSVd&sUOu$~b~4kdcWIM)YgIUsroh$H-RQcy zC1Iu#@SFN9A%jM$`_?vcI?9_LNq3}8VmhOYnW6r=_P*C2IZkT^Nn>d4c=gJ7Ds7sggnq)u$U;(`vQp#xcl3R&H#KzaMQJPGy;Y zZQP`grmo+VPCuzFY$GT^ecgssC3B}OL?O<+oYJt8Qa?z2qHa@aH&-`pyIAW@u_ecr)7>{B+@#hhn9FE}p;%tPg z@UGF-*7)YM7Hb>Twdp?fueyjDIEfNKl;bVU7cw)`qY2JidrxmF$c)<4s?uP6fRwy^ zY^T~Def_TV(moyvyPb2BMKJ!<2$L_`*Jc)#A!3UovD$>~P#sv~j+P=>laCx#wnzR2lS z0fioU{+N)MJU4~LWKKV^OF_V@aC)Y)uPHCOKt7r4Pp_|_njwTdGW^%l8QMlkB3W) z|EVdmsx?0uDOr8*r%!0QI=CgOSQ73Fkz7B+g+yCOB5c|rdV+SMFFtV z(4qnE7o7};X6`DgLCE_*xzVz+)M?)K%wKQBP~B^8WJob9*_a1I;$O=0%C-t`Rco$B z-3p*0b=9pn_c8vuNRQNiZUwq0I}0b&Hn)xLfzHA^YSirrcZ0KFQa`*swTh=+z~+2a zt@+z|rIEk-%WvJNS!TUENr*$u)tz@w*7IoI$1o@*syVVMJZX)ws!csTnybsSxGGLF z2Vd3xRLiuL-v3vG&P*zpu?Ck80eLphiFZ zZa{wHxn9DxDdn(#J}}aHQx;mwiRzgrTj*mo>d&{8x-HcEf41^Xm3153Ue+xVGU()@ z%~jh!U02^7vTA!fI9oIR<s=J@1IjcJ=dc zXm;|s1eFKR>(O1c(qG$^L8H}cPwHjn{Pm4nqmiQxhLW1dMsXOEc=6Vs4o6acthY#N zRX?!b1lGgo8^+*C0rDmFPQzRI1XpMtJy zE1VU_a@j>O%UQ86SA0{tjCNLV?hY44e`m#p+&9_FgKD?l?W#BG^`1!+u+Vd5)0W;< zU6li*^5d+b9u$i8#Hm%OU;PrD=ApLG*WrlhI>FyPHpsaT;Hnv`a9ZZR*ytMC|AX4euhL)97jVf2AQr=vT8rBw{7!RjFC|YiE#-UO^jutA- z!rDAuOK}fiZcXi#1_6A&HO(g@cWy(+lTs?>yQw+BWqCk{J22sc0u>lZbqANuzZvNDcb8k4J zYERUcCr+NIE%}eLK9X~SD7nTaWRS;ZgT`cioNHloFg5nlcYn|DvnFe#zk9BGAg>9g zCRJB~NNa`kH*YKN3#O*DlfMQvZQy&s)P=t0rX6UU`pY}j;;nz067R?5?$Npa6k+{A z`y2zyNvajhm-`XwBaxTvbXEQcg>#QU4yjCbRfY=XK^Nr`S7lYHJmRXH{*l%Pns0rBA)@OU&-F1NGuiqX#j$N6TFeg)hu$j$iCFAw z=;meWzS_q#$p>^u9o9Qy>*{MD+}}s*_{5HYITFlKG9{jLH(8}H(s;IC8;Y=MNN?bJ zCfi~YM%Lnw;;>TEL?%-PJO+la?gO176y3bEBXZqhEi~EYA-%Ls@E;Rto8~_&5=DzC z@pRm&8Rdzc^bfx9-<{*ox#R>$FuOW`@syV&K_*+gxlD@^qMb8RO}4>ClWiDA4f8Rz zEHIrYb88(orghi^Q(9QI(Ir?)wUe@PEI7jz&j2$le^oQ=+f&-XWmY?}g=PnC3$+$TtT_89h)r<@8h*9|a(+WV!>I-{Op zXxpB-NVI`};0dcP@szu%>r$_!$EBxCn`Uv*gzA}A?lEE0kWX}^R@L>8fb*WE6+BtZ ze^7^ecBa~1GH=MrB*T&%wi*X_!aB0>`p#H&rJU25+E#>YB}X_lihQar5KCfL?4`Bi z>z$}abv=sx7u)$=sJ6GR&cAGb`I|d*!h*2ykuKo-kneQ?-$yU`R{NK)y_AcuQh(52%dyuzw(d8Z4iC$BtJ>X59s7sXOcfmHrUn=w-?p?bBryamaS(1+D+C9{<%VeM5JsldxhkPkbEo$30qghbgXZ9pvfBRAE?b)Dz#B?{qB9-J(F5PtAw6)Wn_Ps zMHcHrSMvwsHNv>`6~+@ey$801X#TPX=JgZ4(Sz#Ns-q7N)0NxniN;lWQXA#+Jr3!K zc>g}n=}E2YCSzL~A=^vheIK!74LRJc;{!d(M85o_Cw)N^IinZZmFrQQ(VMQ4!ka@W zu>P14eulxe%E9?2Th*Mx@`1GA-|VV)avi=EO6{Wmz5|sM(S{d=(M;usTl{kv z)%Th8n@}J3PeuP6+3<3Ug^4#;>qBkeja~cD_%_+X5)n7FxE@Se9`LHdu9Jqrt{LTu zz{7fSejjQHzq!|kx&{~DhA!cHAVUboFp?z6!OVz;^71RgUf`&{6i~tMuHB&;pVi@Q zeW`z)4#Fe_)9VVfk}K!(!@e|yRx<8c=FtMq3#UF*m6d+fzVg+Zpdb1|?b^LzjTdq= zg4FFf#?=n+6ttt$n?g27$nyVIWB&2sqJC7Jn(%{uG@LGSSbuT|48Q^m;!g%pE_w4j z6TNM;4T5{c!lA@jUkrrqJ_vK=-tx;Y+%$qhsWnfHpaZq+5oo^;YnHeFdX@bKQf(TL z)p;Pul*>PJ+#qU)X!X$`3i4R`v)vJaP=vrVh+4sAszy?4G?OV7*3Y1DD+ka_=G+m~#3NPqB^0~xoe|Wd?^oy* zPlF$7mkZ!2J>bQuVaKs94aL}XoX)8I{iEH%m#|~;>L{v0>p3}!T2&tRJvyATt3w|6 z@y}7@Tgg`{8gfb$HK>*+W`=H)wFlp^aU_lQS}&Se=X&9v5vS>3-Z+v*Q9556Np&mj zfV|nk{MSh8)Z%kIYh^;6cpB7&<8kkl0D-WyUe>Dm@qLG!+@O2}P9F6d2x1E!A0Hf7|^R8j*9<6bu z2xa1^E$?Y>^4}9ELNNyM(FycgO=Hmiv@2|zsLOb5B8{%w1=mbro=5xBVC$X1)+e|K z@jUvbkq1qpMi^oCBrC~u0ftLm3q)TJ~0)$|K*dcO@&>vxY9J}Igf*$&1g2qc+q;yIt<0Dd}+)^_<2RXOs#lTIWzSxYdw$=26B_(Jeg1VEF`tZAP4c1OZW z#jtdXD|Yaw(`jd&7%Z{>B^}JsGpL0}`E}|peq#o8Cg!s<;DRsm*?T56QwsCB^Gq5` z1)MsQwpVT^2KpzTJIunq{wA-SMITVxEaPnIPRgS%c;XydMX&MCbEt8penQ%w?Q`I; z$9dRX>V(tS#<}pmQJggwA))ngM1V{Q33b^%7a87-FSzYI@~1C&_&mBqE!lrQwNw7u z&QbFz0ut<+Pl?S-j-eO+x%S*V3oN4T{SxY>n2|#c!u5usl>0BBcc~5ESU{Ir&KE(N zBQKQ@jA@Z=@fqeA${CFJ+oR;jviPnaC` zPsiBhxq}v&DV5H|!s!IMdVgkc%UFt~g}f`4npOHp`p@8Vu{1#`{+yeGF@469mLjEF z&8bTXJ1qaYlwt_E`!d}xmMx?4)SbUuh8*DAtX|6rH?HCQP8eqkepTHSJNp+sO0Q&}Dj; z`^M7<4hTO?fP$MiF@bv0W1Aa)P+sGr1C1J&k+au%k=Yi{~D_!8E z_0$Ukomx+85#ai5pxLyGKifd7DUI81q}xG%zlW33QAyVWWwtB`UAd*A*5{Xea6C~OzL|1Nb%r zH^@nD5)&a;Dky}q6et_j*Zlcg2q;6?@fP)M{?%478TdL6FQ8xkibZnewnXH38%MHh zDi^$sZN3WkWiUWsV)E;thrSlr*kufZtFKs9+xmu6Qz^WnX*a&bw1kfG=rpA84fxG8 zZ0uY3+ca!CrCZpZhMcY%hrL4q4fLB@n>oY?1<%!{$nK(+VY#U6#Lig#&UC9jT9;W#hajxZ9&7q?SrB{?5!4Y=kGnyPf! z!rD93g+JXvwUv7*e0m4A&xvpE#ChQucif3h;&L*_?L^pW&EM_B74ctIuDuJ}=w6<= zi<(v%FEfShdKdE4R-CyD#}Rj~_#SmszE9@v@6kek+DFRce~`jx2lq_!yQ;762B0-jj=rBE8TvksyMKmYtn#MM$f!JC#s@#6hSjIN zZg=3`c=ZY-yM_GYXLPiEF?=vA`!W6=E5je$mN)>;R2Z4Ed%aGQGFR|#3eVwT(01=Hrc(F(hI zZQ3wu#6g)fpy9}6*xj~Z?~Y9Acm}fow|Nk0MfiQJbz?P?(&B>`i<{u?D#ruO&bypn zEv`Db5GhzL1+gxuf;3vGk2}kKr&=xo{Vxsm3h+fL#k;Y^@9B9bw`Vy@3a8YO}vGm4daVh)YJP9P>cG)Tg>Lh^|O&~+IU?yl$gYy zWmBt4uYsu8mlu^%z3QHC;095ba-NswHq<@bHlUixR!?^p?fyJ5 z+}uFidHa~U{uP(Y18a_>uRI^R)$s}7m(1`hkraqE8Heo?EI)QLatxd<{WH_ z%B2PT>ldVUcfM5?isc^ab8LZlVq%<^Bit4m8e2Uf&c|?UjvV$p!@tHC61mIJUVebO zHJc9{M|Qp*b=oBU_Bfo@koEg<`i-zje4k5Mw1;hZbh%E0-Ect0cAwK$+-sk7sK?9l zX{++%9QHUtVYH41oj@A6jjbo>qv36)Iqevf<0Tz#<20-lPI1+VVZWX&g_q9ukBdI^ zm5pYfPLIhEBQ)T3Cy~^=$Jb8c09ibRE1trB^Yb+BcnTA9kYi5a)*z8Loua*Ro;-~k zid3F>np)MH4%V1(2roYM({zlB&Gs|ib(&6ly*@*4M2$4wkKx5dWIFJ3Ph$~z`x__Q67jS1)%FVwb3(d@W`zv}*^d+ZWBwySB@4txLx-A!7 z)UP?Ke1kLnhdk>W8i23iGQOeFk`(<1u$rU)Lq_C&YyX3gT9uoAOL0n3C$-vz8Or(2 zYU~9QrDhE-!1n5v8D&?ieLap^WIek?3Q;Ei^&RTp<^kW+O`pusVv;k1*Z;n>nY=8Z zU%k~BZdXry)4b*koEu6mS1sk`wlKkFfR&jI=)2 zulF8=W4R3-X=jTOZaSYsf25;sN2BZ<(GbR2frkwZX_edSW;<7GMBCh^jcrQ~G8*LlWe;4Jx#OxV)R1?+GwifR z#K##cBJXDuonP}>&;GGD);sSPsi=e{fp^jV*t@jexr!H#8YSy8WXm5HBg46hpQBnn z!TBY-XQZC1xCdnU1vFmTkcQHtiu6Z{_n4^(SVVeH` z2vgA|48A}Rm7F*6=PKfueehRW-Qv~}qak)-PCYQ!?@jWa%Lo%i-IOFfJ;r@ZE)Ts% zLBU@}$ozELfG*A#d?%p783b<*z~xJgmrT67fXRbM&bUS^0&X2P8kR0{Mh&q@UN>o- zC`!CC#9=mHqxLnwG&#pWAJ-VX^*YtBY?MCt2l40EX?eh{Or7Ju<4x5$4*GA7nJ$hH zO{7MjmmG`0agfe&VAkhFh;bf^QIao2-{P_x*!Qxz_f2F#>6~(t0+5#-xk>NSX&!qE zUvOpfhqthScyaaHNKU?C^KFEybY6WM>E?0XeH)3~cvgNx2KF;g{*3~aA4A#t8!fNX zFjNFwN;wl?1#Dn=JEph~*SSNjy?^Nq`$@H)2He#S@~}IIR$6afb_bDoI%nU3RIAx> zhni0O8pLo$d`IhEBz*5yAPn;o_&(zqK&kN^y7j=4 zc?ocy;v>Zh4*@U1l8sR z_bJA!C+Ld*gzfTn$tv2#*Y6`AuECD`)V#9R4UMxLs%MB#)z1PJm&=Yp_g-lWMbdvd%sf&jpoY_sD1MRUC@?zKSBTg!u4Guw&_q& z@jxs_TY+JCYcHzjeoV9(s-5PDhZNd8v8&x7#=sjMcoXQZ_>@_!YwO`(e*0M3l|Oxm zBS&-A9#WHg~!yOWp*bg(=0et?m+yJ-rvI!WTer;4NEH0Rz01o z|3MAnYjl-^P?EpCn+Y|Z(?L~UzYouKg~poXpMhs>gp2TI5B8I$GcP;rb#`bkwb9-B7~-9LQk~VlQr+?; zpVytWZc^*}vUZxY_IIe5_vj_#At$_I)Xu;wY1Y4U_`@gE z+`FcjCb7&A-*M>x+e&xsBwu|(T^d#if;)br^~Lx|U$v@0Xyh-<`fCn@;Q{qn*_nMPucMlTdl%_p3%~32X`8gN1bwic3oS<7oQ=E9?egmQHL(! z5C>kHd|Y>}OyLszU7n1owRAP@b~dFsn`9WR22U=d`pT^!URg%%M!w$`+g8{6%OBun zcOUI7lw2uub#cJrBvj~OUc6Bo1-3BcLI|I?=H-kR+=f4OcQ!>y6RuLr@HWwYe(gD# z=|Wc0bNWyj)eLXoxkfs!|9ndGMvbhAbdjrL`+p0%eYM9TjH@|USF7mN8eN%{=qjP1&{EHz)v~vAF4Oz4fLGb6 zZHGj>XOkFG0Y4DgB0hIjdkjYS(VKtCCt_Dyojq?G4eP)2eCt%n4mg0V=bL=hj<1MQ zIMji&@f2R^pggxXTgp93pxSRrPq%KZ?dtj|J={tH?ds_%t-Zet6o%ag(+lTGr!5;v z`IWw9J1O(=#nL=Q8Hoe`Nk!?`@JtIVnKv*_`56IQgX`jDKR0tzEN&6tI^*L&x5hxq z_|vU!bG!OHqnlfC3%lC+P?*PC{`zP*RfJYl7P&V-u|(CT@v(|Zv~sICH>jk1LkU^M zl@z=MK8zc>D~)k2*4+u?+?4^iw%p^c{0;ebc_>Yl`$j(Lp~NVL?%ceJ(xr7Y-Y?Ty z8!<@Y=~=<~GCg4v!zP7IK4r4u+9qcZES;NySb-boja8IpRFe->QMy-3ma5%+AJ6#8 zC$Or5ua2_zRaFL2pRv9=w-9{)|1USZyI4E%6qWpdp zMp&wOGIy%3w86F7lGP*EnkF#v} zpK`(b&iV`&meVb9(U+IYG1WyE=fW{A40WMP3iVg=prEWn9hEOC$LDJ=97eqU6XXhaO^{U&>t@x=YfVNFC0GA@DtEKUpUM_^RpL@IH2)4+JU8izi=3; zqx{bchY4sVyTbzXssO~%%~;XyFoJ(-CA-56ECr@}8sZK4b?lC4FErG*JKXW(lF$Zr zMVav%0%R^l zz*1ltFcis~u?`Stsx)8`uncI#xx%L|ECS31nsFYA_JL(^en|rw!tIVAU$g_Gfd(AD z<9+bbbpjqjfdzx1F|Y`j47A{uB?Fj06zvUwW|$mk7!HAe=8<675Q2=YDut14d0TU=q9&n6MENH^acmXa}KXlijfo zn6Md^0Db8e2ntM3g+@ZZ6$1dx+aLh?6#y;3B49Ew;Vmcv%mmIAYZ(PI4;To{Plt0!c{end@*Y?Y znEnAY4=@-EA7V8D6M$*{SpOM&!3Y&azyiUKU>ac1J`5a)j=&IL>3%Q<8VA^^)>3H z3^cU`UW9YUOCT4=@O*0WCmx^fOriM!?W} z5C{XLmq22m2P}AqDF7A$vw@|+0$@-n1OS>J!9pF;4jcnC{{aOApJ4rG z;34`61_D}uMZgST889E{(+Pt8iGhKoz(OgPL4(eqdk)6HqQ77vpw~aJkd%Q%K=TXG zb%6rpa0CJKfzd#V;&2oIOO<$sqZAL(RU8gu2pCkw;T>37!{M+1Lp_lYL*oLV5t>-M z&<+7IfXTpo{7`wHFsy_30;C^)hExQM#;=wPT_GsY2bc~F0_FovK(G4X4>ZQ(Az283 z=|D>pha(@D0W1QB;wMsNzyhGL8yNe6fnW=VBMlfD08M}ifuI9s0KK|{UrUE01n7k; znP{LH7$?{U;{Zd0pg1r-A3shT(*u%pcQ^ujVopba5SW2)rOyL{=7JI06M*}G(eof6 z(7Xiny)Y2a1k4A{0vckW5U>cC4J-u~0FC%A%&Rx}0yUHqmOC7wy|MmNU&m|tXeeFf zaAW|zR%2kG5m*Ea0+s>OfyPjDTm#bq(=l}gz=8yr8hKLsS_lNRtb@RPAYdW{0){3* z5W)4}2efR&RP}|Tzi}!Xbba0|65@fl)sUY{P*4A@OFI44A$J0?L4IfH4Lt zNCjhH&{i;(fq{72(NF+1Vt|A<9S$=vRE2=xoADO<0nLnh;hzRe$IHVz7yy|1F6IOn zy%QQ@z@T&p1k48-2S7kzDA2MSj0Ev3+hoD_A(-F?4o4x-uonZGAOJ8Bn7LXAOj5p)Kj2BZ=ffnFCX~5g88qn)Ahr@j!1Ogg?p@$$jFau}-dS${1ftJJY z384816aYp8-3LJcpb==!hK~VDfeFCWW3U|1kmHDV6yd=u2buznK(9y$01N?!egW^5 zGB8!}IOu?>U!pu14D(S2CY-_)3jG-jh_cr?2ns9!o(Ebkz;Z)i0pJ**;adm_EGVdq zhM|y{Ck{|rr6^#isNG@j8(ulP)lYGj!?QN+5?^wfdk|$wnpfUhXe}w zN(5+3+;SjF`8;f((jFbx0^Ew~+PS+`X~YHiUr3<9m4OQ0AL3zyz^&|0-ZV&QhgZjr z4MIl)-w-gdN2Jo;cUI90hX8+I2=PHB2 zDUQ1iR=VJPyJ#>p^5U(7alTFFD}y0W2zv}shWaLtusbRWL)S;FQ=u~Eh!+h}>iNc@ zxj}gwP?|gH&AX-fd_%jV(*HD1Lvu7=LNk6qP>eAkRo9_P6W_u{cBcxi4r1^Mn6Uz0 zgl4?4xpgSyislmnsr+atI3%-&SqW%b)Y$H5A>G1icqJ;+YLw5jZUq!d8}o3p(!$r& z#O@gDVlN;=_`__eyw!{$Qu&ZTK3_6p2)yS#Oc_vL^RqjIuKXiBpP)~vA5R&kw7?5R z)?rX$7GD_#L#HzhSK2E@!}#6^rB(AMRS-J^><;W+F5xUMg%hT=tKtu@9ga~mc=vFe z`U}`^gfbJRv5rtCW8R8K=#$|a1rif?6_~|iqfnX5)+kJ-7QkOc!2>N!BT<{q!2&@X zGZIsKp5KvDAYT{>83WmO6iV6B*1n1;Qri>qwdHlAphyURj8@+|6MhU1`guDDN_{;V1?3-hh zUKGlHW1*~pcaH^8K0g|(1Sn-Axc)e}Wim&MgX~xm<1kVoe>_g<4c&{!fz+M5j>ouZ zJbOIa%)E6x+{`rkznxS>j)E(O@(H1ezJ3;B~n?1(vz=kLb#u$e= znIMmK5VZKv1Q;G~h))DD%qZZ+hbDrNJ71ZIx$)w#NqXB>C)^My;NZz1N#?PWA>SCb zPFA`Em*N1jNCt6zWO>ZJA>s0^)A!@ZyQ zo$mgJK^Me+F)&a9hsD6s@W&WklaFJdNeEwwK~zX(zbViX%YF(d^LgtO%n-uK6n$zu zrUD8%Vk$^x@jFvNvX779Wk4*~M^lx0!DH6{-$C{;7CdzA+84VirH2 z22IjAY&v`<&HCRGiOniB7UD(Ip$yz$x~^gIbQrD$c zX5kRGr+iGH=6ErDa^ zql5rCA8kQ=10|*CD0f%@JK$F{3-pmLEkGmQVqJ)mnTIXJ5Qt*}UVLI9hWFwd3&Aar z{VYnYiiZPbx#6*%ug`J216kqAk9hoTG(&6)n0fJTi*AGy7IZ()#TEprv^={*_Xbxl zneNjq#qPn2z%m)ldf0U}!>bHW(44_Bi@+>Ue5(zt6ZXv%nOEJO)mt5oLmA%Qr)B5j5IJQk*QFXDkq zmBzkfaL5xy%0HrW?RK)Eu3ZY9XQ8=fc^gn%F&xbnKC~1IBn{2jxn6#xcM_VhnW8u3 z@K}Z+_i;;r?|B>>lU|ZKc|8GfD90>=eES5Nc*sPBx0jW8Xc;CdpJ};nimuB+1Fu;Q zzG=KdN?4@;-+eevhW-!VSR7Le_=ZsJV~;p6GV$0r7^;+a$3Y})`chfI-Yax|Emy#a zOL^-G-8XIs6mjtDST#o8`Z_vb4LISFfQ28uuFtjKO7XSM4o4di05NBjE9TtBX)vFM zt;8Vuf+E1-ktBE=o`}0;lQGP`O&=%ju6VhtH4y6|997Xf@W+WtDsdJ zTUW_6_TrycVf)kAcQxcX&s|qTuJb&5HE1lnbu}Una--F{T7GL#Y2t`AAQ{6bHLKVW zhtnY5Ej2}aX${B{*e@PrV>luneX-i&(H6+ZQ1UJ8i~Lyx4zCe99*Rcc@dF%Zi`Y8> zKL-rq*$FUXC|?qQENj82lw;O{12$GEmGLnFgc1QHTk9}n8joEkF5Qnet;6cq_=;Za z&s7rjG$bq$szL8WbV*~Yl=kt*DES%2IUG+!AU#bRP@_opBz(k8lMsN5_>pu%ijf3J z3Ob3Jno^u>3YabB&LIO18ZX;EbedBLGWcqohW291di!FF&>M zR3TKh?L`~mmt)wv5zb%AC#26TE|wDVxny{~&jK8xUUqaQ%1_YMi(`_NdW!o3emxmE zSOV_`HCFwFWPKi=C+oA?)r!h|juG%-s}*h8e9VfrGJbAVy0{r$cX0RdN^_5JjPaxo zHdc<=qzv#4TI$06!8ig zV=yOXjVKzxTXSN3l4vwajL|_n@Ww=Ue(#=LjL-A={_)$_E54_@tE;Q3tE;PfhMYZA z{p_LYnZ?y_q)R&SyOF;6w*sG-Ud~cXuYOu>jJ%I7*WG)h&-J(wzAM)EY_oRv9x33& z+RuC2v!uY9RAfKqwX{B^+Cy9Hs75~WFKv60Nv_>4qF&MWVLGMP->PcPh%&Y}XRI>n z3zo>%cHPjPQ`x@vxwE~4Xg3tBmfhP=C4)SxeSk-9t$sT5nPUd~+wG?i8Rf?vf~l3< zB6t#YkduRVQ>ffBWQvEOc0XN6kpBNeA33M@2<&V1j;+cki143>n z-Q;y$TY~XtUGth)QHQZc2#!=y{@W} z>CKh$y>ip=R`jzxFuWa2ljHF3YI%3~VPkP)F|X5%zGhpv(V)C7jFxfK7>ohUXHtv? zV6L1nU;t&wrv?myo7Nimf*SUZC0${4A=9O+LheXos5vOo7+l~XH#ZNZbo)Z{U}~2t zq+*R6NQPr~Z=JW%`Ty)Vq0}c}} z4;Va^66Ku10~%_)Ctz?f!+%4P0^tl{UzaqNs|}e`M-+toiRdnVM^K+SWVktWhs!DU zVR;JvB_M!b6q@U4K6!RC6jNNBAm_N>R5f2P^Y+(8q!0Blr=E-RDX8$48%GY76hApO z(g@3BM0WLj-?>^IX3F11T4;~lWN36FO~@ZFJB8c^r^gK zcz8%q2I*3Y%;{US;k{E5;1>mdqGO@(Ow3LGFHY%&bRj<#xXZOI&1jh1#nNHmr^1|v z_Tb;cS@p(UEu{y z0A&-NGiS_@JC6*fhW6zn>k#SXj8Q3m&KT>Qr}sfrmZ3$ef;sj!QAtGp@~5MFB3dh> zdq?>DKAbM&Ze8ZOTtqk{AN zu?rB3u8#Gkc>A-l4ai-Kzx(96<5xF|2EEyKHQc5uG2c6*eb3~I__&sZI{T;NyAWl| z*C({3{jz6tb428J(LF}Ifi9KK5b>=T7#opt?SiTnEPbu1J(?oZmuQjN6!KG~?Wt1s zhfX&j^{#hHZEXdtGFn7!J^4`d-Wt|MLXgvNuqb)f#Ay0PJ~eTX@AqJ+7`_u8x5^kJ z_C>4c;$T{gm3v9p<&9Zt|FUTQIL> z^9DA|HNfX5p78ch5e}{ki;A$l7(EKZ=;a~v2U4#5_WbaAV&5>^ZYgW>g(fR4X4_4r zwp=!USnWq)7%AgOnph6D{_)D6Ve*g##-^*Eq6}@l3M#u^K8&umYoe#sp0Oa1B&DgG zXKjxR;-=LgJ!vX?ENmkE(^PJ?a523tZ(F#na$8T3`z#t>>x(`ZD1D{gY&(|kZr{47 z5m9aV;NmD+E7yqo6ASo$+$Ypg-nOJ=9lhB7)_oyFjWe1eZO@d}@_&|0r)0Uu(#Et` z9=misGLCCYTh`Sm`+e@Dg#Df=f8CY+maQ8w^qx*vdR*IJG0P!8!NrtIr-V*%MvFF= z$~W2onALm{SPC>&OFwh6iV>{*>^GLZS%pr?=2cs1g8b*Ia3oEEtEamm1=*N5Q+jqo zewLVveK;qniPKTu{z!C3+9XV85Mw6FzbD<%pU8JwGgvg53VO$8%BANI^lPD2H`97j~pWU7vLvY@@yZchEJ!*Fw_o3PV8HGjIPLg~;7 zp_m1*kccM*1@g16{3-K;1_!IqG1)i22hEm8 zj0VUi=l zg`fS=x|*m{{&;Es{f{YB|8qCeWmu#`mPCb|iE|)d`NJD;R==+musMGs*Z%9Q^s>2p<*y#( zW^Zsa1#!qI@3?imK`D9<$%tx!tO`#`Q>rPzMpwq8P*J$0u&HI*OV=>wa0x|>6x_A7T=kxy}p|Bm~` z_PX~+Rgo%;@~lUrYiVq3!_DS1gDl1Jw~s!h59RpB!ATd1dOy@ z7YptAMETU?jaZ6NPu`WDwvg{UY2#-V>o%l=Shq;Xpp%Psquk-?+J*{5Q1*6ow&woJ z>CpuF+ov+EktaXfP66_ZXKm?#y>&%XqN=j_d1nNY)z8DB+41KhsN8$rfbwMbzqd(^ z#>!V8H?Zgb{k>b07Grg~vf9W-aTpWv;+-d|no<g$t4cn3bE}fK z8^!V}4{A5l(o+P2Ysxl*mX2R8unL2sVuQ2dn}R;tDd?KA+*xtBV3~^|)>)BLAbeAF z8SAXzf>kbxfzFC`1&dhkNp*vgT=fR6-aBO?7J7l$v_h`H zkqVQcD>$2%Qj@CHpkjWj0X42Gd?Fgj07B6+voj7A^HH==aURy@(K?dSk~xSvNdL6t zvq3bEblkNq9hQFoD(^vC>P&u!W}#cA>dLOp$UH38konAUh_4pZ<38;vp6ci2wWsDp zzI?d@h0rvv6--SjjN1lNAWEZysdGs8RuE#6D@7`8@zjBHZ#ZOag8ItD$s4t0KRD~# za(*zSdCf)!c{l2NYc=k_M%ezNdiK-#Y zSg;=Tk;qSWxGJ$z>k8h1JfbqqRjC)0Z@DNJyDB@OGI3>FU7R5@eU2Uph6fhNX=MA6 z3ATHR!%wG+=zhvObs)&h>HQ7Dm(xR)rTuW}M;epWsZ$ z#HfccI;^U>Pr3`I=i7n~znv1%-_Z3Y(Z<&I&tZa1ESM^SD^U**Ke(+5W3z zAUX!W>KIdY&YUp>8alK%BNVp%sEpULY!phX!4*YtGzcFx+fJ2r6Dduw(&`axB%boC zV8nuduxuif3+2vAgO)icC!e`!lof*7cF&xA%ER1!v3|)>(N)ZilI@}~X&F>Orf{@K ze$biP)Y6tZ&T*DD@KCwvUOn#Jh3fe960?JJOQcRBIqk($x?q7=IJFCPqQ`u=3$=4! z_YmIx6&FR3Z_W8a1?+cyls6u-sT=jGDc1P^GOp{RY4k7OnlE^27r45{xHH}7d@!#1 z;Qz(9{R7r_rJl94Ncdlj=XIsJdh~f+;46HrniV@}-nmzz`5;cwa6@f5SdhfAlH`}Th z3j_($i*98Owe%mvgBh7Zvq;So3Pj2&;)Wjk?f^FTq!yC*a$eArhEOLy(vupuerH^O zE?nEsfS|Ipex;IPEae`( zsjcK*#<9H-#4qsH-V{_n7JfKN>>0^-e1#dk#EI=ozTBJ46v4(mbc8avqz^eH@6lY+ zmo8IBK5C-ChH0Y$bVJjtg%p|7Yvkuv4x~)^%OU%u)#Ey0)IKKY7E~UC`Eo6OEI5nV z_FKVMVuf98;#?9IF>x`<@SDzs8k3KU2VFs-Ao=G{Q5Pr9z}o%hZDo871RvB`MPQl8 zyTWLuROJR&??(-Nv;Gp)M~#{2pD%W?f+E2rjC=K?wzP$3^`q#vieQPDYAS62lU4?$ z8nEle5wKWVr6O>!d0gI)TElG`_NVS4e&Ajj4!;!FxndZR`H0h&<%V-uQGRXM=bX}? zT2&bV6Uc^V_4s6e8dz^CXiGCNy{;%K65xC6A5K&06J8rmb7?2v52t?AlRFNe4%KQv z+S1`K~AS%GNz1>Xj8jcKsd&R+_gtN9oA;0`J-E02NBO}N}(JV*MCw1BnM*9g^ zvvTp(y22v{Q(an?H)Al!B=^glGlbeBQ2jcDf;~U{&7nph2oR$KKq-WLf&Z{-V-)UjqBnnj#OE;W~ZhEgH*;`2i(NYek#j-k|^Uks(1 z96F4Q+;$k%;F-gqTMxc4jQZ63=d#$}m)tAOhmFm)+akK(%4<2CdJtXVDHa+*E7)$K z_O*vx5`M5+7fFxA##>d%=SLPSk6M>FU<6|LMIJo@UV~W~K_lJ6#f^-ee;Yvuka2Dr zNxo9OOT2F+jqPyfS26wAgd%MY<%|Eg3a=gSqkj^0IK>K=9mX9-(L}Fft~!&byTR{` zqQG|IEs9dp*WN4M^Uf-f1_t4 zE~^b9XDBsjZf4Rs*HcF=xxKHrgQm0>+&DArC>Ex!6q}UO8>|Ov@A5DJl5u&0oe;q}QY8DDJL$}FF(+g}FO=I<63C(OsifnTX z$SQp}Z#0deMD`j(_1#xN-a|gzW(;*{`8J-FK=4B50qTpy*0dsN@c^}j#=Ii+HG06OM+;J?NUB{_o5&v|&Z!Dc9UEZQ` zw46}9GoDTWawlL}>G;tE%&LwJ(X%!n8ilU=CsTmW;Qzz;&&gP#I`)b|qM_rE7;58l z%*iC&C{?nU8$$urO_-EO+mb-#DRT@>qIiB1qnWeW6bh~JK4w&FZGD!fPoaq-I!&Q& z-YXF|gs^z20%2FO$5hzLFC3;Gyouf4{RI0?gI#ZN z*J;pmJ5QNLA$@)W!x`=WO?OA@3dC`}@}Sc5xI-ZJ4q#3`<6AnGTTZ8>ZaKB3Zh#5b{);E@eFLSx7T!7uQ@w z{iLP`*|G>L^E>F^isz>=&1Myck_Uq-k`jpK9i zG*sIAIR~tzAnw1M4$*#ov7Cm{R35Sd3Ju~JD<}#J^@u3_%D;%xS`J!CPo+k=9G5^{ zc-$&#Dh>QZ@Mz7uR?(D(AMe8~kH##AoWn9G`%oNpak4w3Z05$RDW=-{+EjeX$*ZB! z60TTHyCo@&x38gJ=o?;~K%=CmA36CwNPzo7m_#@r{4fy;=CeJKdec#UkVrSAnIH4* z6u9#aHms$!QuRH&XDxL5oYl3^yBl{+rl4xtZB@&?9GeUy?BkQk)E7`Cg>Fz3m!@FF zY}hTv8^|kCsXIOA1F6&p13gNmBm}r6>u47Jz}ME%YLq6eryIdR**GU16#06fm@O+p zS3$8*>pC`2F{z?Pb1YzfX-8g|M$KF0yziV`(Wq=g;WQ4ka71yCeM_|ADNtFukH0q?=PO3*We={Kl2~BS+mx0S!J!MMU}4n~7Y^M_!|5+h+YD>&*X|{vN$aPr1QXh_a8TZKYmP;|$)t6`9K#{&6dIs4eWbjn=xC3rpVNUE2^u z7V?X2WO5hBV`T{U+fHvvGdHsDR)m$S+o`V9a3eq7j?FWJgLmM#P|DMGV2^OOan24z zt!S2Z;@-E-1`gkeUGx{`oz%>|r{Is>dMDD<3H;|yoJK;q%lp(>a7>7 zeg0$@`C!$5y$hPn;A*?+o$hlnvdE(p5DV)kY7^}|Dl2ZOsKjh<6A0hayugO5yL(Cw z|Gb-GD3H5;Ko5gbri*BSLrKACp~(Qy3$Mm?GUC{3Y^YJimx`I|@Wq4AP#Eq}fT z@iu|)?V(%|CO$-3h;8OW8Ys0{%i((|q}sD2DA2$mhxPWY8>wBB9WdrVKIL1{&_jKt zSu09qWiJgCk^LhImfVv#_9L3q;8}uG{!NJj#laDu3n;ttu6#t~Id>Oobi#3I86xh<|Wfat+|j zgpovhJVQxbwMktt1yz>v?OY_c-t4g-SK(c`)qb30_VS?pG{<)XmyfK8Vf#CPXVu(tNAN2t+O+S+w#s=N_c}!Smt7h=)pZO(&PgdL&y6;U3}XgKC=78)%NAG!~<#&k4kPBVTj(-{U&C&enxu)|B>I>uQ7cnT4WT z3dYda%vJMgx!XpogCA5wyd9BuG#?wHL<_jqQIdN)KNB-yshfNc55wT*Rwr^V6GfbHlG-$Q2clrYA-wRZYBRtT8|^jz;Ut~Z ze~cm;Q6m}~PvzaGC`+mx!@W-9s8(w#PdQB)xQ4%fnzs3k+={-q!qJ!IiIZeTJkm_u z4J)_#gEO?!?cP)eZ}z4hZu{|Y)rTUb+LQUyvpC_;d-oi+q9X2m4vBsaXP?7uRWXnL zhOESSr@x`+M0dI9JMzQj?{D8BtDeOA@3kAw9^d0M|1)QOPlM=tF8Q9uihSq?z-OHK z0~wI^?f(JMv?q`Jk>aJIE^67Oa>zBmoj_yqTKxpCp+C9J z1=OGBWf$nW@1J9ZK~4=#y}P8jc=xZ}x%C<8kdJ-eqV~HuFqEAuJSjegxNULZn9W0+tZE=%FIe2>$3UFJ1hoUAlwdw7l!p!joymP|xjehLLLk{{e#w~1!L*Dq~ zw5Ah=L8zfLu+M0rm|Co+I1rmktg|M^MeMFaOn<-e_V`oXR2ODwfKb;mF=35d8X=5C?gfrY2Q(lZJdE0cln*dW~@Vl z5W)xh{gxsZgGAA_@VF4>W~5V?X8(VL>EaRwuMUJt&g+0PRdK$)@;j|=SqIH=3-TL) zxprYvcu92%*GlLmc45tJIe^cMw6Rm1r3U$m@Vq)7<4gz_iC3fR8zv5Q}S9&nR_d}^XetJZRWTgnwq zx`|ljYvR2(5r^Ml#2s!?vq}H-1t0B$LhlrO>;$>bD1-W-&UW2)+BqK;{j_W` zO`I*v>CWqLbMk3YI*7hF1g`I|-SPDo&zCVc?(vt2=LG)z7MT-fpuh0xMK|f93uE9srGJ5^c28>~$OGsYN{G zHofd|pqCKrdO@NX=8WPkgy)x?ahCx%fRQniGT-fSG85t9@s+-E4hAb0 zjpS86Nm_T!d#)*QeK>d&)#aUcXo`Lw2uq*9c!g`kGWvnN?;;iM!yWEYi)y~2F;olanZ3Xb?@<}8XZQQm zp~bRpXiL76sJ*#xy+*_?Z4x?Oj>BlnF$^E;Lk&C*3w4Gok9qlhGPSTnKVc1gzJX6O zZV9JK6y{CuWvsk+H1y!B_i@@7&A#R2U%Q^x43ky1AK-{`oGQ=r_Hr_MeF{m+wmY@f zcjF(*shyYS2L>b#QO2f1oD}waKre7jNX^=%g9y7o>UVI+^aI8svD$HHv;dX& zU2XG4B}Sgi^B>}~Cgybyk&K_g*ou26KJ*Y1bBZrML|(CnpFgBVt(7iLrg`wFg2DJl z^mc=##7JWWH>|11^jgK-`w=xtxCc(+&mXkyOi<%F8&s9`Ie305XlyCQTs$kuF8+VG zSl8+7WPL=GE2Ve1Dn)QfKWaQFI`-&@sYyCnjAw1I=t=nOIROjgCvYsx=`O|)pKrU} zR#ns<6}82$YVYDNZcw{d)PAnXBWQnh)@F*@#8t0P3U=PN!doVA@q?ekYGra5byh}!e7YKJ*%tBG1)Fn00{b=E$BISR{P z@ok3M8TiD^_D??l{Fqw!^b@8@uFxfPUNQ(@Kq(Ko#uMt+xJNMD@q1-4cp`gMdIF(Q zlwj6^-*`eT@O~!c3C-!a1661_*a@(>CKg#?dkhBq+_>d@$?iJb=+hHCQq}mX*nt9` zQh&*#BhPqB16qWDvv8BvkVE7qbG3jdYJP?Yjv5V+MF~TVSQFVou4x_qEok;tnzete zMpH}wdX1)ygTHt|^{9eRy}&z=><9P@zpH%z1vMCbx~;HId|z{hEY!y);LHv_chUrSI*&S&*h13pq;h*nnuk|P+a+l<&ifA~X+YyAEwN-aVVufC0=5R%waafj%1yGm zEe~|aGxi0#4Fgi{6Ssja9P;zr9&UcE9CFwFVV$gs-}jIMPFEinl~_oUp+|8iX6mpFE_0Am0z3QZuP>06+AUrbs0{ zcyx8CTaXE#*DBEl43c~@Hl#>QPuQfeH^L^LFsI|vCVvPlU66?gg3IQ->QZy+$Cs;1 zJ>6qP)p>4QL+Xi_J>zOf2{b+LVhw2s^|SeD+(Pl@|6gwSFtKj(2`amy^k^!Mft5cq zzURCszU(Y9XS6$$Xn>_!9OCJ$ipW4oL1Md@D z4&dx6eilA2ih5UTHGVFN^1FHi~pyb{eiPS(S?5Px_vodXgL(__EYR@yrRrN#rz?N*QndiB&t9tWK+|)y z1NARns=8Vz1I<7yIaDh!xC#(wH&a!IY5@OScZX^L>Z>`_Y;RqHuB4trjnSi_p+oh+ zAB)5^a;W%5M5k*40-&`SoEZWn0%L%gz<6LbFcX*yG>CzkJJcdzF&3x-)VFY`z8Kg7 zGz0amP!G%o#tTJTqwJl40TI*m5TFQwD;sD<;420i5Vx!lz=Sw$sSQTJM1hF-#lUi4 zIZ%gfH)Uq0d+V~Q~*st-}mcaog3up*;sKNMv zIu{rNG~o1|;M));!Gj4{J`@@Qb+}$h17-qqfhEJy-Uw)c$$^HE5C~`;4Tg;&$QWo0 zG~goYkSLFHsG&{JJ_&q)`Zpk0Q}72S0*j_ORGmM@o$g3b%VFYN+#Pzrltn-Tuml(? zObm<_CdM6~6&e=Lgb9KAShPdKa$G?gaGOy)2aJLGxeyp=0u}=kf#sqdXn+O8jqzEa zWj-th)GbIr2biL00W<>j0A?@2)IpQn zrKkrM0mlIi%ODWY1k47O1IvN><*=9m0st$3i3zJQ=K*+F14hj-U<$kwn7tknH^;zf zXa`~D28Wsh%zg`&0KI+_1O*mlLL))H83O>VTOa`Xl>@Cn-8+~9U^XxpSOPo?EPfYL zV$|spObp5KUhXg25HJyV5op>D!WLi%Gy#iufHBaz6Li4b_hG4)=$8!zfF-~f zQQi&BMHyHEEZPIjTfs6PVl@G?fmueZ|Kh!1gbLk9FsZ;CmS&f$^x2o0?PvvFaRDrK$vNV zsey(AFqObO41^BFz^oux;22B?j5&^}K)vY%1QzY5ARy{ZXCR=U16BYH=fJNm1pNm6 zfx+LRUX;H>eLLXyaP9;=81Rq?ECHScntp`l?I9S@3^Wx(@(vL2JO&09{RH}84E!Hx z90JXL!2lhB7f}Yi;WGFDEkFgB3G_fe>s4qj@EVq%=wE{MZ^1+MpU_0$4M+&o-Ne9P zT&#c*Fy=M{!T?2OkQkVG55Cd~CIrR<%kN_ffVy%_B~TA623mj$(E0!t>Wub>=m)eu zf&u~`WBupiA@MN=0%ihBfW^QHUK-~*i zNR)vkK+{Xmb%W_iRfB=Kz!+eRq^iZh5-CAd%kf~TuBwJmFsOmUJFvt{Rjt5aZzRM* zbD#m5#OTp31Olc3b8D+=j$l|1p9F}0zN%URwBWChblo8+&=;5q3 z@Q@}5fZ4zpe^o64W&=xr!T6J>3Sbe?&;yJEz(8P2Rm}nhw}K`>Yar-=*+6|y@N2EA zp+Ft3WMY6OV7$P#7zY>}48?&7x%gwValIf(PgM=tF4NM2j#MBi7ixOdKWJ#Gx5C|Bv76SK!fXNUD z7@Pt@1g3%?FlIfbsy`G3=JZcM$22eshX6JV1hj4dqX8H=9Rm)8#Baf5z|4&hPz<;U zj4@DACKv+^o55HN48(Vix+0(f16bcyRSPg!hJfIk{SNv8O^kZMAD_j=Cy0mlFaR)d zE9L}f*#QkPpdlLq0ds+dK@bpV0>ThPf;I%dSHSD4<>w)nhA^n=7>0E72Ka$q*l3e?%* zgus{s@Cl&lD<}Z806m640H6VAIs_jBmH-ohiHBi1VEJJ+K`p_9E+3i#^+0_j1OSEt zgO9*_MH!eW@F?hjiC?2U6by?{23k*G3I+Ws42ZJs3WcRam&{;a&iFEJI9Yi_gw##)xX&9RaAr*7eGyvY zc>xvtT+qaF#9)+4c;R5F13K;kxak@=INByP;qt+f2V{Oe7@r>+c;OIm^L@%650To_ zIKDIl9S!(K2oTGyBc%?0X(caJPe`W=_tFb6;=dbJU`}2rsLcFcB*u*A(nzVVd=u1Ph1xa99w(Zu0Y!PP++yov{A zlsBUpe+IFCIOIy?KLq5mj|CiZxV1%U)lBE_P+N*_VP5)VX_^;$X+O;hDCqrpkwt3h z7Yn-at~LQ;2qVmv%lj=DBA3q#DB%Yd3}M2bG)RLQdf*Tu=qi7L=VSEIH^Uz}NGxV5HPR(v9TmQBs>0kE??^(4mSA%qg7pm2iS--5Q7mylW&zE#_k* zanLX4uu;-Xm}cK7X)@-`GfJC`?ol9#*Y{Q8IJsXvk>h?qg88DB3zy7mC#N#y{s<%GlIq*hgRcqwp%e@}&L zOXHX7*k=Nm`U=^Ds$Qv$Op#|zfc#h%qM?G%O_2IRf6r)82lDu6 zsBwsG(P*>s{%E*b?AZTyR3Ua0+%bm#5L8+0IT5DI;?@(vp@NrBl=}Kz9OqE64~j)& zh{wE46p!^p7(YJ|#xLQJNg#$P1qAc?NnjMn&nIDif_cgtTHAgn&}5X#dBkLp?Gp&0bOKbiME#nE%o2dZ4A>4+C; z>^B{n6!8?4{0`avTOwhzDoq9P=IKxdZZKWb&~pZi5X;?Xpp?lA0g^{5e>_7PhUM^l z24Ytl&ThLa#{>!;_V^1N*B3wCO8FiKrHwgc!Yp*PKt%)iut?% zD+kPi2L^M}ER>4){48y59?XIcaOK(3Aa`*pn?&r0kQ(#sRz5GF zm}w6BTX@7A^pD|%0up)i94*2;p93l2BK85X^rp!0^FLR&X#mm0u$2nc~J`H2Lkl$vq&1=I=Bc&KH*72 z*HuZbI>IZFGNiZM+yV&>I2c2AM$?NnI$bQ=7D2ffJ|+MwMF4Vy#Q=q8Ee6L>wk<}i ztT@N{i?Qn>7%zqo;%|oHphz12N&z$qFOP#LfxJ&t!o~t(`MGF2%YI8>>WXVTdx_N4 z&y2I3P^9uFbgqlDpoMoWfzIR5i~#!TCtNWc%`tp_2^L5inz4Jm`ib5tXvQL43g=R| z^->I(#Ss9%Lw`Bclvkuqw|)#__~lZ_mnFd8Q%qEN2mHh5mue0YuuL<>_+_B6a?&zw z;k_qH7Cr{>%fhMB^gn##a5}{Y&+!`H*70Bz%FE+ns1iOF50NbVho~&#kmVY`h~;o% z1fk`q)G@696!VA`ST%ayzXBbwe4X$>Kn(k=)aE*DC5+_JRaM&x0T6S>xMI!?90GHB z;Yz8MRMCaEuEbOY^0}4RVk>%Z^;J@PzrfzAibehEr+FJ3A(%(30#niazdPq+G#fZ+ z6|{=weXGPY_U6A=VF$!Ux*BpF;_<5?7dEripo!uAs}Xsyj8NSlSg;a;X_C>n*wJvhY{ zb4a2z77E%DwcYH20LYRAMkSn-1P&(NFG>nu5|GXKTM_XEP3yH75-G@9;nLy!@mgmT z)QSVRO|q7XOi6}n&^sAj(s-XJAv-`RpnSZlJ{AILsoEf~60s-YC)_jz0l1ibQqU=f zy9-F34lZ?7#tBK71AO_NQHX@^Zrz{AuCRWzBzBIDt7Q!KM~UR;7p1@ybi`G z;)Uzr*X7gj*M5Q~+$(q$tRh^YF=7vv-#Tc1kuQNtZ1wBFIfet)1F$64BjT86t12?s zSHHS=s$vpBZ1Z~frJ47whx3>4AEM7V_Dn;mh{Mw0^&azac6!y(nJhm>R~;v%Ne!fm zdAv0Zd6<=tff}p6G)MLOm%p3kL&bxGcXbV(()G?ffo zo*~6b6}9pvY?RhirL%dLWNA|s;g4C!A1i8M4E!o;@$M|CtET~D8>$Qw#Md7c~80}{eK5*kQD#` diff --git a/ninja b/ninja index 8e1eb414c4..1701af9ac7 160000 --- a/ninja +++ b/ninja @@ -1 +1 @@ -Subproject commit 8e1eb414c4363321e04637801db65eb3ab1b19f1 +Subproject commit 1701af9ac71d8e8c68c4d3e0ef37feec6fc2c792 From bb327adcdca5cd9bd43e991136863da697745ee7 Mon Sep 17 00:00:00 2001 From: Hongbo Zhang Date: Wed, 14 Oct 2020 17:01:02 +0800 Subject: [PATCH 10/10] fix ci --- jscomp/build_tests/post-build/input.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jscomp/build_tests/post-build/input.js b/jscomp/build_tests/post-build/input.js index e758103cb2..f7c9fe083a 100644 --- a/jscomp/build_tests/post-build/input.js +++ b/jscomp/build_tests/post-build/input.js @@ -3,6 +3,6 @@ var assert = require('assert') var out = child_process.spawnSync(`bsb`,{encoding : 'utf8'}) -if(out.status !== '' ){ +if(out.status !== 0 ){ assert.fail(out.stdout + out.stderr) } \ No newline at end of file