diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /third_party/libwebrtc/build/fuchsia/common_args.py | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/libwebrtc/build/fuchsia/common_args.py')
-rw-r--r-- | third_party/libwebrtc/build/fuchsia/common_args.py | 173 |
1 files changed, 173 insertions, 0 deletions
diff --git a/third_party/libwebrtc/build/fuchsia/common_args.py b/third_party/libwebrtc/build/fuchsia/common_args.py new file mode 100644 index 0000000000..691fad67e6 --- /dev/null +++ b/third_party/libwebrtc/build/fuchsia/common_args.py @@ -0,0 +1,173 @@ +# Copyright 2018 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. + +import argparse +import importlib +import logging +import os +import sys + +from common import GetHostArchFromPlatform + +BUILTIN_TARGET_NAMES = ['aemu', 'qemu', 'device', 'fvdl'] + + +def _AddTargetSpecificationArgs(arg_parser): + """Returns a parser that handles the target type used for the test run.""" + + device_args = arg_parser.add_argument_group( + 'target', + 'Arguments specifying the Fuchsia target type. To see a list of ' + 'arguments available for a specific target type, specify the desired ' + 'target to use and add the --help flag.') + device_args.add_argument('--target-cpu', + default=GetHostArchFromPlatform(), + help='GN target_cpu setting for the build. Defaults ' + 'to the same architecture as host cpu.') + device_args.add_argument('--device', + default=None, + choices=BUILTIN_TARGET_NAMES + ['custom'], + help='Choose to run on aemu|qemu|device. ' + 'By default, Fuchsia will run on AEMU on x64 ' + 'hosts and QEMU on arm64 hosts. Alternatively, ' + 'setting to custom will require specifying the ' + 'subclass of Target class used via the ' + '--custom-device-target flag.') + device_args.add_argument('-d', + action='store_const', + dest='device', + const='device', + help='Run on device instead of emulator.') + device_args.add_argument('--custom-device-target', + default=None, + help='Specify path to file that contains the ' + 'subclass of Target that will be used. Only ' + 'needed if device specific operations such as ' + 'paving is required.') + + +def _GetPathToBuiltinTarget(target_name): + return '%s_target' % target_name + + +def _LoadTargetClass(target_path): + try: + loaded_target = importlib.import_module(target_path) + except ImportError: + logging.error( + 'Cannot import from %s. Make sure that --custom-device-target ' + 'is pointing to a file containing a target ' + 'module.' % target_path) + raise + return loaded_target.GetTargetType() + + +def AddCommonArgs(arg_parser): + """Adds command line arguments to |arg_parser| for options which are shared + across test and executable target types. + + Args: + arg_parser: an ArgumentParser object.""" + + common_args = arg_parser.add_argument_group('common', 'Common arguments') + common_args.add_argument('--runner-logs-dir', + help='Directory to write test runner logs to.') + common_args.add_argument('--exclude-system-logs', + action='store_false', + dest='include_system_logs', + help='Do not show system log data.') + common_args.add_argument('--verbose', + '-v', + default=False, + action='store_true', + help='Enable debug-level logging.') + common_args.add_argument( + '--out-dir', + type=os.path.realpath, + help=('Path to the directory in which build files are located. ' + 'Defaults to current directory.')) + common_args.add_argument('--system-log-file', + help='File to write system logs to. Specify ' + '\'-\' to log to stdout.') + common_args.add_argument('--fuchsia-out-dir', + help='Path to a Fuchsia build output directory. ' + 'Setting the GN arg ' + '"default_fuchsia_build_dir_for_installation" ' + 'will cause it to be passed here.') + + package_args = arg_parser.add_argument_group('package', 'Fuchsia Packages') + package_args.add_argument( + '--package', + action='append', + help='Paths of the packages to install, including ' + 'all dependencies.') + package_args.add_argument( + '--package-name', + help='Name of the package to execute, defined in ' + 'package metadata.') + + emu_args = arg_parser.add_argument_group('emu', 'General emulator arguments') + emu_args.add_argument('--cpu-cores', + type=int, + default=4, + help='Sets the number of CPU cores to provide.') + emu_args.add_argument('--ram-size-mb', + type=int, + default=8192, + help='Sets the emulated RAM size (MB).'), + emu_args.add_argument('--allow-no-kvm', + action='store_false', + dest='require_kvm', + default=True, + help='Do not require KVM acceleration for ' + 'emulators.') + + +# Register the arguments for all known target types and the optional custom +# target type (specified on the commandline). +def AddTargetSpecificArgs(arg_parser): + # Parse the minimal set of arguments to determine if custom targets need to + # be loaded so that their arguments can be registered. + target_spec_parser = argparse.ArgumentParser(add_help=False) + _AddTargetSpecificationArgs(target_spec_parser) + target_spec_args, _ = target_spec_parser.parse_known_args() + _AddTargetSpecificationArgs(arg_parser) + + for target in BUILTIN_TARGET_NAMES: + _LoadTargetClass(_GetPathToBuiltinTarget(target)).RegisterArgs(arg_parser) + if target_spec_args.custom_device_target: + _LoadTargetClass( + target_spec_args.custom_device_target).RegisterArgs(arg_parser) + + +def ConfigureLogging(args): + """Configures the logging level based on command line |args|.""" + + logging.basicConfig(level=(logging.DEBUG if args.verbose else logging.INFO), + format='%(asctime)s:%(levelname)s:%(name)s:%(message)s') + + # The test server spawner is too noisy with INFO level logging, so tweak + # its verbosity a bit by adjusting its logging level. + logging.getLogger('chrome_test_server_spawner').setLevel( + logging.DEBUG if args.verbose else logging.WARN) + + # Verbose SCP output can be useful at times but oftentimes is just too noisy. + # Only enable it if -vv is passed. + logging.getLogger('ssh').setLevel( + logging.DEBUG if args.verbose else logging.WARN) + + +def GetDeploymentTargetForArgs(args): + """Constructs a deployment target object using command line arguments. + If needed, an additional_args dict can be used to supplement the + command line arguments.""" + + if args.device == 'custom': + return _LoadTargetClass(args.custom_device_target).CreateFromArgs(args) + + if args.device: + device = args.device + else: + device = 'aemu' if args.target_cpu == 'x64' else 'qemu' + + return _LoadTargetClass(_GetPathToBuiltinTarget(device)).CreateFromArgs(args) |