Make requests python package to be detected in the same way as numpy
This solves missing requests package reported on the systems where it's located in dist-packages rather than in site-packages. To do this there's now a helper macros which handles both requests and numpy now and could be used for more packages in the future. Reviewers: campbellbarton Reviewed By: campbellbarton Differential Revision: https://developer.blender.org/D686
This commit is contained in:
@@ -257,11 +257,13 @@ if(UNIX AND NOT APPLE)
|
|||||||
endif()
|
endif()
|
||||||
option(WITH_PYTHON_INSTALL "Copy system python into the blender install folder" ON)
|
option(WITH_PYTHON_INSTALL "Copy system python into the blender install folder" ON)
|
||||||
option(WITH_PYTHON_INSTALL_NUMPY "Copy system numpy into the blender install folder" ON)
|
option(WITH_PYTHON_INSTALL_NUMPY "Copy system numpy into the blender install folder" ON)
|
||||||
set(PYTHON_NUMPY_PATH "" CACHE PATH "Python to python site-packages or dist-packages containing 'numpy' module")
|
set(PYTHON_NUMPY_PATH "" CACHE PATH "Path to python site-packages or dist-packages containing 'numpy' module")
|
||||||
mark_as_advanced(PYTHON_NUMPY_PATH)
|
mark_as_advanced(PYTHON_NUMPY_PATH)
|
||||||
|
|
||||||
if(UNIX AND NOT APPLE)
|
if(UNIX AND NOT APPLE)
|
||||||
option(WITH_PYTHON_INSTALL_REQUESTS "Copy system requests into the blender install folder" ON)
|
option(WITH_PYTHON_INSTALL_REQUESTS "Copy system requests into the blender install folder" ON)
|
||||||
|
set(PYTHON_REQUESTS_PATH "" CACHE PATH "Path to python site-packages or dist-packages containing 'requests' module")
|
||||||
|
mark_as_advanced(PYTHON_REQUESTS_PATH)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Cycles
|
# Cycles
|
||||||
@@ -2245,62 +2247,13 @@ if(WITH_PYTHON)
|
|||||||
if(WIN32)
|
if(WIN32)
|
||||||
# pass, we have this in an archive to extract
|
# pass, we have this in an archive to extract
|
||||||
elseif(WITH_PYTHON_INSTALL AND WITH_PYTHON_INSTALL_NUMPY)
|
elseif(WITH_PYTHON_INSTALL AND WITH_PYTHON_INSTALL_NUMPY)
|
||||||
# set but invalid
|
find_python_package(numpy)
|
||||||
# -- disabled until we make numpy bundled with blender - campbell
|
|
||||||
if((NOT ${PYTHON_NUMPY_PATH} STREQUAL "") AND (NOT ${PYTHON_NUMPY_PATH} MATCHES NOTFOUND))
|
|
||||||
# if(NOT EXISTS "${PYTHON_NUMPY_PATH}/numpy")
|
|
||||||
# message(WARNING "PYTHON_NUMPY_PATH is invalid, numpy not found in '${PYTHON_NUMPY_PATH}' "
|
|
||||||
# "WITH_PYTHON_INSTALL_NUMPY option will be ignored when installing python")
|
|
||||||
# set(WITH_PYTHON_INSTALL_NUMPY OFF)
|
|
||||||
# endif()
|
|
||||||
# not set, so initialize
|
|
||||||
else()
|
|
||||||
string(REPLACE "." ";" _PY_VER_SPLIT "${PYTHON_VERSION}")
|
|
||||||
list(GET _PY_VER_SPLIT 0 _PY_VER_MAJOR)
|
|
||||||
|
|
||||||
# re-cache
|
|
||||||
unset(PYTHON_NUMPY_PATH CACHE)
|
|
||||||
find_path(PYTHON_NUMPY_PATH
|
|
||||||
NAMES
|
|
||||||
numpy
|
|
||||||
HINTS
|
|
||||||
"${PYTHON_LIBPATH}/python${PYTHON_VERSION}/"
|
|
||||||
"${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/"
|
|
||||||
PATH_SUFFIXES
|
|
||||||
site-packages
|
|
||||||
dist-packages
|
|
||||||
NO_DEFAULT_PATH
|
|
||||||
)
|
|
||||||
|
|
||||||
if(NOT EXISTS "${PYTHON_NUMPY_PATH}")
|
|
||||||
message(WARNING "'numpy' path could not be found in:\n"
|
|
||||||
"'${PYTHON_LIBPATH}/python${PYTHON_VERSION}/site-packages/numpy', "
|
|
||||||
"'${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/site-packages/numpy', "
|
|
||||||
"'${PYTHON_LIBPATH}/python${PYTHON_VERSION}/dist-packages/numpy', "
|
|
||||||
"'${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/dist-packages/numpy', "
|
|
||||||
"WITH_PYTHON_INSTALL_NUMPY option will be ignored when installing python")
|
|
||||||
set(WITH_PYTHON_INSTALL_NUMPY OFF)
|
|
||||||
else()
|
|
||||||
message(STATUS "numpy found at '${PYTHON_NUMPY_PATH}'")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
unset(_PY_VER_SPLIT)
|
|
||||||
unset(_PY_VER_MAJOR)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WIN32 OR APPLE)
|
if(WIN32 OR APPLE)
|
||||||
# pass, we have this in lib/python/site-packages
|
# pass, we have this in lib/python/site-packages
|
||||||
elseif(WITH_PYTHON_INSTALL_REQUESTS)
|
elseif(WITH_PYTHON_INSTALL_REQUESTS)
|
||||||
if(NOT EXISTS ${PYTHON_LIBPATH}/python${PYTHON_VERSION}/site-packages/requests)
|
find_python_package(requests)
|
||||||
# gets annoying otherwise...
|
|
||||||
if(FIRST_RUN)
|
|
||||||
message(WARNING "'requests' path could not be found in:\n"
|
|
||||||
"'${PYTHON_LIBPATH}/python${PYTHON_VERSION}/site-packages/requests'\n"
|
|
||||||
"WITH_PYTHON_INSTALL_REQUESTS option will be ignored when installing python")
|
|
||||||
endif()
|
|
||||||
set(WITH_PYTHON_INSTALL_REQUESTS OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@@ -1324,3 +1324,54 @@ macro(msgfmt_simple
|
|||||||
unset(_file_to)
|
unset(_file_to)
|
||||||
unset(_file_to_path)
|
unset(_file_to_path)
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
|
macro(find_python_package
|
||||||
|
package)
|
||||||
|
|
||||||
|
string(TOUPPER ${package} _upper_package)
|
||||||
|
|
||||||
|
# set but invalid
|
||||||
|
if((NOT ${PYTHON_${_upper_package}_PATH} STREQUAL "") AND
|
||||||
|
(NOT ${PYTHON_${_upper_package}_PATH} MATCHES NOTFOUND))
|
||||||
|
# if(NOT EXISTS "${PYTHON_${_upper_package}_PATH}/${package}")
|
||||||
|
# message(WARNING "PYTHON_${_upper_package}_PATH is invalid, ${package} not found in '${PYTHON_${_upper_package}_PATH}' "
|
||||||
|
# "WITH_PYTHON_INSTALL_${_upper_package} option will be ignored when installing python")
|
||||||
|
# set(WITH_PYTHON_INSTALL${_upper_package} OFF)
|
||||||
|
# endif()
|
||||||
|
# not set, so initialize
|
||||||
|
else()
|
||||||
|
string(REPLACE "." ";" _PY_VER_SPLIT "${PYTHON_VERSION}")
|
||||||
|
list(GET _PY_VER_SPLIT 0 _PY_VER_MAJOR)
|
||||||
|
|
||||||
|
# re-cache
|
||||||
|
unset(PYTHON_${_upper_package}_PATH CACHE)
|
||||||
|
find_path(PYTHON_${_upper_package}_PATH
|
||||||
|
NAMES
|
||||||
|
${package}
|
||||||
|
HINTS
|
||||||
|
"${PYTHON_LIBPATH}/python${PYTHON_VERSION}/"
|
||||||
|
"${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/"
|
||||||
|
PATH_SUFFIXES
|
||||||
|
site-packages
|
||||||
|
dist-packages
|
||||||
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
|
|
||||||
|
if(NOT EXISTS "${PYTHON_${_upper_package}_PATH}")
|
||||||
|
message(WARNING "'${package}' path could not be found in:\n"
|
||||||
|
"'${PYTHON_LIBPATH}/python${PYTHON_VERSION}/site-packages/${package}', "
|
||||||
|
"'${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/site-packages/${package}', "
|
||||||
|
"'${PYTHON_LIBPATH}/python${PYTHON_VERSION}/dist-packages/${package}', "
|
||||||
|
"'${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/dist-packages/${package}', "
|
||||||
|
"WITH_PYTHON_INSTALL_${_upper_package} option will be ignored when installing python")
|
||||||
|
set(WITH_PYTHON_INSTALL_${_upper_package} OFF)
|
||||||
|
else()
|
||||||
|
message(STATUS "${package} found at '${PYTHON_${_upper_package}_PATH}'")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
unset(_PY_VER_SPLIT)
|
||||||
|
unset(_PY_VER_MAJOR)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
unset(_upper_package)
|
||||||
|
endmacro()
|
||||||
|
@@ -539,7 +539,7 @@ if(UNIX AND NOT APPLE)
|
|||||||
# Copy requests, we need to generalize site-packages
|
# Copy requests, we need to generalize site-packages
|
||||||
if(WITH_PYTHON_INSTALL_REQUESTS)
|
if(WITH_PYTHON_INSTALL_REQUESTS)
|
||||||
install(
|
install(
|
||||||
DIRECTORY ${PYTHON_LIBPATH}/python${PYTHON_VERSION}/site-packages/requests
|
DIRECTORY ${PYTHON_REQUESTS_PATH}/requests
|
||||||
DESTINATION ${TARGETDIR_VER}/python/${_target_LIB}/python${PYTHON_VERSION}/site-packages
|
DESTINATION ${TARGETDIR_VER}/python/${_target_LIB}/python${PYTHON_VERSION}/site-packages
|
||||||
PATTERN ".svn" EXCLUDE
|
PATTERN ".svn" EXCLUDE
|
||||||
PATTERN "__pycache__" EXCLUDE # * any cache *
|
PATTERN "__pycache__" EXCLUDE # * any cache *
|
||||||
|
Reference in New Issue
Block a user