mirror of
https://chromium.googlesource.com/chromium/tools/depot_tools.git
synced 2026-01-11 18:51:29 +00:00
autoninja: move use_siso default logic in autoninja.py
chromium now doesn't use `use_siso` value for build graph, so no need to use use_siso_default.py in gn context. use_siso value is only used to determine autoninja use siso or ninja, so put use_siso default logic in autoninja.py. Will remove build/toolchain/use_siso_default.py in chromium Bug: 397994249 Change-Id: Idb31c4e75f0a1c3bc4a97089494ec16be9879a49 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/6301272 Reviewed-by: Takuto Ikuta <tikuta@chromium.org> Auto-Submit: Fumitoshi Ukai <ukai@google.com> Commit-Queue: Fumitoshi Ukai <ukai@google.com>
This commit is contained in:
60
autoninja.py
60
autoninja.py
@@ -40,6 +40,11 @@ import siso
|
||||
if sys.platform in ["darwin", "linux"]:
|
||||
import resource
|
||||
|
||||
_SISO_SUGGESTION = """Please run 'gn clean {output_dir}' when convenient to
|
||||
upgrade this output directory to Siso (Chromium’s Ninja replacement). If you
|
||||
run into any issues, please file a bug via go/siso-bug and switch back
|
||||
temporarily by setting the GN arg 'use_siso = false'"""
|
||||
|
||||
_SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__))
|
||||
_NINJALOG_UPLOADER = os.path.join(_SCRIPT_DIR, "ninjalog_uploader.py")
|
||||
|
||||
@@ -156,30 +161,43 @@ def _get_use_reclient_value(output_dir):
|
||||
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.
|
||||
def _siso_supported(output_dir):
|
||||
root_dir = gclient_paths.GetPrimarySolutionPath()
|
||||
if not root_dir:
|
||||
return None
|
||||
script_path = os.path.join(root_dir, "build/toolchain/use_siso_default.py")
|
||||
if not os.path.exists(script_path):
|
||||
return None
|
||||
return False
|
||||
sisoenv_path = os.path.join(root_dir, "build/config/siso/.sisoenv")
|
||||
if not os.path.exists(sisoenv_path):
|
||||
return False
|
||||
# If it's not chromium project, use Ninja.
|
||||
gclient_args_gni = os.path.join(root_dir, "build/config/gclient_args.gni")
|
||||
if not os.path.exists(gclient_args_gni):
|
||||
return False
|
||||
with open(gclient_args_gni) as f:
|
||||
if "build_with_chromium = true" not in f.read():
|
||||
return False
|
||||
# Use Siso by default for Googlers working on corp machine.
|
||||
if _is_google_corp_machine():
|
||||
return True
|
||||
# Otherwise, use Ninja, until we are ready to roll it out
|
||||
# on non-corp machines, too.
|
||||
# TODO(378078715): enable True by default.
|
||||
return False
|
||||
|
||||
script = _import_from_path("use_siso_default", script_path)
|
||||
try:
|
||||
# Older versions of chromium won't have this function.
|
||||
use_siso_default = getattr(script, "use_siso_default_and_suggest_siso", script.use_siso_default)
|
||||
r = use_siso_default(output_dir)
|
||||
except:
|
||||
raise RuntimeError(
|
||||
'Could not call method "use_siso_default" in {}"'.format(
|
||||
script_path))
|
||||
if not isinstance(r, bool):
|
||||
raise TypeError(
|
||||
'Method "use_siso_default" in "{}" returns invalid result. Expected bool, got "{}" (type "{}")'
|
||||
.format(script_path, r, type(r)))
|
||||
return r
|
||||
|
||||
def _get_use_siso_default(output_dir):
|
||||
"""Returns use_siso default value."""
|
||||
if not _siso_supported(output_dir):
|
||||
return False
|
||||
|
||||
# This output directory is already using Siso.
|
||||
if os.path.exists(os.path.join(output_dir, ".siso_deps")):
|
||||
return True
|
||||
|
||||
# This output directory is still using Ninja.
|
||||
if os.path.exists(os.path.join(output_dir, ".ninja_deps")):
|
||||
print(_SISO_SUGGESTION.format(output_dir=output_dir), file=sys.stderr)
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
def _main_inner(input_args, build_id, should_collect_logs=False):
|
||||
|
||||
Reference in New Issue
Block a user