[Bf-blender-cvs] [c85265b] master: Make requests python package to be detected in the same way as numpy

Sergey Sharybin noreply at git.blender.org
Mon Jul 28 16:53:19 CEST 2014


Commit: c85265b4551acbc7adf41f47f612373e42e0176d
Author: Sergey Sharybin
Date:   Mon Jul 28 20:42:30 2014 +0600
Branches: master
https://developer.blender.org/rBc85265b4551acbc7adf41f47f612373e42e0176d

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

===================================================================

M	CMakeLists.txt
M	build_files/cmake/macros.cmake
M	source/creator/CMakeLists.txt

===================================================================

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9de92af..9f32f79 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -257,11 +257,13 @@ if(UNIX AND NOT APPLE)
 endif()
 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)
-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)
 
 if(UNIX AND NOT APPLE)
 	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()
 
 # Cycles
@@ -2245,62 +2247,13 @@ if(WITH_PYTHON)
 	if(WIN32)
 		# pass, we have this in an archive to extract
 	elseif(WITH_PYTHON_INSTALL AND WITH_PYTHON_INSTALL_NUMPY)
-		# set but invalid
-		# -- 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()
+		find_python_package(numpy)
 	endif()
 
 	if(WIN32 OR APPLE)
 		# pass, we have this in lib/python/site-packages
 	elseif(WITH_PYTHON_INSTALL_REQUESTS)
-		if(NOT EXISTS ${PYTHON_LIBPATH}/python${PYTHON_VERSION}/site-packages/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()
+		find_python_package(requests)
 	endif()
 endif()
 
diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake
index 8890c13..f896fb9 100644
--- a/build_files/cmake/macros.cmake
+++ b/build_files/cmake/macros.cmake
@@ -1324,3 +1324,54 @@ macro(msgfmt_simple
 	unset(_file_to)
 	unset(_file_to_path)
 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()
diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt
index 8deadb9..bd223b8 100644
--- a/source/creator/CMakeLists.txt
+++ b/source/creator/CMakeLists.txt
@@ -539,7 +539,7 @@ if(UNIX AND NOT APPLE)
 			# Copy requests, we need to generalize site-packages
 			if(WITH_PYTHON_INSTALL_REQUESTS)
 				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
 					PATTERN ".svn" EXCLUDE
 					PATTERN "__pycache__" EXCLUDE           # * any cache *




More information about the Bf-blender-cvs mailing list