| # Copyright 2020 The Chromium Authors. All rights reserved. | |
| # Use of this source code is governed by a BSD-style license that can be | |
| # found in the LICENSE file. | |
| """Script for ensuring that a python action runs under Python2, not Python3.""" | |
| import subprocess | |
| import sys | |
| if sys.version_info.major == 2: | |
| # If we get here, we're already Python2, so just re-execute the | |
| # command without the wrapper. | |
| exe = sys.executable | |
| elif sys.executable.endswith('.exe'): | |
| # If we get here, we're a Python3 executable likely running on | |
| # Windows, so look for the Python2 wrapper in depot_tools. We | |
| # can't invoke it directly because some command lines might exceed the | |
| # 8K commamand line length limit in cmd.exe, but we can use it to | |
| # find the underlying executable, which we can then safely call. | |
| exe = subprocess.check_output( | |
| ['python.bat', '-c', | |
| 'import sys; print(sys.executable)']).decode('utf8').strip() | |
| else: | |
| # If we get here, we are a Python3 executable. Hope that we can find | |
| # a `python2.7` in path somewhere. | |
| exe = 'python2.7' | |
| sys.exit(subprocess.call([exe] + sys.argv[1:])) |