aboutsummaryrefslogtreecommitdiffstats
path: root/python/mach_bootstrap.py
diff options
context:
space:
mode:
authorZbynek Winkler <zbynek.winkler@gmail.com>2016-04-14 21:38:45 +0200
committerZbynek Winkler <zbynek.winkler@gmail.com>2016-04-21 08:23:03 +0200
commit7002fbedd73c4c240ea1e1593b1275b0df79c5d0 (patch)
treea09460e72f35a9c15108df1ddeb87e405ce4c28f /python/mach_bootstrap.py
parentf9608022caf7f223dfdfe960c31fb5fe7eb0d1f1 (diff)
downloadservo-7002fbedd73c4c240ea1e1593b1275b0df79c5d0.tar.gz
servo-7002fbedd73c4c240ea1e1593b1275b0df79c5d0.zip
Ensure virtualenv activates.
There are two changes: * remove quoting which causes virtuaenv not activate * check virtualenv actually activated If the quoting added in the fix in #8394 (4ff8d3ad9cea) kicks in, it causes virtualenv to fail to activate. For the common case it is no op: ```python >>> from pipes import quote >>> print quote('common/case') common/case ``` When the path actually needs quoting, this is what happens: ```python >>> print quote('test spaces') 'test spaces' >>> print quote('windows\\path') 'windows\\path' ``` Note the embedded quotes. Virtualenv in activate_this.py uses __file__ to build the path that should be added to PATH: ```python >>> print os.getcwd() C:\software\git >>> print os.path.abspath(quote('windows\\path')) C:\software\git\'windows\path' >>> ``` The constructed path is not valid. Adding it at the beginning of PATH has no effect. This issue affects any case when the call to `quote` kicks in.
Diffstat (limited to 'python/mach_bootstrap.py')
-rw-r--r--python/mach_bootstrap.py7
1 files changed, 5 insertions, 2 deletions
diff --git a/python/mach_bootstrap.py b/python/mach_bootstrap.py
index 05b21c4fdfa..3960ba6f8e0 100644
--- a/python/mach_bootstrap.py
+++ b/python/mach_bootstrap.py
@@ -9,7 +9,6 @@ import platform
import subprocess
import sys
from distutils.spawn import find_executable
-from pipes import quote
SEARCH_PATHS = [
os.path.join("python", "mach"),
@@ -111,7 +110,11 @@ def _activate_virtualenv(topdir):
except (subprocess.CalledProcessError, OSError):
sys.exit("Python virtualenv failed to execute properly.")
- execfile(activate_path, dict(__file__=quote(activate_path)))
+ execfile(activate_path, dict(__file__=activate_path))
+
+ python = find_executable("python")
+ if python is None or not python.startswith(virtualenv_path):
+ sys.exit("Python virtualenv failed to activate.")
# TODO: Right now, we iteratively install all the requirements by invoking
# `pip install` each time. If it were the case that there were conflicting