mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-13 05:40:42 +01:00

After recently changing .pylintrc (see [1]) we discovered that the presubmit check always checks all the python files when just one python file gets updated. This CL moves all these files one step closer to what the linter wants. Autogenerated with: # Added all the files under pylint control to ~/Desktop/to-reformat cat ~/Desktop/to-reformat | xargs sed -i '1i\\' git cl format --python --full This is part 1 out of 2. The second part will fix function names and will not be automated. [1] - https://webrtc-review.googlesource.com/c/src/+/186664 No-Presubmit: True Bug: webrtc:12114 Change-Id: Idfec4d759f209a2090440d0af2413a1ddc01b841 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/190980 Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org> Cr-Commit-Position: refs/heads/master@{#32530}
101 lines
3.1 KiB
Python
101 lines
3.1 KiB
Python
#!/usr/bin/env/python
|
|
|
|
# Copyright (c) 2018 The WebRTC project authors. All Rights Reserved.
|
|
#
|
|
# Use of this source code is governed by a BSD-style license
|
|
# that can be found in the LICENSE file in the root of the source
|
|
# tree. An additional intellectual property rights grant can be found
|
|
# in the file PATENTS. All contributing project authors may
|
|
# be found in the AUTHORS file in the root of the source tree.
|
|
"""
|
|
This script builds a GN executable targeting the host machine.
|
|
|
|
It is useful, for example, for mobile devices performance testing where
|
|
it makes sense to build WebRTC for a mobile platform (e.g. Android) but
|
|
part of the test is performed on the host machine (e.g. running an
|
|
executable to analyze a video downloaded from a device).
|
|
|
|
The script has only one (mandatory) option: --executable_name, which is
|
|
the output name of the GN executable. For example, if you have the
|
|
following executable in your out folder:
|
|
|
|
out/Debug/random_exec
|
|
|
|
You will be able to compile the same executable targeting your host machine
|
|
by running:
|
|
|
|
$ python tools_webrtc/executable_host_build.py --executable_name random_exec
|
|
|
|
The generated executable will have the same name as the input executable with
|
|
suffix '_host'.
|
|
|
|
This script should not be used standalone but from GN, through an action:
|
|
|
|
action("random_exec_host") {
|
|
script = "//tools_webrtc/executable_host_build.py"
|
|
outputs = [
|
|
"${root_out_dir}/random_exec_host",
|
|
]
|
|
args = [
|
|
"--executable_name",
|
|
"random_exec",
|
|
]
|
|
}
|
|
|
|
The executable for the host machine will be generated in the GN out directory
|
|
(e.g. out/Debug in the previous example).
|
|
"""
|
|
|
|
from contextlib import contextmanager
|
|
|
|
import argparse
|
|
import os
|
|
import shutil
|
|
import subprocess
|
|
import sys
|
|
import tempfile
|
|
|
|
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
|
|
SRC_DIR = os.path.normpath(os.path.join(SCRIPT_DIR, os.pardir))
|
|
sys.path.append(os.path.join(SRC_DIR, 'build'))
|
|
import find_depot_tools
|
|
|
|
|
|
def _ParseArgs():
|
|
desc = 'Generates a GN executable targeting the host machine.'
|
|
parser = argparse.ArgumentParser(description=desc)
|
|
parser.add_argument('--executable_name',
|
|
required=True,
|
|
help='Name of the executable to build')
|
|
args = parser.parse_args()
|
|
return args
|
|
|
|
|
|
@contextmanager
|
|
def HostBuildDir():
|
|
temp_dir = tempfile.mkdtemp()
|
|
try:
|
|
yield temp_dir
|
|
finally:
|
|
shutil.rmtree(temp_dir)
|
|
|
|
|
|
def _RunCommand(argv, cwd=SRC_DIR, **kwargs):
|
|
with open(os.devnull, 'w') as devnull:
|
|
subprocess.check_call(argv, cwd=cwd, stdout=devnull, **kwargs)
|
|
|
|
|
|
def DepotToolPath(*args):
|
|
return os.path.join(find_depot_tools.DEPOT_TOOLS_PATH, *args)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
ARGS = _ParseArgs()
|
|
EXECUTABLE_TO_BUILD = ARGS.executable_name
|
|
EXECUTABLE_FINAL_NAME = ARGS.executable_name + '_host'
|
|
with HostBuildDir() as build_dir:
|
|
_RunCommand([sys.executable, DepotToolPath('gn.py'), 'gen', build_dir])
|
|
_RunCommand(
|
|
[DepotToolPath('ninja'), '-C', build_dir, EXECUTABLE_TO_BUILD])
|
|
shutil.copy(os.path.join(build_dir, EXECUTABLE_TO_BUILD),
|
|
EXECUTABLE_FINAL_NAME)
|