diff options
author | Nirbheek Chauhan <nirbheek@centricular.com> | 2017-01-28 02:02:06 +0530 |
---|---|---|
committer | Nirbheek Chauhan <nirbheek@centricular.com> | 2017-01-28 02:02:06 +0530 |
commit | 534ee8baa8b807b2adf52937a4672897f1a6d8cb (patch) | |
tree | b49d03b6f0e4a5b508e79f7893cfe406f9f3726a | |
parent | 626bdd183630e7b2cd15529f88ccb394054d713d (diff) | |
download | meson-534ee8baa8b807b2adf52937a4672897f1a6d8cb.zip meson-534ee8baa8b807b2adf52937a4672897f1a6d8cb.tar.gz meson-534ee8baa8b807b2adf52937a4672897f1a6d8cb.tar.bz2 |
find_program: Translate 'python3' to sys.executable on Windows
While reading shebangs, when we detect an attempt to run 'python3', use
sys.executable instead. For example:
#!/usr/bin/python3
#!python3
#!/usr/bin/env python3
-rw-r--r-- | mesonbuild/dependencies.py | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/mesonbuild/dependencies.py b/mesonbuild/dependencies.py index 6ae91d4..53e1055 100644 --- a/mesonbuild/dependencies.py +++ b/mesonbuild/dependencies.py @@ -20,6 +20,7 @@ # package before this gets too big. import re +import sys import os, stat, glob, shutil import subprocess import sysconfig @@ -426,10 +427,15 @@ class ExternalProgram: if first_line.startswith('#!'): commands = first_line[2:].split('#')[0].strip().split() if mesonlib.is_windows(): - # Windows does not have /usr/bin. - commands[0] = commands[0].split('/')[-1] - if commands[0] == 'env': + # Windows does not have UNIX paths so remove them, + # but don't remove Windows paths + if commands[0].startswith('/'): + commands[0] = commands[0].split('/')[-1] + if len(commands) > 0 and commands[0] == 'env': commands = commands[1:] + # Windows does not ship python3.exe, but we know the path to it + if len(commands) > 0 and commands[0] == 'python3': + commands[0] = sys.executable return commands + [script] except Exception: pass |