{"record":{"id":"e81044d36a7eaef1","repo":"nodejs/node","slug":"args-file-s-not-found","errorCode":null,"errorMessage":"args file \"%s\" not found","messagePattern":"args file \"(.+?)\" not found","errorType":"exception","errorClass":"MBErr","httpStatus":null,"severity":"error","filePath":"deps/v8/tools/mb/mb.py","lineNumber":533,"sourceCode":"    if self.Exists(gn_args_path):\n      args_contents = self.ReadFile(gn_args_path)\n    gn_args = []\n    for l in args_contents.splitlines():\n      fields = l.split(' ')\n      name = fields[0]\n      val = ' '.join(fields[2:])\n      gn_args.append('%s=%s' % (name, val))\n\n    return ' '.join(gn_args)\n\n  def Lookup(self):\n    vals = self.ReadIOSBotConfig()\n    if not vals:\n      self.ReadConfigFile()\n      config = self.ConfigFromArgs()\n      if config.startswith('//'):\n        if not self.Exists(self.ToAbsPath(config)):\n          raise MBErr('args file \"%s\" not found' % config)\n        vals = self.DefaultVals()\n        vals['args_file'] = config\n      else:\n        if not config in self.configs:\n          raise MBErr('Config \"%s\" not found in %s' %\n                      (config, self.args.config_file))\n        vals = self.FlattenConfig(config)\n    return vals\n\n  def ReadIOSBotConfig(self):\n    if not self.args.builder_group or not self.args.builder:\n      return {}\n    path = self.PathJoin(self.chromium_src_dir, 'ios', 'build', 'bots',\n                         self.args.builder_group, self.args.builder + '.json')\n    if not self.Exists(path):\n      return {}\n\n    contents = json.loads(self.ReadFile(path))","sourceCodeStart":515,"sourceCodeEnd":551,"githubUrl":"https://github.com/nodejs/node/blob/1b2de5e052fc0fb95fd7fb6846dcec4ade598e9e/deps/v8/tools/mb/mb.py#L515-L551","documentation":"In mb.py Lookup()/ConfigFromArgs(), when the resolved config string starts with '//' it is treated as a GN-style path to an args file (relative to src). mb checks self.Exists(self.ToAbsPath(config)); if that file is absent it raises MBErr('args file \"%s\" not found'). This is the //path/to/args.gn form of -c.","triggerScenarios":"Running `mb.py gen -c //build/args/my.gn` (or lookup/analyze) where the // path does not resolve to an existing file under the source root. The ToAbsPath + Exists check fails.","commonSituations":"Typo in the // path; the args file was deleted or never committed; running mb from a checkout where the referenced build config lives on a different branch; wrong src root.","solutions":["Verify the // path resolves to a real file: `ls <src-root>/<path-without-//>`.","Correct the typo in the -c argument or commit/restore the missing args file.","Confirm you are running mb from the intended source root (chromium_src_dir / V8 root)."],"exampleFix":"// before\n  mb.py gen -c //build/arg/my.gn out/Default    // typo 'arg'\n// after\n  mb.py gen -c //build/args/my.gn out/Default    // matches actual file","handlingStrategy":"validation","validationCode":"if config.startswith('//'):\n    abs_path = os.path.join(src_root, config[2:].replace('/', os.sep))\n    if not os.path.isfile(abs_path):\n        sys.exit(f'args file not found: {abs_path}')","typeGuard":"null","tryCatchPattern":"null","preventionTips":["Resolve // paths against the source root and ls-check them before invoking mb.","Keep args files under version control so they aren't silently missing.","Prefer named configs (-c <name>) over raw // paths when possible to get clearer errors."],"tags":["mb","config","args-file","path","v8-build"],"backgroundTag":null,"analyzedSha":"1b2de5e052fc0fb95fd7fb6846dcec4ade598e9e","analyzedAt":"2026-08-13T00:53:24.642Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}