From c9fb389f4b44e838b99e7c21cfd253b88c7920db Mon Sep 17 00:00:00 2001 From: Fumitoshi Ukai Date: Tue, 7 May 2024 08:55:37 +0000 Subject: [PATCH] Reland "siso.py: check ninja marker" This reverts commit b1c6497e19ef0efe51a24e28bfcc18189d1b65f1. Reason for revert: Fix var name ``` ukai@ukai ...src/chromium/src % ~/src/depot_tools/depot_tools/siso ninja -C out/ninja depot_tools/siso.py: Using Siso binary from SISO_PATH: /usr/local/google/home/ukai/go/bin/siso. depot_tools/siso.py: out/ninja contains Ninja state file. Use `autoninja` to use reclient, or run `gn clean out/ninja` to switch from ninja to siso ukai@ukai ...src/chromium/src % ~/src/depot_tools/depot_tools/siso ninja -C out/siso base depot_tools/siso.py: Using Siso binary from SISO_PATH: /usr/local/google/home/ukai/go/bin/siso. 4.63s init credentials reapi instance: projects/rbe-chrome-untrusted/instances/default_instance 1.63s loading fs state 3.42s load build.ninja 15.32s Regenerating ninja files 3.64s reloading build finished local:3 remote:0 cache:0 fallback:0 skip:3026 reapi: ops: 17(err:1) / r:0(err:0) 0B / w:0(err:0) 0B fs: ops: 12092(err:192) / r:350(err:0) 189.04MiB / w:1(err:0) 13.96KiB 27.29s Build Succeeded: 3 steps - 0.11/s ``` Original change's description: > Revert "siso.py: check ninja marker" > > This reverts commit 41bbfb8b90d7290acb7ef406dfbea01724fe83e3. > > Reason for revert: > ukai@ukai ...src/chromium/src % siso ninja -C out/siso > depot_tools/siso.py: Using Siso binary from SISO_PATH: /usr/local/google/home/ukai/go/bin/siso. > Traceback (most recent call last): > File "/usr/local/google/home/ukai/depot_tools/siso.py", line 115, in > sys.exit(main(sys.argv)) > ^^^^^^^^^^^^^^ > File "/usr/local/google/home/ukai/depot_tools/siso.py", line 104, in main > checkOutdir(args[1:]) > File "/usr/local/google/home/ukai/depot_tools/siso.py", line 21, in checkOutdir > for i, arg in enumerate(ninja_args): > ^^^^^^^^^^ > NameError: name 'ninja_args' is not defined. Did you mean: 'ninja_marker'? > > > Original change's description: > > siso.py: check ninja marker > > > > If out dir was built by Ninja, don't build by Siso. > > > > (still allow `siso query` etc) > > > > Bug: b/338414465 > > Change-Id: I48f8fbb5e83714fd3d27ff3a2bfffe929e4ef121 > > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/5518396 > > Reviewed-by: Junji Watanabe > > Commit-Queue: Junji Watanabe > > Auto-Submit: Fumitoshi Ukai > > Commit-Queue: Fumitoshi Ukai > > Bug: b/338414465 > Change-Id: Ie69ca1b6c1d3dc47475d9356beab29a917356479 > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/5514902 > Reviewed-by: Philipp Wollermann > Bot-Commit: Rubber Stamper > Commit-Queue: Fumitoshi Ukai Bug: b/338414465 Change-Id: Idb18ad9191a062f83b538c1e2a76ee77200c4df0 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/5518397 Reviewed-by: Philipp Wollermann Auto-Submit: Fumitoshi Ukai Commit-Queue: Fumitoshi Ukai --- siso.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/siso.py b/siso.py index a0b8902f9..77ca4b1db 100644 --- a/siso.py +++ b/siso.py @@ -15,6 +15,29 @@ import sys import gclient_paths +def checkOutdir(args): + subcmd = '' + out_dir = "." + for i, arg in enumerate(args): + if not arg.startswith("-") and not subcmd: + subcmd = arg + continue + if arg == "-C": + out_dir = args[i + 1] + elif arg.startswith("-C"): + out_dir = arg[2:] + if subcmd != "ninja": + return + ninja_marker = os.path.join(out_dir, ".ninja_deps") + if os.path.exists(ninja_marker): + print("depot_tools/siso.py: %s contains Ninja state file.\n" + "Use `autoninja` to use reclient,\n" + "or run `gn clean %s` to switch from ninja to siso\n" % + (out_dir, out_dir), + file=sys.stderr) + sys.exit(1) + + def main(args): # Propagate signals to siso process so that it can run cleanup steps. # Siso will be terminated immediately after the second Ctrl-C. @@ -78,6 +101,7 @@ def main(args): base_path, 'third_party', 'siso', 'siso' + gclient_paths.GetExeSuffix()) if os.path.isfile(siso_path): + checkOutdir(args[1:]) return subprocess.call([siso_path] + args[1:], env=env) print(