Skip to content

Commit 74febe3

Browse files
committed
experimental changes so that only cmi/j changes will trigger a rebuild
1 parent c6bcaac commit 74febe3

File tree

2 files changed

+38
-6
lines changed

2 files changed

+38
-6
lines changed

jscomp/bsb/bsb_ninja_gen.ml

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,10 @@ let output_installation_file cwd_lib_bs namespace files_to_install =
110110
o (if Ext_sys.is_windows_or_cygwin then
111111
"rule cp\n command = cmd.exe /C copy /Y $i $out >NUL\n"
112112
else
113-
"rule cp\n command = cp $i $out\n"
113+
"rule cp\n command = cp $i $out\n\
114+
rule touch\n command = touch $out\n"
114115
);
116+
let essentials = Ext_buffer.create 1_000 in
115117
files_to_install
116118
|> Queue.iter (fun ({name_sans_extension;syntax_kind; info} : Bsb_db.module_info) ->
117119
let base = Filename.basename name_sans_extension in
@@ -120,6 +122,12 @@ let output_installation_file cwd_lib_bs namespace files_to_install =
120122
oo Literals.suffix_cmi ~dest:ns_base ~src:(bs//ns_origin);
121123
oo Literals.suffix_cmj ~dest:ns_base ~src:(bs//ns_origin);
122124
oo Literals.suffix_cmt ~dest:ns_base ~src:(bs//ns_origin);
125+
Ext_buffer.add_string essentials ns_base ;
126+
Ext_buffer.add_string essentials Literals.suffix_cmi;
127+
Ext_buffer.add_string essentials " ";
128+
Ext_buffer.add_string essentials ns_base ;
129+
Ext_buffer.add_string essentials Literals.suffix_cmj;
130+
Ext_buffer.add_string essentials " ";
123131
let suffix =
124132
match syntax_kind with
125133
| Ml -> Literals.suffix_ml
@@ -144,8 +152,16 @@ let output_installation_file cwd_lib_bs namespace files_to_install =
144152
let src = bs // x in
145153
oo Literals.suffix_cmi ~dest:x ~src;
146154
oo Literals.suffix_cmj ~dest:x ~src;
147-
oo Literals.suffix_cmt ~dest:x ~src
155+
oo Literals.suffix_cmt ~dest:x ~src;
156+
Ext_buffer.add_string essentials x ;
157+
Ext_buffer.add_string essentials Literals.suffix_cmi;
158+
Ext_buffer.add_string essentials " ";
159+
Ext_buffer.add_string essentials x ;
160+
Ext_buffer.add_string essentials Literals.suffix_cmj;
148161
end;
162+
Ext_buffer.add_string essentials "\n";
163+
o "build install.stamp : touch ";
164+
Ext_buffer.output_buffer install_oc essentials;
149165
close_out install_oc
150166

151167
let output_ninja_and_namespace_map
@@ -239,7 +255,7 @@ let output_ninja_and_namespace_map
239255
let oc = open_out_bin (cwd_lib_bs // Literals.build_ninja) in
240256
mark_rescript oc;
241257
let finger_file =
242-
fun (x : Bsb_config_types.dependency) -> x.package_install_path //".ninja_log"
258+
fun (x : Bsb_config_types.dependency) -> x.package_install_path //"install.stamp"
243259
in
244260
Ext_list.iter bs_dependencies (fun x ->
245261
Bsb_ninja_targets.output_finger Bsb_ninja_global_vars.g_finger

lib/4.06.1/bsb.ml

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13629,8 +13629,10 @@ let output_installation_file cwd_lib_bs namespace files_to_install =
1362913629
o (if Ext_sys.is_windows_or_cygwin then
1363013630
"rule cp\n command = cmd.exe /C copy /Y $i $out >NUL\n"
1363113631
else
13632-
"rule cp\n command = cp $i $out\n"
13632+
"rule cp\n command = cp $i $out\n\
13633+
rule touch\n command = touch $out\n"
1363313634
);
13635+
let essentials = Ext_buffer.create 1_000 in
1363413636
files_to_install
1363513637
|> Queue.iter (fun ({name_sans_extension;syntax_kind; info} : Bsb_db.module_info) ->
1363613638
let base = Filename.basename name_sans_extension in
@@ -13639,6 +13641,12 @@ let output_installation_file cwd_lib_bs namespace files_to_install =
1363913641
oo Literals.suffix_cmi ~dest:ns_base ~src:(bs//ns_origin);
1364013642
oo Literals.suffix_cmj ~dest:ns_base ~src:(bs//ns_origin);
1364113643
oo Literals.suffix_cmt ~dest:ns_base ~src:(bs//ns_origin);
13644+
Ext_buffer.add_string essentials ns_base ;
13645+
Ext_buffer.add_string essentials Literals.suffix_cmi;
13646+
Ext_buffer.add_string essentials " ";
13647+
Ext_buffer.add_string essentials ns_base ;
13648+
Ext_buffer.add_string essentials Literals.suffix_cmj;
13649+
Ext_buffer.add_string essentials " ";
1364213650
let suffix =
1364313651
match syntax_kind with
1364413652
| Ml -> Literals.suffix_ml
@@ -13663,8 +13671,16 @@ let output_installation_file cwd_lib_bs namespace files_to_install =
1366313671
let src = bs // x in
1366413672
oo Literals.suffix_cmi ~dest:x ~src;
1366513673
oo Literals.suffix_cmj ~dest:x ~src;
13666-
oo Literals.suffix_cmt ~dest:x ~src
13674+
oo Literals.suffix_cmt ~dest:x ~src;
13675+
Ext_buffer.add_string essentials x ;
13676+
Ext_buffer.add_string essentials Literals.suffix_cmi;
13677+
Ext_buffer.add_string essentials " ";
13678+
Ext_buffer.add_string essentials x ;
13679+
Ext_buffer.add_string essentials Literals.suffix_cmj;
1366713680
end;
13681+
Ext_buffer.add_string essentials "\n";
13682+
o "build install.stamp : touch ";
13683+
Ext_buffer.output_buffer install_oc essentials;
1366813684
close_out install_oc
1366913685

1367013686
let output_ninja_and_namespace_map
@@ -13758,7 +13774,7 @@ let output_ninja_and_namespace_map
1375813774
let oc = open_out_bin (cwd_lib_bs // Literals.build_ninja) in
1375913775
mark_rescript oc;
1376013776
let finger_file =
13761-
fun (x : Bsb_config_types.dependency) -> x.package_install_path //".ninja_log"
13777+
fun (x : Bsb_config_types.dependency) -> x.package_install_path //"install.stamp"
1376213778
in
1376313779
Ext_list.iter bs_dependencies (fun x ->
1376413780
Bsb_ninja_targets.output_finger Bsb_ninja_global_vars.g_finger

0 commit comments

Comments
 (0)