Henrik Kjellander ec57e05410 Update scripts to use DEPS-pinned depot_tools
Always use gn.py in depot_tools instead of just gn.
The https://cs.chromium.org/chromium/src/build/find_depot_tools.py
is looking up the DEPS-pinned copy in third_party/depot_tools
and adds it to the path when add_depot_tools_to_path() is called.

Similar use:
 

https: //cs.chromium.org/search/?q=%22find_depot_tools.add_depot_tools_to_path()%22&sq=package:chromium&type=cs
Bug: webrtc:8393
Change-Id: I3cfa3d96b4d0f60e8099e556876bc94340b1bbb5
Reviewed-on: https://webrtc-review.googlesource.com/12540
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Reviewed-by: Patrik Höglund <phoglund@google.com>
Commit-Queue: Henrik Kjellander <kjellander@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20333}
2017-10-18 12:06:19 +00:00

52 lines
1.5 KiB
Python

# Copyright (c) 2017 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.
import os
import re
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, os.pardir))
sys.path.append(os.path.join(SRC_DIR, 'build'))
import find_depot_tools
# GN_ERROR_RE matches the summary of an error output by `gn check`.
# Matches "ERROR" and following lines until it sees an empty line or a line
# containing just underscores.
GN_ERROR_RE = re.compile(r'^ERROR .+(?:\n.*[^_\n].*$)+', re.MULTILINE)
def RunGnCheck(root_dir=None):
"""Runs `gn gen --check` with default args to detect mismatches between
#includes and dependencies in the BUILD.gn files, as well as general build
errors.
Returns a list of error summary strings.
"""
out_dir = tempfile.mkdtemp('gn')
try:
command = [
sys.executable,
os.path.join(find_depot_tools.DEPOT_TOOLS_PATH, 'gn.py'),
'gen',
'--check',
out_dir,
]
subprocess.check_output(command, cwd=root_dir)
except subprocess.CalledProcessError as err:
return GN_ERROR_RE.findall(err.output)
else:
return []
finally:
shutil.rmtree(out_dir, ignore_errors=True)