diff options
author | Refael Ackermann <refack@gmail.com> | 2017-06-24 16:09:53 -0400 |
---|---|---|
committer | Refael Ackermann <refack@gmail.com> | 2017-06-28 11:46:24 -0400 |
commit | 614dbbd728bba2ed05c3861a2a7316c399d835e9 (patch) | |
tree | e01a5c2fe7b9c4d4c462dbe850dc63db0bf13780 /tools/msvs | |
parent | 2ff23c5622c9738f48c19f078ba140efe2699871 (diff) | |
download | android-node-v8-614dbbd728bba2ed05c3861a2a7316c399d835e9.tar.gz android-node-v8-614dbbd728bba2ed05c3861a2a7316c399d835e9.tar.bz2 android-node-v8-614dbbd728bba2ed05c3861a2a7316c399d835e9.zip |
build,windows: implement PEP514 python detection
PR-URL: https://github.com/nodejs/node/pull/13900
Fixes: https://github.com/nodejs/node/issues/13882
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Diffstat (limited to 'tools/msvs')
-rw-r--r-- | tools/msvs/find_python.cmd | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/tools/msvs/find_python.cmd b/tools/msvs/find_python.cmd new file mode 100644 index 0000000000..9b67764c75 --- /dev/null +++ b/tools/msvs/find_python.cmd @@ -0,0 +1,51 @@ +@IF NOT DEFINED DEBUG_HELPER @ECHO OFF +SETLOCAL +:: If python.exe is in %Path%, just validate +FOR /F "delims=" %%a IN ('where python 2^> NUL') DO ( + SET need_path=0 + SET p=%%~dpa + IF NOT ERRORLEVEL 1 GOTO :validate +) + +:: Query the 3 locations mentioned in PEP 514 for a python2 InstallPath +FOR %%K IN ( "HKCU\Software", "HKLM\SOFTWARE", "HKLM\Software\Wow6432Node") DO ( + SET need_path=1 + CALL :find-main-branch %%K + :: If validate returns 0 just jump to the end + IF NOT ERRORLEVEL 1 GOTO :validate +) +EXIT /B 1 + +:: Helper subroutine to handle quotes in %1 +:find-main-branch +SET main_key="%~1\Python\PythonCore" +REG QUERY %main_key% /s | findstr "2." | findstr InstallPath > NUL 2> NUL +IF NOT ERRORLEVEL 1 CALL :find-key %main_key% +EXIT /B + +:: Query registry sub-tree for InstallPath +:find-key +FOR /F "delims=" %%a IN ('REG QUERY %1 /s ^| findstr "2." ^| findstr InstallPath') DO IF NOT ERRORLEVEL 1 CALL :find-path %%a +EXIT /B + +:: Parse the value of %1 as the path for python.exe +:find-path +FOR /F "tokens=3*" %%a IN ('REG QUERY %1 /ve') DO ( + SET pt=%%a + IF NOT ERRORLEVEL 1 SET p=%pt% + EXIT /B 0 +) +EXIT /B 1 + +:: Check if %p% holds a path to a real python2 executable +:validate +IF NOT EXIST "%p%python.exe" EXIT /B 1 +:: Check if %p% is python2 +%p%python.exe -V 2>&1 | findstr /R "^Python.2.*" > NUL +IF ERRORLEVEL 1 EXIT /B %ERRORLEVEL% +:: We can wrap it up +ENDLOCAL & SET pt=%p%& SET need_path_ext=%need_path% +SET VCBUILD_PYTHON_LOCATION=%pt%python.exe +IF %need_path_ext%==1 SET Path=%Path%;%pt% +SET need_path_ext= +EXIT /B %ERRORLEVEL%
\ No newline at end of file |