blob: 85bb402025415608e8958db18042c36ecd1f9daf [file] [log] [blame]
# Copyright 2017 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 DEPS
CONFIG_CTX = DEPS['gclient'].CONFIG_CTX
ChromiumGitURL = DEPS['gclient'].config.ChromiumGitURL
ChromeInternalGitURL = DEPS['gclient'].config.ChromeInternalGitURL
gclient_api = DEPS['gclient'].api
def mirror_only(c, obj, default=None):
return obj if c.USE_MIRROR else (default or obj.__class__())
@CONFIG_CTX()
def chromium_bare(c):
s = c.solutions.add()
s.name = 'src'
s.url = ChromiumGitURL(c, 'chromium', 'src.git')
s.custom_vars = {
# We always want the bots to fetch the dependencies needed to
# run the telemetry tests, regardless of whether they are needed or not
# (this makes things simpler and more consistent).
'checkout_telemetry_dependencies': 'True',
}
m = c.got_revision_reverse_mapping
m['got_revision'] = 'src'
m['got_nacl_revision'] = 'src/native_client'
m['got_swarming_client_revision'] = 'src/tools/swarming_client'
m['got_v8_revision'] = 'src/v8'
m['got_angle_revision'] = 'src/third_party/angle'
m['got_webrtc_revision'] = 'src/third_party/webrtc'
m['got_buildtools_revision'] = 'src/buildtools'
p = c.parent_got_revision_mapping
p['parent_got_revision'] = None
p['parent_got_angle_revision'] = 'angle_revision'
p['parent_got_nacl_revision'] = 'nacl_revision'
p['parent_got_swarming_client_revision'] = 'swarming_revision'
p['parent_got_v8_revision'] = 'v8_revision'
p['parent_got_webrtc_revision'] = 'webrtc_revision'
p = c.patch_projects
p['angle/angle'] = ('src/third_party/angle', None)
p['blink'] = ('src/third_party/WebKit', None)
p['buildtools'] = ('src/buildtools', 'HEAD')
p['catapult'] = ('src/third_party/catapult', 'HEAD')
p['flac'] = ('src/third_party/flac', 'HEAD')
p['icu'] = ('src/third_party/icu', 'HEAD')
p['pdfium'] = ('src/third_party/pdfium', 'HEAD')
p['skia'] = ('src/third_party/skia', 'HEAD')
p['v8'] = ('src/v8', 'HEAD')
p['v8/v8'] = ('src/v8', 'HEAD')
p['webrtc'] = ('src/third_party/webrtc', 'HEAD')
p = c.repo_path_map
p['https://webrtc.googlesource.com/src'] = ('src/third_party/webrtc', 'HEAD')
@CONFIG_CTX(includes=['chromium_bare'])
def chromium_empty(c):
c.solutions[0].deps_file = '' # pragma: no cover
@CONFIG_CTX(includes=['chromium_bare'])
def chromium(c):
s = c.solutions[0]
s.custom_deps = mirror_only(c, {})
@CONFIG_CTX(includes=['chromium'])
def chromium_lkgr(c):
s = c.solutions[0]
s.revision = 'origin/lkgr'
@CONFIG_CTX(includes=['chromium_bare'])
def android_bare(c):
# We inherit from chromium_bare to get the got_revision mapping.
# NOTE: We don't set a specific got_revision mapping for src/repo.
del c.solutions[0]
c.got_revision_reverse_mapping['got_src_revision'] = 'src'
del c.got_revision_reverse_mapping['got_revision']
s = c.solutions.add()
s.deps_file = '.DEPS.git'
@CONFIG_CTX(includes=['chromium'])
def blink(c):
c.solutions[0].revision = 'HEAD'
del c.solutions[0].custom_deps
c.revisions['src/third_party/WebKit'] = 'HEAD'
# TODO(phajdan.jr): Move to proper repo and add coverage.
@CONFIG_CTX(includes=['chromium'])
def blink_merged(c): # pragma: no cover
c.solutions[0].url = \
'https://chromium.googlesource.com/playground/chromium-blink-merge.git'
@CONFIG_CTX(includes=['chromium', 'chrome_internal'])
def ios(c):
c.target_os.add('ios')
@CONFIG_CTX(includes=['chromium'])
def show_v8_revision(c):
# Have the V8 revision appear in the web UI instead of Chromium's.
c.got_revision_reverse_mapping['got_cr_revision'] = 'src'
c.got_revision_reverse_mapping['got_revision'] = 'src/v8'
# TODO(machenbach): Retain old behavior for now and switch in separate CL.
del c.got_revision_reverse_mapping['got_v8_revision']
# Needed to get the testers to properly sync the right revision.
c.parent_got_revision_mapping['parent_got_revision'] = 'got_revision'
@CONFIG_CTX(includes=['chromium'])
def v8_canary(c):
c.revisions['src/v8'] = 'origin/canary'
@CONFIG_CTX(includes=['chromium'])
def v8_tot(c):
c.revisions['src/v8'] = 'HEAD'
@CONFIG_CTX()
def fuchsia(c):
c.target_os.add('fuchsia')
@CONFIG_CTX()
def win(c):
c.target_os.add('win')
@CONFIG_CTX(includes=['chromium', 'chrome_internal'])
def perf(c):
s = c.solutions[0]
s.managed = False
needed_components_internal = [
"src/data/page_cycler",
]
for key in needed_components_internal:
del c.solutions[1].custom_deps[key]
c.solutions[1].managed = False
@CONFIG_CTX(includes=['chromium', 'chrome_internal'])
def chromium_perf(c):
pass
@CONFIG_CTX(includes=['chromium'])
def chromium_skia(c):
c.solutions[0].revision = 'HEAD'
del c.solutions[0].custom_deps
c.revisions['src/third_party/skia'] = (
gclient_api.RevisionFallbackChain('origin/master'))
c.got_revision_reverse_mapping['got_chromium_revision'] = 'src'
c.got_revision_reverse_mapping['got_revision'] = 'src/third_party/skia'
c.parent_got_revision_mapping['parent_got_revision'] = 'got_revision'
@CONFIG_CTX(includes=['chromium'])
def chromium_webrtc(c):
c.got_revision_reverse_mapping['got_libvpx_revision'] = (
'src/third_party/libvpx/source')
@CONFIG_CTX(includes=['chromium_webrtc'])
def chromium_webrtc_tot(c):
"""Configures WebRTC ToT revision for Chromium src/third_party/webrtc.
Sets up ToT instead of the DEPS-pinned revision for WebRTC.
This is used for some bots to provide data about which revisions are green to
roll into Chromium.
"""
c.revisions['src'] = 'HEAD'
c.revisions['src/third_party/webrtc'] = 'HEAD'
# Have the WebRTC revision appear in the web UI instead of Chromium's.
# This is also important for set_component_rev to work, since got_revision
# will become a WebRTC revision instead of Chromium.
c.got_revision_reverse_mapping['got_cr_revision'] = 'src'
c.got_revision_reverse_mapping['got_revision'] = 'src/third_party/webrtc'
# TODO(machenbach): Retain old behavior for now and switch in separate CL.
del c.got_revision_reverse_mapping['got_webrtc_revision']
# Needed to get the testers to properly sync the right revision.
c.parent_got_revision_mapping['parent_got_revision'] = 'got_revision'
c.parent_got_revision_mapping['parent_got_webrtc_revision'] = (
'got_webrtc_revision')
@CONFIG_CTX()
def webrtc_test_resources(c):
"""Add webrtc.DEPS solution for test resources and tools.
The webrtc.DEPS solution pulls in additional resources needed for running
WebRTC-specific test setups in Chromium.
"""
s = c.solutions.add()
s.name = 'webrtc.DEPS'
s.url = 'https://webrtc.googlesource.com/webrtc.DEPS'
s.deps_file = 'DEPS'
@CONFIG_CTX(includes=['chromium'])
def chromedriver(c):
"""Add Selenium Java tests to the gclient solution."""
c.solutions[0].custom_deps[
'src/chrome/test/chromedriver/third_party/java_tests'] = (
ChromiumGitURL(c, 'chromium', 'deps', 'webdriver'))
# TODO(phajdan.jr): Move to proper repo and add coverage.
@CONFIG_CTX()
def angle_top_of_tree(c): # pragma: no cover
"""Configures the top-of-tree ANGLE in a Chromium checkout.
Sets up ToT instead of the DEPS-pinned revision for ANGLE.
"""
# TODO(tandrii): I think patch_projects in bare_chromium fixed this.
c.revisions['src/third_party/angle'] = 'HEAD'
# TODO(phajdan.jr): Move to proper repo and add coverage.
@CONFIG_CTX()
def valgrind(c): # pragma: no cover
"""Add Valgrind binaries to the gclient solution."""
c.solutions[0].custom_deps['src/third_party/valgrind'] = \
ChromiumGitURL(c, 'chromium', 'deps', 'valgrind', 'binaries')
@CONFIG_CTX()
def ndk_next(c):
c.revisions['src/third_party/android_ndk'] = 'origin/next'
# TODO(iannucci,vadimsh): Switch this to src-limited
@CONFIG_CTX()
def chrome_internal(c):
s = c.solutions.add()
s.name = 'src-internal'
s.url = ChromeInternalGitURL(c, 'chrome', 'src-internal.git')
# Remove some things which are generally not needed
s.custom_deps = {
"src/data/autodiscovery" : None,
"src/data/page_cycler" : None,
"src/tools/grit/grit/test/data" : None,
"src/chrome/test/data/perf/frame_rate/private" : None,
"src/data/mozilla_js_tests" : None,
"src/chrome/test/data/firefox2_profile/searchplugins" : None,
"src/chrome/test/data/firefox2_searchplugins" : None,
"src/chrome/test/data/firefox3_profile/searchplugins" : None,
"src/chrome/test/data/firefox3_searchplugins" : None,
"src/chrome/test/data/ssl/certs" : None,
"src/data/mach_ports" : None,
"src/data/esctf" : None,
"src/data/selenium_core" : None,
"src/chrome/test/data/plugin" : None,
"src/data/memory_test" : None,
"src/data/tab_switching" : None,
"src/chrome/test/data/osdd" : None,
"src/webkit/data/bmp_decoder":None,
"src/webkit/data/ico_decoder":None,
"src/webkit/data/test_shell/plugins":None,
"src/webkit/data/xbm_decoder":None,
}
@CONFIG_CTX()
def checkout_instrumented_libraries(c):
c.solutions[0].custom_vars['checkout_instrumented_libraries'] = 'True'
# TODO(crbug.com/781413): remove this once the hook is working reliably.
@CONFIG_CTX(includes=['chromium'])
def chromium_no_telemetry_dependencies(c): # pragma: no cover
c.solutions[0].custom_vars['checkout_telemetry_dependencies'] = 'False'
@CONFIG_CTX()
def arm(c):
c.target_cpu.add('arm')
@CONFIG_CTX()
def arm64(c):
c.target_cpu.add('arm64')