Make build_helpers.py work in the chromium/src superproject
The script can't find the `find_depot_tools` module if this repo is checked out under chromium/src. Bug: b:364177019 Change-Id: I75997a41e1a9732d0e9f6567b00c86784c7b4ce9 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/361680 Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> Reviewed-by: Henrik Andreassson <henrika@webrtc.org> Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org> Cr-Commit-Position: refs/heads/main@{#42954}
This commit is contained in:
parent
b2a2b1b51e
commit
3144e204ae
@ -21,6 +21,23 @@ import sys
|
|||||||
import urllib.request
|
import urllib.request
|
||||||
|
|
||||||
|
|
||||||
|
def FindRootPath():
|
||||||
|
"""Returns the absolute path to the highest level repo root.
|
||||||
|
|
||||||
|
If this repo is checked out as a submodule of the chromium/src
|
||||||
|
superproject, this returns the superproect root. Otherwise, it returns the
|
||||||
|
webrtc/src repo root.
|
||||||
|
"""
|
||||||
|
root_dir = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
while os.path.basename(root_dir) not in ('src', 'chromium'):
|
||||||
|
par_dir = os.path.normpath(os.path.join(root_dir, os.pardir))
|
||||||
|
if par_dir == root_dir:
|
||||||
|
raise RuntimeError('Could not find the repo root.')
|
||||||
|
root_dir = par_dir
|
||||||
|
return root_dir
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Skip these dependencies (list without solution name prefix).
|
# Skip these dependencies (list without solution name prefix).
|
||||||
DONT_AUTOROLL_THESE = [
|
DONT_AUTOROLL_THESE = [
|
||||||
'src/examples/androidtests/third_party/gradle',
|
'src/examples/androidtests/third_party/gradle',
|
||||||
@ -59,9 +76,8 @@ CLANG_REVISION_RE = re.compile(r'^CLANG_REVISION = \'([-0-9a-z]+)\'$')
|
|||||||
ROLL_BRANCH_NAME = 'roll_chromium_revision'
|
ROLL_BRANCH_NAME = 'roll_chromium_revision'
|
||||||
|
|
||||||
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
|
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||||
CHECKOUT_SRC_DIR = os.path.realpath(
|
CHECKOUT_ROOT_DIR = FindRootPath()
|
||||||
os.path.join(SCRIPT_DIR, os.pardir, os.pardir))
|
GCLIENT_ROOT_DIR = os.path.realpath(os.path.join(CHECKOUT_ROOT_DIR, os.pardir))
|
||||||
CHECKOUT_ROOT_DIR = os.path.realpath(os.path.join(CHECKOUT_SRC_DIR, os.pardir))
|
|
||||||
|
|
||||||
# Copied from tools/android/roll/android_deps/.../BuildConfigGenerator.groovy.
|
# Copied from tools/android/roll/android_deps/.../BuildConfigGenerator.groovy.
|
||||||
ANDROID_DEPS_START = r'=== ANDROID_DEPS Generated Code Start ==='
|
ANDROID_DEPS_START = r'=== ANDROID_DEPS Generated Code Start ==='
|
||||||
@ -71,13 +87,13 @@ ANDROID_DEPS_PATH = 'src/third_party/android_deps/'
|
|||||||
|
|
||||||
NOTIFY_EMAIL = 'webrtc-trooper@grotations.appspotmail.com'
|
NOTIFY_EMAIL = 'webrtc-trooper@grotations.appspotmail.com'
|
||||||
|
|
||||||
sys.path.append(os.path.join(CHECKOUT_SRC_DIR, 'build'))
|
sys.path.append(os.path.join(CHECKOUT_ROOT_DIR, 'build'))
|
||||||
import find_depot_tools
|
import find_depot_tools
|
||||||
|
|
||||||
find_depot_tools.add_depot_tools_to_path()
|
find_depot_tools.add_depot_tools_to_path()
|
||||||
|
|
||||||
CLANG_UPDATE_SCRIPT_URL_PATH = 'tools/clang/scripts/update.py'
|
CLANG_UPDATE_SCRIPT_URL_PATH = 'tools/clang/scripts/update.py'
|
||||||
CLANG_UPDATE_SCRIPT_LOCAL_PATH = os.path.join(CHECKOUT_SRC_DIR, 'tools',
|
CLANG_UPDATE_SCRIPT_LOCAL_PATH = os.path.join(CHECKOUT_ROOT_DIR, 'tools',
|
||||||
'clang', 'scripts', 'update.py')
|
'clang', 'scripts', 'update.py')
|
||||||
|
|
||||||
DepsEntry = collections.namedtuple('DepsEntry', 'path url revision')
|
DepsEntry = collections.namedtuple('DepsEntry', 'path url revision')
|
||||||
@ -147,7 +163,7 @@ def _RunCommand(command,
|
|||||||
Returns:
|
Returns:
|
||||||
A tuple containing the stdout and stderr outputs as strings.
|
A tuple containing the stdout and stderr outputs as strings.
|
||||||
"""
|
"""
|
||||||
working_dir = working_dir or CHECKOUT_SRC_DIR
|
working_dir = working_dir or CHECKOUT_ROOT_DIR
|
||||||
logging.debug('CMD: %s CWD: %s', ' '.join(command), working_dir)
|
logging.debug('CMD: %s CWD: %s', ' '.join(command), working_dir)
|
||||||
env = os.environ.copy()
|
env = os.environ.copy()
|
||||||
if extra_env:
|
if extra_env:
|
||||||
@ -603,7 +619,7 @@ def UpdateDepsFile(deps_filename, rev_update, changed_deps, new_cr_content):
|
|||||||
# ChangedVersionEntry types are already been processed.
|
# ChangedVersionEntry types are already been processed.
|
||||||
if isinstance(dep, ChangedVersionEntry):
|
if isinstance(dep, ChangedVersionEntry):
|
||||||
continue
|
continue
|
||||||
local_dep_dir = os.path.join(CHECKOUT_ROOT_DIR, dep.path)
|
local_dep_dir = os.path.join(GCLIENT_ROOT_DIR, dep.path)
|
||||||
if not os.path.isdir(local_dep_dir):
|
if not os.path.isdir(local_dep_dir):
|
||||||
raise RollError(
|
raise RollError(
|
||||||
'Cannot find local directory %s. Either run\n'
|
'Cannot find local directory %s. Either run\n'
|
||||||
@ -618,7 +634,7 @@ def UpdateDepsFile(deps_filename, rev_update, changed_deps, new_cr_content):
|
|||||||
else:
|
else:
|
||||||
update = '%s@%s' % (dep.path, dep.new_rev)
|
update = '%s@%s' % (dep.path, dep.new_rev)
|
||||||
_RunCommand(['gclient', 'setdep', '--revision', update],
|
_RunCommand(['gclient', 'setdep', '--revision', update],
|
||||||
working_dir=CHECKOUT_SRC_DIR)
|
working_dir=CHECKOUT_ROOT_DIR)
|
||||||
|
|
||||||
|
|
||||||
def _IsTreeClean():
|
def _IsTreeClean():
|
||||||
@ -786,7 +802,7 @@ def main():
|
|||||||
if not opts.ignore_unclean_workdir:
|
if not opts.ignore_unclean_workdir:
|
||||||
_EnsureUpdatedMainBranch(opts.dry_run)
|
_EnsureUpdatedMainBranch(opts.dry_run)
|
||||||
|
|
||||||
deps_filename = os.path.join(CHECKOUT_SRC_DIR, 'DEPS')
|
deps_filename = os.path.join(CHECKOUT_ROOT_DIR, 'DEPS')
|
||||||
webrtc_deps = ParseLocalDepsFile(deps_filename)
|
webrtc_deps = ParseLocalDepsFile(deps_filename)
|
||||||
|
|
||||||
rev_update = GetRollRevisionRanges(opts, webrtc_deps)
|
rev_update = GetRollRevisionRanges(opts, webrtc_deps)
|
||||||
|
|||||||
@ -19,9 +19,24 @@ import sys
|
|||||||
import tempfile
|
import tempfile
|
||||||
|
|
||||||
|
|
||||||
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
|
def find_root_path():
|
||||||
SRC_DIR = os.path.realpath(os.path.join(SCRIPT_DIR, os.pardir, os.pardir))
|
"""Returns the absolute path to the highest level repo root.
|
||||||
sys.path.append(os.path.join(SRC_DIR, 'build'))
|
|
||||||
|
If this repo is checked out as a submodule of the chromium/src
|
||||||
|
superproject, this returns the superproect root. Otherwise, it returns the
|
||||||
|
webrtc/src repo root.
|
||||||
|
"""
|
||||||
|
root_dir = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
while os.path.basename(root_dir) not in ('src', 'chromium'):
|
||||||
|
par_dir = os.path.normpath(os.path.join(root_dir, os.pardir))
|
||||||
|
if par_dir == root_dir:
|
||||||
|
raise RuntimeError('Could not find the repo root.')
|
||||||
|
root_dir = par_dir
|
||||||
|
return root_dir
|
||||||
|
|
||||||
|
|
||||||
|
ROOT_DIR = find_root_path()
|
||||||
|
sys.path.append(os.path.join(ROOT_DIR, 'build'))
|
||||||
import find_depot_tools
|
import find_depot_tools
|
||||||
|
|
||||||
|
|
||||||
@ -62,7 +77,7 @@ def run_gn_check(root_dir=None):
|
|||||||
def run_ninja_command(args, root_dir=None):
|
def run_ninja_command(args, root_dir=None):
|
||||||
"""Runs ninja quietly. Any failure (e.g. clang not found) is
|
"""Runs ninja quietly. Any failure (e.g. clang not found) is
|
||||||
silently discarded, since this is unlikely an error in submitted CL."""
|
silently discarded, since this is unlikely an error in submitted CL."""
|
||||||
command = [os.path.join(SRC_DIR, 'third_party', 'ninja', 'ninja')] + args
|
command = [os.path.join(ROOT_DIR, 'third_party', 'ninja', 'ninja')] + args
|
||||||
proc = subprocess.Popen(command,
|
proc = subprocess.Popen(command,
|
||||||
cwd=root_dir,
|
cwd=root_dir,
|
||||||
stdout=subprocess.PIPE,
|
stdout=subprocess.PIPE,
|
||||||
@ -75,7 +90,7 @@ def get_clang_tidy_path():
|
|||||||
"""POC/WIP! Use the one we have, even it doesn't match clang's version."""
|
"""POC/WIP! Use the one we have, even it doesn't match clang's version."""
|
||||||
tidy = ('third_party/android_toolchain/toolchains/'
|
tidy = ('third_party/android_toolchain/toolchains/'
|
||||||
'llvm/prebuilt/linux-x86_64/bin/clang-tidy')
|
'llvm/prebuilt/linux-x86_64/bin/clang-tidy')
|
||||||
return os.path.join(SRC_DIR, tidy)
|
return os.path.join(ROOT_DIR, tidy)
|
||||||
|
|
||||||
|
|
||||||
def get_compilation_db(root_dir=None):
|
def get_compilation_db(root_dir=None):
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user