summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNirbheek Chauhan <nirbheek@centricular.com>2017-01-28 02:02:06 +0530
committerNirbheek Chauhan <nirbheek@centricular.com>2017-01-28 02:02:06 +0530
commit534ee8baa8b807b2adf52937a4672897f1a6d8cb (patch)
treeb49d03b6f0e4a5b508e79f7893cfe406f9f3726a
parent626bdd183630e7b2cd15529f88ccb394054d713d (diff)
downloadmeson-534ee8baa8b807b2adf52937a4672897f1a6d8cb.tar.gz
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.py12
1 files changed, 9 insertions, 3 deletions
diff --git a/mesonbuild/dependencies.py b/mesonbuild/dependencies.py
index 6ae91d456..53e10558d 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