From df437783c243fef294e6af2e44de383e751a3764 Mon Sep 17 00:00:00 2001 From: Fumitoshi Ukai Date: Wed, 8 May 2024 02:34:11 +0000 Subject: [PATCH] Reland "ninja.py check siso_marker" This reverts ninja.py in commit 6ed0d7b86cb1a256b43744a6de9b9ac2218b3419 Allow `-t list`, `-t commands` and `-t inputs` even in siso out dir. Bug: b/338414465, b/339320220 Change-Id: Ia8cdaf53680207625b485e6e326fbe4db8297b96 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/5524253 Reviewed-by: Junji Watanabe Reviewed-by: Andrew Grieve Auto-Submit: Fumitoshi Ukai Commit-Queue: Fumitoshi Ukai --- ninja.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/ninja.py b/ninja.py index 7dd0dbd691..e0b2f0c4f6 100755 --- a/ninja.py +++ b/ninja.py @@ -30,10 +30,37 @@ def findNinjaInPath(): return ninja_path +def checkOutdir(ninja_args): + out_dir = "." + tool = "" + for i, arg in enumerate(ninja_args): + if arg == "-t": + tool = ninja_args[i + 1] + elif arg.startswith("-t"): + tool = arg[2:] + elif arg == "-C": + out_dir = ninja_args[i + 1] + elif arg.startswith("-C"): + out_dir = arg[2:] + if tool in ["list", "commands", "inputs"]: + # These tools are just inspect ninja rules and not modify out dir. + # TODO: b/339320220 - implement these in siso + return + siso_marker = os.path.join(out_dir, ".siso_deps") + if os.path.exists(siso_marker): + print("depot_tools/ninja.py: %s contains Siso state file.\n" + "Use `autoninja` to choose appropriate build tool,\n" + "or run `gn clean %s` to switch from siso to ninja\n" % + (out_dir, out_dir), + file=sys.stderr) + sys.exit(1) + + def fallback(ninja_args): # Try to find ninja in PATH. ninja_path = findNinjaInPath() if ninja_path: + checkOutdir(ninja_args) return subprocess.call([ninja_path] + ninja_args) print( @@ -84,6 +111,7 @@ def main(args): "ninja" + gclient_paths.GetExeSuffix(), ) if os.path.isfile(ninja_path): + checkOutdir(args[1:]) return subprocess.call([ninja_path] + args[1:]) return fallback(args[1:])