nodejs/node · error · MBErr

Builder name "%s" not found under builder_groups[%s] in "%s

Error message

Builder name "%s"  not found under builder_groups[%s] in "%s"

What it means

ConfigFromArgs() resolves the builder inside the chosen group via _v8_builder_fallback(), which tolerates ' - builder'/' builder' suffixes. If neither the exact builder name nor the suffix-stripped form is found in builder_groups[group], the fallback returns None and mb raises MBErr('Builder name "%s" not found under builder_groups[%s] in "%s"') (note the double space in the source).

Source

Thrown at deps/v8/tools/mb/mb.py:616

        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))
      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.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.builder_group))
    return config

View on GitHub (pinned to 1b2de5e052)

Solutions

  1. Inspect builder_groups[<group>] in mb_config.pyl and use an exact builder key, or the ' builder'/' - builder' variant the fallback recognizes.
  2. If the builder was split into builder/tester, use the new '- builder' name.
  3. Add the missing builder entry to builder_groups if it should exist on this branch.

Example fix

// before
  mb.py gen -m tryserver.v8 -b "V8 Linux64" out/Default   // not a key
// after
  mb.py gen -m tryserver.v8 -b "V8 Linux64 - builder" out/Default
Defensive patterns

Strategy: validation

Validate before calling

group = builder_groups[args.builder_group]
candidates = [args.builder]
if args.builder.endswith(' - builder'): candidates.append(args.builder[:-len(' - builder')])
elif args.builder.endswith(' builder'): candidates.append(args.builder[:-len(' builder')])
if not any(c in group for c in candidates):
    sys.exit(f'builder {args.builder!r} not in group; valid: {sorted(group)}')

Type guard

null

Try / catch

null

Prevention

When it happens

Trigger: Running `mb.py gen -m <group> -b <wrong-builder>` where <wrong-builder> is not a key in builder_groups[<group>] and does not match after stripping ' builder'/' - builder'. _v8_builder_fallback returns None.

Common situations: Misspelled builder name; builder renamed/removed in mb_config.pyl; using a tester name where only a builder is defined (or vice versa); pointing at the wrong branch's config.

Related errors


AI-assisted analysis of nodejs/node@1b2de5e052 (2026-08-13). Data as JSON: /api/errors/2aa6890eff6fe339. Report an issue: GitHub.