autoninja: use build/toolchain/use_reclient_value.py

https://crrev.com/c/6048393 provides build/toolchain/use_reclient_value.py
to get value for use_reclient.

Use it in autoninja if it exists.

Bug: 341167943
Change-Id: Ia6207ea044cc109fa156deff3c3357475368576f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/6024739
Commit-Queue: Fumitoshi Ukai <ukai@google.com>
Auto-Submit: Fumitoshi Ukai <ukai@google.com>
Reviewed-by: Takuto Ikuta <tikuta@chromium.org>
Reviewed-by: Junji Watanabe <jwata@google.com>
changes/39/6024739/9
Fumitoshi Ukai 3 months ago committed by LUCI CQ
parent bd7f36598e
commit db017d1ffe

@ -60,7 +60,7 @@ def _import_from_path(module_name, file_path):
module = importlib.util.module_from_spec(spec)
sys.modules[module_name] = module
spec.loader.exec_module(module)
except Exception:
except:
raise ImportError(
'Could not import module "{}" from "{}"'.format(
module_name, file_path),
@ -133,20 +133,43 @@ def _print_cmd(cmd):
print(*[shell_quoter(arg) for arg in cmd], file=sys.stderr)
def _get_use_reclient_value(output_dir):
root_dir = gclient_paths.GetPrimarySolutionPath()
if not root_dir:
return None
script_path = os.path.join(root_dir,
"build/toolchain/use_reclient_value.py")
if not os.path.exists(script_path):
return None
script = _import_from_path("use_reclient_value", script_path)
try:
r = script.use_reclient_value(output_dir)
except:
raise RuntimeError(
'Could not call method "use_reclient_value" in {}"'.format(
script_path))
if not isinstance(r, bool):
raise TypeError(
'Method "use_reclient_defualt" in "{}" returns invalid result. Expected bool, got "{}" (type "{}")'
.format(script_path, r, type(r)))
return r
def _get_use_siso_default(output_dir):
# TODO(379584977): move this in depot_tools
# once gn rule for action_remote.py, which check use_siso` is removed.
root_dir = gclient_paths.GetPrimarySolutionPath()
if not root_dir:
return False
return None
script_path = os.path.join(root_dir, "build/toolchain/use_siso_default.py")
if not os.path.exists(script_path):
return False
return None
script = _import_from_path("use_siso_default", script_path)
try:
r = script.use_siso_default(output_dir)
except Exception:
except:
raise RuntimeError(
'Could not call method "use_siso_default" in {}"'.format(
script_path))
@ -201,7 +224,7 @@ def _main_inner(input_args, build_id, should_collect_logs=False):
print(file=sys.stderr)
use_remoteexec = False
use_reclient = None
use_reclient = _get_use_reclient_value(output_dir)
use_siso = _get_use_siso_default(output_dir)
# Attempt to auto-detect remote build acceleration. We support gn-based
@ -223,19 +246,21 @@ def _main_inner(input_args, build_id, should_collect_logs=False):
use_remoteexec = False
continue
if k == "use_siso" and v == "true":
assert use_siso != False
use_siso = True
continue
if k == "use_siso" and v == "false":
assert use_siso != True
use_siso = False
continue
if k == "use_reclient" and v == "true":
assert use_reclient != False
use_reclient = True
continue
if k == "use_reclient" and v == "false":
assert use_reclient != True
use_reclient = False
continue
if use_reclient is None:
use_reclient = use_remoteexec
if use_remoteexec:
if use_reclient:

@ -82,6 +82,11 @@ class AutoninjaTest(trial_dir.TestCase):
return_value=0) as run_ninja:
out_dir = os.path.join('out', 'dir')
write(os.path.join(out_dir, 'args.gn'), 'use_remoteexec=true')
write(os.path.join('build', 'toolchain', 'use_reclient_value.py'),
"""
def use_reclient_value(output_dir):
return True
""")
write(os.path.join('buildtools', 'reclient_cfgs', 'reproxy.cfg'),
'RBE_v=2')
write(os.path.join('buildtools', 'reclient', 'version.txt'), '0.0')
@ -133,6 +138,12 @@ class AutoninjaTest(trial_dir.TestCase):
out_dir = os.path.join('out', 'dir')
write(os.path.join(out_dir, 'args.gn'),
'use_siso=true\nuse_remoteexec=true')
write(
os.path.join('build', 'toolchain', 'use_reclient_value.py'),
"""
def use_reclient_value(output_dir):
return True
""")
write(
os.path.join('buildtools', 'reclient_cfgs', 'reproxy.cfg'),
'instance=projects/rbe-chromium-untrusted-test/'

Loading…
Cancel
Save