Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(811)

Side by Side Diff: recipe_modules/gclient/config.py

Issue 1917433002: Generalize patch_project to patch root conversion. (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: -line long Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « recipe_modules/gclient/api.py ('k') | recipe_modules/rietveld/api.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2013 The Chromium Authors. All rights reserved. 1 # Copyright 2013 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import types 5 import types
6 6
7 from recipe_engine.config import config_item_context, ConfigGroup, BadConf 7 from recipe_engine.config import config_item_context, ConfigGroup, BadConf
8 from recipe_engine.config import ConfigList, Dict, Single, Static, Set, List 8 from recipe_engine.config import ConfigList, Dict, Single, Static, Set, List
9 9
10 from . import api as gclient_api 10 from . import api as gclient_api
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 # to the solution.revision field is really terrible. I mostly blame 56 # to the solution.revision field is really terrible. I mostly blame
57 # gclient. 57 # gclient.
58 # Maps 'parent_build_property' -> 'custom_var_name' 58 # Maps 'parent_build_property' -> 'custom_var_name'
59 # Maps 'parent_build_property' -> None 59 # Maps 'parent_build_property' -> None
60 # If value is None, the property value will be applied to 60 # If value is None, the property value will be applied to
61 # solutions[0].revision. Otherwise, it will be applied to 61 # solutions[0].revision. Otherwise, it will be applied to
62 # solutions[0].custom_vars['custom_var_name'] 62 # solutions[0].custom_vars['custom_var_name']
63 parent_got_revision_mapping = Dict(hidden=True), 63 parent_got_revision_mapping = Dict(hidden=True),
64 delete_unversioned_trees = Single(bool, empty_val=True, required=False), 64 delete_unversioned_trees = Single(bool, empty_val=True, required=False),
65 65
66 # Maps patch_project to (solution/path, revision).
67 # - solution/path is then used to apply patches as patch root in
68 # bot_update.
69 # - if revision is given, it's passed verbatim to bot_update for
70 # corresponding dependency.
71 # This is essentially a whitelist of which projects inside a solution
72 # can be patched automatically by bot_update based on PATCH_PROJECT
73 # property.
74 # For example, bare chromium solution has this entry in patch_projects
75 # 'angle/angle': ('src/third_party/angle', 'HEAD')
76 # then a patch to Angle project can be applied to a chromium src's
77 # checkout after first updating Angle's repo to its master's HEAD.
78 patch_projects = Dict(value_type=tuple, hidden=True),
79
66 # Check out refs/branch-heads. 80 # Check out refs/branch-heads.
67 # TODO (machenbach): Only implemented for bot_update atm. 81 # TODO (machenbach): Only implemented for bot_update atm.
68 with_branch_heads = Single( 82 with_branch_heads = Single(
69 bool, 83 bool,
70 empty_val=False, 84 empty_val=False,
71 required=False, 85 required=False,
72 hidden=True), 86 hidden=True),
73 87
74 GIT_MODE = Static(bool(GIT_MODE)), 88 GIT_MODE = Static(bool(GIT_MODE)),
75 USE_MIRROR = Static(bool(USE_MIRROR)), 89 USE_MIRROR = Static(bool(USE_MIRROR)),
90 # TODO(tandrii): remove PATCH_PROJECT field.
91 # DON'T USE THIS. WILL BE REMOVED.
76 PATCH_PROJECT = Static(str(PATCH_PROJECT), hidden=True), 92 PATCH_PROJECT = Static(str(PATCH_PROJECT), hidden=True),
77 BUILDSPEC_VERSION= Static(BUILDSPEC_VERSION, hidden=True), 93 BUILDSPEC_VERSION= Static(BUILDSPEC_VERSION, hidden=True),
78 ) 94 )
79 95
80 config_ctx = config_item_context(BaseConfig) 96 config_ctx = config_item_context(BaseConfig)
81 97
82 def ChromiumSvnSubURL(c, *pieces): 98 def ChromiumSvnSubURL(c, *pieces):
83 BASES = ('https://src.chromium.org', 99 BASES = ('https://src.chromium.org',
84 'svn://svn-mirror.golo.chromium.org') 100 'svn://svn-mirror.golo.chromium.org')
85 return '/'.join((BASES[c.USE_MIRROR],) + pieces) 101 return '/'.join((BASES[c.USE_MIRROR],) + pieces)
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 m['src/third_party/webrtc'] = 'got_webrtc_revision' 155 m['src/third_party/webrtc'] = 'got_webrtc_revision'
140 156
141 p = c.parent_got_revision_mapping 157 p = c.parent_got_revision_mapping
142 p['parent_got_revision'] = None 158 p['parent_got_revision'] = None
143 p['parent_got_angle_revision'] = 'angle_revision' 159 p['parent_got_angle_revision'] = 'angle_revision'
144 p['parent_got_nacl_revision'] = 'nacl_revision' 160 p['parent_got_nacl_revision'] = 'nacl_revision'
145 p['parent_got_swarming_client_revision'] = 'swarming_revision' 161 p['parent_got_swarming_client_revision'] = 'swarming_revision'
146 p['parent_got_v8_revision'] = 'v8_revision' 162 p['parent_got_v8_revision'] = 'v8_revision'
147 p['parent_got_webrtc_revision'] = 'webrtc_revision' 163 p['parent_got_webrtc_revision'] = 'webrtc_revision'
148 164
149 # Patch project revisions are applied whenever patch_project is set. E.g. if 165 p = c.patch_projects
150 # a v8 stand-alone patch is sent to a chromium trybot, patch_project is v8 166 p['v8'] = ('src/v8', 'HEAD')
151 # and can be used to sync v8 to HEAD instead of the pinned chromium 167 p['angle/angle'] = ('src/third_party/angle', None)
152 # version. 168 p['blink'] = ('src/third_party/WebKit', None)
153 patch_project_revisions = {
154 'v8': ('src/v8', 'HEAD'),
155 }
156
157 patch_revision = patch_project_revisions.get(c.PATCH_PROJECT)
158 # TODO(phajdan.jr): Move to proper repo and add coverage.
159 if patch_revision: # pragma: no cover
160 c.revisions[patch_revision[0]] = patch_revision[1]
161 169
162 @config_ctx(includes=['chromium_bare']) 170 @config_ctx(includes=['chromium_bare'])
163 def chromium_empty(c): 171 def chromium_empty(c):
164 c.solutions[0].deps_file = '' # pragma: no cover 172 c.solutions[0].deps_file = '' # pragma: no cover
165 173
166 @config_ctx(includes=['chromium_bare']) 174 @config_ctx(includes=['chromium_bare'])
167 def chromium(c): 175 def chromium(c):
168 s = c.solutions[0] 176 s = c.solutions[0]
169 s.custom_deps = mirror_only(c, {}) 177 s.custom_deps = mirror_only(c, {})
170 178
(...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after
531 soln.deps_file = 'DEPS' 539 soln.deps_file = 'DEPS'
532 soln.managed = False 540 soln.managed = False
533 541
534 @config_ctx(config_vars={'GIT_MODE': True}) 542 @config_ctx(config_vars={'GIT_MODE': True})
535 def infra(c): 543 def infra(c):
536 soln = c.solutions.add() 544 soln = c.solutions.add()
537 soln.name = 'infra' 545 soln.name = 'infra'
538 soln.url = 'https://chromium.googlesource.com/infra/infra.git' 546 soln.url = 'https://chromium.googlesource.com/infra/infra.git'
539 c.got_revision_mapping['infra'] = 'got_revision' 547 c.got_revision_mapping['infra'] = 'got_revision'
540 548
549 p = c.patch_projects
550 p['luci-py'] = ('infra/luci', 'HEAD')
551 p['recipes-py'] = ('infra/recipes-py', 'HEAD')
552
541 @config_ctx(config_vars={'GIT_MODE': True}) 553 @config_ctx(config_vars={'GIT_MODE': True})
542 def infra_internal(c): # pragma: no cover 554 def infra_internal(c): # pragma: no cover
543 soln = c.solutions.add() 555 soln = c.solutions.add()
544 soln.name = 'infra_internal' 556 soln.name = 'infra_internal'
545 soln.url = 'https://chrome-internal.googlesource.com/infra/infra_internal.git' 557 soln.url = 'https://chrome-internal.googlesource.com/infra/infra_internal.git'
546 c.got_revision_mapping['infra_internal'] = 'got_revision' 558 c.got_revision_mapping['infra_internal'] = 'got_revision'
547 559
548 @config_ctx(includes=['infra']) 560 @config_ctx(includes=['infra'])
549 def luci_gae(c): 561 def luci_gae(c):
550 # luci/gae is checked out as a part of infra.git solution at HEAD. 562 # luci/gae is checked out as a part of infra.git solution at HEAD.
(...skipping 14 matching lines...) Expand all
565 gclient_api.RevisionFallbackChain('origin/master')) 577 gclient_api.RevisionFallbackChain('origin/master'))
566 m = c.got_revision_mapping 578 m = c.got_revision_mapping
567 del m['infra'] 579 del m['infra']
568 m['infra/go/src/github.com/luci/luci-go'] = 'got_revision' 580 m['infra/go/src/github.com/luci/luci-go'] = 'got_revision'
569 581
570 @config_ctx(includes=['infra']) 582 @config_ctx(includes=['infra'])
571 def luci_py(c): 583 def luci_py(c):
572 # luci-py is checked out as part of infra just to have appengine 584 # luci-py is checked out as part of infra just to have appengine
573 # pre-installed, as that's what luci-py PRESUBMIT relies on. 585 # pre-installed, as that's what luci-py PRESUBMIT relies on.
574 c.revisions['infra'] = 'origin/master' 586 c.revisions['infra'] = 'origin/master'
587 # TODO(tandrii): make use of c.patch_projects.
575 c.revisions['infra/luci'] = ( 588 c.revisions['infra/luci'] = (
576 gclient_api.RevisionFallbackChain('origin/master')) 589 gclient_api.RevisionFallbackChain('origin/master'))
577 m = c.got_revision_mapping 590 m = c.got_revision_mapping
578 del m['infra'] 591 del m['infra']
579 m['infra/luci'] = 'got_revision' 592 m['infra/luci'] = 'got_revision'
580 593
581 @config_ctx(includes=['infra']) 594 @config_ctx(includes=['infra'])
582 def recipes_py(c): 595 def recipes_py(c):
583 c.revisions['infra'] = 'origin/master' 596 c.revisions['infra'] = 'origin/master'
597 # TODO(tandrii): make use of c.patch_projects.
584 c.revisions['infra/recipes-py'] = ( 598 c.revisions['infra/recipes-py'] = (
585 gclient_api.RevisionFallbackChain('origin/master')) 599 gclient_api.RevisionFallbackChain('origin/master'))
586 m = c.got_revision_mapping 600 m = c.got_revision_mapping
587 del m['infra'] 601 del m['infra']
588 m['infra/recipes-py'] = 'got_revision' 602 m['infra/recipes-py'] = 'got_revision'
589 603
590 @config_ctx() 604 @config_ctx()
591 def chrome_from_buildspec(c): # pragma: no cover 605 def chrome_from_buildspec(c): # pragma: no cover
592 soln = c.solutions.add() 606 soln = c.solutions.add()
593 soln.name = 'chrome_from_buildspec' 607 soln.name = 'chrome_from_buildspec'
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
627 'GoogleChrome/custom-tabs-client.git') 641 'GoogleChrome/custom-tabs-client.git')
628 c.got_revision_mapping['custom_tabs_client'] = 'got_revision' 642 c.got_revision_mapping['custom_tabs_client'] = 'got_revision'
629 643
630 # TODO(phajdan.jr): Move to proper repo and add coverage. 644 # TODO(phajdan.jr): Move to proper repo and add coverage.
631 @config_ctx() 645 @config_ctx()
632 def angle_top_of_tree(c): # pragma: no cover 646 def angle_top_of_tree(c): # pragma: no cover
633 """Configures the top-of-tree ANGLE in a Chromium checkout. 647 """Configures the top-of-tree ANGLE in a Chromium checkout.
634 648
635 Sets up ToT instead of the DEPS-pinned revision for ANGLE. 649 Sets up ToT instead of the DEPS-pinned revision for ANGLE.
636 """ 650 """
651 # TODO(tandrii): I think patch_projects in bare_chromium fixed this.
637 c.solutions[0].revision = 'HEAD' 652 c.solutions[0].revision = 'HEAD'
638 c.revisions['src/third_party/angle'] = 'HEAD' 653 c.revisions['src/third_party/angle'] = 'HEAD'
639 654
640 @config_ctx() 655 @config_ctx()
641 def gerrit_test_cq_normal(c): 656 def gerrit_test_cq_normal(c):
642 soln = c.solutions.add() 657 soln = c.solutions.add()
643 soln.name = 'gerrit-test-cq-normal' 658 soln.name = 'gerrit-test-cq-normal'
644 soln.url = 'https://chromium.googlesource.com/playground/gerrit-cq/normal.git' 659 soln.url = 'https://chromium.googlesource.com/playground/gerrit-cq/normal.git'
645 660
646 # TODO(phajdan.jr): Move to proper repo and add coverage. 661 # TODO(phajdan.jr): Move to proper repo and add coverage.
647 @config_ctx() 662 @config_ctx()
648 def valgrind(c): # pragma: no cover 663 def valgrind(c): # pragma: no cover
649 """Add Valgrind binaries to the gclient solution.""" 664 """Add Valgrind binaries to the gclient solution."""
650 c.solutions[0].custom_deps['src/third_party/valgrind'] = \ 665 c.solutions[0].custom_deps['src/third_party/valgrind'] = \
651 ChromiumGitURL(c, 'chromium', 'deps', 'valgrind', 'binaries') 666 ChromiumGitURL(c, 'chromium', 'deps', 'valgrind', 'binaries')
OLDNEW
« no previous file with comments | « recipe_modules/gclient/api.py ('k') | recipe_modules/rietveld/api.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698