Index: recipe_modules/gclient/config.py |
diff --git a/recipe_modules/gclient/config.py b/recipe_modules/gclient/config.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..0bcba6c178a60e0503c8d99cdbfc08a76cb46daf |
--- /dev/null |
+++ b/recipe_modules/gclient/config.py |
@@ -0,0 +1,643 @@ |
+# Copyright 2013 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 types |
+ |
+from recipe_engine.config import config_item_context, ConfigGroup, BadConf |
+from recipe_engine.config import ConfigList, Dict, Single, Static, Set, List |
+ |
+from . import api as gclient_api |
+ |
+ |
+def BaseConfig(USE_MIRROR=True, GIT_MODE=False, CACHE_DIR=None, |
+ PATCH_PROJECT=None, BUILDSPEC_VERSION=None, |
+ **_kwargs): |
+ deps = '.DEPS.git' if GIT_MODE else 'DEPS' |
+ cache_dir = str(CACHE_DIR) if GIT_MODE and CACHE_DIR else None |
+ return ConfigGroup( |
+ solutions = ConfigList( |
+ lambda: ConfigGroup( |
+ name = Single(basestring), |
+ url = Single(basestring), |
+ deps_file = Single(basestring, empty_val=deps, required=False, |
+ hidden=False), |
+ managed = Single(bool, empty_val=True, required=False, hidden=False), |
+ custom_deps = Dict(value_type=(basestring, types.NoneType)), |
+ custom_vars = Dict(value_type=basestring), |
+ safesync_url = Single(basestring, required=False), |
+ |
+ revision = Single( |
+ (basestring, gclient_api.RevisionResolver), |
+ required=False, hidden=True), |
+ ) |
+ ), |
+ deps_os = Dict(value_type=basestring), |
+ hooks = List(basestring), |
+ target_os = Set(basestring), |
+ target_os_only = Single(bool, empty_val=False, required=False), |
+ cache_dir = Static(cache_dir, hidden=False), |
+ |
+ # If supplied, use this as the source root (instead of the first solution's |
+ # checkout). |
+ src_root = Single(basestring, required=False, hidden=True), |
+ |
+ # Maps 'solution' -> build_property |
+ got_revision_mapping = Dict(hidden=True), |
+ |
+ # Addition revisions we want to pass in. For now theres a duplication |
+ # of code here of setting custom vars AND passing in --revision. We hope |
+ # to remove custom vars later. |
+ revisions = Dict( |
+ value_type=(basestring, gclient_api.RevisionResolver), |
+ hidden=True), |
+ |
+ # TODO(iannucci): HACK! The use of None here to indicate that we apply this |
+ # to the solution.revision field is really terrible. I mostly blame |
+ # gclient. |
+ # Maps 'parent_build_property' -> 'custom_var_name' |
+ # Maps 'parent_build_property' -> None |
+ # If value is None, the property value will be applied to |
+ # solutions[0].revision. Otherwise, it will be applied to |
+ # solutions[0].custom_vars['custom_var_name'] |
+ parent_got_revision_mapping = Dict(hidden=True), |
+ delete_unversioned_trees = Single(bool, empty_val=True, required=False), |
+ |
+ # Check out refs/branch-heads. |
+ # TODO (machenbach): Only implemented for bot_update atm. |
+ with_branch_heads = Single( |
+ bool, |
+ empty_val=False, |
+ required=False, |
+ hidden=True), |
+ |
+ GIT_MODE = Static(bool(GIT_MODE)), |
+ USE_MIRROR = Static(bool(USE_MIRROR)), |
+ PATCH_PROJECT = Static(str(PATCH_PROJECT), hidden=True), |
+ BUILDSPEC_VERSION= Static(BUILDSPEC_VERSION, hidden=True), |
+ ) |
+ |
+config_ctx = config_item_context(BaseConfig) |
+ |
+def ChromiumSvnSubURL(c, *pieces): |
+ BASES = ('https://src.chromium.org', |
+ 'svn://svn-mirror.golo.chromium.org') |
+ return '/'.join((BASES[c.USE_MIRROR],) + pieces) |
+ |
+def ChromiumGitURL(_c, *pieces): |
+ return '/'.join(('https://chromium.googlesource.com',) + pieces) |
+ |
+def ChromiumSrcURL(c): |
+ # TODO(phajdan.jr): Move to proper repo and add coverage. |
+ if c.GIT_MODE: # pragma: no cover |
+ return ChromiumGitURL(c, 'chromium', 'src.git') |
+ else: |
+ return ChromiumSvnSubURL(c, 'chrome', 'trunk', 'src') |
+ |
+def BlinkURL(c): |
+ # TODO(phajdan.jr): Move to proper repo and add coverage. |
+ if c.GIT_MODE: # pragma: no cover |
+ return ChromiumGitURL(c, 'chromium', 'blink.git') |
+ else: |
+ return ChromiumSvnSubURL(c, 'blink', 'trunk') |
+ |
+def ChromeSvnSubURL(c, *pieces): |
+ BASES = ('svn://svn.chromium.org', |
+ 'svn://svn-mirror.golo.chromium.org') |
+ return '/'.join((BASES[c.USE_MIRROR],) + pieces) |
+ |
+# TODO(phajdan.jr): Move to proper repo and add coverage. |
+def ChromeInternalGitURL(_c, *pieces): # pragma: no cover |
+ return '/'.join(('https://chrome-internal.googlesource.com',) + pieces) |
+ |
+def ChromeInternalSrcURL(c): |
+ # TODO(phajdan.jr): Move to proper repo and add coverage. |
+ if c.GIT_MODE: # pragma: no cover |
+ return ChromeInternalGitURL(c, 'chrome', 'src-internal.git') |
+ else: |
+ return ChromeSvnSubURL(c, 'chrome-internal', 'trunk', 'src-internal') |
+ |
+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 = ChromiumSrcURL(c) |
+ s.custom_vars = mirror_only(c, { |
+ 'googlecode_url': 'svn://svn-mirror.golo.chromium.org/%s', |
+ 'nacl_trunk': 'svn://svn-mirror.golo.chromium.org/native_client/trunk', |
+ 'sourceforge_url': 'svn://svn-mirror.golo.chromium.org/%(repo)s', |
+ 'webkit_trunk': BlinkURL(c)}) |
+ m = c.got_revision_mapping |
+ m['src'] = 'got_revision' |
+ m['src/native_client'] = 'got_nacl_revision' |
+ m['src/tools/swarming_client'] = 'got_swarming_client_revision' |
+ m['src/v8'] = 'got_v8_revision' |
+ m['src/third_party/angle'] = 'got_angle_revision' |
+ m['src/third_party/webrtc'] = 'got_webrtc_revision' |
+ |
+ 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' |
+ |
+ # Patch project revisions are applied whenever patch_project is set. E.g. if |
+ # a v8 stand-alone patch is sent to a chromium trybot, patch_project is v8 |
+ # and can be used to sync v8 to HEAD instead of the pinned chromium |
+ # version. |
+ patch_project_revisions = { |
+ 'v8': ('src/v8', 'HEAD'), |
+ } |
+ |
+ patch_revision = patch_project_revisions.get(c.PATCH_PROJECT) |
+ # TODO(phajdan.jr): Move to proper repo and add coverage. |
+ if patch_revision: # pragma: no cover |
+ c.revisions[patch_revision[0]] = patch_revision[1] |
+ |
+@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_lkcr(c): |
+ # TODO(phajdan.jr): Add git hashes for LKCR crbug.com/349277. |
+ if c.GIT_MODE: |
+ raise BadConf('Git has problems with safesync_url and LKCR, ' |
+ 'crbug.com/349277 crbug.com/109191') # pragma: no cover |
+ s = c.solutions[0] |
+ s.safesync_url = 'https://build.chromium.org/p/chromium/lkcr-status/lkgr' |
+ # TODO(hinoka): Once lkcr exists and is a tag, it should just be lkcr |
+ # rather than origin/lkcr. |
+ s.revision = 'origin/lkcr' |
+ |
+@config_ctx(includes=['chromium']) |
+def chromium_lkgr(c): |
+ s = c.solutions[0] |
+ safesync_url = 'https://chromium-status.appspot.com/lkgr' |
+ if c.GIT_MODE: # pragma: no cover |
+ safesync_url = 'https://chromium-status.appspot.com/git-lkgr' |
+ raise BadConf('Git has problems with safesync_url, crbug.com/109191.') |
+ s.safesync_url = safesync_url |
+ 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_mapping['src'] = 'got_src_revision' |
+ s = c.solutions.add() |
+ s.deps_file = '.DEPS.git' |
+ |
+# TODO(iannucci,vadimsh): Switch this to src-limited |
+@config_ctx() |
+def chrome_internal(c): |
+ s = c.solutions.add() |
+ s.name = 'src-internal' |
+ s.url = ChromeInternalSrcURL(c) |
+ # 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(includes=['chromium']) |
+def blink(c): |
+ c.solutions[0].revision = 'HEAD' |
+ del c.solutions[0].custom_deps |
+ c.revisions['src/third_party/WebKit'] = 'HEAD' |
+ |
+@config_ctx(includes=['chromium']) |
+def blink_or_chromium(c): |
+ c.solutions[0].revision = gclient_api.ProjectRevisionResolver('chromium') |
+ del c.solutions[0].custom_deps |
+ c.revisions['src/third_party/WebKit'] = \ |
+ gclient_api.ProjectRevisionResolver( |
+ 'webkit', parent_got_revision='parent_got_webkit_revision') |
+ |
+# 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() |
+def android(c): |
+ c.target_os.add('android') |
+ |
+@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_mapping['src'] = 'got_cr_revision' |
+ c.got_revision_mapping['src/v8'] = 'got_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_bleeding_edge_git(c): |
+ c.solutions[0].revision = 'HEAD' |
+ # TODO(machenbach): If bot_update is activated for all v8-chromium bots |
+ # and there's no gclient fallback, then the following line can be removed. |
+ c.solutions[0].custom_vars['v8_branch'] = 'branches/bleeding_edge' |
+ c.revisions['src/v8'] = 'HEAD' |
+ |
+@config_ctx() |
+def v8_canary(c): |
+ c.revisions['src/v8'] = 'origin/canary' |
+ |
+@config_ctx(includes=['chromium']) |
+def oilpan(c): # pragma: no cover |
+ if c.GIT_MODE: |
+ raise BadConf("Oilpan requires SVN for now") |
+ c.solutions[0].custom_vars = { |
+ 'webkit_trunk': ChromiumSvnSubURL(c, 'blink', 'branches', 'oilpan') |
+ } |
+ c.solutions[0].custom_vars['sourceforge_url'] = mirror_only( |
+ c, |
+ 'svn://svn-mirror.golo.chromium.org/%(repo)s', |
+ 'svn://svn.chromium.org/%(repo)s' |
+ ) |
+ |
+ c.revisions['src/third_party/WebKit'] = 'HEAD' |
+ c.solutions[0].revision = '197341' |
+ |
+ c.solutions[0].custom_deps = { |
+ 'src/chrome/tools/test/reference_build/chrome_linux' : |
+ ChromiumSvnSubURL(c, 'blink', 'branches', 'oilpan', 'Tools', |
+ 'reference_build', 'chrome_linux') |
+ } |
+ del c.got_revision_mapping['src'] |
+ c.got_revision_mapping['src/third_party/WebKit/Source'] = 'got_revision' |
+ |
+@config_ctx(includes=['oilpan', 'chrome_internal']) |
+def oilpan_internal(c): # pragma: no cover |
+ # Add back the oilpan data dependencies |
+ needed_components_internal = [ |
+ "src/data/memory_test", |
+ "src/data/mozilla_js_tests", |
+ "src/data/page_cycler", |
+ "src/data/tab_switching", |
+ "src/webkit/data/bmp_decoder", |
+ "src/webkit/data/ico_decoder", |
+ "src/webkit/data/test_shell/plugins", |
+ "src/webkit/data/xbm_decoder", |
+ ] |
+ for key in needed_components_internal: |
+ del c.solutions[1].custom_deps[key] |
+ |
+@config_ctx() |
+def nacl(c): |
+ s = c.solutions.add() |
+ s.name = 'native_client' |
+ s.url = ChromiumGitURL(c, 'native_client', 'src', 'native_client.git') |
+ m = c.got_revision_mapping |
+ m['native_client'] = 'got_revision' |
+ |
+@config_ctx() |
+def webports(c): |
+ s = c.solutions.add() |
+ s.name = 'src' |
+ s.url = ChromiumGitURL(c, 'webports.git') |
+ m = c.got_revision_mapping |
+ m['src'] = 'got_revision' |
+ |
+@config_ctx() |
+def wasm_llvm(c): |
+ s = c.solutions.add() |
+ s.name = 'src' |
+ s.url = ChromiumGitURL( |
+ c, 'external', 'github.com', 'WebAssembly', 'waterfall.git') |
+ m = c.got_revision_mapping |
+ m['src'] = 'got_waterfall_revision' |
+ c.revisions['src'] = 'origin/master' |
+ |
+@config_ctx() |
+def gyp(c): |
+ s = c.solutions.add() |
+ s.name = 'gyp' |
+ s.url = ChromiumGitURL(c, 'external', 'gyp.git') |
+ m = c.got_revision_mapping |
+ m['gyp'] = 'got_revision' |
+ |
+@config_ctx(config_vars={'GIT_MODE': True}) |
+def build(c): # pragma: no cover |
+ if not c.GIT_MODE: |
+ raise BadConf('build only supports git') |
+ s = c.solutions.add() |
+ s.name = 'build' |
+ s.url = ChromiumGitURL(c, 'chromium', 'tools', 'build.git') |
+ m = c.got_revision_mapping |
+ m['build'] = 'got_revision' |
+ |
+@config_ctx(config_vars={'GIT_MODE': True}) |
+def depot_tools(c): # pragma: no cover |
+ if not c.GIT_MODE: |
+ raise BadConf('depot_tools only supports git') |
+ s = c.solutions.add() |
+ s.name = 'depot_tools' |
+ s.url = ChromiumGitURL(c, 'chromium', 'tools', 'depot_tools.git') |
+ m = c.got_revision_mapping |
+ m['depot_tools'] = 'got_revision' |
+ |
+@config_ctx(config_vars={'GIT_MODE': True}) |
+def skia(c): # pragma: no cover |
+ if not c.GIT_MODE: |
+ raise BadConf('skia only supports git') |
+ s = c.solutions.add() |
+ s.name = 'skia' |
+ s.url = 'https://skia.googlesource.com/skia.git' |
+ m = c.got_revision_mapping |
+ m['skia'] = 'got_revision' |
+ |
+@config_ctx(config_vars={'GIT_MODE': True}) |
+def chrome_golo(c): # pragma: no cover |
+ if not c.GIT_MODE: |
+ raise BadConf('chrome_golo only supports git') |
+ s = c.solutions.add() |
+ s.name = 'chrome_golo' |
+ s.url = 'https://chrome-internal.googlesource.com/chrome-golo/chrome-golo.git' |
+ c.got_revision_mapping['chrome_golo'] = 'got_revision' |
+ |
+@config_ctx(config_vars={'GIT_MODE': True}) |
+def build_internal(c): |
+ if not c.GIT_MODE: # pragma: no cover |
+ raise BadConf('build_internal only supports git') |
+ s = c.solutions.add() |
+ s.name = 'build_internal' |
+ s.url = 'https://chrome-internal.googlesource.com/chrome/tools/build.git' |
+ c.got_revision_mapping['build_internal'] = 'got_revision' |
+ # We do not use 'includes' here, because we want build_internal to be the |
+ # first solution in the list as run_presubmit computes upstream revision |
+ # from the first solution. |
+ build(c) |
+ c.got_revision_mapping['build'] = 'got_build_revision' |
+ |
+@config_ctx(config_vars={'GIT_MODE': True}) |
+def build_internal_scripts_slave(c): |
+ if not c.GIT_MODE: # pragma: no cover |
+ raise BadConf('build_internal_scripts_slave only supports git') |
+ s = c.solutions.add() |
+ s.name = 'build_internal/scripts/slave' |
+ s.url = ('https://chrome-internal.googlesource.com/' |
+ 'chrome/tools/build_limited/scripts/slave.git') |
+ c.got_revision_mapping['build_internal/scripts/slave'] = 'got_revision' |
+ # We do not use 'includes' here, because we want build_internal to be the |
+ # first solution in the list as run_presubmit computes upstream revision |
+ # from the first solution. |
+ build(c) |
+ c.got_revision_mapping['build'] = 'got_build_revision' |
+ |
+@config_ctx() |
+def slave_deps(c): |
+ s = c.solutions.add() |
+ s.name = 'build_internal/slave.DEPS' |
+ s.url = ('https://chrome-internal.googlesource.com/' |
+ 'chrome/tools/build/slave.DEPS.git') |
+ c.got_revision_mapping['build_internal/slave.DEPS'] = 'got_revision' |
+ |
+@config_ctx() |
+def internal_deps(c): |
+ s = c.solutions.add() |
+ s.name = 'build_internal/internal.DEPS' |
+ s.url = ('https://chrome-internal.googlesource.com/' |
+ 'chrome/tools/build/internal.DEPS.git') |
+ c.got_revision_mapping['build_internal/internal.DEPS'] = 'got_revision' |
+ |
+@config_ctx(includes=['chromium', 'chrome_internal']) |
+def perf(c): |
+ s = c.solutions[0] |
+ s.custom_vars['llvm_url'] = 'svn://svn-mirror.golo.chromium.org/llvm-project' |
+ 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']) |
+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_mapping['src'] = 'got_chromium_revision' |
+ c.got_revision_mapping['src/third_party/skia'] = 'got_revision' |
+ c.parent_got_revision_mapping['parent_got_revision'] = 'got_revision' |
+ |
+@config_ctx(includes=['chromium']) |
+def chromium_webrtc(c): |
+ c.got_revision_mapping['src/third_party/libjingle/source/talk'] = ( |
+ 'got_libjingle_revision') |
+ c.got_revision_mapping['src/third_party/libvpx/source'] = ( |
+ 'got_libvpx_revision') |
+ |
+@config_ctx(includes=['chromium_webrtc']) |
+def chromium_webrtc_tot(c): |
+ """Configures ToT revisions for WebRTC and Libjingle for Chromium. |
+ |
+ Sets up ToT instead of the DEPS-pinned revision for WebRTC and Libjingle. |
+ 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' |
+ c.revisions['src/third_party/libjingle/source/talk'] = 'HEAD' |
+ |
+@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 = ChromiumGitURL(c, 'chromium', 'deps', 'webrtc', 'webrtc.DEPS') |
+ s.deps_file = 'DEPS' |
+ |
+@config_ctx() |
+def pdfium(c): |
+ soln = c.solutions.add() |
+ soln.name = 'pdfium' |
+ soln.url = 'https://pdfium.googlesource.com/pdfium.git' |
+ |
+@config_ctx() |
+def mojo(c): |
+ soln = c.solutions.add() |
+ soln.name = 'src' |
+ soln.url = 'https://chromium.googlesource.com/external/mojo.git' |
+ |
+@config_ctx() |
+def crashpad(c): |
+ soln = c.solutions.add() |
+ soln.name = 'crashpad' |
+ soln.url = 'https://chromium.googlesource.com/crashpad/crashpad.git' |
+ |
+@config_ctx() |
+def boringssl(c): |
+ soln = c.solutions.add() |
+ soln.name = 'boringssl' |
+ soln.url = 'https://boringssl.googlesource.com/boringssl.git' |
+ soln.deps_file = 'util/bot/DEPS' |
+ |
+@config_ctx() |
+def dart(c): |
+ soln = c.solutions.add() |
+ soln.name = 'sdk' |
+ soln.url = ('https://chromium.googlesource.com/external/github.com/' + |
+ 'dart-lang/sdk.git') |
+ soln.deps_file = 'DEPS' |
+ soln.managed = False |
+ |
+@config_ctx(config_vars={'GIT_MODE': True}) |
+def infra(c): |
+ soln = c.solutions.add() |
+ soln.name = 'infra' |
+ soln.url = 'https://chromium.googlesource.com/infra/infra.git' |
+ c.got_revision_mapping['infra'] = 'got_revision' |
+ |
+@config_ctx(config_vars={'GIT_MODE': True}) |
+def infra_internal(c): # pragma: no cover |
+ soln = c.solutions.add() |
+ soln.name = 'infra_internal' |
+ soln.url = 'https://chrome-internal.googlesource.com/infra/infra_internal.git' |
+ c.got_revision_mapping['infra_internal'] = 'got_revision' |
+ |
+@config_ctx(includes=['infra']) |
+def luci_gae(c): |
+ # luci/gae is checked out as a part of infra.git solution at HEAD. |
+ c.revisions['infra'] = 'origin/master' |
+ # luci/gae is developed together with luci-go, which should be at HEAD. |
+ c.revisions['infra/go/src/github.com/luci/luci-go'] = 'origin/master' |
+ c.revisions['infra/go/src/github.com/luci/gae'] = ( |
+ gclient_api.RevisionFallbackChain('origin/master')) |
+ m = c.got_revision_mapping |
+ del m['infra'] |
+ m['infra/go/src/github.com/luci/gae'] = 'got_revision' |
+ |
+@config_ctx(includes=['infra']) |
+def luci_go(c): |
+ # luci-go is checked out as a part of infra.git solution at HEAD. |
+ c.revisions['infra'] = 'origin/master' |
+ c.revisions['infra/go/src/github.com/luci/luci-go'] = ( |
+ gclient_api.RevisionFallbackChain('origin/master')) |
+ m = c.got_revision_mapping |
+ del m['infra'] |
+ m['infra/go/src/github.com/luci/luci-go'] = 'got_revision' |
+ |
+@config_ctx(includes=['infra']) |
+def luci_py(c): |
+ # luci-py is checked out as part of infra just to have appengine |
+ # pre-installed, as that's what luci-py PRESUBMIT relies on. |
+ c.revisions['infra'] = 'origin/master' |
+ c.revisions['infra/luci'] = ( |
+ gclient_api.RevisionFallbackChain('origin/master')) |
+ m = c.got_revision_mapping |
+ del m['infra'] |
+ m['infra/luci'] = 'got_revision' |
+ |
+@config_ctx(includes=['infra']) |
+def recipes_py(c): |
+ c.revisions['infra'] = 'origin/master' |
+ c.revisions['infra/recipes-py'] = ( |
+ gclient_api.RevisionFallbackChain('origin/master')) |
+ m = c.got_revision_mapping |
+ del m['infra'] |
+ m['infra/recipes-py'] = 'got_revision' |
+ |
+@config_ctx() |
+def chrome_from_buildspec(c): # pragma: no cover |
+ soln = c.solutions.add() |
+ soln.name = 'chrome_from_buildspec' |
+ # This URL has to be augmented with the appropriate bucket by the recipe using |
+ # it. |
+ soln.url = ('svn://svn-mirror.golo.chromium.org/chrome-internal/trunk/tools/' |
+ 'buildspec/build/') |
+ soln.custom_vars['svn_url'] = 'svn://svn-mirror.golo.chromium.org' |
+ soln.custom_deps = {} |
+ |
+@config_ctx() |
+def catapult(c): |
+ soln = c.solutions.add() |
+ soln.name = 'catapult' |
+ soln.url = ('https://chromium.googlesource.com/external/github.com/' |
+ 'catapult-project/catapult.git') |
+ c.got_revision_mapping['catapult'] = 'got_revision' |
+ |
+@config_ctx(includes=['infra_internal'], config_vars={'GIT_MODE': True}) |
+def infradata_master_manager(c): |
+ soln = c.solutions.add() |
+ soln.name = 'infra-data-master-manager' |
+ soln.url = ( |
+ 'https://chrome-internal.googlesource.com/infradata/master-manager.git') |
+ c.got_revision_mapping['infra-data-master-manager'] = 'got_revision' |
+ |
+@config_ctx() |
+def with_branch_heads(c): |
+ c.with_branch_heads = True |
+ |
+@config_ctx() |
+def custom_tabs_client(c): |
+ soln = c.solutions.add() |
+ soln.name = 'custom_tabs_client' |
+ # TODO(pasko): test custom-tabs-client within a full chromium checkout. |
+ soln.url = ('https://chromium.googlesource.com/external/github.com/' |
+ 'GoogleChrome/custom-tabs-client.git') |
+ c.got_revision_mapping['custom_tabs_client'] = 'got_revision' |
+ |
+# 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. |
+ """ |
+ c.solutions[0].revision = 'HEAD' |
+ c.revisions['src/third_party/angle'] = 'HEAD' |
+ |
+@config_ctx() |
+def gerrit_test_cq_normal(c): |
+ soln = c.solutions.add() |
+ soln.name = 'gerrit-test-cq-normal' |
+ soln.url = 'https://chromium.googlesource.com/playground/gerrit-cq/normal.git' |
+ |
+# 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') |