Starting ycmd with Python used to build it

Note: depends on Valloric/ycmd#466 being merged and the ycmd submodule
ref then being updated.

Fixes #2136
This commit is contained in:
Val Markovic 2016-04-25 20:24:41 -07:00
parent 7f419101fe
commit 8fe90b43c4
3 changed files with 19 additions and 2 deletions

View File

@ -63,6 +63,10 @@ def PathToPythonInterpreter():
raise RuntimeError( "Path in 'g:ycm_server_python_interpreter' option " raise RuntimeError( "Path in 'g:ycm_server_python_interpreter' option "
"does not point to a valid Python 2.6+ or 3.3+." ) "does not point to a valid Python 2.6+ or 3.3+." )
python_interpreter = _PathToPythonUsedDuringBuild()
if IsPythonVersionCorrect( python_interpreter ):
return python_interpreter
# On UNIX platforms, we use sys.executable as the Python interpreter path. # On UNIX platforms, we use sys.executable as the Python interpreter path.
# We cannot use sys.executable on Windows because for unknown reasons, it # We cannot use sys.executable on Windows because for unknown reasons, it
# returns the Vim executable. Instead, we use sys.exec_prefix to deduce the # returns the Vim executable. Instead, we use sys.exec_prefix to deduce the
@ -90,9 +94,20 @@ def PathToPythonInterpreter():
"option." ) "option." )
def _PathToPythonUsedDuringBuild():
from ycmd import utils
try:
filepath = os.path.join( DIR_OF_YCMD, 'PYTHON_USED_DURING_BUILDING' )
return utils.ReadFile( filepath ).strip()
# We need to check for IOError for Python2 and OSError for Python3
except ( IOError, OSError ):
return None
def EndsWithPython( path ): def EndsWithPython( path ):
"""Check if given path ends with a python 2.6+ or 3.3+ name.""" """Check if given path ends with a python 2.6+ or 3.3+ name."""
return PYTHON_BINARY_REGEX.search( path ) is not None return path and PYTHON_BINARY_REGEX.search( path ) is not None
def IsPythonVersionCorrect( path ): def IsPythonVersionCorrect( path ):

View File

@ -66,6 +66,8 @@ def EndsWithPython_Python3Paths_test():
def EndsWithPython_BadPaths_test(): def EndsWithPython_BadPaths_test():
not_python_paths = [ not_python_paths = [
None,
'',
'/opt/local/bin/vim', '/opt/local/bin/vim',
r'C:\Program Files\Vim\vim74\gvim.exe', r'C:\Program Files\Vim\vim74\gvim.exe',
'/usr/bin/python2.5', '/usr/bin/python2.5',

2
third_party/ycmd vendored

@ -1 +1 @@
Subproject commit 09f216441f99c02d51f9460e006683c5fe83669e Subproject commit 89e558f7d49b6d9672477c0d1b4df41d33f1c2e7