From 4b16bef4a219af372d022f0ec4f15befb1449808 Mon Sep 17 00:00:00 2001 From: Roger Zanoni Date: Tue, 16 May 2023 16:11:15 +0200 Subject: [PATCH 04/10] Add an option to bypass sysroot checking and force --- tools/gclient_hook.py | 8 +++++++- tools/gn_args.py | 28 ++++++++++++++-------------- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/tools/gclient_hook.py b/tools/gclient_hook.py index 4e5f9f687..6a7bc0d46 100644 --- a/tools/gclient_hook.py +++ b/tools/gclient_hook.py @@ -20,6 +20,12 @@ parser.add_option( dest='baseoutpath', default='', help="Use an anternative base path for the generated gn outputs instead of using chromium source dir") +parser.add_option( + '--bypass-sysroot-check', + action='store_true', + dest='bypasssysrootcheck', + default=False, + help='Don\'t chech if the sysroot exist while generating output directores.') (options, args) = parser.parse_args() @@ -141,7 +147,7 @@ if platform == 'windows': gn_args['visual_studio_runtime_dirs'] = os.environ['VS_CRT_ROOT'] gn_args['windows_sdk_path'] = os.environ['SDK_ROOT'] -configs = GetAllPlatformConfigs(gn_args) +configs = GetAllPlatformConfigs(gn_args, bypass_sysroot_check=options.bypasssysrootcheck) for dir, config in configs.items(): # Create out directories and write the args.gn file. base_out_dir = src_dir diff --git a/tools/gn_args.py b/tools/gn_args.py index 563a6b9cc..f782bd765 100644 --- a/tools/gn_args.py +++ b/tools/gn_args.py @@ -323,7 +323,7 @@ def GetMergedArgs(build_args): return MergeDicts(dict, required) -def ValidateArgs(args): +def ValidateArgs(args, bypass_sysroot_check=False): """ Validate GN arg combinations that we know about. Also provide suggestions where appropriate. @@ -360,11 +360,11 @@ def ValidateArgs(args): if platform == 'linux': if target_cpu == 'x86': - assert use_sysroot, 'target_cpu="x86" requires use_sysroot=true' + assert use_sysroot or bypass_sysroot_check, 'target_cpu="x86" requires use_sysroot=true' elif target_cpu == 'arm': - assert use_sysroot, 'target_cpu="arm" requires use_sysroot=true' + assert use_sysroot or bypass_sysroot_check, 'target_cpu="arm" requires use_sysroot=true' elif target_cpu == 'arm64': - assert use_sysroot, 'target_cpu="arm64" requires use_sysroot=true' + assert use_sysroot or bypass_sysroot_check, 'target_cpu="arm64" requires use_sysroot=true' # ASAN requires Release builds. if is_asan: @@ -452,7 +452,7 @@ def ValidateArgs(args): "visual_studio_path requires INCLUDE, LIB and PATH env variables" -def GetConfigArgs(args, is_debug, cpu): +def GetConfigArgs(args, is_debug, cpu, bypass_sysroot_check=False): """ Return merged GN args for the configuration and validate. """ @@ -478,11 +478,11 @@ def GetConfigArgs(args, is_debug, cpu): if key.startswith('arm_'): del result[key] - ValidateArgs(result) + ValidateArgs(result, bypass_sysroot_check) return result -def GetConfigArgsSandbox(platform, args, is_debug, cpu): +def GetConfigArgsSandbox(platform, args, is_debug, cpu, bypass_sysroot_check=False): """ Return merged GN args for the cef_sandbox configuration and validate. """ @@ -548,7 +548,7 @@ def LinuxSysrootExists(cpu): return os.path.isdir(os.path.join(sysroot_root, sysroot_name)) -def GetAllPlatformConfigs(build_args): +def GetAllPlatformConfigs(build_args, bypass_sysroot_check=False): """ Return a map of directory name to GN args for the current platform. """ @@ -568,10 +568,10 @@ def GetAllPlatformConfigs(build_args): if platform == 'linux': use_sysroot = GetArgValue(args, 'use_sysroot') - if use_sysroot: + if bypass_sysroot_check or use_sysroot: # Only generate configurations for sysroots that have been installed. for cpu in ('x64', 'arm', 'arm64'): - if LinuxSysrootExists(cpu): + if bypass_sysroot_check or LinuxSysrootExists(cpu): supported_cpus.append(cpu) else: msg('Not generating %s configuration due to missing sysroot directory' @@ -593,17 +593,17 @@ def GetAllPlatformConfigs(build_args): for cpu in supported_cpus: if create_debug: - result['Debug_GN_' + cpu] = GetConfigArgs(args, True, cpu) - result['Release_GN_' + cpu] = GetConfigArgs(args, False, cpu) + result['Debug_GN_' + cpu] = GetConfigArgs(args, True, cpu, bypass_sysroot_check) + result['Release_GN_' + cpu] = GetConfigArgs(args, False, cpu, bypass_sysroot_check) if platform in ('windows', 'mac') and GetArgValue(args, 'is_official_build'): # Build cef_sandbox.lib with a different configuration. if create_debug: result['Debug_GN_' + cpu + '_sandbox'] = GetConfigArgsSandbox( - platform, args, True, cpu) + platform, args, True, cpu, bypass_sysroot_check) result['Release_GN_' + cpu + '_sandbox'] = GetConfigArgsSandbox( - platform, args, False, cpu) + platform, args, False, cpu, bypass_sysroot_check) return result -- 2.39.2