| # 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:])) |