From e7a9275be22d28c74049d397a87183d47a1d188f Mon Sep 17 00:00:00 2001 From: Roman Lavrov Date: Fri, 2 Jun 2023 18:09:40 -0400 Subject: [PATCH] Make run_code_generation faster using python3 for auto_script Only changes the way we get auto_script inputs/outputs. Before this CL, some of the scripts (depending on the shebang) are run via vpython3 - which can take a few seconds. But the inputs/outputs code generally doesn't require any unusual imports, so we can just add little hacks to suppress those imports where needed when an argument is given to the script. Bug: angleproject:8184 Change-Id: Ib09a35b839318253fe7e913e24a756d2cb46dad1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4585820 Commit-Queue: Roman Lavrov Reviewed-by: Shahbaz Youssefi --- .../Static_builtins.json | 2 +- scripts/run_code_generation.py | 19 +++++++++---------- .../translator/gen_builtin_symbols.py | 7 +++++-- src/libANGLE/gen_overlay_fonts.py | 1 + 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/scripts/code_generation_hashes/Static_builtins.json b/scripts/code_generation_hashes/Static_builtins.json index b1bd5f66f..4c5d20906 100644 --- a/scripts/code_generation_hashes/Static_builtins.json +++ b/scripts/code_generation_hashes/Static_builtins.json @@ -16,7 +16,7 @@ "src/compiler/translator/builtin_variables.json": "6ed79ceeb34953153925f7e473177321", "src/compiler/translator/gen_builtin_symbols.py": - "47f8367ef3d100ac752c28146db60815", + "2bcd07edef829c70871d1456d0c89bc5", "src/compiler/translator/tree_util/BuiltIn_ESSL_autogen.h": "d6c16bf2d2ea5d02c702585725fd06cb", "src/compiler/translator/tree_util/BuiltIn_complete_autogen.h": diff --git a/scripts/run_code_generation.py b/scripts/run_code_generation.py index e430f708b..a1fee856c 100755 --- a/scripts/run_code_generation.py +++ b/scripts/run_code_generation.py @@ -27,27 +27,26 @@ def get_child_script_dirname(script): return os.path.dirname(os.path.abspath(os.path.join(root_dir, script))) -# Check if we need a module from vpython def get_executable_name(script): with open(script, 'r') as f: + # Check shebang binary = os.path.basename(f.readline().strip().replace(' ', '/')) + assert binary in ['python3', 'vpython3'] if platform.system() == 'Windows': - if binary == 'python2': - return 'python.bat' - else: - return binary + '.bat' + return binary + '.bat' else: return binary -def grab_from_script(script, param): +def paths_from_auto_script(script, param): script_dir = get_child_script_dirname(script) - exe = get_executable_name(script) + # python3 (not vpython3) to get inputs/outputs faster + exe = 'python3' try: res = subprocess.check_output([exe, os.path.basename(script), param], cwd=script_dir).decode().strip() except Exception: - print('Error grabbing script output: %s, executable %s' % (script, exe)) + print('Error with auto_script %s: %s, executable %s' % (param, script, exe)) raise if res == '': return [] @@ -60,8 +59,8 @@ def grab_from_script(script, param): # auto_script is a standard way for scripts to return their inputs and outputs. def auto_script(script): info = { - 'inputs': grab_from_script(script, 'inputs'), - 'outputs': grab_from_script(script, 'outputs') + 'inputs': paths_from_auto_script(script, 'inputs'), + 'outputs': paths_from_auto_script(script, 'outputs') } return info diff --git a/src/compiler/translator/gen_builtin_symbols.py b/src/compiler/translator/gen_builtin_symbols.py index 060611771..265fc4876 100755 --- a/src/compiler/translator/gen_builtin_symbols.py +++ b/src/compiler/translator/gen_builtin_symbols.py @@ -13,16 +13,19 @@ # # gen_builtin_symbols.py: # Code generation for the built-in symbol tables. +import sys + +# Conditional import enables getting inputs/outputs with python3 instead of vpython3 +if len(sys.argv) < 2: + from perfect_hash import generate_hash, Hash2 from collections import OrderedDict -from perfect_hash import generate_hash, Hash2 import argparse import copy import hashlib import json import re import os -import sys import random template_immutablestring_cpp = """// GENERATED FILE - DO NOT EDIT. diff --git a/src/libANGLE/gen_overlay_fonts.py b/src/libANGLE/gen_overlay_fonts.py index ed88ad748..949500804 100644 --- a/src/libANGLE/gen_overlay_fonts.py +++ b/src/libANGLE/gen_overlay_fonts.py @@ -21,6 +21,7 @@ import sys +# Conditional import enables getting inputs/outputs with python3 instead of vpython3 if len(sys.argv) < 2: from freetype import *