mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-15 14:50:39 +01:00
Remove third_party from DEPS file to prepare to check it into webrtc.
Remove third_party from DEPS and modify autoroller script to check chromium third_party directly into webrtc repo. Change-Id: Ib0b77fc414116babc193b2289a5e9c3256daf566 No-Presubmit: True Bug: webrtc:8366 Reviewed-on: https://webrtc-review.googlesource.com/73801 Reviewed-by: Karl Wiberg <kwiberg@webrtc.org> Reviewed-by: Patrik Höglund <phoglund@google.com> Reviewed-by: Patrik Höglund <phoglund@webrtc.org> Cr-Commit-Position: refs/heads/master@{#23204}
This commit is contained in:
parent
5c7efe7fe8
commit
a04d140666
16 changed files with 732 additions and 81 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -45,7 +45,7 @@
|
||||||
/mojo
|
/mojo
|
||||||
/out
|
/out
|
||||||
/testing
|
/testing
|
||||||
/third_party
|
/third_party_chromium
|
||||||
/tools
|
/tools
|
||||||
/tools_webrtc/android/profiling/flamegraph
|
/tools_webrtc/android/profiling/flamegraph
|
||||||
/tools_webrtc/android/profiling/simpleperf
|
/tools_webrtc/android/profiling/simpleperf
|
||||||
|
|
14
DEPS
14
DEPS
|
@ -2,6 +2,9 @@
|
||||||
|
|
||||||
vars = {
|
vars = {
|
||||||
'chromium_git': 'https://chromium.googlesource.com',
|
'chromium_git': 'https://chromium.googlesource.com',
|
||||||
|
# Used by the WebRTC DEPS autoroller to update third_party/. If you need to run autoroller localy,
|
||||||
|
# you can set it via custom_vars section in the .gclient file.
|
||||||
|
'roll_chromium_into_webrtc': False,
|
||||||
# By default, we should check out everything needed to run on the main
|
# By default, we should check out everything needed to run on the main
|
||||||
# chromium waterfalls. More info at: crbug.com/570091.
|
# chromium waterfalls. More info at: crbug.com/570091.
|
||||||
'checkout_configuration': 'default',
|
'checkout_configuration': 'default',
|
||||||
|
@ -37,6 +40,10 @@ vars = {
|
||||||
# the commit queue can handle CLs rolling HarfBuzz
|
# the commit queue can handle CLs rolling HarfBuzz
|
||||||
# and whatever else without interference from each other.
|
# and whatever else without interference from each other.
|
||||||
'harfbuzz_revision': '957e7756634a4fdf1654041e20e883cf964ecac9',
|
'harfbuzz_revision': '957e7756634a4fdf1654041e20e883cf964ecac9',
|
||||||
|
# Three lines of non-changing comments so that
|
||||||
|
# the commit queue can handle CLs rolling Chromium third_party
|
||||||
|
# and whatever else without interference from each other.
|
||||||
|
'chromium_third_party_revision': '4e16929f465a47942875a80da0140bfaa59e99fb',
|
||||||
}
|
}
|
||||||
deps = {
|
deps = {
|
||||||
# TODO(kjellander): Move this to be Android-only once the libevent dependency
|
# TODO(kjellander): Move this to be Android-only once the libevent dependency
|
||||||
|
@ -59,8 +66,11 @@ deps = {
|
||||||
},
|
},
|
||||||
'src/testing':
|
'src/testing':
|
||||||
Var('chromium_git') + '/chromium/src/testing' + '@' + '519bd6bd8883f17137857e86cc73491d39415057',
|
Var('chromium_git') + '/chromium/src/testing' + '@' + '519bd6bd8883f17137857e86cc73491d39415057',
|
||||||
'src/third_party':
|
# This entry is used for chromium third_party rolling into webrtc third_party only.
|
||||||
Var('chromium_git') + '/chromium/src/third_party' + '@' + '332e6754f377ca77a48eeeb139ee8d1c2f3ca739',
|
'src/third_party_chromium': {
|
||||||
|
'url': Var('chromium_git') + '/chromium/src/third_party' + '@' + Var('chromium_third_party_revision'),
|
||||||
|
'condition': 'roll_chromium_into_webrtc',
|
||||||
|
},
|
||||||
'src/third_party/android_ndk': {
|
'src/third_party/android_ndk': {
|
||||||
'url': Var('chromium_git') + '/android_ndk.git' + '@' + '5cd86312e794bdf542a3685c6f10cbb96072990b',
|
'url': Var('chromium_git') + '/android_ndk.git' + '@' + '5cd86312e794bdf542a3685c6f10cbb96072990b',
|
||||||
'condition': 'checkout_android',
|
'condition': 'checkout_android',
|
||||||
|
|
111
PRESUBMIT.py
111
PRESUBMIT.py
|
@ -40,6 +40,7 @@ CPPLINT_BLACKLIST = [
|
||||||
'test',
|
'test',
|
||||||
'tools_webrtc',
|
'tools_webrtc',
|
||||||
'voice_engine',
|
'voice_engine',
|
||||||
|
'third_party',
|
||||||
]
|
]
|
||||||
|
|
||||||
# These filters will always be removed, even if the caller specifies a filter
|
# These filters will always be removed, even if the caller specifies a filter
|
||||||
|
@ -180,12 +181,15 @@ def CheckNativeApiHeaderChanges(input_api, output_api):
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
|
||||||
def CheckNoIOStreamInHeaders(input_api, output_api):
|
def CheckNoIOStreamInHeaders(input_api, output_api,
|
||||||
|
source_file_filter):
|
||||||
"""Checks to make sure no .h files include <iostream>."""
|
"""Checks to make sure no .h files include <iostream>."""
|
||||||
files = []
|
files = []
|
||||||
pattern = input_api.re.compile(r'^#include\s*<iostream>',
|
pattern = input_api.re.compile(r'^#include\s*<iostream>',
|
||||||
input_api.re.MULTILINE)
|
input_api.re.MULTILINE)
|
||||||
for f in input_api.AffectedSourceFiles(input_api.FilterSourceFile):
|
file_filter = lambda x: (input_api.FilterSourceFile(x)
|
||||||
|
and source_file_filter(x))
|
||||||
|
for f in input_api.AffectedSourceFiles(file_filter):
|
||||||
if not f.LocalPath().endswith('.h'):
|
if not f.LocalPath().endswith('.h'):
|
||||||
continue
|
continue
|
||||||
contents = input_api.ReadFile(f)
|
contents = input_api.ReadFile(f)
|
||||||
|
@ -201,12 +205,15 @@ def CheckNoIOStreamInHeaders(input_api, output_api):
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
|
||||||
def CheckNoPragmaOnce(input_api, output_api):
|
def CheckNoPragmaOnce(input_api, output_api,
|
||||||
|
source_file_filter):
|
||||||
"""Make sure that banned functions are not used."""
|
"""Make sure that banned functions are not used."""
|
||||||
files = []
|
files = []
|
||||||
pattern = input_api.re.compile(r'^#pragma\s+once',
|
pattern = input_api.re.compile(r'^#pragma\s+once',
|
||||||
input_api.re.MULTILINE)
|
input_api.re.MULTILINE)
|
||||||
for f in input_api.AffectedSourceFiles(input_api.FilterSourceFile):
|
file_filter = lambda x: (input_api.FilterSourceFile(x)
|
||||||
|
and source_file_filter(x))
|
||||||
|
for f in input_api.AffectedSourceFiles(file_filter):
|
||||||
if not f.LocalPath().endswith('.h'):
|
if not f.LocalPath().endswith('.h'):
|
||||||
continue
|
continue
|
||||||
contents = input_api.ReadFile(f)
|
contents = input_api.ReadFile(f)
|
||||||
|
@ -221,13 +228,15 @@ def CheckNoPragmaOnce(input_api, output_api):
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
|
||||||
def CheckNoFRIEND_TEST(input_api, output_api): # pylint: disable=invalid-name
|
def CheckNoFRIEND_TEST(input_api, output_api, # pylint: disable=invalid-name
|
||||||
|
source_file_filter):
|
||||||
"""Make sure that gtest's FRIEND_TEST() macro is not used, the
|
"""Make sure that gtest's FRIEND_TEST() macro is not used, the
|
||||||
FRIEND_TEST_ALL_PREFIXES() macro from testsupport/gtest_prod_util.h should be
|
FRIEND_TEST_ALL_PREFIXES() macro from testsupport/gtest_prod_util.h should be
|
||||||
used instead since that allows for FLAKY_, FAILS_ and DISABLED_ prefixes."""
|
used instead since that allows for FLAKY_, FAILS_ and DISABLED_ prefixes."""
|
||||||
problems = []
|
problems = []
|
||||||
|
|
||||||
file_filter = lambda f: f.LocalPath().endswith(('.cc', '.h'))
|
file_filter = lambda f: (f.LocalPath().endswith(('.cc', '.h'))
|
||||||
|
and source_file_filter(f))
|
||||||
for f in input_api.AffectedFiles(file_filter=file_filter):
|
for f in input_api.AffectedFiles(file_filter=file_filter):
|
||||||
for line_num, line in f.ChangedContents():
|
for line_num, line in f.ChangedContents():
|
||||||
if 'FRIEND_TEST(' in line:
|
if 'FRIEND_TEST(' in line:
|
||||||
|
@ -408,7 +417,8 @@ def _ReportErrorFileAndLineNumber(filename, line_num):
|
||||||
|
|
||||||
|
|
||||||
def CheckNoStreamUsageIsAdded(input_api, output_api,
|
def CheckNoStreamUsageIsAdded(input_api, output_api,
|
||||||
error_formatter=_ReportErrorFileAndLineNumber):
|
error_formatter=_ReportErrorFileAndLineNumber,
|
||||||
|
source_file_filter):
|
||||||
"""Make sure that no more dependencies on stringstream are added."""
|
"""Make sure that no more dependencies on stringstream are added."""
|
||||||
error_msg = ('Usage of <sstream>, <istream> and <ostream> in WebRTC is '
|
error_msg = ('Usage of <sstream>, <istream> and <ostream> in WebRTC is '
|
||||||
'deprecated.\n'
|
'deprecated.\n'
|
||||||
|
@ -433,7 +443,9 @@ def CheckNoStreamUsageIsAdded(input_api, output_api,
|
||||||
usage_re = input_api.re.compile(r'std::(w|i|o|io|wi|wo|wio)(string)*stream')
|
usage_re = input_api.re.compile(r'std::(w|i|o|io|wi|wo|wio)(string)*stream')
|
||||||
no_presubmit_re = input_api.re.compile(
|
no_presubmit_re = input_api.re.compile(
|
||||||
r'// no-presubmit-check TODO\(webrtc:8982\)')
|
r'// no-presubmit-check TODO\(webrtc:8982\)')
|
||||||
for f in input_api.AffectedSourceFiles(input_api.FilterSourceFile):
|
file_filter = lambda x: (input_api.FilterSourceFile(x)
|
||||||
|
and source_file_filter(x))
|
||||||
|
for f in input_api.AffectedSourceFiles(file_filter):
|
||||||
if f.LocalPath() == 'PRESUBMIT.py':
|
if f.LocalPath() == 'PRESUBMIT.py':
|
||||||
continue
|
continue
|
||||||
for line_num, line in f.ChangedContents():
|
for line_num, line in f.ChangedContents():
|
||||||
|
@ -482,13 +494,14 @@ def CheckCheckIncludesIsNotUsed(gn_files, output_api):
|
||||||
line_number)))
|
line_number)))
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def CheckGnChanges(input_api, output_api):
|
def CheckGnChanges(input_api, output_api, source_file_filter):
|
||||||
source_file_filter = lambda x: input_api.FilterSourceFile(
|
file_filter = lambda x: (input_api.FilterSourceFile(
|
||||||
x, white_list=(r'.+\.(gn|gni)$',),
|
x, white_list=(r'.+\.(gn|gni)$',),
|
||||||
black_list=(r'.*/presubmit_checks_lib/testdata/.*',))
|
black_list=(r'.*/presubmit_checks_lib/testdata/.*',))
|
||||||
|
and source_file_filter(x))
|
||||||
|
|
||||||
gn_files = []
|
gn_files = []
|
||||||
for f in input_api.AffectedSourceFiles(source_file_filter):
|
for f in input_api.AffectedSourceFiles(file_filter):
|
||||||
gn_files.append(f)
|
gn_files.append(f)
|
||||||
|
|
||||||
result = []
|
result = []
|
||||||
|
@ -517,7 +530,7 @@ def CheckGnGen(input_api, output_api):
|
||||||
long_text='\n\n'.join(errors))]
|
long_text='\n\n'.join(errors))]
|
||||||
return []
|
return []
|
||||||
|
|
||||||
def CheckUnwantedDependencies(input_api, output_api):
|
def CheckUnwantedDependencies(input_api, output_api, source_file_filter):
|
||||||
"""Runs checkdeps on #include statements added in this
|
"""Runs checkdeps on #include statements added in this
|
||||||
change. Breaking - rules is an error, breaking ! rules is a
|
change. Breaking - rules is an error, breaking ! rules is a
|
||||||
warning.
|
warning.
|
||||||
|
@ -539,7 +552,7 @@ def CheckUnwantedDependencies(input_api, output_api):
|
||||||
from rules import Rule
|
from rules import Rule
|
||||||
|
|
||||||
added_includes = []
|
added_includes = []
|
||||||
for f in input_api.AffectedFiles():
|
for f in input_api.AffectedFiles(file_filter=source_file_filter):
|
||||||
if not CppChecker.IsCppFile(f.LocalPath()):
|
if not CppChecker.IsCppFile(f.LocalPath()):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
@ -620,11 +633,12 @@ def CheckChangeHasBugField(input_api, output_api):
|
||||||
' * https://bugs.webrtc.org - reference it using Bug: webrtc:XXXX\n'
|
' * https://bugs.webrtc.org - reference it using Bug: webrtc:XXXX\n'
|
||||||
' * https://crbug.com - reference it using Bug: chromium:XXXXXX')]
|
' * https://crbug.com - reference it using Bug: chromium:XXXXXX')]
|
||||||
|
|
||||||
def CheckJSONParseErrors(input_api, output_api):
|
def CheckJSONParseErrors(input_api, output_api, source_file_filter):
|
||||||
"""Check that JSON files do not contain syntax errors."""
|
"""Check that JSON files do not contain syntax errors."""
|
||||||
|
|
||||||
def FilterFile(affected_file):
|
def FilterFile(affected_file):
|
||||||
return input_api.os_path.splitext(affected_file.LocalPath())[1] == '.json'
|
return (input_api.os_path.splitext(affected_file.LocalPath())[1] == '.json'
|
||||||
|
and source_file_filter(affected_file))
|
||||||
|
|
||||||
def GetJSONParseError(input_api, filename):
|
def GetJSONParseError(input_api, filename):
|
||||||
try:
|
try:
|
||||||
|
@ -670,12 +684,15 @@ def RunPythonTests(input_api, output_api):
|
||||||
return input_api.RunTests(tests, parallel=True)
|
return input_api.RunTests(tests, parallel=True)
|
||||||
|
|
||||||
|
|
||||||
def CheckUsageOfGoogleProtobufNamespace(input_api, output_api):
|
def CheckUsageOfGoogleProtobufNamespace(input_api, output_api,
|
||||||
|
source_file_filter):
|
||||||
"""Checks that the namespace google::protobuf has not been used."""
|
"""Checks that the namespace google::protobuf has not been used."""
|
||||||
files = []
|
files = []
|
||||||
pattern = input_api.re.compile(r'google::protobuf')
|
pattern = input_api.re.compile(r'google::protobuf')
|
||||||
proto_utils_path = os.path.join('rtc_base', 'protobuf_utils.h')
|
proto_utils_path = os.path.join('rtc_base', 'protobuf_utils.h')
|
||||||
for f in input_api.AffectedSourceFiles(input_api.FilterSourceFile):
|
file_filter = lambda x: (input_api.FilterSourceFile(x)
|
||||||
|
and source_file_filter(x))
|
||||||
|
for f in input_api.AffectedSourceFiles(file_filter):
|
||||||
if f.LocalPath() in [proto_utils_path, 'PRESUBMIT.py']:
|
if f.LocalPath() in [proto_utils_path, 'PRESUBMIT.py']:
|
||||||
continue
|
continue
|
||||||
contents = input_api.ReadFile(f)
|
contents = input_api.ReadFile(f)
|
||||||
|
@ -752,8 +769,11 @@ def CommonChecks(input_api, output_api):
|
||||||
objc_filter_list = (r'.+\.m$', r'.+\.mm$', r'.+objc\/.+\.h$')
|
objc_filter_list = (r'.+\.m$', r'.+\.mm$', r'.+objc\/.+\.h$')
|
||||||
# Skip long-lines check for DEPS and GN files.
|
# Skip long-lines check for DEPS and GN files.
|
||||||
build_file_filter_list = (r'.+\.gn$', r'.+\.gni$', 'DEPS')
|
build_file_filter_list = (r'.+\.gn$', r'.+\.gni$', 'DEPS')
|
||||||
|
# Also we will skip most checks for third_party directory.
|
||||||
|
third_party_filter_list = (r'^third_party[\\\/].+',)
|
||||||
eighty_char_sources = lambda x: input_api.FilterSourceFile(x,
|
eighty_char_sources = lambda x: input_api.FilterSourceFile(x,
|
||||||
black_list=build_file_filter_list + objc_filter_list)
|
black_list=build_file_filter_list + objc_filter_list +
|
||||||
|
third_party_filter_list)
|
||||||
hundred_char_sources = lambda x: input_api.FilterSourceFile(x,
|
hundred_char_sources = lambda x: input_api.FilterSourceFile(x,
|
||||||
white_list=objc_filter_list)
|
white_list=objc_filter_list)
|
||||||
results.extend(input_api.canned_checks.CheckLongLines(
|
results.extend(input_api.canned_checks.CheckLongLines(
|
||||||
|
@ -762,26 +782,38 @@ def CommonChecks(input_api, output_api):
|
||||||
input_api, output_api, maxlen=100,
|
input_api, output_api, maxlen=100,
|
||||||
source_file_filter=hundred_char_sources))
|
source_file_filter=hundred_char_sources))
|
||||||
|
|
||||||
|
non_third_party_sources = lambda x: input_api.FilterSourceFile(x,
|
||||||
|
black_list=third_party_filter_list)
|
||||||
results.extend(input_api.canned_checks.CheckChangeHasNoTabs(
|
results.extend(input_api.canned_checks.CheckChangeHasNoTabs(
|
||||||
input_api, output_api))
|
input_api, output_api, source_file_filter=non_third_party_sources))
|
||||||
results.extend(input_api.canned_checks.CheckChangeHasNoStrayWhitespace(
|
results.extend(input_api.canned_checks.CheckChangeHasNoStrayWhitespace(
|
||||||
input_api, output_api))
|
input_api, output_api, source_file_filter=non_third_party_sources))
|
||||||
results.extend(input_api.canned_checks.CheckAuthorizedAuthor(
|
results.extend(input_api.canned_checks.CheckAuthorizedAuthor(
|
||||||
input_api, output_api))
|
input_api, output_api))
|
||||||
results.extend(input_api.canned_checks.CheckChangeTodoHasOwner(
|
results.extend(input_api.canned_checks.CheckChangeTodoHasOwner(
|
||||||
input_api, output_api))
|
input_api, output_api, source_file_filter=non_third_party_sources))
|
||||||
results.extend(CheckNativeApiHeaderChanges(input_api, output_api))
|
results.extend(CheckNativeApiHeaderChanges(input_api, output_api))
|
||||||
results.extend(CheckNoIOStreamInHeaders(input_api, output_api))
|
results.extend(CheckNoIOStreamInHeaders(
|
||||||
results.extend(CheckNoPragmaOnce(input_api, output_api))
|
input_api, output_api, source_file_filter=non_third_party_sources))
|
||||||
results.extend(CheckNoFRIEND_TEST(input_api, output_api))
|
results.extend(CheckNoPragmaOnce(
|
||||||
results.extend(CheckGnChanges(input_api, output_api))
|
input_api, output_api, source_file_filter=non_third_party_sources))
|
||||||
results.extend(CheckUnwantedDependencies(input_api, output_api))
|
results.extend(CheckNoFRIEND_TEST(
|
||||||
results.extend(CheckJSONParseErrors(input_api, output_api))
|
input_api, output_api, source_file_filter=non_third_party_sources))
|
||||||
|
results.extend(CheckGnChanges(
|
||||||
|
input_api, output_api, source_file_filter=non_third_party_sources))
|
||||||
|
results.extend(CheckUnwantedDependencies(
|
||||||
|
input_api, output_api, source_file_filter=non_third_party_sources))
|
||||||
|
results.extend(CheckJSONParseErrors(
|
||||||
|
input_api, output_api, source_file_filter=non_third_party_sources))
|
||||||
results.extend(RunPythonTests(input_api, output_api))
|
results.extend(RunPythonTests(input_api, output_api))
|
||||||
results.extend(CheckUsageOfGoogleProtobufNamespace(input_api, output_api))
|
results.extend(CheckUsageOfGoogleProtobufNamespace(
|
||||||
results.extend(CheckOrphanHeaders(input_api, output_api))
|
input_api, output_api, source_file_filter=non_third_party_sources))
|
||||||
results.extend(CheckNewlineAtTheEndOfProtoFiles(input_api, output_api))
|
results.extend(CheckOrphanHeaders(
|
||||||
results.extend(CheckNoStreamUsageIsAdded(input_api, output_api))
|
input_api, output_api, source_file_filter=non_third_party_sources))
|
||||||
|
results.extend(CheckNewlineAtTheEndOfProtoFiles(
|
||||||
|
input_api, output_api, source_file_filter=non_third_party_sources))
|
||||||
|
results.extend(CheckNoStreamUsageIsAdded(
|
||||||
|
input_api, output_api, source_file_filter=non_third_party_sources))
|
||||||
return results
|
return results
|
||||||
|
|
||||||
|
|
||||||
|
@ -811,7 +843,7 @@ def CheckChangeOnCommit(input_api, output_api):
|
||||||
return results
|
return results
|
||||||
|
|
||||||
|
|
||||||
def CheckOrphanHeaders(input_api, output_api):
|
def CheckOrphanHeaders(input_api, output_api, source_file_filter):
|
||||||
# We need to wait until we have an input_api object and use this
|
# We need to wait until we have an input_api object and use this
|
||||||
# roundabout construct to import prebubmit_checks_lib because this file is
|
# roundabout construct to import prebubmit_checks_lib because this file is
|
||||||
# eval-ed and thus doesn't have __file__.
|
# eval-ed and thus doesn't have __file__.
|
||||||
|
@ -825,9 +857,9 @@ def CheckOrphanHeaders(input_api, output_api):
|
||||||
from check_orphan_headers import GetBuildGnPathFromFilePath
|
from check_orphan_headers import GetBuildGnPathFromFilePath
|
||||||
from check_orphan_headers import IsHeaderInBuildGn
|
from check_orphan_headers import IsHeaderInBuildGn
|
||||||
|
|
||||||
source_file_filter = lambda x: input_api.FilterSourceFile(
|
file_filter = lambda x: input_api.FilterSourceFile(
|
||||||
x, black_list=orphan_blacklist)
|
x, black_list=orphan_blacklist) and source_file_filter(x)
|
||||||
for f in input_api.AffectedSourceFiles(source_file_filter):
|
for f in input_api.AffectedSourceFiles(file_filter):
|
||||||
if f.LocalPath().endswith('.h'):
|
if f.LocalPath().endswith('.h'):
|
||||||
file_path = os.path.abspath(f.LocalPath())
|
file_path = os.path.abspath(f.LocalPath())
|
||||||
root_dir = os.getcwd()
|
root_dir = os.getcwd()
|
||||||
|
@ -840,13 +872,14 @@ def CheckOrphanHeaders(input_api, output_api):
|
||||||
return results
|
return results
|
||||||
|
|
||||||
|
|
||||||
def CheckNewlineAtTheEndOfProtoFiles(input_api, output_api):
|
def CheckNewlineAtTheEndOfProtoFiles(input_api, output_api,
|
||||||
|
source_file_filter):
|
||||||
"""Checks that all .proto files are terminated with a newline."""
|
"""Checks that all .proto files are terminated with a newline."""
|
||||||
error_msg = 'File {} must end with exactly one newline.'
|
error_msg = 'File {} must end with exactly one newline.'
|
||||||
results = []
|
results = []
|
||||||
source_file_filter = lambda x: input_api.FilterSourceFile(
|
file_filter = lambda x: input_api.FilterSourceFile(
|
||||||
x, white_list=(r'.+\.proto$',))
|
x, white_list=(r'.+\.proto$',)) and source_file_filter(x)
|
||||||
for f in input_api.AffectedSourceFiles(source_file_filter):
|
for f in input_api.AffectedSourceFiles(file_filter):
|
||||||
file_path = f.LocalPath()
|
file_path = f.LocalPath()
|
||||||
with open(file_path) as f:
|
with open(file_path) as f:
|
||||||
lines = f.readlines()
|
lines = f.readlines()
|
||||||
|
|
97
THIRD_PARTY_DEPS
Normal file
97
THIRD_PARTY_DEPS
Normal file
|
@ -0,0 +1,97 @@
|
||||||
|
DEPS = [
|
||||||
|
# Common
|
||||||
|
'binutils',
|
||||||
|
'boringssl',
|
||||||
|
'ced',
|
||||||
|
'freetype',
|
||||||
|
'googletest',
|
||||||
|
'harfbuzz-ng',
|
||||||
|
'instrumented_libraries',
|
||||||
|
'jsoncpp',
|
||||||
|
'libFuzzer',
|
||||||
|
'libpng',
|
||||||
|
'libvpx',
|
||||||
|
'mockito',
|
||||||
|
'openh264',
|
||||||
|
'opus',
|
||||||
|
'protobuf',
|
||||||
|
'requests',
|
||||||
|
'rnnoise',
|
||||||
|
'usrsctp',
|
||||||
|
'yasm',
|
||||||
|
'zlib',
|
||||||
|
'colorama',
|
||||||
|
|
||||||
|
# These common deps will be synced by gclient:
|
||||||
|
#'depot_tools',
|
||||||
|
#'ffmpeg',
|
||||||
|
#'icu',
|
||||||
|
#'libjpeg_turbo',
|
||||||
|
#'libsrtp',
|
||||||
|
#'libyuv',
|
||||||
|
#'llvm-build',
|
||||||
|
#'lss',
|
||||||
|
#'openmax_dl',
|
||||||
|
#'catapult',
|
||||||
|
#'gtest-parallel',
|
||||||
|
|
||||||
|
# Windows specific deps will be synced by gclient:
|
||||||
|
#'syzygy',
|
||||||
|
#'winsdk_samples',
|
||||||
|
|
||||||
|
# Android specific deps
|
||||||
|
# compile time deps
|
||||||
|
'accessibility_test_framework',
|
||||||
|
'android_platform',
|
||||||
|
'android_support_test_runner',
|
||||||
|
'apk-patch-size-estimator',
|
||||||
|
'ashmem',
|
||||||
|
'auto',
|
||||||
|
'bazel',
|
||||||
|
'bouncycastle',
|
||||||
|
'breakpad',
|
||||||
|
'byte_buddy',
|
||||||
|
'closure_compiler',
|
||||||
|
'errorprone',
|
||||||
|
'espresso',
|
||||||
|
'eu-strip',
|
||||||
|
'gson',
|
||||||
|
'guava',
|
||||||
|
'hamcrest',
|
||||||
|
'icu4j',
|
||||||
|
'ijar',
|
||||||
|
'intellij',
|
||||||
|
'javax_inject',
|
||||||
|
'jinja2',
|
||||||
|
'jsr-305',
|
||||||
|
'junit',
|
||||||
|
'libxml',
|
||||||
|
'markupsafe',
|
||||||
|
'modp_b64',
|
||||||
|
'objenesis',
|
||||||
|
'ow2_asm',
|
||||||
|
'robolectric',
|
||||||
|
'sqlite4java',
|
||||||
|
'tcmalloc',
|
||||||
|
'ub-uiautomator',
|
||||||
|
'xstream',
|
||||||
|
# test time deps
|
||||||
|
'proguard',
|
||||||
|
|
||||||
|
'android_system_sdk',
|
||||||
|
# These Android specific deps will be synced by gclient:
|
||||||
|
#'android_ndk',
|
||||||
|
#'android_tools',
|
||||||
|
#'findbugs',
|
||||||
|
|
||||||
|
# Mac and iOS specific deps
|
||||||
|
'ocmock',
|
||||||
|
|
||||||
|
# List of files to sync
|
||||||
|
'BUILD.gn',
|
||||||
|
'DEPS',
|
||||||
|
'libjpeg.gni',
|
||||||
|
'PRESUBMIT.py',
|
||||||
|
'README.chromium',
|
||||||
|
'README.chromium.template',
|
||||||
|
]
|
64
third_party/.gitignore
vendored
Normal file
64
third_party/.gitignore
vendored
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
# mirror in DEPS. Without it, a lot is wiped and re-downloaded for each sync.
|
||||||
|
/findbugs/
|
||||||
|
/gtest-parallel/
|
||||||
|
/winsdk_samples/
|
||||||
|
/accessibility_test_framework/lib/
|
||||||
|
/android_ndk/
|
||||||
|
/android_protobuf/src
|
||||||
|
/android_support_test_runner/lib/
|
||||||
|
/android_tools/
|
||||||
|
/android_tools_internal/
|
||||||
|
/apk-patch-size-estimator/lib/
|
||||||
|
/auto/src
|
||||||
|
/bazel/desugar/Desugar.jar
|
||||||
|
/boringssl/src
|
||||||
|
/bouncycastle/lib/
|
||||||
|
/byte_buddy/lib/
|
||||||
|
/catapult
|
||||||
|
/ced/src
|
||||||
|
/colorama/src
|
||||||
|
/depot_tools
|
||||||
|
/errorprone/lib
|
||||||
|
/espresso/lib/
|
||||||
|
/ffmpeg
|
||||||
|
/freetype/src
|
||||||
|
/gnu_binutils/
|
||||||
|
/googletest/src
|
||||||
|
/gson/lib/
|
||||||
|
/guava/lib/
|
||||||
|
/hamcrest/lib/
|
||||||
|
/harfbuzz-ng/src
|
||||||
|
/icu
|
||||||
|
/icu4j/lib/
|
||||||
|
/intellij/lib/
|
||||||
|
/instrumented_libraries/scripts/*.tgz
|
||||||
|
/instrumented_libraries/scripts/out/*
|
||||||
|
/javax_inject/lib/
|
||||||
|
/jsoncpp/source
|
||||||
|
/jsr-305/src
|
||||||
|
/junit/src
|
||||||
|
/libFuzzer/src
|
||||||
|
/libprotobuf-mutator/src
|
||||||
|
/libjpeg_turbo
|
||||||
|
/libsrtp
|
||||||
|
/libvpx/source/libvpx
|
||||||
|
/libyuv
|
||||||
|
/llvm-build
|
||||||
|
/llvm-build-tools
|
||||||
|
/lss
|
||||||
|
/mockito/src
|
||||||
|
/objenesis/lib/
|
||||||
|
/openmax_dl/
|
||||||
|
/openh264/src
|
||||||
|
/ow2_asm/lib/
|
||||||
|
/requests/src
|
||||||
|
/robolectric/lib/
|
||||||
|
/robolectric/robolectric
|
||||||
|
/sqlite4java/lib/
|
||||||
|
/ub-uiautomator/lib
|
||||||
|
/usrsctp/usrsctplib
|
||||||
|
/xstream/lib/
|
||||||
|
/yasm/binaries
|
||||||
|
/yasm/generate_files.xml
|
||||||
|
/yasm/source/patched-yasm
|
||||||
|
/yasm/yasm.xml
|
7
third_party/OWNERS
vendored
Normal file
7
third_party/OWNERS
vendored
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
phoglund@webrtc.org
|
||||||
|
titovartem@webrtc.org
|
||||||
|
buildbot@webrtc.org
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
per-file .gitignore=*
|
8
third_party/binutils/.gitignore
vendored
Normal file
8
third_party/binutils/.gitignore
vendored
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
binutils-*
|
||||||
|
*-chroot-*
|
||||||
|
output-*
|
||||||
|
Linux_ia32/*stamp*
|
||||||
|
Linux_ia32/*tar.bz2
|
||||||
|
Linux_x64/*stamp*
|
||||||
|
Linux_x64/*tar.bz2
|
||||||
|
*/Release
|
2
third_party/instrumented_libraries/binaries/.gitignore
vendored
Normal file
2
third_party/instrumented_libraries/binaries/.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
# Ignore downloaded binaries.
|
||||||
|
*.tgz
|
83
third_party/opus/src/.gitignore
vendored
Normal file
83
third_party/opus/src/.gitignore
vendored
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
Doxyfile
|
||||||
|
Makefile
|
||||||
|
Makefile.in
|
||||||
|
TAGS
|
||||||
|
aclocal.m4
|
||||||
|
autom4te.cache
|
||||||
|
*.kdevelop.pcs
|
||||||
|
*.kdevses
|
||||||
|
compile
|
||||||
|
config.guess
|
||||||
|
config.h
|
||||||
|
config.h.in
|
||||||
|
config.log
|
||||||
|
config.status
|
||||||
|
config.sub
|
||||||
|
configure
|
||||||
|
depcomp
|
||||||
|
INSTALL
|
||||||
|
install-sh
|
||||||
|
.deps
|
||||||
|
.libs
|
||||||
|
.dirstamp
|
||||||
|
*.a
|
||||||
|
*.exe
|
||||||
|
*.la
|
||||||
|
*-gnu.S
|
||||||
|
testcelt
|
||||||
|
libtool
|
||||||
|
ltmain.sh
|
||||||
|
missing
|
||||||
|
m4/libtool.m4
|
||||||
|
m4/ltoptions.m4
|
||||||
|
m4/ltsugar.m4
|
||||||
|
m4/ltversion.m4
|
||||||
|
m4/lt~obsolete.m4
|
||||||
|
opus_compare
|
||||||
|
opus_demo
|
||||||
|
repacketizer_demo
|
||||||
|
stamp-h1
|
||||||
|
test-driver
|
||||||
|
*.sw*
|
||||||
|
*.o
|
||||||
|
*.lo
|
||||||
|
*.pc
|
||||||
|
*.tar.gz
|
||||||
|
*~
|
||||||
|
tests/*test
|
||||||
|
tests/test_opus_api
|
||||||
|
tests/test_opus_decode
|
||||||
|
tests/test_opus_encode
|
||||||
|
tests/test_opus_padding
|
||||||
|
celt/arm/armopts.s
|
||||||
|
celt/dump_modes/dump_modes
|
||||||
|
celt/tests/test_unit_cwrs32
|
||||||
|
celt/tests/test_unit_dft
|
||||||
|
celt/tests/test_unit_entropy
|
||||||
|
celt/tests/test_unit_laplace
|
||||||
|
celt/tests/test_unit_mathops
|
||||||
|
celt/tests/test_unit_mdct
|
||||||
|
celt/tests/test_unit_rotation
|
||||||
|
celt/tests/test_unit_types
|
||||||
|
doc/doxygen_sqlite3.db
|
||||||
|
doc/doxygen-build.stamp
|
||||||
|
doc/html
|
||||||
|
doc/latex
|
||||||
|
doc/man
|
||||||
|
package_version
|
||||||
|
version.h
|
||||||
|
celt/Debug
|
||||||
|
celt/Release
|
||||||
|
celt/x64
|
||||||
|
silk/Debug
|
||||||
|
silk/Release
|
||||||
|
silk/x64
|
||||||
|
silk/fixed/Debug
|
||||||
|
silk/fixed/Release
|
||||||
|
silk/fixed/x64
|
||||||
|
silk/float/Debug
|
||||||
|
silk/float/Release
|
||||||
|
silk/float/x64
|
||||||
|
src/Debug
|
||||||
|
src/Release
|
||||||
|
src/x64
|
26
third_party/opus/src/win32/.gitignore
vendored
Normal file
26
third_party/opus/src/win32/.gitignore
vendored
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
# Visual Studio ignores
|
||||||
|
[Dd]ebug/
|
||||||
|
[Dd]ebugDLL/
|
||||||
|
[Dd]ebugDLL_fixed/
|
||||||
|
[Dd]ebugPublic/
|
||||||
|
[Rr]elease/
|
||||||
|
[Rr]eleaseDLL/
|
||||||
|
[Rr]eleaseDLL_fixed/
|
||||||
|
[Rr]eleases/
|
||||||
|
*.manifest
|
||||||
|
*.lastbuildstate
|
||||||
|
*.lib
|
||||||
|
*.log
|
||||||
|
*.idb
|
||||||
|
*.ipdb
|
||||||
|
*.ilk
|
||||||
|
*.iobj
|
||||||
|
*.obj
|
||||||
|
*.opensdf
|
||||||
|
*.pdb
|
||||||
|
*.sdf
|
||||||
|
*.suo
|
||||||
|
*.tlog
|
||||||
|
*.vcxproj.user
|
||||||
|
*.vc.db
|
||||||
|
*.vc.opendb
|
171
third_party/protobuf/.gitignore
vendored
Normal file
171
third_party/protobuf/.gitignore
vendored
Normal file
|
@ -0,0 +1,171 @@
|
||||||
|
# autogen.sh-generated files
|
||||||
|
Makefile.in
|
||||||
|
src/Makefile.in
|
||||||
|
config.guess
|
||||||
|
config.h.in
|
||||||
|
config.sub
|
||||||
|
configure
|
||||||
|
depcomp
|
||||||
|
install-sh
|
||||||
|
ltmain.sh
|
||||||
|
missing
|
||||||
|
|
||||||
|
aclocal.m4
|
||||||
|
m4/libtool.m4
|
||||||
|
m4/ltoptions.m4
|
||||||
|
m4/ltsugar.m4
|
||||||
|
m4/ltversion.m4
|
||||||
|
m4/lt~obsolete.m4
|
||||||
|
autom4te.cache
|
||||||
|
|
||||||
|
# downloaded files
|
||||||
|
gmock
|
||||||
|
|
||||||
|
# in-tree configure-generated files
|
||||||
|
Makefile
|
||||||
|
src/Makefile
|
||||||
|
/config.h
|
||||||
|
config.log
|
||||||
|
config.status
|
||||||
|
|
||||||
|
libtool
|
||||||
|
protobuf-lite.pc
|
||||||
|
protobuf.pc
|
||||||
|
.deps
|
||||||
|
stamp-h1
|
||||||
|
|
||||||
|
# in-tree build products
|
||||||
|
*.o
|
||||||
|
*.lo
|
||||||
|
*.la
|
||||||
|
src/.libs
|
||||||
|
*.so
|
||||||
|
|
||||||
|
.dirstamp
|
||||||
|
|
||||||
|
any_test.pb.*
|
||||||
|
map*unittest.pb.*
|
||||||
|
unittest*.pb.*
|
||||||
|
cpp_test*.pb.*
|
||||||
|
src/google/protobuf/util/**/*.pb.cc
|
||||||
|
src/google/protobuf/util/**/*.pb.h
|
||||||
|
|
||||||
|
*.pyc
|
||||||
|
*.egg-info
|
||||||
|
*_pb2.py
|
||||||
|
python/*.egg
|
||||||
|
python/.eggs/
|
||||||
|
python/.tox
|
||||||
|
python/build/
|
||||||
|
python/google/protobuf/compiler/
|
||||||
|
python/google/protobuf/util/
|
||||||
|
|
||||||
|
src/js_embed
|
||||||
|
src/protoc
|
||||||
|
src/unittest_proto_middleman
|
||||||
|
|
||||||
|
# vim generated
|
||||||
|
*.swp
|
||||||
|
|
||||||
|
# Generated test scaffolding
|
||||||
|
src/no_warning_test.cc
|
||||||
|
src/no-warning-test
|
||||||
|
src/protobuf*-test
|
||||||
|
src/test_plugin
|
||||||
|
src/testzip.*
|
||||||
|
src/zcg*zip
|
||||||
|
ar-lib
|
||||||
|
|
||||||
|
test-driver
|
||||||
|
compile
|
||||||
|
|
||||||
|
src/**/*.log
|
||||||
|
src/**/*.trs
|
||||||
|
|
||||||
|
# JavaBuild output.
|
||||||
|
java/core/target
|
||||||
|
java/util/target
|
||||||
|
javanano/target
|
||||||
|
java/.idea
|
||||||
|
java/**/*.iml
|
||||||
|
|
||||||
|
# Windows native output.
|
||||||
|
cmake/build
|
||||||
|
build_msvc
|
||||||
|
|
||||||
|
# NuGet packages: we want the repository configuration, but not the
|
||||||
|
# packages themselves.
|
||||||
|
/csharp/src/packages/*/
|
||||||
|
|
||||||
|
# OS X's Finder creates these for state about opened windows/etc.
|
||||||
|
**/.DS_Store
|
||||||
|
|
||||||
|
# Cocoapods artifacts
|
||||||
|
# Podfile.lock and the workspace file are tracked, to ease deleting them. That's
|
||||||
|
# needed to trigger "pod install" to rerun the preinstall commands.
|
||||||
|
Pods/
|
||||||
|
|
||||||
|
# Comformance test output
|
||||||
|
conformance/.libs/
|
||||||
|
conformance/com/
|
||||||
|
conformance/conformance-cpp
|
||||||
|
conformance/conformance-csharp
|
||||||
|
conformance/conformance-java
|
||||||
|
conformance/conformance-objc
|
||||||
|
conformance/conformance-test-runner
|
||||||
|
conformance/conformance.pb.cc
|
||||||
|
conformance/conformance.pb.h
|
||||||
|
conformance/Conformance.pbobjc.h
|
||||||
|
conformance/Conformance.pbobjc.m
|
||||||
|
conformance/conformance_pb.js
|
||||||
|
conformance/conformance_pb.rb
|
||||||
|
conformance/failing_tests.txt
|
||||||
|
conformance/google/
|
||||||
|
conformance/google-protobuf/
|
||||||
|
conformance/javac_middleman
|
||||||
|
conformance/lite/
|
||||||
|
conformance/nonexistent_tests.txt
|
||||||
|
conformance/protoc_middleman
|
||||||
|
conformance/succeeding_tests.txt
|
||||||
|
conformance/Conformance/
|
||||||
|
conformance/GPBMetadata/
|
||||||
|
conformance/Google/
|
||||||
|
conformance/Protobuf_test_messages/
|
||||||
|
conformance/conformance-php
|
||||||
|
conformance/conformance-php-c
|
||||||
|
|
||||||
|
# php test output
|
||||||
|
composer.lock
|
||||||
|
php/tests/generated/
|
||||||
|
php/tests/old_protoc
|
||||||
|
php/tests/protobuf/
|
||||||
|
php/ext/google/protobuf/.libs/
|
||||||
|
php/ext/google/protobuf/Makefile.fragments
|
||||||
|
php/ext/google/protobuf/Makefile.global
|
||||||
|
php/ext/google/protobuf/Makefile.objects
|
||||||
|
php/ext/google/protobuf/acinclude.m4
|
||||||
|
php/ext/google/protobuf/build/
|
||||||
|
php/ext/google/protobuf/config.h
|
||||||
|
php/ext/google/protobuf/config.nice
|
||||||
|
php/ext/google/protobuf/configure.in
|
||||||
|
php/ext/google/protobuf/mkinstalldirs
|
||||||
|
php/ext/google/protobuf/run-tests.php
|
||||||
|
vendor/
|
||||||
|
|
||||||
|
# JavaScript artifacts
|
||||||
|
js/commonjs_out/
|
||||||
|
js/compatibility_tests/v3.0.0/commonjs_out*
|
||||||
|
js/compatibility_tests/v3.0.0/protoc
|
||||||
|
js/compatibility_tests/v3.0.0/testproto_libs1.js
|
||||||
|
js/compatibility_tests/v3.0.0/testproto_libs1_new.js
|
||||||
|
js/compatibility_tests/v3.0.0/testproto_libs2.js
|
||||||
|
js/compatibility_tests/v3.0.0/testproto_libs2_new.js
|
||||||
|
js/deps.js
|
||||||
|
js/google-protobuf.js
|
||||||
|
js/google/
|
||||||
|
js/node_modules/
|
||||||
|
js/testproto_libs1.js
|
||||||
|
js/testproto_libs2.js
|
||||||
|
|
||||||
|
# Ignore the bazel symlinks
|
||||||
|
/bazel-*
|
31
third_party/protobuf/csharp/.gitignore
vendored
Normal file
31
third_party/protobuf/csharp/.gitignore
vendored
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
# Output
|
||||||
|
bin
|
||||||
|
obj
|
||||||
|
project.lock.json
|
||||||
|
TestResult.xml
|
||||||
|
|
||||||
|
# Possibly legacy now?
|
||||||
|
mono/bin
|
||||||
|
mono/tmp
|
||||||
|
mono/protoc
|
||||||
|
build_output
|
||||||
|
build_temp
|
||||||
|
build/msbuild*.log
|
||||||
|
lib/Microsoft.Silverlight.Testing
|
||||||
|
lib/NUnit
|
||||||
|
|
||||||
|
#
|
||||||
|
# Untracked files
|
||||||
|
#
|
||||||
|
.vs
|
||||||
|
*.user
|
||||||
|
*.suo
|
||||||
|
*.nupkg
|
||||||
|
_ReSharper.*
|
||||||
|
*.sln.cache
|
||||||
|
mono/TestResult.xml
|
||||||
|
mono/.libs
|
||||||
|
mono/*.exe
|
||||||
|
mono/*.dll
|
||||||
|
lib/protoc.exe
|
||||||
|
*.ncrunch*
|
23
third_party/protobuf/objectivec/.gitignore
vendored
Normal file
23
third_party/protobuf/objectivec/.gitignore
vendored
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
## Build generated
|
||||||
|
build/
|
||||||
|
DerivedData/
|
||||||
|
|
||||||
|
## Various settings
|
||||||
|
*.pbxuser
|
||||||
|
!default.pbxuser
|
||||||
|
*.mode1v3
|
||||||
|
!default.mode1v3
|
||||||
|
*.mode2v3
|
||||||
|
!default.mode2v3
|
||||||
|
*.perspectivev3
|
||||||
|
!default.perspectivev3
|
||||||
|
xcuserdata/
|
||||||
|
|
||||||
|
## Other
|
||||||
|
*.moved-aside
|
||||||
|
*.xccheckout
|
||||||
|
*.xcscmblueprint
|
||||||
|
|
||||||
|
## Obj-C/Swift specific
|
||||||
|
*.hmap
|
||||||
|
*.ipa
|
8
third_party/protobuf/ruby/.gitignore
vendored
Normal file
8
third_party/protobuf/ruby/.gitignore
vendored
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
*.bundle
|
||||||
|
tags
|
||||||
|
.idea/
|
||||||
|
lib/google/protobuf_java.jar
|
||||||
|
protobuf-jruby.iml
|
||||||
|
target/
|
||||||
|
pkg/
|
||||||
|
tmp/
|
|
@ -19,10 +19,10 @@ import subprocess
|
||||||
import sys
|
import sys
|
||||||
import urllib2
|
import urllib2
|
||||||
|
|
||||||
|
|
||||||
# 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',
|
||||||
|
'src/third_party_chromium',
|
||||||
]
|
]
|
||||||
|
|
||||||
# Run these CQ trybots in addition to the default ones in infra/config/cq.cfg.
|
# Run these CQ trybots in addition to the default ones in infra/config/cq.cfg.
|
||||||
|
@ -32,9 +32,11 @@ EXTRA_TRYBOTS = (
|
||||||
|
|
||||||
WEBRTC_URL = 'https://webrtc.googlesource.com/src'
|
WEBRTC_URL = 'https://webrtc.googlesource.com/src'
|
||||||
CHROMIUM_SRC_URL = 'https://chromium.googlesource.com/chromium/src'
|
CHROMIUM_SRC_URL = 'https://chromium.googlesource.com/chromium/src'
|
||||||
|
CHROMIUM_THIRD_PARTY_URL = '%s/third_party' % CHROMIUM_SRC_URL
|
||||||
CHROMIUM_COMMIT_TEMPLATE = CHROMIUM_SRC_URL + '/+/%s'
|
CHROMIUM_COMMIT_TEMPLATE = CHROMIUM_SRC_URL + '/+/%s'
|
||||||
CHROMIUM_LOG_TEMPLATE = CHROMIUM_SRC_URL + '/+log/%s'
|
CHROMIUM_LOG_TEMPLATE = CHROMIUM_SRC_URL + '/+log/%s'
|
||||||
CHROMIUM_FILE_TEMPLATE = CHROMIUM_SRC_URL + '/+/%s/%s'
|
CHROMIUM_FILE_TEMPLATE = CHROMIUM_SRC_URL + '/+/%s/%s'
|
||||||
|
CHROMIUM_3P_LOG_TEMPLATE = CHROMIUM_SRC_URL + '/third_party/+log/%s'
|
||||||
|
|
||||||
COMMIT_POSITION_RE = re.compile('^Cr-Commit-Position: .*#([0-9]+).*$')
|
COMMIT_POSITION_RE = re.compile('^Cr-Commit-Position: .*#([0-9]+).*$')
|
||||||
CLANG_REVISION_RE = re.compile(r'^CLANG_REVISION = \'(\d+)\'$')
|
CLANG_REVISION_RE = re.compile(r'^CLANG_REVISION = \'(\d+)\'$')
|
||||||
|
@ -47,6 +49,7 @@ CHECKOUT_ROOT_DIR = os.path.realpath(os.path.join(CHECKOUT_SRC_DIR, os.pardir))
|
||||||
|
|
||||||
sys.path.append(os.path.join(CHECKOUT_SRC_DIR, 'build'))
|
sys.path.append(os.path.join(CHECKOUT_SRC_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'
|
||||||
|
@ -60,6 +63,13 @@ CipdDepsEntry = collections.namedtuple('CipdDepsEntry', 'path packages')
|
||||||
ChangedCipdPackage = collections.namedtuple(
|
ChangedCipdPackage = collections.namedtuple(
|
||||||
'ChangedCipdPackage', 'path package current_version new_version')
|
'ChangedCipdPackage', 'path package current_version new_version')
|
||||||
|
|
||||||
|
ChromiumRevisionUpdate = collections.namedtuple('ChromiumRevisionUpdate',
|
||||||
|
('current_chromium_rev '
|
||||||
|
'new_chromium_rev '
|
||||||
|
'current_third_party_rev '
|
||||||
|
'new_third_party_rev'))
|
||||||
|
|
||||||
|
|
||||||
class RollError(Exception):
|
class RollError(Exception):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@ -74,7 +84,7 @@ def ParseDepsDict(deps_content):
|
||||||
'Var': VarLookup(local_scope),
|
'Var': VarLookup(local_scope),
|
||||||
'deps_os': {},
|
'deps_os': {},
|
||||||
}
|
}
|
||||||
exec(deps_content, global_scope, local_scope)
|
exec (deps_content, global_scope, local_scope)
|
||||||
return local_scope
|
return local_scope
|
||||||
|
|
||||||
|
|
||||||
|
@ -100,7 +110,7 @@ def ParseCommitPosition(commit_message):
|
||||||
|
|
||||||
|
|
||||||
def _RunCommand(command, working_dir=None, ignore_exit_code=False,
|
def _RunCommand(command, working_dir=None, ignore_exit_code=False,
|
||||||
extra_env=None):
|
extra_env=None, input_data=None):
|
||||||
"""Runs a command and returns the output from that command.
|
"""Runs a command and returns the output from that command.
|
||||||
|
|
||||||
If the command fails (exit code != 0), the function will exit the process.
|
If the command fails (exit code != 0), the function will exit the process.
|
||||||
|
@ -115,12 +125,12 @@ def _RunCommand(command, working_dir=None, ignore_exit_code=False,
|
||||||
assert all(type(value) == str for value in extra_env.values())
|
assert all(type(value) == str for value in extra_env.values())
|
||||||
logging.debug('extra env: %s', extra_env)
|
logging.debug('extra env: %s', extra_env)
|
||||||
env.update(extra_env)
|
env.update(extra_env)
|
||||||
p = subprocess.Popen(command, stdout=subprocess.PIPE,
|
p = subprocess.Popen(command,
|
||||||
|
stdin=subprocess.PIPE,
|
||||||
|
stdout=subprocess.PIPE,
|
||||||
stderr=subprocess.PIPE, env=env,
|
stderr=subprocess.PIPE, env=env,
|
||||||
cwd=working_dir, universal_newlines=True)
|
cwd=working_dir, universal_newlines=True)
|
||||||
std_output = p.stdout.read()
|
std_output, err_output = p.communicate(input_data)
|
||||||
err_output = p.stderr.read()
|
|
||||||
p.wait()
|
|
||||||
p.stdout.close()
|
p.stdout.close()
|
||||||
p.stderr.close()
|
p.stderr.close()
|
||||||
if not ignore_exit_code and p.returncode != 0:
|
if not ignore_exit_code and p.returncode != 0:
|
||||||
|
@ -209,6 +219,7 @@ def GetMatchingDepsEntries(depsentry_dict, dir_path):
|
||||||
def BuildDepsentryDict(deps_dict):
|
def BuildDepsentryDict(deps_dict):
|
||||||
"""Builds a dict of paths to DepsEntry objects from a raw parsed deps dict."""
|
"""Builds a dict of paths to DepsEntry objects from a raw parsed deps dict."""
|
||||||
result = {}
|
result = {}
|
||||||
|
|
||||||
def AddDepsEntries(deps_subdict):
|
def AddDepsEntries(deps_subdict):
|
||||||
for path, dep in deps_subdict.iteritems():
|
for path, dep in deps_subdict.iteritems():
|
||||||
if path in result:
|
if path in result:
|
||||||
|
@ -313,18 +324,23 @@ def CalculateChangedClang(new_cr_rev):
|
||||||
return ChangedDep(CLANG_UPDATE_SCRIPT_LOCAL_PATH, None, current_rev, new_rev)
|
return ChangedDep(CLANG_UPDATE_SCRIPT_LOCAL_PATH, None, current_rev, new_rev)
|
||||||
|
|
||||||
|
|
||||||
def GenerateCommitMessage(current_cr_rev, new_cr_rev, current_commit_pos,
|
def GenerateCommitMessage(rev_update, current_commit_pos,
|
||||||
new_commit_pos, changed_deps_list, clang_change):
|
new_commit_pos, changed_deps_list, clang_change):
|
||||||
current_cr_rev = current_cr_rev[0:10]
|
current_cr_rev = rev_update.current_chromium_rev[0:10]
|
||||||
new_cr_rev = new_cr_rev[0:10]
|
new_cr_rev = rev_update.new_chromium_rev[0:10]
|
||||||
rev_interval = '%s..%s' % (current_cr_rev, new_cr_rev)
|
rev_interval = '%s..%s' % (current_cr_rev, new_cr_rev)
|
||||||
|
rev_3p_interval = '%s..%s' % (rev_update.current_third_party_rev[0:10],
|
||||||
|
rev_update.new_third_party_rev[0:10])
|
||||||
git_number_interval = '%s:%s' % (current_commit_pos, new_commit_pos)
|
git_number_interval = '%s:%s' % (current_commit_pos, new_commit_pos)
|
||||||
|
|
||||||
commit_msg = ['Roll chromium_revision %s (%s)\n' % (rev_interval,
|
commit_msg = ['Roll chromium_revision %s (%s)\n' % (rev_interval,
|
||||||
git_number_interval)]
|
git_number_interval),
|
||||||
commit_msg.append('Change log: %s' % (CHROMIUM_LOG_TEMPLATE % rev_interval))
|
'Change log: %s' % (CHROMIUM_LOG_TEMPLATE % rev_interval),
|
||||||
commit_msg.append('Full diff: %s\n' % (CHROMIUM_COMMIT_TEMPLATE %
|
'Full diff: %s\n' % (CHROMIUM_COMMIT_TEMPLATE %
|
||||||
rev_interval))
|
rev_interval),
|
||||||
|
'Roll chromium third_party %s' % rev_3p_interval,
|
||||||
|
'Change log: %s\n' % (
|
||||||
|
CHROMIUM_3P_LOG_TEMPLATE % rev_3p_interval)]
|
||||||
tbr_authors = ''
|
tbr_authors = ''
|
||||||
if changed_deps_list:
|
if changed_deps_list:
|
||||||
commit_msg.append('Changed dependencies:')
|
commit_msg.append('Changed dependencies:')
|
||||||
|
@ -365,14 +381,16 @@ def GenerateCommitMessage(current_cr_rev, new_cr_rev, current_commit_pos,
|
||||||
return '\n'.join(commit_msg)
|
return '\n'.join(commit_msg)
|
||||||
|
|
||||||
|
|
||||||
def UpdateDepsFile(deps_filename, old_cr_revision, new_cr_revision,
|
def UpdateDepsFile(deps_filename, rev_update, changed_deps):
|
||||||
changed_deps):
|
|
||||||
"""Update the DEPS file with the new revision."""
|
"""Update the DEPS file with the new revision."""
|
||||||
|
|
||||||
# Update the chromium_revision variable.
|
# Update the chromium_revision variable.
|
||||||
with open(deps_filename, 'rb') as deps_file:
|
with open(deps_filename, 'rb') as deps_file:
|
||||||
deps_content = deps_file.read()
|
deps_content = deps_file.read()
|
||||||
deps_content = deps_content.replace(old_cr_revision, new_cr_revision)
|
deps_content = deps_content.replace(rev_update.current_chromium_rev,
|
||||||
|
rev_update.new_chromium_rev)
|
||||||
|
deps_content = deps_content.replace(rev_update.current_third_party_rev,
|
||||||
|
rev_update.new_third_party_rev)
|
||||||
with open(deps_filename, 'wb') as deps_file:
|
with open(deps_filename, 'wb') as deps_file:
|
||||||
deps_file.write(deps_content)
|
deps_file.write(deps_content)
|
||||||
|
|
||||||
|
@ -395,6 +413,36 @@ def UpdateDepsFile(deps_filename, old_cr_revision, new_cr_revision,
|
||||||
working_dir=CHECKOUT_SRC_DIR)
|
working_dir=CHECKOUT_SRC_DIR)
|
||||||
|
|
||||||
|
|
||||||
|
def _LoadThirdPartyDepsAndFiles(filename):
|
||||||
|
third_party_deps = {}
|
||||||
|
with open(filename, 'rb') as f:
|
||||||
|
deps_content = f.read()
|
||||||
|
global_scope = {}
|
||||||
|
exec (deps_content, global_scope, third_party_deps)
|
||||||
|
return third_party_deps.get('DEPS', [])
|
||||||
|
|
||||||
|
|
||||||
|
def UpdateThirdPartyDeps(new_rev, dest_dir, source_dir,
|
||||||
|
third_party_deps_file):
|
||||||
|
"""Syncing deps, specified in third_party_deps_file with repo in source_dir.
|
||||||
|
|
||||||
|
Will exit if sync failed for some reasons.
|
||||||
|
Params:
|
||||||
|
new_rev - revision of third_party to update to
|
||||||
|
dest_dir - webrtc directory, that will be used as root for third_party deps
|
||||||
|
source_dir - checked out chromium third_party repo
|
||||||
|
third_party_deps_file - file with list of third_party deps to copy
|
||||||
|
"""
|
||||||
|
|
||||||
|
deps_to_checkout = _LoadThirdPartyDepsAndFiles(third_party_deps_file)
|
||||||
|
# Update existing chromium third_party checkout to new rev.
|
||||||
|
_RunCommand(['git', 'fetch', 'origin', new_rev], working_dir=source_dir)
|
||||||
|
# Checkout chromium repo into dest dir basing on source checkout.
|
||||||
|
_RunCommand(
|
||||||
|
['git', '--git-dir', '%s/.git' % source_dir, 'checkout',
|
||||||
|
new_rev] + deps_to_checkout, working_dir=dest_dir)
|
||||||
|
|
||||||
|
|
||||||
def _IsTreeClean():
|
def _IsTreeClean():
|
||||||
stdout, _ = _RunCommand(['git', 'status', '--porcelain'])
|
stdout, _ = _RunCommand(['git', 'status', '--porcelain'])
|
||||||
if len(stdout) == 0:
|
if len(stdout) == 0:
|
||||||
|
@ -437,6 +485,7 @@ def _LocalCommit(commit_msg, dry_run):
|
||||||
logging.info('Committing changes locally.')
|
logging.info('Committing changes locally.')
|
||||||
if not dry_run:
|
if not dry_run:
|
||||||
_RunCommand(['git', 'add', '--update', '.'])
|
_RunCommand(['git', 'add', '--update', '.'])
|
||||||
|
_RunCommand(['git', 'add', '-A', 'third_party'])
|
||||||
_RunCommand(['git', 'commit', '-m', commit_msg])
|
_RunCommand(['git', 'commit', '-m', commit_msg])
|
||||||
|
|
||||||
|
|
||||||
|
@ -466,6 +515,30 @@ def _UploadCL(commit_queue_mode):
|
||||||
_RunCommand(cmd, extra_env={'EDITOR': 'true', 'SKIP_GCE_AUTH_FOR_GIT': '1'})
|
_RunCommand(cmd, extra_env={'EDITOR': 'true', 'SKIP_GCE_AUTH_FOR_GIT': '1'})
|
||||||
|
|
||||||
|
|
||||||
|
def GetRollRevisionRanges(opts, webrtc_deps):
|
||||||
|
current_cr_rev = webrtc_deps['vars']['chromium_revision']
|
||||||
|
current_third_party_rev = webrtc_deps['vars']['chromium_third_party_revision']
|
||||||
|
new_cr_rev = opts.revision
|
||||||
|
if not new_cr_rev:
|
||||||
|
stdout, _ = _RunCommand(['git', 'ls-remote', CHROMIUM_SRC_URL, 'HEAD'])
|
||||||
|
head_rev = stdout.strip().split('\t')[0]
|
||||||
|
logging.info('No revision specified. Using HEAD: %s', head_rev)
|
||||||
|
new_cr_rev = head_rev
|
||||||
|
|
||||||
|
new_third_party_rev = opts.third_party_revision
|
||||||
|
if not new_third_party_rev:
|
||||||
|
stdout, _ = _RunCommand(
|
||||||
|
['git', 'ls-remote', CHROMIUM_THIRD_PARTY_URL, 'HEAD'])
|
||||||
|
new_third_party_rev = stdout.strip().split('\t')[0]
|
||||||
|
logging.info(
|
||||||
|
'No third_party revision specified. Using HEAD: %s',
|
||||||
|
new_third_party_rev)
|
||||||
|
|
||||||
|
return ChromiumRevisionUpdate(current_cr_rev, new_cr_rev,
|
||||||
|
current_third_party_rev,
|
||||||
|
new_third_party_rev)
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
p = argparse.ArgumentParser()
|
p = argparse.ArgumentParser()
|
||||||
p.add_argument('--clean', action='store_true', default=False,
|
p.add_argument('--clean', action='store_true', default=False,
|
||||||
|
@ -473,6 +546,9 @@ def main():
|
||||||
p.add_argument('-r', '--revision',
|
p.add_argument('-r', '--revision',
|
||||||
help=('Chromium Git revision to roll to. Defaults to the '
|
help=('Chromium Git revision to roll to. Defaults to the '
|
||||||
'Chromium HEAD revision if omitted.'))
|
'Chromium HEAD revision if omitted.'))
|
||||||
|
p.add_argument('--third-party-revision',
|
||||||
|
help=('Chromium third_party Git revision to roll to. Default '
|
||||||
|
'to the Chromium third_party HEAD revision if omitted.'))
|
||||||
p.add_argument('-u', '--rietveld-email',
|
p.add_argument('-u', '--rietveld-email',
|
||||||
help=('E-mail address to use for creating the CL at Rietveld'
|
help=('E-mail address to use for creating the CL at Rietveld'
|
||||||
'If omitted a previously cached one will be used or an '
|
'If omitted a previously cached one will be used or an '
|
||||||
|
@ -510,30 +586,38 @@ def main():
|
||||||
if not opts.ignore_unclean_workdir:
|
if not opts.ignore_unclean_workdir:
|
||||||
_EnsureUpdatedMasterBranch(opts.dry_run)
|
_EnsureUpdatedMasterBranch(opts.dry_run)
|
||||||
|
|
||||||
new_cr_rev = opts.revision
|
|
||||||
if not new_cr_rev:
|
|
||||||
stdout, _ = _RunCommand(['git', 'ls-remote', CHROMIUM_SRC_URL, 'HEAD'])
|
|
||||||
head_rev = stdout.strip().split('\t')[0]
|
|
||||||
logging.info('No revision specified. Using HEAD: %s', head_rev)
|
|
||||||
new_cr_rev = head_rev
|
|
||||||
|
|
||||||
deps_filename = os.path.join(CHECKOUT_SRC_DIR, 'DEPS')
|
deps_filename = os.path.join(CHECKOUT_SRC_DIR, 'DEPS')
|
||||||
webrtc_deps = ParseLocalDepsFile(deps_filename)
|
webrtc_deps = ParseLocalDepsFile(deps_filename)
|
||||||
current_cr_rev = webrtc_deps['vars']['chromium_revision']
|
cr_3p_repo = os.path.join(CHECKOUT_SRC_DIR, 'third_party_chromium')
|
||||||
|
if not os.path.exists(cr_3p_repo):
|
||||||
|
raise RollError('missing third_party_chromium/. '
|
||||||
|
'Please add this to your gclient: \n'
|
||||||
|
'"custom_vars": {\n'
|
||||||
|
' "roll_chromium_into_webrtc": True,\n'
|
||||||
|
'},\n'
|
||||||
|
'Then run "gclient sync" again.')
|
||||||
|
|
||||||
current_commit_pos = ParseCommitPosition(ReadRemoteCrCommit(current_cr_rev))
|
rev_update = GetRollRevisionRanges(opts, webrtc_deps)
|
||||||
new_commit_pos = ParseCommitPosition(ReadRemoteCrCommit(new_cr_rev))
|
|
||||||
|
|
||||||
new_cr_deps = ParseRemoteCrDepsFile(new_cr_rev)
|
current_commit_pos = ParseCommitPosition(
|
||||||
|
ReadRemoteCrCommit(rev_update.current_chromium_rev))
|
||||||
|
new_commit_pos = ParseCommitPosition(
|
||||||
|
ReadRemoteCrCommit(rev_update.new_chromium_rev))
|
||||||
|
|
||||||
|
new_cr_deps = ParseRemoteCrDepsFile(rev_update.new_chromium_rev)
|
||||||
changed_deps = CalculateChangedDeps(webrtc_deps, new_cr_deps)
|
changed_deps = CalculateChangedDeps(webrtc_deps, new_cr_deps)
|
||||||
clang_change = CalculateChangedClang(new_cr_rev)
|
clang_change = CalculateChangedClang(rev_update.new_chromium_rev)
|
||||||
commit_msg = GenerateCommitMessage(current_cr_rev, new_cr_rev,
|
commit_msg = GenerateCommitMessage(rev_update,
|
||||||
current_commit_pos, new_commit_pos,
|
current_commit_pos, new_commit_pos,
|
||||||
changed_deps, clang_change)
|
changed_deps, clang_change)
|
||||||
logging.debug('Commit message:\n%s', commit_msg)
|
logging.debug('Commit message:\n%s', commit_msg)
|
||||||
|
|
||||||
_CreateRollBranch(opts.dry_run)
|
_CreateRollBranch(opts.dry_run)
|
||||||
UpdateDepsFile(deps_filename, current_cr_rev, new_cr_rev, changed_deps)
|
UpdateThirdPartyDeps(rev_update.new_third_party_rev,
|
||||||
|
os.path.join(CHECKOUT_SRC_DIR, 'third_party'),
|
||||||
|
cr_3p_repo,
|
||||||
|
os.path.join(CHECKOUT_SRC_DIR, 'THIRD_PARTY_DEPS'))
|
||||||
|
UpdateDepsFile(deps_filename, rev_update, changed_deps)
|
||||||
if _IsTreeClean():
|
if _IsTreeClean():
|
||||||
logging.info("No DEPS changes detected, skipping CL creation.")
|
logging.info("No DEPS changes detected, skipping CL creation.")
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -20,7 +20,8 @@ PARENT_DIR = os.path.join(SCRIPT_DIR, os.pardir)
|
||||||
sys.path.append(PARENT_DIR)
|
sys.path.append(PARENT_DIR)
|
||||||
import roll_deps
|
import roll_deps
|
||||||
from roll_deps import CalculateChangedDeps, ChooseCQMode, \
|
from roll_deps import CalculateChangedDeps, ChooseCQMode, \
|
||||||
GetMatchingDepsEntries, ParseDepsDict, ParseLocalDepsFile, UpdateDepsFile
|
GetMatchingDepsEntries, ParseDepsDict, ParseLocalDepsFile, UpdateDepsFile, \
|
||||||
|
ChromiumRevisionUpdate
|
||||||
|
|
||||||
|
|
||||||
TEST_DATA_VARS = {
|
TEST_DATA_VARS = {
|
||||||
|
@ -90,7 +91,10 @@ class TestRollChromiumRevision(unittest.TestCase):
|
||||||
new_rev = 'aaaaabbbbbcccccdddddeeeeefffff0000011111'
|
new_rev = 'aaaaabbbbbcccccdddddeeeeefffff0000011111'
|
||||||
|
|
||||||
current_rev = TEST_DATA_VARS['chromium_revision']
|
current_rev = TEST_DATA_VARS['chromium_revision']
|
||||||
UpdateDepsFile(self._webrtc_depsfile, current_rev, new_rev, [])
|
UpdateDepsFile(self._webrtc_depsfile,
|
||||||
|
ChromiumRevisionUpdate(
|
||||||
|
current_rev, new_rev, current_rev, new_rev),
|
||||||
|
[])
|
||||||
with open(self._webrtc_depsfile) as deps_file:
|
with open(self._webrtc_depsfile) as deps_file:
|
||||||
deps_contents = deps_file.read()
|
deps_contents = deps_file.read()
|
||||||
self.assertTrue(new_rev in deps_contents,
|
self.assertTrue(new_rev in deps_contents,
|
||||||
|
|
Loading…
Reference in a new issue