Commit 53aff41e by Jamie Madill Committed by Commit Bot

Use separate json files for each code generator.

This should reduce the number of merge conflicts when multiple people touch different generators. There still will be merge conflicts when two people touch the same code generator. Bug: angleproject:3691 Change-Id: I0b179368a1352331c091972568c00213ab106e46 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1698650Reviewed-by: 's avatarYuly Novikov <ynovikov@chromium.org> Reviewed-by: 's avatarIan Elliott <ianelliott@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
parent 60e2f11e
......@@ -11,5 +11,5 @@
*.gni eol=lf
# Git conflict markers in the json file break the code generator.
# Using a binary merge strategy forces a conflict without changing the file.
scripts/run_code_generation_hashes.json merge=binary
# Using a binary merge strategy forces conflicts without changing file contents.
scripts/code_generation_hashes/*.json merge=binary
{
"src/libANGLE/renderer/FormatID_autogen.h":
"083c08bb743bf72a900079890b14184f",
"src/libANGLE/renderer/Format_table_autogen.cpp":
"24a7e010def51eb4342caa5392536ea9",
"src/libANGLE/renderer/angle_format.py":
"7ce0869650454e1eebc93658d4d96844",
"src/libANGLE/renderer/angle_format_data.json":
"288d2f350948f8b1928c249234a44b25",
"src/libANGLE/renderer/angle_format_map.json":
"be9f9bdbdf785dda05920146e8c55dbb",
"src/libANGLE/renderer/gen_angle_format_table.py":
"37f4654bca2bebc7fdec1fc7ca9bc622"
}
\ No newline at end of file
{
"src/libANGLE/renderer/gen_load_functions_table.py":
"e65c50e84fc38ad34d0eb0bebb84aab6",
"src/libANGLE/renderer/load_functions_data.json":
"4b8a2d1b1f7038e04f51b587f0e98231",
"src/libANGLE/renderer/load_functions_table_autogen.cpp":
"5bfde353048f843718b296c5b32faf73"
}
\ No newline at end of file
{
"src/libANGLE/renderer/d3d/d3d11/Blit11Helper_autogen.inc":
"f69cf03a3d868a977fad9e9c0eb0652a",
"src/libANGLE/renderer/d3d/d3d11/d3d11_blit_shaders_autogen.gni":
"329dbafc64b0cb578348819198abcfea",
"src/libANGLE/renderer/d3d/d3d11/gen_blit11helper.py":
"704a82846928d3e21fc0794dff3a08f8"
}
\ No newline at end of file
{
"src/libANGLE/renderer/angle_format.py":
"7ce0869650454e1eebc93658d4d96844",
"src/libANGLE/renderer/d3d/d3d11/gen_texture_format_table.py":
"bf11e3404d4622059b6e9c4e96abf95e",
"src/libANGLE/renderer/d3d/d3d11/texture_format_data.json":
"d7483ece817e819588f4ca157716dc7b",
"src/libANGLE/renderer/d3d/d3d11/texture_format_map.json":
"805d30e2443935e3a3bd68839699e171",
"src/libANGLE/renderer/d3d/d3d11/texture_format_table_autogen.cpp":
"7c42f9e538cb675d13f8b5d2f248ef84"
}
\ No newline at end of file
{
"src/libANGLE/renderer/angle_format.py":
"7ce0869650454e1eebc93658d4d96844",
"src/libANGLE/renderer/angle_format_map.json":
"be9f9bdbdf785dda05920146e8c55dbb",
"src/libANGLE/renderer/d3d/d3d11/dxgi_format_data.json":
"24f525b05dc665fbbc8c6d68fb863719",
"src/libANGLE/renderer/d3d/d3d11/dxgi_format_map_autogen.cpp":
"32b9860e3fd8e87a89ff9a09e848e516",
"src/libANGLE/renderer/d3d/d3d11/gen_dxgi_format_table.py":
"411e6064b916d570fa76949820d34a45"
}
\ No newline at end of file
{
"src/libANGLE/renderer/d3d/d3d11/dxgi_support_data.json":
"09195053f8829fc81efe08229b54a8b5",
"src/libANGLE/renderer/d3d/d3d11/dxgi_support_table_autogen.cpp":
"7ec32ce0ad41450be7493c1db1130e25",
"src/libANGLE/renderer/d3d/d3d11/gen_dxgi_support_tables.py":
"b464f153f15d60df1c6536adbfafb072"
}
\ No newline at end of file
{
"src/compiler/translator/ParseContext_autogen.h":
"58786d2f352ee1a58d529fb7572c86a4",
"src/compiler/translator/SymbolTable_autogen.cpp":
"9a0b524e9254116e1a38e3ef1b57b669",
"src/compiler/translator/SymbolTable_autogen.h":
"bdb3c8eab0d48267a2f264e3af635e1a",
"src/compiler/translator/builtin_function_declarations.txt":
"d0c15cb9f2ef6c0ba5cd6612470db000",
"src/compiler/translator/builtin_symbols_hash_autogen.txt":
"e2fb536afe6669e60e45f6b5d0730631",
"src/compiler/translator/builtin_variables.json":
"04f763459cfbd47831bec22299287e82",
"src/compiler/translator/gen_builtin_symbols.py":
"5d5467e17ca5ed5bf9938df9a3391e6f",
"src/compiler/translator/tree_util/BuiltIn_autogen.h":
"69268b2f3bda048ba8aaabe60c9b9912",
"src/tests/compiler_tests/ImmutableString_test_autogen.cpp":
"e23f23bbd011ab29c4bb37ea69cfb3bd"
}
\ No newline at end of file
{
"src/compiler/translator/emulated_builtin_function_data_hlsl.json":
"002ad46d144c51fe98d73478aa554ba7",
"src/compiler/translator/emulated_builtin_functions_hlsl_autogen.cpp":
"1c759ffdd27a86fd8f2d590b2f3dcb56",
"src/compiler/translator/gen_emulated_builtin_function_tables.py":
"5991de4f43758f59d9d042581ae04eab"
}
\ No newline at end of file
{
"scripts/egl.xml":
"842e24514c4cfe09fba703c17a0fd292",
"scripts/egl_angle_ext.xml":
"fc2e249239fb1365f6d145cdf1a3cfcf",
"scripts/generate_loader.py":
"5a7cd014230fe04664d9613e65399d42",
"scripts/registry_xml.py":
"97cca309a0561f3bf54e0e2c1cf0708b",
"scripts/wgl.xml":
"aa96419c582af2f6673430e2847693f4",
"src/libEGL/egl_loader_autogen.cpp":
"01d20878ff5644bb9ee9e22ec95c3587",
"src/libEGL/egl_loader_autogen.h":
"fcaa495dbf4ad4841c60f669f5fabfb8",
"util/egl_loader_autogen.cpp":
"b9a444da4142a12a9fe6b7a9d33a4ea8",
"util/egl_loader_autogen.h":
"bc2c62ff42604977ac2240591ee8ba6a",
"util/gles_loader_autogen.cpp":
"335463406e64c6dc9bf00502cb25d53c",
"util/gles_loader_autogen.h":
"d5217a3555be800443bd673e479d8443",
"util/windows/wgl_loader_autogen.cpp":
"12ffb44e5e743c826e4d84ac65cdba82",
"util/windows/wgl_loader_autogen.h":
"e18f6c134b709c5a69ed3b4ff38642d0"
}
\ No newline at end of file
{
"scripts/egl.xml":
"842e24514c4cfe09fba703c17a0fd292",
"scripts/egl_angle_ext.xml":
"fc2e249239fb1365f6d145cdf1a3cfcf",
"scripts/entry_point_packed_gl_enums.json":
"08665ca9ebf22fa759c1ce0e965a200d",
"scripts/generate_entry_points.py":
"9d9b4797c1da3644923e83396a040b97",
"scripts/gl.xml":
"b470cb06b06cbbe7adb2c8129ec85708",
"scripts/gl_angle_ext.xml":
"bed6b56a38621721e689ebc19601a556",
"scripts/registry_xml.py":
"97cca309a0561f3bf54e0e2c1cf0708b",
"scripts/wgl.xml":
"aa96419c582af2f6673430e2847693f4",
"src/libANGLE/Context_gl_1_0_autogen.h":
"57231b5bc958327034059eb7e5cd6636",
"src/libANGLE/Context_gl_1_1_autogen.h":
"4a6f7633d3b234a98c33fef4a6a1c89e",
"src/libANGLE/Context_gl_1_2_autogen.h":
"e648c6c4ff40b7d2d709ef7635262226",
"src/libANGLE/Context_gl_1_3_autogen.h":
"a7bb49f5075a44aaee7a9531372b8731",
"src/libANGLE/Context_gl_1_4_autogen.h":
"07a56e633a2ef0467e97ae327c832324",
"src/libANGLE/Context_gl_1_5_autogen.h":
"96bf69258d08cef55abcfe08527ac1f3",
"src/libANGLE/Context_gl_2_0_autogen.h":
"fc3dc3bca5024a4c97878b064365efe8",
"src/libANGLE/Context_gl_2_1_autogen.h":
"0538549cfb385ab7866a2978fe0a3f65",
"src/libANGLE/Context_gl_3_0_autogen.h":
"46a55343d5ff3d79ac63b8887dc90ce3",
"src/libANGLE/Context_gl_3_1_autogen.h":
"391170a24ea544e6de99051e4d8d4aa1",
"src/libANGLE/Context_gles_1_0_autogen.h":
"f30ed90e4ec23f886bda9344d82dd529",
"src/libANGLE/Context_gles_2_0_autogen.h":
"d8c5ef3d4a9d98e6f57cb926a67537f0",
"src/libANGLE/Context_gles_3_0_autogen.h":
"0727abfe5305f87e09e76ca46b804ee3",
"src/libANGLE/Context_gles_3_1_autogen.h":
"5ccae982f020320b1e29cf8eecd8c303",
"src/libANGLE/Context_gles_ext_autogen.h":
"a4159480e94e629b7ad5820464eab6ff",
"src/libANGLE/capture_gles_1_0_autogen.cpp":
"4eed3706b615e2778f6d7840af8b9a15",
"src/libANGLE/capture_gles_1_0_autogen.h":
"06471d4526e8d0b824f5afc8bc8766fa",
"src/libANGLE/capture_gles_2_0_autogen.cpp":
"6cb02a611b7528f2184a44d1d5c75838",
"src/libANGLE/capture_gles_2_0_autogen.h":
"1ea9fbd64218b6e256e10723eb81e0c6",
"src/libANGLE/capture_gles_3_0_autogen.cpp":
"c97230a331a8d47499ba16a8daaa4caf",
"src/libANGLE/capture_gles_3_0_autogen.h":
"ffe4ed9b7e642258b9deb1452875f23b",
"src/libANGLE/capture_gles_3_1_autogen.cpp":
"913f953f661b4e4701ed27c5c89f8f23",
"src/libANGLE/capture_gles_3_1_autogen.h":
"1be96fed22157c3f591ab362d717de0b",
"src/libANGLE/capture_gles_ext_autogen.cpp":
"26d5ccfe479071119b6ae1fc1382faa0",
"src/libANGLE/capture_gles_ext_autogen.h":
"2c282627320d2ca594e176ff0d84c8f1",
"src/libANGLE/entry_points_enum_autogen.h":
"0679308533029fdbc9f9844a5760586b",
"src/libANGLE/frame_capture_utils_autogen.cpp":
"05f98f9b62ec70a24341b772cd87c584",
"src/libANGLE/frame_capture_utils_autogen.h":
"08df1391bcb6e95af913481f1b8fd5fb",
"src/libANGLE/validationES1_autogen.h":
"8d3131d2bf2e6f521f46b44e64a6bff9",
"src/libANGLE/validationES2_autogen.h":
"edf0d7d2afdfd6c090f83d40312394ad",
"src/libANGLE/validationES31_autogen.h":
"22ef241ea5b79a6abe6589f1afcc80a2",
"src/libANGLE/validationES3_autogen.h":
"4617942e5bf67fa5e35675daf66afc5c",
"src/libANGLE/validationESEXT_autogen.h":
"e467045ae1b9f8671ced8aef794f06e0",
"src/libANGLE/validationGL11_autogen.h":
"c5ac1ca523a39df2621d11e92c9c821a",
"src/libANGLE/validationGL12_autogen.h":
"d00e743582693425eb8e5221bdfadc7c",
"src/libANGLE/validationGL13_autogen.h":
"3cc3a79b3f39f7e7267ac4ff5b51a198",
"src/libANGLE/validationGL14_autogen.h":
"d58f8aa392b34a15cd5ddfea3142bca4",
"src/libANGLE/validationGL15_autogen.h":
"803c78e151ba6e71be81ed38decacf1d",
"src/libANGLE/validationGL1_autogen.h":
"9f6aca8bc4d4f8f74d0a74a781eec5b4",
"src/libANGLE/validationGL21_autogen.h":
"0db791d425850e654aa36b6241891525",
"src/libANGLE/validationGL2_autogen.h":
"bbbdee2a2aaed049bfe243197a633b1b",
"src/libANGLE/validationGL31_autogen.h":
"8eb20c13d38138483d42f898400ef176",
"src/libANGLE/validationGL3_autogen.h":
"1bd2846baa868d579bc4f619dc59a93c",
"src/libGL/entry_points_gl_1_0_autogen.cpp":
"65efdf7fcf3d7b12f936db5c6c7f1c32",
"src/libGL/entry_points_gl_1_0_autogen.h":
"ba9a7d0ce72bca6f11d12b3a8a3e95c1",
"src/libGL/entry_points_gl_1_1_autogen.cpp":
"7b3230b667a6ff00933f58223d958f89",
"src/libGL/entry_points_gl_1_1_autogen.h":
"1b675cfae8fa5e5d79032d480b9d098f",
"src/libGL/entry_points_gl_1_2_autogen.cpp":
"247f0973fb17a46cf02d97fe3647ff86",
"src/libGL/entry_points_gl_1_2_autogen.h":
"55ae51cd45fb87f44479abe7918ccc45",
"src/libGL/entry_points_gl_1_3_autogen.cpp":
"fdbffcd6b9bc4e6765cfa027c0645564",
"src/libGL/entry_points_gl_1_3_autogen.h":
"5cd2206947c56f33948eab34a85b9d18",
"src/libGL/entry_points_gl_1_4_autogen.cpp":
"8a4db0a0dd18a3d43bff54d77aa5d56e",
"src/libGL/entry_points_gl_1_4_autogen.h":
"3a2922db3bd9637a067b61f3099989d2",
"src/libGL/entry_points_gl_1_5_autogen.cpp":
"d5964ecec41afd6a0da980e1aedf9abd",
"src/libGL/entry_points_gl_1_5_autogen.h":
"ba307366eed3707a79e682aba990c2ba",
"src/libGL/entry_points_gl_2_0_autogen.cpp":
"73a6c7a872080b6c0b056159e9bcfcc0",
"src/libGL/entry_points_gl_2_0_autogen.h":
"1e9622afa89718fc65d2801848780691",
"src/libGL/entry_points_gl_2_1_autogen.cpp":
"c1e596d66b764e76cccbd4f726312d9b",
"src/libGL/entry_points_gl_2_1_autogen.h":
"4a368fe42f9b690ccec8a0492e9d0f2d",
"src/libGL/entry_points_gl_3_0_autogen.cpp":
"891bb91af9a61dddb10602a8d59392fc",
"src/libGL/entry_points_gl_3_0_autogen.h":
"a04b4fe60f275cbb405858498cc3a411",
"src/libGL/entry_points_gl_3_1_autogen.cpp":
"3c8d595677596847aa1e8e625d5f0fe2",
"src/libGL/entry_points_gl_3_1_autogen.h":
"0bd4aaf736f40589f668fdd381b87788",
"src/libGL/libGL_autogen.cpp":
"2ee47347a7d1f3f85944c772398c7ef8",
"src/libGL/libGL_autogen.def":
"8ff022ce11382a0b4adbd05b559ad59c",
"src/libGLESv2/entry_points_gles_1_0_autogen.cpp":
"d9882eb5eb7002955c0e6969288dc595",
"src/libGLESv2/entry_points_gles_1_0_autogen.h":
"77fa8d307ebf839838f8812786cddc1a",
"src/libGLESv2/entry_points_gles_2_0_autogen.cpp":
"415b20fee85f910e6b078a7a958db4c4",
"src/libGLESv2/entry_points_gles_2_0_autogen.h":
"3bbaf1cf42fba5d675e5b54cd1d14df7",
"src/libGLESv2/entry_points_gles_3_0_autogen.cpp":
"df307b2effb0125626e1b7fe41a5f2aa",
"src/libGLESv2/entry_points_gles_3_0_autogen.h":
"395f6978219abd5182bbe80cc367e40c",
"src/libGLESv2/entry_points_gles_3_1_autogen.cpp":
"c3dda1a78563a5a9f1a1d448f1158668",
"src/libGLESv2/entry_points_gles_3_1_autogen.h":
"043d09a964c740067bf4279e0b544aed",
"src/libGLESv2/entry_points_gles_ext_autogen.cpp":
"ce86338a0a9de820d189c4cfd48b465e",
"src/libGLESv2/entry_points_gles_ext_autogen.h":
"294cc52579b3439e99914c11bb7cd9f6",
"src/libGLESv2/libGLESv2_autogen.cpp":
"229577015686414a6d094533c2210cea",
"src/libGLESv2/libGLESv2_autogen.def":
"52ef9529c516e83d6a0d9e1a9ec0a493",
"src/libGLESv2/libGLESv2_with_capture_autogen.def":
"25b108d7f235173041f7c92ffab9fb44"
}
\ No newline at end of file
{
"src/libANGLE/es3_copy_conversion_formats.json":
"54608f6f7d9aa7c59a8458ccf3ab9935",
"src/libANGLE/es3_copy_conversion_table_autogen.cpp":
"b20d198cf5e292c43170d4873b381b34",
"src/libANGLE/gen_copy_conversion_table.py":
"827a4a27cea1e11bef18fed9dce6dceb"
}
\ No newline at end of file
{
"src/libANGLE/es3_format_type_combinations.json":
"a232823cd6430f14e28793ccabb968ee",
"src/libANGLE/format_map_autogen.cpp":
"1e1b1c2af35a8a75c4395430d2370758",
"src/libANGLE/format_map_data.json":
"779798d4879e5f73a5a108e3e3fd3095",
"src/libANGLE/gen_format_map.py":
"dbc855d50826670a9e1a4ff2747e7583"
}
\ No newline at end of file
{
"scripts/gl.xml":
"b470cb06b06cbbe7adb2c8129ec85708",
"src/libANGLE/renderer/angle_format.py":
"7ce0869650454e1eebc93658d4d96844",
"src/libANGLE/renderer/gl/DispatchTableGL_autogen.cpp":
"96d06b3acf7826aee1ec813a8fa3a867",
"src/libANGLE/renderer/gl/DispatchTableGL_autogen.h":
"ea5eded625b5db7d7b2b7f689c72f14b",
"src/libANGLE/renderer/gl/generate_gl_dispatch_table.py":
"f21314d401e650b4182c4b7d66ac5c9c",
"src/libANGLE/renderer/gl/gl_bindings_data.json":
"1afca09d29ed7788c76cbc9bcfb4de0a",
"src/libANGLE/renderer/gl/null_functions.cpp":
"5470d6b1d7057d797e15b986a31e196e",
"src/libANGLE/renderer/gl/null_functions.h":
"7906751710cab691f9e7365e59b7beed"
}
\ No newline at end of file
{
"src/libANGLE/renderer/angle_format.py":
"7ce0869650454e1eebc93658d4d96844",
"src/libANGLE/renderer/angle_format_map.json":
"be9f9bdbdf785dda05920146e8c55dbb",
"src/libANGLE/renderer/vulkan/gen_vk_format_table.py":
"09340e3ba114b4acef6460ac8b242040",
"src/libANGLE/renderer/vulkan/vk_format_map.json":
"9e0a57bee62f7b0603c7431c815d1be2",
"src/libANGLE/renderer/vulkan/vk_format_table_autogen.cpp":
"8d7f42c646e4b05017552e5af1b3bc84"
}
\ No newline at end of file
{
"src/libANGLE/renderer/angle_format.py":
"7ce0869650454e1eebc93658d4d96844",
"src/libANGLE/renderer/vulkan/gen_vk_mandatory_format_support_table.py":
"dab4614bbee0c3fbc5b3ccaaa11ba9d3",
"src/libANGLE/renderer/vulkan/vk_mandatory_format_support_data.json":
"fa2bd54c1bb0ab2cf1d386061a4bc5c5",
"src/libANGLE/renderer/vulkan/vk_mandatory_format_support_table_autogen.cpp":
"d20e549634ef32d6ad4e9f0b28e52acf",
"third_party/vulkan-headers/src/registry/vk.xml":
"8af0f992bd45c2d9500eb5ed60c256d6"
}
\ No newline at end of file
{
"src/common/PackedEGLEnums_autogen.cpp":
"51fe45095a4c15fb0cdc3b2dc13ad437",
"src/common/PackedEGLEnums_autogen.h":
"96a117fc4265af386798a5553a719ff2",
"src/common/PackedGLEnums_autogen.cpp":
"2a00295fec7437c7e1e6e3166482ae81",
"src/common/PackedGLEnums_autogen.h":
"bf4b4a3c61a67df0e7e2fc0820ee7e79",
"src/common/gen_packed_gl_enums.py":
"b3e96ea44f52ec23ee893bd843dfd2cb",
"src/common/packed_egl_enums.json":
"5f591d220ee53b6e54a27d1523a3ab79",
"src/common/packed_gl_enums.json":
"b60dd9e7a25717f5b15015f6edc8b058"
}
\ No newline at end of file
{
"scripts/egl.xml":
"842e24514c4cfe09fba703c17a0fd292",
"scripts/egl_angle_ext.xml":
"fc2e249239fb1365f6d145cdf1a3cfcf",
"scripts/gen_proc_table.py":
"3c988387fd8d368ea3a660b869867660",
"scripts/gl.xml":
"b470cb06b06cbbe7adb2c8129ec85708",
"scripts/gl_angle_ext.xml":
"bed6b56a38621721e689ebc19601a556",
"scripts/registry_xml.py":
"97cca309a0561f3bf54e0e2c1cf0708b",
"scripts/wgl.xml":
"aa96419c582af2f6673430e2847693f4",
"src/libGL/proc_table_wgl_autogen.cpp":
"62d8f224776d738d5ee259a5f84528e1",
"src/libGLESv2/proc_table_egl_autogen.cpp":
"73e54da783ff8d5058e9dadcc6e90322"
}
\ No newline at end of file
{
"src/common/gen_uniform_type_table.py":
"a741cc301b1617ab0e4d29b35f1d3b96",
"src/common/uniform_type_info_autogen.cpp":
"d1cea53e456de010445790b8de94a50e"
}
\ No newline at end of file
......@@ -16,6 +16,8 @@ import sys
script_dir = sys.path[0]
root_dir = os.path.abspath(os.path.join(script_dir, '..'))
hash_dir = 'code_generation_hashes'
# auto_script is a standard way for scripts to return their inputs and outputs.
......@@ -55,8 +57,6 @@ def auto_script(script):
return info
hash_fname = "run_code_generation_hashes.json"
generators = {
'ANGLE format':
'src/libANGLE/renderer/gen_angle_format_table.py',
......@@ -107,27 +107,36 @@ def md5(fname):
return hash_md5.hexdigest()
def get_hash_file_name(name):
return name.replace(' ', '_').replace('/', '_') + '.json'
def any_hash_dirty(name, filenames, new_hashes, old_hashes):
found_dirty_hash = False
for filename in filenames:
key = name + ":" + filename
if not os.path.isfile(filename):
print('Could not find %s for %s' % (filename, name))
for fname in filenames:
if not os.path.isfile(fname):
print('File not found: "%s". Code gen dirty for %s' % (fname, name))
found_dirty_hash = True
else:
new_hashes[key] = md5(filename)
if (not key in old_hashes) or (old_hashes[key] != new_hashes[key]):
new_hashes[fname] = md5(fname)
if (not fname in old_hashes) or (old_hashes[fname] != new_hashes[fname]):
print('Hash for "%s" dirty for %s generator.' % (fname, name))
found_dirty_hash = True
return found_dirty_hash
def any_old_hash_missing(new_hashes, old_hashes):
def any_old_hash_missing(all_new_hashes, all_old_hashes):
result = False
for name, _ in old_hashes.iteritems():
if name not in new_hashes:
script, file = name.split(':')
print('%s missing from generated hashes for %s.' % (file, script))
for file, old_hashes in all_old_hashes.iteritems():
if file not in all_new_hashes:
print('"%s" does not exist. Code gen dirty.' % file)
result = True
else:
for name, _ in old_hashes.iteritems():
if name not in all_new_hashes[file]:
print('Hash for %s is missing from "%s". Code gen is dirty.' % (name, file))
result = True
return result
......@@ -136,15 +145,23 @@ def update_output_hashes(script, outputs, new_hashes):
if not os.path.isfile(output):
print('Output is missing from %s: %s' % (script, output))
sys.exit(1)
key = script + ":" + output
new_hashes[key] = md5(output)
new_hashes[output] = md5(output)
def load_hashes():
hashes = {}
for file in os.listdir(hash_dir):
hash_fname = os.path.join(hash_dir, file)
with open(hash_fname) as hash_file:
hashes[file] = json.load(open(hash_fname))
return hashes
def main():
os.chdir(script_dir)
old_hashes = json.load(open(hash_fname))
new_hashes = {}
all_old_hashes = load_hashes()
all_new_hashes = {}
any_dirty = False
verify_only = False
......@@ -153,8 +170,12 @@ def main():
for name, script in sorted(generators.iteritems()):
info = auto_script(script)
fname = get_hash_file_name(name)
filenames = info['inputs'] + info['outputs'] + [script]
if any_hash_dirty(name, filenames, new_hashes, old_hashes):
new_hashes = {}
if fname not in all_old_hashes:
all_old_hashes[fname] = {}
if any_hash_dirty(name, filenames, new_hashes, all_old_hashes[fname]):
any_dirty = True
if not verify_only:
......@@ -165,18 +186,17 @@ def main():
if subprocess.call(['python', os.path.basename(script)]) != 0:
sys.exit(1)
if any_old_hash_missing(new_hashes, old_hashes):
# Update the hash dictionary.
all_new_hashes[fname] = new_hashes
if any_old_hash_missing(all_new_hashes, all_old_hashes):
any_dirty = True
if verify_only:
sys.exit(any_dirty)
if any_dirty:
args = []
if os.name == 'nt':
args += ['git.bat']
else:
args += ['git']
args = ['git.bat'] if os.name == 'nt' else ['git']
# The diff can be so large the arguments to clang-format can break the Windows command
# line length limits. Work around this by calling git cl format with --full.
args += ['cl', 'format', '--full']
......@@ -186,15 +206,19 @@ def main():
# Update the output hashes again since they can be formatted.
for name, script in sorted(generators.iteritems()):
info = auto_script(script)
update_output_hashes(name, info['outputs'], new_hashes)
fname = get_hash_file_name(name)
update_output_hashes(name, info['outputs'], all_new_hashes[fname])
os.chdir(script_dir)
json.dump(
new_hashes,
open(hash_fname, "w"),
indent=2,
sort_keys=True,
separators=(',', ':\n '))
for fname, new_hashes in all_new_hashes.iteritems():
hash_fname = os.path.join(hash_dir, fname)
json.dump(
new_hashes,
open(hash_fname, "w"),
indent=2,
sort_keys=True,
separators=(',', ':\n '))
if __name__ == '__main__':
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment