Replace all uses of the word 'master' with 'builder_group' in //tools/mb
This removes every reference but the "--master/-m" cmd-line arg and the
"masters" mb_config.pyl key, which will be removed in a follow-up once
all users of mb.py (ie: recipes) have switched over.
"builder_group" is also the term we're using when replacing "master" in
recipe code: crbug.com/1109276. So we should conform on using that term
going forward.
Bug: chromium:1117773
Change-Id: I1de1b8e68bcf2c9d68b00a05f0f5761cf8b4ef9a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/201382
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Dirk Pranke <dpranke@google.com>
Cr-Commit-Position: refs/heads/master@{#32964}
diff --git a/tools_webrtc/mb/docs/design_spec.md b/tools_webrtc/mb/docs/design_spec.md
index 33fda80..0aaaf89 100644
--- a/tools_webrtc/mb/docs/design_spec.md
+++ b/tools_webrtc/mb/docs/design_spec.md
@@ -52,8 +52,8 @@
args`) to use.
A config can either be specified directly (useful for testing) or by specifying
-the master name and builder name (useful on the bots so that they do not need
-to specify a config directly and can be hidden from the details).
+the builder group name and builder name (useful on the bots so that they do not
+need to specify a config directly and can be hidden from the details).
See the [user guide](user_guide.md#mb_config.pyl) for details.
diff --git a/tools_webrtc/mb/docs/user_guide.md b/tools_webrtc/mb/docs/user_guide.md
index 9817553..8c66cd3 100644
--- a/tools_webrtc/mb/docs/user_guide.md
+++ b/tools_webrtc/mb/docs/user_guide.md
@@ -27,8 +27,8 @@
mb analyze -c chromium_linux_rel //out/Release input.json output.json
```
-Either the `-c/--config` flag or the `-m/--master` and `-b/--builder` flags
-must be specified so that `mb` can figure out which config to use.
+Either the `-c/--config` flag or the `-m/--builder-group` and `-b/--builder`
+flags must be specified so that `mb` can figure out which config to use.
The first positional argument must be a GN-style "source-absolute" path
to the build directory.
@@ -90,15 +90,16 @@
`build_targets` differ from each other or from `compile_targets` and
`test_targets`.
-The `-b/--builder`, `-c/--config`, `-f/--config-file`, `-m/--master`,
+The `-b/--builder`, `-c/--config`, `-f/--config-file`, `-m/--builder-group`,
`-q/--quiet`, and `-v/--verbose` flags work as documented for `mb gen`.
### `mb audit`
`mb audit` is used to track the progress of the GYP->GN migration. You can
-use it to check a single master, or all the masters we care about. See
-`mb help audit` for more details (most people are not expected to care about
-this).
+use it to check a single builder group, or all the builder groups we care
+about.
+See `mb help audit` for more details (most people are not expected to care
+about this).
### `mb gen`
@@ -111,8 +112,8 @@
% mb gen -c linux_rel_trybot //out/Release
```
-Either the `-c/--config` flag or the `-m/--master` and `-b/--builder` flags
-must be specified so that `mb` can figure out which config to use. The
+Either the `-c/--config` flag or the `-m/--builder-group` and `-b/--builder`
+flags must be specified so that `mb` can figure out which config to use. The
`--phase` flag must also be used with builders that have multiple
build/compile steps (and only with those builders).
@@ -149,7 +150,7 @@
Prints what command will be run by `mb gen` (like `mb gen -n` but does
not require you to specify a path).
-The `-b/--builder`, `-c/--config`, `-f/--config-file`, `-m/--master`,
+The `-b/--builder`, `-c/--config`, `-f/--config-file`, `-m/--builder-group`,
`--phase`, `-q/--quiet`, and `-v/--verbose` flags work as documented for
`mb gen`.
@@ -198,11 +199,11 @@
having to juggle long lists of GYP_DEFINES and gn args by hand.
`mb_config.pyl` is structured as a file containing a single PYthon Literal
-expression: a dictionary with three main keys, `masters`, `configs` and
+expression: a dictionary with three main keys, `builder_groups`, `configs` and
`mixins`.
-The `masters` key contains a nested series of dicts containing mappings
-of master -> builder -> config . This allows us to isolate the buildbot
+The `builder_groups` key contains a nested series of dicts containing mappings
+of builder group -> builder -> config . This allows us to isolate the buildbot
recipes from the actual details of the configs. The config should either
be a single string value representing a key in the `configs` dictionary,
or a list of strings, each of which is a key in the `configs` dictionary;
diff --git a/tools_webrtc/mb/mb.py b/tools_webrtc/mb/mb.py
index 67d25d0..358a66e 100755
--- a/tools_webrtc/mb/mb.py
+++ b/tools_webrtc/mb/mb.py
@@ -54,7 +54,7 @@
self.sep = os.sep
self.args = argparse.Namespace()
self.configs = {}
- self.masters = {}
+ self.builder_groups = {}
self.mixins = {}
self.isolate_exe = 'isolate.exe' if self.platform.startswith(
'win') else 'isolate'
@@ -80,8 +80,10 @@
def AddCommonOptions(subp):
subp.add_argument('-b', '--builder',
help='builder name to look up config from')
- subp.add_argument('-m', '--master',
- help='master name to look up config from')
+ subp.add_argument('-m', '--builder-group',
+ # TODO(crbug.com/1117773): Remove the 'master' args.
+ '--master',
+ help='builder group name to look up config from')
subp.add_argument('-c', '--config',
help='configuration to analyze')
subp.add_argument('--phase',
@@ -252,10 +254,10 @@
def CmdExport(self):
self.ReadConfigFile()
obj = {}
- for master, builders in self.masters.items():
- obj[master] = {}
+ for builder_group, builders in self.builder_groups.items():
+ obj[builder_group] = {}
for builder in builders:
- config = self.masters[master][builder]
+ config = self.builder_groups[builder_group][builder]
if not config:
continue
@@ -269,7 +271,7 @@
if 'error' in args:
continue
- obj[master][builder] = args
+ obj[builder_group][builder] = args
# Dump object and trim trailing whitespace.
s = '\n'.join(l.rstrip() for l in
@@ -402,13 +404,13 @@
# Build a list of all of the configs referenced by builders.
all_configs = {}
- for master in self.masters:
- for config in self.masters[master].values():
+ for builder_group in self.builder_groups:
+ for config in self.builder_groups[builder_group].values():
if isinstance(config, dict):
for c in config.values():
- all_configs[c] = master
+ all_configs[c] = builder_group
else:
- all_configs[config] = master
+ all_configs[config] = builder_group
# Check that every referenced args file or config actually exists.
for config, loc in all_configs.items():
@@ -459,7 +461,7 @@
build_dir = self.args.path[0]
vals = self.DefaultVals()
- if self.args.builder or self.args.master or self.args.config:
+ if self.args.builder or self.args.builder_group or self.args.config:
vals = self.Lookup()
# Re-run gn gen in order to ensure the config is consistent with the
# build dir.
@@ -517,7 +519,7 @@
(self.args.config_file, e))
self.configs = contents['configs']
- self.masters = contents['masters']
+ self.builder_groups = contents['builder_groups']
self.mixins = contents['mixins']
def ReadIsolateMap(self):
@@ -532,38 +534,39 @@
def ConfigFromArgs(self):
if self.args.config:
- if self.args.master or self.args.builder:
- raise MBErr('Can not specific both -c/--config and -m/--master or '
- '-b/--builder')
+ if self.args.builder_group or self.args.builder:
+ raise MBErr('Can not specific both -c/--config and -m/--builder-group '
+ 'or -b/--builder')
return self.args.config
- if not self.args.master or not self.args.builder:
+ if not self.args.builder_group or not self.args.builder:
raise MBErr('Must specify either -c/--config or '
- '(-m/--master and -b/--builder)')
+ '(-m/--builder-group and -b/--builder)')
- if not self.args.master in self.masters:
+ if not self.args.builder_group in self.builder_groups:
raise MBErr('Master name "%s" not found in "%s"' %
- (self.args.master, self.args.config_file))
+ (self.args.builder_group, self.args.config_file))
- if not self.args.builder in self.masters[self.args.master]:
- raise MBErr('Builder name "%s" not found under masters[%s] in "%s"' %
- (self.args.builder, self.args.master, self.args.config_file))
+ if not self.args.builder in self.builder_groups[self.args.builder_group]:
+ raise MBErr(
+ 'Builder name "%s" not found under builder_groups[%s] in "%s"' %
+ (self.args.builder, self.args.builder_group, self.args.config_file))
- config = self.masters[self.args.master][self.args.builder]
+ config = self.builder_groups[self.args.builder_group][self.args.builder]
if isinstance(config, dict):
if self.args.phase is None:
raise MBErr('Must specify a build --phase for %s on %s' %
- (self.args.builder, self.args.master))
+ (self.args.builder, self.args.builder_group))
phase = str(self.args.phase)
if phase not in config:
raise MBErr('Phase %s doesn\'t exist for %s on %s' %
- (phase, self.args.builder, self.args.master))
+ (phase, self.args.builder, self.args.builder_group))
return config[phase]
if self.args.phase is not None:
raise MBErr('Must not specify a build --phase for %s on %s' %
- (self.args.builder, self.args.master))
+ (self.args.builder, self.args.builder_group))
return config
def FlattenConfig(self, config):
diff --git a/tools_webrtc/mb/mb_config.pyl b/tools_webrtc/mb/mb_config.pyl
index 4519e8f..4bb04aa 100644
--- a/tools_webrtc/mb/mb_config.pyl
+++ b/tools_webrtc/mb/mb_config.pyl
@@ -12,12 +12,12 @@
# easy to try different configurations of GN args in tryjob patches.
{
- # This is a map of buildbot master names -> buildbot builder names ->
+ # This is a map of buildbot builder group names -> buildbot builder names ->
# config names (where each config name is a key in the 'configs' dict,
# above). mb uses this dict to look up which config to use for a given bot.
# The builders should be sorted by the order they appear in the /builders
# page on the buildbots, *not* alphabetically.
- 'masters': {
+ 'builder_groups': {
'client.webrtc': {
# iOS
'iOS32 Debug': 'ios_debug_bot_arm',
diff --git a/tools_webrtc/mb/mb_unittest.py b/tools_webrtc/mb/mb_unittest.py
index 0cf93bb..eb11d09 100755
--- a/tools_webrtc/mb/mb_unittest.py
+++ b/tools_webrtc/mb/mb_unittest.py
@@ -111,12 +111,12 @@
TEST_CONFIG = """\
{
- 'masters': {
+ 'builder_groups': {
'chromium': {},
- 'fake_master': {
+ 'fake_group': {
'fake_builder': 'rel_bot',
'fake_debug_builder': 'debug_goma',
- 'fake_args_bot': '//build/args/bots/fake_master/fake_args_bot.gn',
+ 'fake_args_bot': '//build/args/bots/fake_group/fake_args_bot.gn',
'fake_multi_phase': { 'phase_1': 'phase_1', 'phase_2': 'phase_2'},
'fake_android_bot': 'android_bot',
},
@@ -169,7 +169,7 @@
},
}''')
mbw.files.setdefault(
- mbw.ToAbsPath('//build/args/bots/fake_master/fake_args_bot.gn'),
+ mbw.ToAbsPath('//build/args/bots/fake_group/fake_args_bot.gn'),
'is_debug = false\n')
if files:
for path, contents in files.items():
@@ -238,12 +238,12 @@
'--check\n', mbw.out)
mbw = self.fake_mbw()
- self.check(['gen', '-m', 'fake_master', '-b', 'fake_args_bot',
+ self.check(['gen', '-m', 'fake_group', '-b', 'fake_args_bot',
'//out/Debug'],
mbw=mbw, ret=0)
self.assertEqual(
mbw.files['/fake_src/out/Debug/args.gn'],
- 'import("//build/args/bots/fake_master/fake_args_bot.gn")\n\n')
+ 'import("//build/args/bots/fake_group/fake_args_bot.gn")\n\n')
def test_gen_fails(self):
@@ -801,26 +801,26 @@
def test_multiple_phases(self):
# Check that not passing a --phase to a multi-phase builder fails.
- mbw = self.check(['lookup', '-m', 'fake_master', '-b', 'fake_multi_phase'],
+ mbw = self.check(['lookup', '-m', 'fake_group', '-b', 'fake_multi_phase'],
ret=1)
self.assertIn('Must specify a build --phase', mbw.out)
# Check that passing a --phase to a single-phase builder fails.
- mbw = self.check(['lookup', '-m', 'fake_master', '-b', 'fake_builder',
+ mbw = self.check(['lookup', '-m', 'fake_group', '-b', 'fake_builder',
'--phase', 'phase_1'], ret=1)
self.assertIn('Must not specify a build --phase', mbw.out)
# Check that passing a wrong phase key to a multi-phase builder fails.
- mbw = self.check(['lookup', '-m', 'fake_master', '-b', 'fake_multi_phase',
+ mbw = self.check(['lookup', '-m', 'fake_group', '-b', 'fake_multi_phase',
'--phase', 'wrong_phase'], ret=1)
self.assertIn('Phase wrong_phase doesn\'t exist', mbw.out)
# Check that passing a correct phase key to a multi-phase builder passes.
- mbw = self.check(['lookup', '-m', 'fake_master', '-b', 'fake_multi_phase',
+ mbw = self.check(['lookup', '-m', 'fake_group', '-b', 'fake_multi_phase',
'--phase', 'phase_1'], ret=0)
self.assertIn('phase = 1', mbw.out)
- mbw = self.check(['lookup', '-m', 'fake_master', '-b', 'fake_multi_phase',
+ mbw = self.check(['lookup', '-m', 'fake_group', '-b', 'fake_multi_phase',
'--phase', 'phase_2'], ret=0)
self.assertIn('phase = 2', mbw.out)