From e9013eeb3d1d026d72549dea78dbba2a95ad8d5d Mon Sep 17 00:00:00 2001 From: Edward Lesmes Date: Tue, 24 Mar 2020 22:32:08 +0000 Subject: [PATCH] Reland "depot_tools: Run using Python 3 by default." This is a reland of 01ed358917aa9f9f6314414ba3bb5e808bdedca2 * python_runner.sh, gclient, roll-dep and fetch will call vpython (instead of vpython3) when running on Windows under git-bash. * vpython3 now detects when running on Windows under git-bash and executes vpython3.bat instead. * vpython3.bat calls python3.exe directly instead of calling python3.bat. Original change's description: > depot_tools: Run using Python 3 by default. > > Run gclient, roll-dep, fetch and custom git commands (i.e. git-cl, git-rebase-update, git-new-branch, etc.) > using vpython3 by default. > > Change-Id: I4eecddafa6ca4c5f82ec097615c79d2a741613e7 > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/2113550 > Reviewed-by: Anthony Polito > Commit-Queue: Edward Lesmes Change-Id: I9829141d7ea26a67e655264430151f493e73a930 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/2118418 Commit-Queue: Edward Lesmes Reviewed-by: Anthony Polito --- fetch | 10 ++++++++-- gclient | 10 ++++++++-- python_runner.sh | 16 +++++++++------- roll-dep | 8 +++++++- tests/gclient_smoketest.py | 1 + vpython3 | 7 ++++++- vpython3.bat | 4 ++-- 7 files changed, 41 insertions(+), 15 deletions(-) diff --git a/fetch b/fetch index 96e984a3e..3227b888b 100755 --- a/fetch +++ b/fetch @@ -9,13 +9,19 @@ base_dir=$(dirname "$0") # standalone, but allow other PATH manipulations to take priority. PATH=$PATH:$base_dir +# MINGW will equal 0 if we're running on Windows under MinGW. +MINGW=$(uname -s | grep MINGW > /dev/null; echo $?) + if [[ $GCLIENT_PY3 == 1 ]]; then # Explicitly run on Python 3 PYTHONDONTWRITEBYTECODE=1 exec vpython3 "$base_dir/fetch.py" "$@" elif [[ $GCLIENT_PY3 == 0 ]]; then # Explicitly run on Python 2 PYTHONDONTWRITEBYTECODE=1 exec vpython "$base_dir/fetch.py" "$@" -else - # Run on Python 2 for now, allows default to be flipped. +elif [[ $MINGW = 0 ]]; then + # Run on Python 2 on Windows for now, allows default to be flipped. PYTHONDONTWRITEBYTECODE=1 exec vpython "$base_dir/fetch.py" "$@" +else + # Run on Python 3, allows default to be flipped. + PYTHONDONTWRITEBYTECODE=1 exec vpython3 "$base_dir/fetch.py" "$@" fi diff --git a/gclient b/gclient index 1dfb7f6c1..893733445 100755 --- a/gclient +++ b/gclient @@ -26,13 +26,19 @@ fi # standalone, but allow other PATH manipulations to take priority. PATH=$PATH:$base_dir +# MINGW will equal 0 if we're running on Windows under MinGW. +MINGW=$(uname -s | grep MINGW > /dev/null; echo $?) + if [[ $GCLIENT_PY3 == 1 ]]; then # Explicitly run on Python 3 PYTHONDONTWRITEBYTECODE=1 exec vpython3 "$base_dir/gclient.py" "$@" elif [[ $GCLIENT_PY3 == 0 ]]; then # Explicitly run on Python 2 PYTHONDONTWRITEBYTECODE=1 exec vpython "$base_dir/gclient.py" "$@" -else - # Run on Python 2 for now, allows default to be flipped. +elif [[ $MINGW = 0 ]]; then + # Run on Python 2 on Windows for now, allows default to be flipped. PYTHONDONTWRITEBYTECODE=1 exec vpython "$base_dir/gclient.py" "$@" +else + # Run on Python 3, allows default to be flipped. + PYTHONDONTWRITEBYTECODE=1 exec vpython3 "$base_dir/gclient.py" "$@" fi diff --git a/python_runner.sh b/python_runner.sh index 21996662c..50deb20de 100755 --- a/python_runner.sh +++ b/python_runner.sh @@ -48,17 +48,19 @@ SCRIPT="${SCRIPT-${BASENAME//-/_}.py}" # standalone, but allow other PATH manipulations to take priority. PATH=$PATH:$DEPOT_TOOLS -if [[ $PYTHON_DIRECT = 1 ]]; then - python.exe "$DEPOT_TOOLS\\$SCRIPT" "$@" -elif [[ -e "$DEPOT_TOOLS/python.bat" && $OSTYPE = msys ]]; then - cmd.exe //c "$DEPOT_TOOLS\\vpython.bat" "$DEPOT_TOOLS\\$SCRIPT" "$@" -elif [[ $GCLIENT_PY3 = 1 ]]; then +# MINGW will equal 0 if we're running on Windows under MinGW. +MINGW=$(uname -s | grep MINGW > /dev/null; echo $?) + +if [[ $GCLIENT_PY3 = 1 ]]; then # Explicitly run on Python 3 vpython3 "$DEPOT_TOOLS/$SCRIPT" "$@" elif [[ $GCLIENT_PY3 = 0 ]]; then # Explicitly run on Python 2 vpython "$DEPOT_TOOLS/$SCRIPT" "$@" -else - # Run on Python 2 for now, allows default to be flipped. +elif [[ $MINGW = 0 ]]; then + # Run on Python 2 on Windows for now, allows default to be flipped. vpython "$DEPOT_TOOLS/$SCRIPT" "$@" +else + # Run on Python 3, allows default to be flipped. + vpython3 "$DEPOT_TOOLS/$SCRIPT" "$@" fi diff --git a/roll-dep b/roll-dep index 9a14ae45d..7016ee38d 100755 --- a/roll-dep +++ b/roll-dep @@ -9,13 +9,19 @@ base_dir=$(dirname "$0") # standalone, but allow other PATH manipulations to take priority. PATH=$PATH:$base_dir +# MINGW will equal 0 if we're running on Windows under MinGW. +MINGW=$(uname -s | grep MINGW > /dev/null; echo $?) + if [[ $GCLIENT_PY3 = 1 ]]; then # Explicitly run on Python 3 PYTHONDONTWRITEBYTECODE=1 exec vpython3 "$base_dir/roll_dep.py" "$@" elif [[ $GCLIENT_PY3 = 0 ]]; then # Explicitly run on Python 2 PYTHONDONTWRITEBYTECODE=1 exec vpython "$base_dir/roll_dep.py" "$@" +elif [[ $MINGW = 0 ]]; then + # Run on Python 2 on Windows for now, allows default to be flipped. + PYTHONDONTWRITEBYTECODE=1 exec vpython "$base_dir/roll_dep.py" "$@" else # Run on Python 2 for now, allows default to be flipped. - PYTHONDONTWRITEBYTECODE=1 exec vpython "$base_dir/roll_dep.py" "$@" + PYTHONDONTWRITEBYTECODE=1 exec vpython3 "$base_dir/roll_dep.py" "$@" fi diff --git a/tests/gclient_smoketest.py b/tests/gclient_smoketest.py index 9d4ea1a68..1a916de3c 100755 --- a/tests/gclient_smoketest.py +++ b/tests/gclient_smoketest.py @@ -40,6 +40,7 @@ class GClientSmokeBase(fake_repos.FakeReposTestBase): self.env['DEPOT_TOOLS_METRICS'] = '0' # Suppress Python 3 warnings and other test undesirables. self.env['GCLIENT_TEST'] = '1' + self.env['GCLIENT_PY3'] = '0' if sys.version_info.major == 2 else '1' self.maxDiff = None def gclient(self, cmd, cwd=None, error_ok=False): diff --git a/vpython3 b/vpython3 index da78bde40..f5dee3f0e 100755 --- a/vpython3 +++ b/vpython3 @@ -39,9 +39,14 @@ base_dir=$(dirname "$0") source "$base_dir/cipd_bin_setup.sh" cipd_bin_setup &> /dev/null +# MINGW will equal 0 if we're running on Windows under MinGW. +MINGW=$(uname -s | grep MINGW > /dev/null; echo $?) + # If Python bootstrapping is not disabled, make sure Python has been # bootstrapped and add it to the front of PATH. -if [[ $MINGW != 0 && $DEPOT_TOOLS_BOOTSTRAP_PYTHON3 != 0 ]]; then +if [[ $MINGW = 0 ]]; then + cmd.exe //c $0.bat "$@" +elif [[ $DEPOT_TOOLS_BOOTSTRAP_PYTHON3 != 0 ]]; then if [[ ! -e $base_dir/python3_bin_reldir.txt ]]; then source "$base_dir/bootstrap_python3" bootstrap_python3 diff --git a/vpython3.bat b/vpython3.bat index 5be8fd02b..77ce49d9e 100644 --- a/vpython3.bat +++ b/vpython3.bat @@ -6,7 +6,7 @@ :: TODO(crbug.com/1003139): Remove. :: Add Python 3 to PATH to work around crbug.com/1003139. for /f %%i in (%~dp0python3_bin_reldir.txt) do set PYTHON3_BIN_RELDIR=%%i -set PATH=%~dp0%PYTHON3_BIN_RELDIR%;%PATH% +set PATH=%~dp0%PYTHON3_BIN_RELDIR%;%~dp0%PYTHON3_BIN_RELDIR%\Scripts;%~dp0%PYTHON3_BIN_RELDIR%\DLLs;%PATH% call "%~dp0\cipd_bin_setup.bat" > nul 2>&1 -"%~dp0\.cipd_bin\vpython3.exe" -vpython-interpreter "%~dp0\python3.bat" %* +"%~dp0\.cipd_bin\vpython3.exe" -vpython-interpreter "%PYTHON3_BIN_RELDIR%\python3.exe" %*