From b9ecc3d2b9a8cedf7966099e5baa3a15ccbb7327 Mon Sep 17 00:00:00 2001 From: Hongbo Zhang Date: Sun, 29 Nov 2020 17:02:18 +0800 Subject: [PATCH 1/7] work around windows path escaping rules Note this was not exposed because we used to have: ``` src_root = C:\Users\xx\yy|x.t .... $src_root\heelo.txt ``` In this case `:` is read via ReadVar, it is not escaped, if we follow the pattern of build statement, we should have it escaped properly for `:` --- darwin/ninja.exe | Bin 140216 -> 140216 bytes jscomp/bsb/bsb_ninja_gen.ml | 14 ++++++++------ lib/4.06.1/bsb.ml | 14 ++++++++------ ninja | 2 +- 4 files changed, 17 insertions(+), 13 deletions(-) diff --git a/darwin/ninja.exe b/darwin/ninja.exe index 419f0e2eaaa591621c68953146e27584125fb698..d4eb2b6f92f2186666601362b340fbf78339286f 100755 GIT binary patch delta 21328 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 diff --git a/jscomp/bsb/bsb_ninja_gen.ml b/jscomp/bsb/bsb_ninja_gen.ml index 1445ed5962..6baa7d1f7a 100644 --- a/jscomp/bsb/bsb_ninja_gen.ml +++ b/jscomp/bsb/bsb_ninja_gen.ml @@ -243,12 +243,14 @@ let output_ninja_and_namespace_map let finger_file = fun (x : Bsb_config_types.dependency) -> x.package_install_path //".ninja_log" in - Bsb_ninja_targets.output_finger - Bsb_ninja_global_vars.g_finger - (String.concat " " - (Ext_list.map_append bs_dependencies - (Ext_list.map bs_dev_dependencies finger_file) finger_file)) - oc ; + Ext_list.iter bs_dependencies (fun x -> + Bsb_ninja_targets.output_finger Bsb_ninja_global_vars.g_finger + (finger_file x) oc + ); + Ext_list.iter bs_dev_dependencies (fun x -> + Bsb_ninja_targets.output_finger Bsb_ninja_global_vars.g_finger + (finger_file x) oc + ); (match gentype_config with | None -> () | Some x -> output_string oc ("cleaner = " ^ x.path ^ "\n")); diff --git a/lib/4.06.1/bsb.ml b/lib/4.06.1/bsb.ml index dac3563ad7..aedd8ec775 100644 --- a/lib/4.06.1/bsb.ml +++ b/lib/4.06.1/bsb.ml @@ -13746,12 +13746,14 @@ let output_ninja_and_namespace_map let finger_file = fun (x : Bsb_config_types.dependency) -> x.package_install_path //".ninja_log" in - Bsb_ninja_targets.output_finger - Bsb_ninja_global_vars.g_finger - (String.concat " " - (Ext_list.map_append bs_dependencies - (Ext_list.map bs_dev_dependencies finger_file) finger_file)) - oc ; + Ext_list.iter bs_dependencies (fun x -> + Bsb_ninja_targets.output_finger Bsb_ninja_global_vars.g_finger + (finger_file x) oc + ); + Ext_list.iter bs_dev_dependencies (fun x -> + Bsb_ninja_targets.output_finger Bsb_ninja_global_vars.g_finger + (finger_file x) oc + ); (match gentype_config with | None -> () | Some x -> output_string oc ("cleaner = " ^ x.path ^ "\n")); diff --git a/ninja b/ninja index 2017637aa3..60a1ed801e 160000 --- a/ninja +++ b/ninja @@ -1 +1 @@ -Subproject commit 2017637aa3bb1044175dd0713050ddd7aef061bc +Subproject commit 60a1ed801ee83de8592a306484dd1f0cb2ad25ee From 9b1b4be7999776a7a97925885ddbef188caaae33 Mon Sep 17 00:00:00 2001 From: Hongbo Zhang Date: Sun, 29 Nov 2020 17:32:15 +0800 Subject: [PATCH 2/7] make windows happy if g_finger is empty, it is -0 --- darwin/ninja.exe | Bin 140216 -> 140216 bytes ninja | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/darwin/ninja.exe b/darwin/ninja.exe index d4eb2b6f92f2186666601362b340fbf78339286f..1794707600c6c2c02966f42acedbe325194204f3 100755 GIT binary patch delta 20257 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�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 Iero=I0HnYhLjV8( delta 20218 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 Date: Sun, 29 Nov 2020 18:26:33 +0800 Subject: [PATCH 3/7] remove bs_dep as parameter --- jscomp/bsb/bsb_ninja_gen.ml | 4 +--- jscomp/bsb/bsb_ninja_rule.ml | 5 +++-- jscomp/bsb/bsb_ninja_rule.mli | 1 - lib/4.06.1/bsb.ml | 10 ++++------ 4 files changed, 8 insertions(+), 12 deletions(-) diff --git a/jscomp/bsb/bsb_ninja_gen.ml b/jscomp/bsb/bsb_ninja_gen.ml index 6baa7d1f7a..3cf8b9a88b 100644 --- a/jscomp/bsb/bsb_ninja_gen.ml +++ b/jscomp/bsb/bsb_ninja_gen.ml @@ -180,7 +180,6 @@ let output_ninja_and_namespace_map let warnings = Bsb_warning.to_bsb_string ~package_kind warning in let bsc_flags = (get_bsc_flags bsc_flags) in let bsc_path = (Ext_filename.maybe_quote Bsb_global_paths.vendor_bsc) in - let bs_dep = (Ext_filename.maybe_quote Bsb_global_paths.vendor_bsdep) in let dpkg_incls = (Bsb_build_util.include_dirs_by bs_dev_dependencies (fun x -> x.package_install_path)) in @@ -229,8 +228,7 @@ let output_ninja_and_namespace_map ~digest ~package_name ~bsc:bsc_path - ~warnings - ~bs_dep + ~warnings ~ppx_files ~bsc_flags ~dpkg_incls (* dev dependencies *) diff --git a/jscomp/bsb/bsb_ninja_rule.ml b/jscomp/bsb/bsb_ninja_rule.ml index 49d35f856a..c5e506d8ac 100644 --- a/jscomp/bsb/bsb_ninja_rule.ml +++ b/jscomp/bsb/bsb_ninja_rule.ml @@ -124,8 +124,7 @@ let make_custom_rules ~(namespace : string option) ~package_name ~bsc - ~warnings - ~(bs_dep : string) + ~warnings ~(ppx_files : Bsb_config_types.ppx list) ~bsc_flags ~(dpkg_incls : string) @@ -133,6 +132,8 @@ let make_custom_rules ~(dev_incls : string) (custom_rules : command Map_string.t) : builtin = + let bs_dep = Ext_filename.maybe_quote Bsb_global_paths.vendor_bsdep in + (** 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 diff --git a/jscomp/bsb/bsb_ninja_rule.mli b/jscomp/bsb/bsb_ninja_rule.mli index b3bd671bfe..b5fb136cbd 100644 --- a/jscomp/bsb/bsb_ninja_rule.mli +++ b/jscomp/bsb/bsb_ninja_rule.mli @@ -81,7 +81,6 @@ val make_custom_rules : package_name:string -> bsc:string -> warnings:string -> - bs_dep:string -> ppx_files:Bsb_config_types.ppx list -> bsc_flags:string -> dpkg_incls:string -> diff --git a/lib/4.06.1/bsb.ml b/lib/4.06.1/bsb.ml index aedd8ec775..acd1298f71 100644 --- a/lib/4.06.1/bsb.ml +++ b/lib/4.06.1/bsb.ml @@ -12743,7 +12743,6 @@ val make_custom_rules : package_name:string -> bsc:string -> warnings:string -> - bs_dep:string -> ppx_files:Bsb_config_types.ppx list -> bsc_flags:string -> dpkg_incls:string -> @@ -12881,8 +12880,7 @@ let make_custom_rules ~(namespace : string option) ~package_name ~bsc - ~warnings - ~(bs_dep : string) + ~warnings ~(ppx_files : Bsb_config_types.ppx list) ~bsc_flags ~(dpkg_incls : string) @@ -12890,6 +12888,8 @@ let make_custom_rules ~(dev_incls : string) (custom_rules : command Map_string.t) : builtin = + let bs_dep = Ext_filename.maybe_quote Bsb_global_paths.vendor_bsdep in + (** 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 @@ -13683,7 +13683,6 @@ let output_ninja_and_namespace_map let warnings = Bsb_warning.to_bsb_string ~package_kind warning in let bsc_flags = (get_bsc_flags bsc_flags) in let bsc_path = (Ext_filename.maybe_quote Bsb_global_paths.vendor_bsc) in - let bs_dep = (Ext_filename.maybe_quote Bsb_global_paths.vendor_bsdep) in let dpkg_incls = (Bsb_build_util.include_dirs_by bs_dev_dependencies (fun x -> x.package_install_path)) in @@ -13732,8 +13731,7 @@ let output_ninja_and_namespace_map ~digest ~package_name ~bsc:bsc_path - ~warnings - ~bs_dep + ~warnings ~ppx_files ~bsc_flags ~dpkg_incls (* dev dependencies *) From 0b1502a5c3324852fc0b85c61d4cf0a904333ad6 Mon Sep 17 00:00:00 2001 From: Hongbo Zhang Date: Sun, 29 Nov 2020 18:28:52 +0800 Subject: [PATCH 4/7] remove bsc as path --- jscomp/bsb/bsb_ninja_gen.ml | 2 -- jscomp/bsb/bsb_ninja_rule.ml | 3 +-- jscomp/bsb/bsb_ninja_rule.mli | 1 - lib/4.06.1/bsb.ml | 6 +----- 4 files changed, 2 insertions(+), 10 deletions(-) diff --git a/jscomp/bsb/bsb_ninja_gen.ml b/jscomp/bsb/bsb_ninja_gen.ml index 3cf8b9a88b..da4e62ac9e 100644 --- a/jscomp/bsb/bsb_ninja_gen.ml +++ b/jscomp/bsb/bsb_ninja_gen.ml @@ -179,7 +179,6 @@ let output_ninja_and_namespace_map let warnings = Bsb_warning.to_bsb_string ~package_kind warning in let bsc_flags = (get_bsc_flags bsc_flags) in - let bsc_path = (Ext_filename.maybe_quote Bsb_global_paths.vendor_bsc) in let dpkg_incls = (Bsb_build_util.include_dirs_by bs_dev_dependencies (fun x -> x.package_install_path)) in @@ -227,7 +226,6 @@ let output_ninja_and_namespace_map ~namespace ~digest ~package_name - ~bsc:bsc_path ~warnings ~ppx_files ~bsc_flags diff --git a/jscomp/bsb/bsb_ninja_rule.ml b/jscomp/bsb/bsb_ninja_rule.ml index c5e506d8ac..5828b5dbf3 100644 --- a/jscomp/bsb/bsb_ninja_rule.ml +++ b/jscomp/bsb/bsb_ninja_rule.ml @@ -123,7 +123,6 @@ let make_custom_rules ~(package_specs: Bsb_package_specs.t) ~(namespace : string option) ~package_name - ~bsc ~warnings ~(ppx_files : Bsb_config_types.ppx list) ~bsc_flags @@ -133,7 +132,7 @@ let make_custom_rules (custom_rules : command Map_string.t) : builtin = let bs_dep = Ext_filename.maybe_quote Bsb_global_paths.vendor_bsdep in - + let bsc = Ext_filename.maybe_quote Bsb_global_paths.vendor_bsc in (** 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 diff --git a/jscomp/bsb/bsb_ninja_rule.mli b/jscomp/bsb/bsb_ninja_rule.mli index b5fb136cbd..d791617275 100644 --- a/jscomp/bsb/bsb_ninja_rule.mli +++ b/jscomp/bsb/bsb_ninja_rule.mli @@ -79,7 +79,6 @@ val make_custom_rules : package_specs:Bsb_package_specs.t -> namespace:string option -> package_name:string -> - bsc:string -> warnings:string -> ppx_files:Bsb_config_types.ppx list -> bsc_flags:string -> diff --git a/lib/4.06.1/bsb.ml b/lib/4.06.1/bsb.ml index acd1298f71..96ce4d6fe7 100644 --- a/lib/4.06.1/bsb.ml +++ b/lib/4.06.1/bsb.ml @@ -12741,7 +12741,6 @@ val make_custom_rules : package_specs:Bsb_package_specs.t -> namespace:string option -> package_name:string -> - bsc:string -> warnings:string -> ppx_files:Bsb_config_types.ppx list -> bsc_flags:string -> @@ -12879,7 +12878,6 @@ let make_custom_rules ~(package_specs: Bsb_package_specs.t) ~(namespace : string option) ~package_name - ~bsc ~warnings ~(ppx_files : Bsb_config_types.ppx list) ~bsc_flags @@ -12889,7 +12887,7 @@ let make_custom_rules (custom_rules : command Map_string.t) : builtin = let bs_dep = Ext_filename.maybe_quote Bsb_global_paths.vendor_bsdep in - + let bsc = Ext_filename.maybe_quote Bsb_global_paths.vendor_bsc in (** 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 @@ -13682,7 +13680,6 @@ let output_ninja_and_namespace_map let warnings = Bsb_warning.to_bsb_string ~package_kind warning in let bsc_flags = (get_bsc_flags bsc_flags) in - let bsc_path = (Ext_filename.maybe_quote Bsb_global_paths.vendor_bsc) in let dpkg_incls = (Bsb_build_util.include_dirs_by bs_dev_dependencies (fun x -> x.package_install_path)) in @@ -13730,7 +13727,6 @@ let output_ninja_and_namespace_map ~namespace ~digest ~package_name - ~bsc:bsc_path ~warnings ~ppx_files ~bsc_flags From f67070103f2384472ce13109d6f93c33acf63385 Mon Sep 17 00:00:00 2001 From: Hongbo Zhang Date: Sun, 29 Nov 2020 18:35:08 +0800 Subject: [PATCH 5/7] pass bs_dependencies and bs_dev_dependencies as parameter --- jscomp/bsb/bsb_ninja_gen.ml | 2 ++ jscomp/bsb/bsb_ninja_rule.ml | 10 ++++++++-- jscomp/bsb/bsb_ninja_rule.mli | 2 ++ lib/4.06.1/bsb.ml | 14 ++++++++++++-- 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/jscomp/bsb/bsb_ninja_gen.ml b/jscomp/bsb/bsb_ninja_gen.ml index da4e62ac9e..b2a2433ab5 100644 --- a/jscomp/bsb/bsb_ninja_gen.ml +++ b/jscomp/bsb/bsb_ninja_gen.ml @@ -232,6 +232,8 @@ let output_ninja_and_namespace_map ~dpkg_incls (* dev dependencies *) ~lib_incls (* its own libs *) ~dev_incls (* its own devs *) + ~bs_dependencies + ~bs_dev_dependencies generators in let oc = open_out_bin (cwd_lib_bs // Literals.build_ninja) in diff --git a/jscomp/bsb/bsb_ninja_rule.ml b/jscomp/bsb/bsb_ninja_rule.ml index 5828b5dbf3..3a62dc8970 100644 --- a/jscomp/bsb/bsb_ninja_rule.ml +++ b/jscomp/bsb/bsb_ninja_rule.ml @@ -129,6 +129,8 @@ let make_custom_rules ~(dpkg_incls : string) ~(lib_incls : string) ~(dev_incls : string) + ~bs_dependencies + ~bs_dev_dependencies (custom_rules : command Map_string.t) : builtin = let bs_dep = Ext_filename.maybe_quote Bsb_global_paths.vendor_bsdep in @@ -172,8 +174,12 @@ let make_custom_rules Ext_buffer.add_string buf package_name; Ext_buffer.add_string buf (Bsb_package_specs.package_flag_of_package_specs package_specs "$in_d") end; - Ext_buffer.add_string buf " -bs-v "; - Ext_buffer.add_ninja_prefix_var buf '-' Bsb_ninja_global_vars.g_finger; + begin match bs_dependencies, bs_dev_dependencies with + | [], [] -> () + | _, _ -> + Ext_buffer.add_string buf " -bs-v "; + Ext_buffer.add_ninja_prefix_var buf '-' Bsb_ninja_global_vars.g_finger; + end; Ext_buffer.add_string buf " $i"; begin match postbuild with | None -> () diff --git a/jscomp/bsb/bsb_ninja_rule.mli b/jscomp/bsb/bsb_ninja_rule.mli index d791617275..055054bf97 100644 --- a/jscomp/bsb/bsb_ninja_rule.mli +++ b/jscomp/bsb/bsb_ninja_rule.mli @@ -85,6 +85,8 @@ val make_custom_rules : dpkg_incls:string -> lib_incls:string -> dev_incls:string -> + bs_dependencies:Bsb_config_types.dependencies -> + bs_dev_dependencies:Bsb_config_types.dependencies -> command Map_string.t -> builtin diff --git a/lib/4.06.1/bsb.ml b/lib/4.06.1/bsb.ml index 96ce4d6fe7..d14c73925b 100644 --- a/lib/4.06.1/bsb.ml +++ b/lib/4.06.1/bsb.ml @@ -12747,6 +12747,8 @@ val make_custom_rules : dpkg_incls:string -> lib_incls:string -> dev_incls:string -> + bs_dependencies:Bsb_config_types.dependencies -> + bs_dev_dependencies:Bsb_config_types.dependencies -> command Map_string.t -> builtin @@ -12884,6 +12886,8 @@ let make_custom_rules ~(dpkg_incls : string) ~(lib_incls : string) ~(dev_incls : string) + ~bs_dependencies + ~bs_dev_dependencies (custom_rules : command Map_string.t) : builtin = let bs_dep = Ext_filename.maybe_quote Bsb_global_paths.vendor_bsdep in @@ -12927,8 +12931,12 @@ let make_custom_rules Ext_buffer.add_string buf package_name; Ext_buffer.add_string buf (Bsb_package_specs.package_flag_of_package_specs package_specs "$in_d") end; - Ext_buffer.add_string buf " -bs-v "; - Ext_buffer.add_ninja_prefix_var buf '-' Bsb_ninja_global_vars.g_finger; + begin match bs_dependencies, bs_dev_dependencies with + | [], [] -> () + | _, _ -> + Ext_buffer.add_string buf " -bs-v "; + Ext_buffer.add_ninja_prefix_var buf '-' Bsb_ninja_global_vars.g_finger; + end; Ext_buffer.add_string buf " $i"; begin match postbuild with | None -> () @@ -13733,6 +13741,8 @@ let output_ninja_and_namespace_map ~dpkg_incls (* dev dependencies *) ~lib_incls (* its own libs *) ~dev_incls (* its own devs *) + ~bs_dependencies + ~bs_dev_dependencies generators in let oc = open_out_bin (cwd_lib_bs // Literals.build_ninja) in From 1dad363537329aa019f8a9cc5169f3a5af806a69 Mon Sep 17 00:00:00 2001 From: Hongbo Zhang Date: Sun, 29 Nov 2020 18:37:52 +0800 Subject: [PATCH 6/7] remove previous hacks avoiding pass -bs-v $empty --- jscomp/bsb/bsb_ninja_rule.ml | 4 ++-- jscomp/ext/ext_buffer.ml | 4 ++-- jscomp/ext/ext_buffer.mli | 1 - lib/4.06.1/bsb.ml | 9 ++++----- lib/4.06.1/bsb_helper.ml | 5 ++--- lib/4.06.1/unstable/all_ounit_tests.ml | 5 ++--- lib/4.06.1/unstable/bspack.ml | 5 ++--- lib/4.06.1/unstable/js_compiler.ml | 5 ++--- lib/4.06.1/unstable/js_refmt_compiler.ml | 5 ++--- lib/4.06.1/whole_compiler.ml | 5 ++--- 10 files changed, 20 insertions(+), 28 deletions(-) diff --git a/jscomp/bsb/bsb_ninja_rule.ml b/jscomp/bsb/bsb_ninja_rule.ml index 3a62dc8970..e48b3e7cfd 100644 --- a/jscomp/bsb/bsb_ninja_rule.ml +++ b/jscomp/bsb/bsb_ninja_rule.ml @@ -177,8 +177,8 @@ let make_custom_rules begin match bs_dependencies, bs_dev_dependencies with | [], [] -> () | _, _ -> - Ext_buffer.add_string buf " -bs-v "; - Ext_buffer.add_ninja_prefix_var buf '-' Bsb_ninja_global_vars.g_finger; + Ext_buffer.add_string buf " -bs-v"; + Ext_buffer.add_ninja_prefix_var buf Bsb_ninja_global_vars.g_finger; end; Ext_buffer.add_string buf " $i"; begin match postbuild with diff --git a/jscomp/ext/ext_buffer.ml b/jscomp/ext/ext_buffer.ml index ded5d8447e..503e2a16b0 100644 --- a/jscomp/ext/ext_buffer.ml +++ b/jscomp/ext/ext_buffer.ml @@ -110,14 +110,14 @@ let add_char_string b c s = b.position <- new_position (* equivalent to add_char " "; add_char "$"; add_string s *) -let add_ninja_prefix_var b char s = +let add_ninja_prefix_var b s = let s_len = String.length s in let len = s_len + 2 in let new_position = b.position + len in if new_position > b.length then resize b len; let b_buffer = b.buffer in let b_position = b.position in - Bytes.unsafe_set b_buffer b_position char ; + Bytes.unsafe_set b_buffer b_position ' ' ; Bytes.unsafe_set b_buffer (b_position + 1) '$' ; Ext_bytes.unsafe_blit_string s 0 b_buffer (b_position + 2) s_len; b.position <- new_position diff --git a/jscomp/ext/ext_buffer.mli b/jscomp/ext/ext_buffer.mli index ba8f4698b6..3830c94074 100644 --- a/jscomp/ext/ext_buffer.mli +++ b/jscomp/ext/ext_buffer.mli @@ -111,7 +111,6 @@ val add_string_char : val add_ninja_prefix_var : t -> - char -> string -> unit diff --git a/lib/4.06.1/bsb.ml b/lib/4.06.1/bsb.ml index d14c73925b..9ad3045719 100644 --- a/lib/4.06.1/bsb.ml +++ b/lib/4.06.1/bsb.ml @@ -648,7 +648,6 @@ val add_string_char : val add_ninja_prefix_var : t -> - char -> string -> unit @@ -772,14 +771,14 @@ let add_char_string b c s = b.position <- new_position (* equivalent to add_char " "; add_char "$"; add_string s *) -let add_ninja_prefix_var b char s = +let add_ninja_prefix_var b s = let s_len = String.length s in let len = s_len + 2 in let new_position = b.position + len in if new_position > b.length then resize b len; let b_buffer = b.buffer in let b_position = b.position in - Bytes.unsafe_set b_buffer b_position char ; + Bytes.unsafe_set b_buffer b_position ' ' ; Bytes.unsafe_set b_buffer (b_position + 1) '$' ; Ext_bytes.unsafe_blit_string s 0 b_buffer (b_position + 2) s_len; b.position <- new_position @@ -12934,8 +12933,8 @@ let make_custom_rules begin match bs_dependencies, bs_dev_dependencies with | [], [] -> () | _, _ -> - Ext_buffer.add_string buf " -bs-v "; - Ext_buffer.add_ninja_prefix_var buf '-' Bsb_ninja_global_vars.g_finger; + Ext_buffer.add_string buf " -bs-v"; + Ext_buffer.add_ninja_prefix_var buf Bsb_ninja_global_vars.g_finger; end; Ext_buffer.add_string buf " $i"; begin match postbuild with diff --git a/lib/4.06.1/bsb_helper.ml b/lib/4.06.1/bsb_helper.ml index aeb74722d7..4489160f67 100644 --- a/lib/4.06.1/bsb_helper.ml +++ b/lib/4.06.1/bsb_helper.ml @@ -1667,7 +1667,6 @@ val add_string_char : val add_ninja_prefix_var : t -> - char -> string -> unit @@ -1791,14 +1790,14 @@ let add_char_string b c s = b.position <- new_position (* equivalent to add_char " "; add_char "$"; add_string s *) -let add_ninja_prefix_var b char s = +let add_ninja_prefix_var b s = let s_len = String.length s in let len = s_len + 2 in let new_position = b.position + len in if new_position > b.length then resize b len; let b_buffer = b.buffer in let b_position = b.position in - Bytes.unsafe_set b_buffer b_position char ; + Bytes.unsafe_set b_buffer b_position ' ' ; Bytes.unsafe_set b_buffer (b_position + 1) '$' ; Ext_bytes.unsafe_blit_string s 0 b_buffer (b_position + 2) s_len; b.position <- new_position diff --git a/lib/4.06.1/unstable/all_ounit_tests.ml b/lib/4.06.1/unstable/all_ounit_tests.ml index dc43ef4b01..9d99d22f54 100644 --- a/lib/4.06.1/unstable/all_ounit_tests.ml +++ b/lib/4.06.1/unstable/all_ounit_tests.ml @@ -6463,7 +6463,6 @@ val add_string_char : val add_ninja_prefix_var : t -> - char -> string -> unit @@ -6587,14 +6586,14 @@ let add_char_string b c s = b.position <- new_position (* equivalent to add_char " "; add_char "$"; add_string s *) -let add_ninja_prefix_var b char s = +let add_ninja_prefix_var b s = let s_len = String.length s in let len = s_len + 2 in let new_position = b.position + len in if new_position > b.length then resize b len; let b_buffer = b.buffer in let b_position = b.position in - Bytes.unsafe_set b_buffer b_position char ; + Bytes.unsafe_set b_buffer b_position ' ' ; Bytes.unsafe_set b_buffer (b_position + 1) '$' ; Ext_bytes.unsafe_blit_string s 0 b_buffer (b_position + 2) s_len; b.position <- new_position diff --git a/lib/4.06.1/unstable/bspack.ml b/lib/4.06.1/unstable/bspack.ml index 919fcda56b..70813b78a3 100644 --- a/lib/4.06.1/unstable/bspack.ml +++ b/lib/4.06.1/unstable/bspack.ml @@ -8811,7 +8811,6 @@ val add_string_char : val add_ninja_prefix_var : t -> - char -> string -> unit @@ -8935,14 +8934,14 @@ let add_char_string b c s = b.position <- new_position (* equivalent to add_char " "; add_char "$"; add_string s *) -let add_ninja_prefix_var b char s = +let add_ninja_prefix_var b s = let s_len = String.length s in let len = s_len + 2 in let new_position = b.position + len in if new_position > b.length then resize b len; let b_buffer = b.buffer in let b_position = b.position in - Bytes.unsafe_set b_buffer b_position char ; + Bytes.unsafe_set b_buffer b_position ' ' ; Bytes.unsafe_set b_buffer (b_position + 1) '$' ; Ext_bytes.unsafe_blit_string s 0 b_buffer (b_position + 2) s_len; b.position <- new_position diff --git a/lib/4.06.1/unstable/js_compiler.ml b/lib/4.06.1/unstable/js_compiler.ml index 876e4e147c..24b80c275e 100644 --- a/lib/4.06.1/unstable/js_compiler.ml +++ b/lib/4.06.1/unstable/js_compiler.ml @@ -69217,7 +69217,6 @@ val add_string_char : val add_ninja_prefix_var : t -> - char -> string -> unit @@ -69341,14 +69340,14 @@ let add_char_string b c s = b.position <- new_position (* equivalent to add_char " "; add_char "$"; add_string s *) -let add_ninja_prefix_var b char s = +let add_ninja_prefix_var b s = let s_len = String.length s in let len = s_len + 2 in let new_position = b.position + len in if new_position > b.length then resize b len; let b_buffer = b.buffer in let b_position = b.position in - Bytes.unsafe_set b_buffer b_position char ; + Bytes.unsafe_set b_buffer b_position ' ' ; Bytes.unsafe_set b_buffer (b_position + 1) '$' ; Ext_bytes.unsafe_blit_string s 0 b_buffer (b_position + 2) s_len; b.position <- new_position diff --git a/lib/4.06.1/unstable/js_refmt_compiler.ml b/lib/4.06.1/unstable/js_refmt_compiler.ml index 6afeeeeaef..a29bae2899 100644 --- a/lib/4.06.1/unstable/js_refmt_compiler.ml +++ b/lib/4.06.1/unstable/js_refmt_compiler.ml @@ -69217,7 +69217,6 @@ val add_string_char : val add_ninja_prefix_var : t -> - char -> string -> unit @@ -69341,14 +69340,14 @@ let add_char_string b c s = b.position <- new_position (* equivalent to add_char " "; add_char "$"; add_string s *) -let add_ninja_prefix_var b char s = +let add_ninja_prefix_var b s = let s_len = String.length s in let len = s_len + 2 in let new_position = b.position + len in if new_position > b.length then resize b len; let b_buffer = b.buffer in let b_position = b.position in - Bytes.unsafe_set b_buffer b_position char ; + Bytes.unsafe_set b_buffer b_position ' ' ; Bytes.unsafe_set b_buffer (b_position + 1) '$' ; Ext_bytes.unsafe_blit_string s 0 b_buffer (b_position + 2) s_len; b.position <- new_position diff --git a/lib/4.06.1/whole_compiler.ml b/lib/4.06.1/whole_compiler.ml index 00964d5df6..65583a33fe 100644 --- a/lib/4.06.1/whole_compiler.ml +++ b/lib/4.06.1/whole_compiler.ml @@ -353418,7 +353418,6 @@ val add_string_char : val add_ninja_prefix_var : t -> - char -> string -> unit @@ -353542,14 +353541,14 @@ let add_char_string b c s = b.position <- new_position (* equivalent to add_char " "; add_char "$"; add_string s *) -let add_ninja_prefix_var b char s = +let add_ninja_prefix_var b s = let s_len = String.length s in let len = s_len + 2 in let new_position = b.position + len in if new_position > b.length then resize b len; let b_buffer = b.buffer in let b_position = b.position in - Bytes.unsafe_set b_buffer b_position char ; + Bytes.unsafe_set b_buffer b_position ' ' ; Bytes.unsafe_set b_buffer (b_position + 1) '$' ; Ext_bytes.unsafe_blit_string s 0 b_buffer (b_position + 2) s_len; b.position <- new_position From e885c107e922b9e1c5674e77217393e916e11e9d Mon Sep 17 00:00:00 2001 From: Hongbo Zhang Date: Mon, 30 Nov 2020 13:11:25 +0800 Subject: [PATCH 7/7] update windows ninja binary --- win32/ninja.exe | Bin 492032 -> 492032 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/win32/ninja.exe b/win32/ninja.exe index f7572ae6eceb1d951c132f33058caa61bbb80ee8..5d23c62a637e3a6e623486c087bc4e4df4bc863b 100644 GIT binary patch delta 12735 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 Qa$srya`(*~bMwIe18FYa)&Kwi delta 12838 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