nodejs/node · error · MBErr
Can not specific both -c/--config and -m/--builder-group or
Error message
Can not specific both -c/--config and -m/--builder-group or -b/--builder
What it means
ConfigFromArgs() enforces mutual exclusivity: if -c/--config is given together with -m/--builder-group OR -b/--builder, it raises MBErr. A config can be specified either by name (-c) or by (builder_group, builder) pair, not both. (Note the message typo 'specific' for 'specify' is in the upstream source.)
Source
Thrown at deps/v8/tools/mb/mb.py:598
isolate_maps = {}
for isolate_map in self.args.isolate_map_files:
try:
isolate_map = ast.literal_eval(self.ReadFile(isolate_map))
duplicates = set(isolate_map).intersection(isolate_maps)
if duplicates:
raise MBErr(
'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(View on GitHub (pinned to 1b2de5e052)
Solutions
- Choose one selection mode: either `-c <config>` alone, or `-m <group> -b <builder>` together — drop the other flags.
- Audit the wrapper script / CI recipe to pass only the selection flags appropriate to the mode.
Example fix
// before mb.py gen -c x64.release -m tryserver.v8 -b "V8 Linux" out/Default // after mb.py gen -c x64.release out/Default
Defensive patterns
Strategy: validation
Validate before calling
if args.config and (args.builder_group or args.builder):
sys.exit('Pass either -c/--config OR (-m/--builder-group and -b/--builder), not both') Type guard
null
Try / catch
null
Prevention
- Decide selection mode upfront: named config (-c) vs builder pair (-m -b); never mix.
- In wrapper scripts, branch on mode and pass only the relevant flags.
- Document the mutual exclusivity next to the mb invocation in CI recipes.
When it happens
Trigger: A command line such as `mb.py gen -c x64.release -m tryserver.v8 -b "V8 Linux" out/Default` sets both -c and (-m or -b), tripping the guard at the top of ConfigFromArgs().
Common situations: Copy-pasting a CI command that used -m/-b and adding -c; wrapping mb.py in a script that always passes all flags; misunderstanding that -c and -m/-b are alternative selection modes.
Related errors
- Must specify either -c/--config or (-m/--builder-group and -
- 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/a12a3f8f5edfda13.
Report an issue: GitHub.