| 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..5a5234ad088a1e2501d8173f104ee5b87851aad5
|
| --- /dev/null
|
| +++ b/recipe_modules/gclient/config.py
|
| @@ -0,0 +1,88 @@
|
| +# 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)
|
| +
|
| +# TODO(phajdan.jr): Remove chromium-specific helper.
|
| +def ChromiumGitURL(_c, *pieces): # pragma: no cover
|
| + return '/'.join(('https://chromium.googlesource.com',) + pieces)
|
| +
|
| +# TODO(phajdan.jr): Remove chromium-specific helper.
|
| +def ChromeInternalGitURL(_c, *pieces): # pragma: no cover
|
| + return '/'.join(('https://chrome-internal.googlesource.com',) + pieces)
|
|
|