# Copyright 2019 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. """Enforces command buffer autogen matches script output. See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts for more details on the presubmit API built into depot_tools. """ import os.path def CommonChecks(input_api, output_api): gles2_cmd_buffer_files = input_api.AffectedFiles( file_filter=lambda x: os.path.basename(x.LocalPath()) in [ 'build_cmd_buffer_lib.py', 'build_gles2_cmd_buffer.py', 'gles2_cmd_buffer_functions.txt']) raster_cmd_buffer_files = input_api.AffectedFiles( file_filter=lambda x: os.path.basename(x.LocalPath()) in [ 'build_cmd_buffer_lib.py', 'build_raster_cmd_buffer.py', 'raster_cmd_buffer_functions.txt']) webgpu_cmd_buffer_files = input_api.AffectedFiles( file_filter=lambda x: os.path.basename(x.LocalPath()) in [ 'build_cmd_buffer_lib.py', 'build_webgpu_cmd_buffer.py', 'webgpu_cmd_buffer_functions.txt']) autogen_files = input_api.AffectedFiles( file_filter=lambda x: x.LocalPath().endswith('_autogen.h')) # Use input_api.change.AffectedFiles() to get files outside this directory. external_gl_headers = input_api.change.AffectedFiles( file_filter=lambda x: os.path.basename(x.LocalPath()) in [ 'gl2.h', 'gl2ext.h', 'gl3.h', 'gl31.h', 'gl2chromium.h', 'gl2extchromium.h' ]) messages = [] if (len(autogen_files) > 0 and len(gles2_cmd_buffer_files) == 0 and len(external_gl_headers) == 0 and len(raster_cmd_buffer_files) == 0 and len(webgpu_cmd_buffer_files) == 0): long_text = 'Changed files:\n' for file in autogen_files: long_text += file.LocalPath() + '\n' long_text += '\n' messages.append(output_api.PresubmitError( 'Command buffer autogenerated files changed but generators did not.', long_text=long_text)) with input_api.temporary_directory() as temp_dir: commands = [] if len(gles2_cmd_buffer_files) > 0: commands.append(input_api.Command(name='build_gles2_cmd_buffer', cmd=[input_api.python_executable, 'build_gles2_cmd_buffer.py', '--check', '--output-dir=' + temp_dir], kwargs={}, message=output_api.PresubmitError)) if len(raster_cmd_buffer_files) > 0: commands.append(input_api.Command(name='build_raster_cmd_buffer', cmd=[input_api.python_executable, 'build_raster_cmd_buffer.py', '--check', '--output-dir=' + temp_dir], kwargs={}, message=output_api.PresubmitError)) if len(webgpu_cmd_buffer_files) > 0: commands.append(input_api.Command(name='build_webgpu_cmd_buffer', cmd=[input_api.python_executable, 'build_webgpu_cmd_buffer.py', '--check', '--output-dir=' + temp_dir], kwargs={}, message=output_api.PresubmitError)) if len(commands) > 0: messages.extend(input_api.RunTests(commands)) return messages def CheckChangeOnUpload(input_api, output_api): return CommonChecks(input_api, output_api) def CheckChangeOnCommit(input_api, output_api): return CommonChecks(input_api, output_api)