From ba352e00bad8bce9e7e56031eb93515d018c81ec Mon Sep 17 00:00:00 2001 From: Allen Bauer Date: Wed, 10 Aug 2022 19:05:35 +0000 Subject: [PATCH] Update autoninja.bat to work with other shells. Other shells, such as TCC, have subtle differences in how batch files are processed. This will not break cmd.exe compatibility. Without the "call" command, running a nested batch file should, according to CMD.exe "rules", cancel the current batch file and run the new one. However, the 'FOR /f "usebackq"' command will call the batch file and return. One could argue for both approaches, however, adding the "call" command doesn't seem to affect cmd.exe and fixes the other shell. There is a similar issue with the "do" (in the FOR command) block and the use of the '&' separator. The '%a' variable isn't expanded, but adding the '()' block works in both instances. Bug: 1351817 Change-Id: Idd685a64404ea950b71e1f3cc0f5d1e3bf13b8b6 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/3824199 Commit-Queue: Allen Bauer Reviewed-by: Bruce Dawson --- autoninja.bat | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/autoninja.bat b/autoninja.bat index 52646037dc..d23681fc2e 100755 --- a/autoninja.bat +++ b/autoninja.bat @@ -9,7 +9,7 @@ set scriptdir=%~dp0 if not defined AUTONINJA_BUILD_ID ( :: Set unique build ID. - FOR /f "usebackq tokens=*" %%a in (`%scriptdir%python-bin\python3.bat -c "import uuid; print(uuid.uuid4())"`) do set AUTONINJA_BUILD_ID=%%a + FOR /f "usebackq tokens=*" %%a in (`call %scriptdir%python-bin\python3.bat -c "import uuid; print(uuid.uuid4())"`) do set AUTONINJA_BUILD_ID=%%a ) :: If a build performance summary has been requested then also set NINJA_STATUS @@ -39,7 +39,7 @@ IF NOT "%1"=="" ( :: Don't use python3 because it doesn't work in git bash on Windows and we :: should be consistent between autoninja.bat and the autoninja script used by :: git bash. -FOR /f "usebackq tokens=*" %%a in (`%scriptdir%python-bin\python3.bat %scriptdir%autoninja.py "%*"`) do echo %%a & %%a +FOR /f "usebackq tokens=*" %%a in (`call %scriptdir%python-bin\python3.bat %scriptdir%autoninja.py "%*"`) do (echo %%a & %%a) @if errorlevel 1 goto buildfailure :: Use call to invoke python script here, because we use python via python3.bat.