depot_tools: add infra_paths recipe module for infra-specific paths (attempt #2)
This is different from previous attempt https://codereview.chromium.org/1915463002 . The change is completely backwards-compatible, and doesn't introduce recipe expectation changes. Modules can be switched to depend on infra_paths independently, without any expectation changes either. By moving path module's config.py to paths_config.py here, we also guarantee that the returned results are going to be exactly the same. Depends on https://codereview.chromium.org/1923363003 . BUG=chromium:605919 Review-Url: https://codereview.chromium.org/1926033002 git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@300324 0039d316-1c4b-4281-b951-d872f2087c98changes/60/343160/1
parent
1c3786065a
commit
c3c1229013
@ -0,0 +1,4 @@
|
||||
DEPS = [
|
||||
'recipe_engine/path',
|
||||
'recipe_engine/properties',
|
||||
]
|
@ -0,0 +1,12 @@
|
||||
# Copyright 2016 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.
|
||||
|
||||
from recipe_engine import recipe_api
|
||||
|
||||
|
||||
class InfraPathsApi(recipe_api.RecipeApi):
|
||||
def initialize(self):
|
||||
# TODO(phajdan.jr): remove dupes from the engine and delete infra_ prefix.
|
||||
self.m.path.set_config(
|
||||
'infra_' + self.m.properties.get('path_config', 'buildbot'))
|
@ -0,0 +1,14 @@
|
||||
[
|
||||
{
|
||||
"cmd": [],
|
||||
"name": "show cache path",
|
||||
"~followup_annotations": [
|
||||
"@@@STEP_TEXT@[CACHE]@@@"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "$result",
|
||||
"recipe_result": null,
|
||||
"status_code": 0
|
||||
}
|
||||
]
|
@ -0,0 +1,14 @@
|
||||
[
|
||||
{
|
||||
"cmd": [],
|
||||
"name": "show cache path",
|
||||
"~followup_annotations": [
|
||||
"@@@STEP_TEXT@[CACHE]@@@"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "$result",
|
||||
"recipe_result": null,
|
||||
"status_code": 0
|
||||
}
|
||||
]
|
@ -0,0 +1,14 @@
|
||||
[
|
||||
{
|
||||
"cmd": [],
|
||||
"name": "show cache path",
|
||||
"~followup_annotations": [
|
||||
"@@@STEP_TEXT@[CACHE]@@@"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "$result",
|
||||
"recipe_result": null,
|
||||
"status_code": 0
|
||||
}
|
||||
]
|
@ -0,0 +1,14 @@
|
||||
[
|
||||
{
|
||||
"cmd": [],
|
||||
"name": "show cache path",
|
||||
"~followup_annotations": [
|
||||
"@@@STEP_TEXT@[CACHE]@@@"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "$result",
|
||||
"recipe_result": null,
|
||||
"status_code": 0
|
||||
}
|
||||
]
|
@ -0,0 +1,14 @@
|
||||
[
|
||||
{
|
||||
"cmd": [],
|
||||
"name": "show cache path",
|
||||
"~followup_annotations": [
|
||||
"@@@STEP_TEXT@[CACHE]@@@"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "$result",
|
||||
"recipe_result": null,
|
||||
"status_code": 0
|
||||
}
|
||||
]
|
@ -0,0 +1,14 @@
|
||||
[
|
||||
{
|
||||
"cmd": [],
|
||||
"name": "show cache path",
|
||||
"~followup_annotations": [
|
||||
"@@@STEP_TEXT@[CACHE]@@@"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "$result",
|
||||
"recipe_result": null,
|
||||
"status_code": 0
|
||||
}
|
||||
]
|
@ -0,0 +1,14 @@
|
||||
[
|
||||
{
|
||||
"cmd": [],
|
||||
"name": "show cache path",
|
||||
"~followup_annotations": [
|
||||
"@@@STEP_TEXT@[CACHE]@@@"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "$result",
|
||||
"recipe_result": null,
|
||||
"status_code": 0
|
||||
}
|
||||
]
|
@ -0,0 +1,28 @@
|
||||
# Copyright 2016 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.
|
||||
|
||||
DEPS = [
|
||||
'infra_paths',
|
||||
'recipe_engine/path',
|
||||
'recipe_engine/platform',
|
||||
'recipe_engine/properties',
|
||||
'recipe_engine/step',
|
||||
]
|
||||
|
||||
|
||||
def RunSteps(api):
|
||||
api.step('show cache path', [])
|
||||
api.step.active_result.presentation.step_text = str(api.path['cache'])
|
||||
|
||||
|
||||
def GenTests(api):
|
||||
yield api.test('basic')
|
||||
|
||||
for platform in ('linux', 'mac', 'win'):
|
||||
for path_config in ('buildbot', 'kitchen'):
|
||||
yield (
|
||||
api.test('paths_%s_%s' % (path_config, platform)) +
|
||||
api.platform.name(platform) +
|
||||
api.properties(path_config=path_config)
|
||||
)
|
@ -0,0 +1,46 @@
|
||||
# Copyright 2016 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['path'].CONFIG_CTX
|
||||
|
||||
|
||||
@CONFIG_CTX()
|
||||
def infra_common(c):
|
||||
c.dynamic_paths['checkout'] = None
|
||||
|
||||
|
||||
@CONFIG_CTX(includes=['infra_common'])
|
||||
def infra_buildbot(c):
|
||||
c.base_paths['root'] = c.CURRENT_WORKING_DIR[:-4]
|
||||
c.base_paths['slave_build'] = c.CURRENT_WORKING_DIR
|
||||
c.base_paths['cache'] = c.base_paths['root'] + (
|
||||
'build', 'slave', 'cache')
|
||||
c.base_paths['git_cache'] = c.base_paths['root'] + (
|
||||
'build', 'slave', 'cache_dir')
|
||||
c.base_paths['goma_cache'] = c.base_paths['root'] + (
|
||||
'build', 'slave', 'goma_cache')
|
||||
for token in ('build_internal', 'build', 'depot_tools'):
|
||||
c.base_paths[token] = c.base_paths['root'] + (token,)
|
||||
|
||||
|
||||
@CONFIG_CTX(includes=['infra_common'])
|
||||
def infra_kitchen(c):
|
||||
c.base_paths['root'] = c.CURRENT_WORKING_DIR
|
||||
c.base_paths['slave_build'] = c.CURRENT_WORKING_DIR
|
||||
# TODO(phajdan.jr): have one cache dir, let clients append suffixes.
|
||||
# TODO(phajdan.jr): set persistent cache path for remaining platforms.
|
||||
# NOTE: do not use /b/swarm_slave here - it gets deleted on bot redeploy,
|
||||
# and may happen even after a reboot.
|
||||
if c.PLATFORM == 'linux':
|
||||
c.base_paths['cache'] = (
|
||||
'/', 'b', 'cache', 'chromium')
|
||||
c.base_paths['git_cache'] = (
|
||||
'/', 'b', 'cache', 'chromium', 'git_cache')
|
||||
c.base_paths['goma_cache'] = (
|
||||
'/', 'b', 'cache', 'chromium', 'goma_cache')
|
||||
else:
|
||||
c.base_paths['cache'] = c.base_paths['root'] + ('cache',)
|
||||
c.base_paths['git_cache'] = c.base_paths['root'] + ('cache_dir',)
|
||||
c.base_paths['goma_cache'] = c.base_paths['root'] + ('goma_cache',)
|
@ -1,16 +0,0 @@
|
||||
# Copyright 2016 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.
|
||||
|
||||
from recipe_engine import recipe_test_api
|
||||
from recipe_engine.config_types import Path, NamedBasePath
|
||||
|
||||
class InfraPathsTestApi(recipe_test_api.RecipeTestApi): #pragma: no cover
|
||||
@recipe_test_api.mod_test_data
|
||||
@staticmethod
|
||||
def exists(*paths):
|
||||
assert all(isinstance(p, Path) for p in paths)
|
||||
return paths
|
||||
|
||||
def __getitem__(self, name):
|
||||
return Path(NamedBasePath(name))
|
Loading…
Reference in New Issue