nodejs/node · error · MBErr
Must specify either -c/--config or (-m/--builder-group and -
Error message
Must specify either -c/--config or (-m/--builder-group and -b/--builder)
What it means
ConfigFromArgs() requires exactly one selection mode: if neither -c/--config is set nor both -m/--builder-group AND -b/--builder are set, it raises MBErr('Must specify either -c/--config or (-m/--builder-group and -b/--builder)'). Passing only -m without -b (or vice versa) also trips it.
Source
Thrown at deps/v8/tools/mb/mb.py:605
'Duplicate targets in isolate map files: %s.' %
', '.join(duplicates))
isolate_maps.update(isolate_map)
except SyntaxError as e:
raise MBErr('Failed to parse isolate map file "%s": %s' %
(isolate_map, e)) from e
return isolate_maps
def ConfigFromArgs(self):
if self.args.config:
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.builder_group or not self.args.builder:
raise MBErr('Must specify either -c/--config or '
'(-m/--builder-group and -b/--builder)')
if not self.args.builder_group in self.builder_groups:
raise MBErr('Builder groups name "%s" not found in "%s"' %
(self.args.builder_group, self.args.config_file))
config = _v8_builder_fallback(
self.args.builder, self.builder_groups[self.args.builder_group])
if not config:
raise MBErr(
'Builder name "%s" not found under builder_groups[%s] in "%s"' %
(self.args.builder, self.args.builder_group, self.args.config_file))
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.builder_group))View on GitHub (pinned to 1b2de5e052)
Solutions
- Provide -c <config>, or provide BOTH -m <group> and -b <builder>.
- If unsure of valid group/builder names, use -c with a config from `mb.py list`.
Example fix
// before mb.py gen -m tryserver.v8 out/Default // missing -b // after mb.py gen -m tryserver.v8 -b "V8 Linux" out/Default
Defensive patterns
Strategy: validation
Validate before calling
has_named = bool(args.config)
has_pair = bool(args.builder_group and args.builder)
if not has_named and not has_pair:
sys.exit('Must specify -c/--config or both -m/--builder-group and -b/--builder') Type guard
null
Try / catch
null
Prevention
- Always pass a complete selection: -c alone, or -m AND -b together.
- Validate the flag pair in wrapper scripts before invoking mb.
- Use argparse mutually_exclusive_group / required_together checks upstream.
When it happens
Trigger: Running `mb.py gen out/Default` with no selection flags, or `mb.py gen -m tryserver.v8 out/Default` (missing -b), or `mb.py gen -b "V8 Linux" out/Default` (missing -m). The `not ... or not ...` guard fires.
Common situations: Forgetting the selection flags entirely; passing only the builder group or only the builder; a wrapper script that drops one of the pair.
Related errors
- Can not specific both -c/--config and -m/--builder-group or
- unrecognized platform string "%s"
- mb config file %s has problems:
- args file "%s" not found
- Config "%s" not found in %s
AI-assisted analysis of nodejs/node@1b2de5e052 (2026-08-13).
Data as JSON: /api/errors/5ff3de55d608de64.
Report an issue: GitHub.