diff --git a/CMakeLists.txt b/CMakeLists.txt index 21efa668292..100d00b2032 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -201,7 +201,7 @@ set(WITH_PYTHON_SECURITY ON CACHE BOOL "ON" FORCE) # temp force on. option(WITH_PYTHON_SAFETY "Enable internal API error checking to track invalid data to prevent crash on access (at the expense of some effeciency, only enable for development)." OFF) mark_as_advanced(WITH_PYTHON_SAFETY) -option(WITH_PYTHON_MODULE "Enable building as a python module which runs without a user interface, like running regular blender in background mode (experimental, only enable for development)" OFF) +option(WITH_PYTHON_MODULE "Enable building as a python module which runs without a user interface, like running regular blender in background mode (experimental, only enable for development), installs to PYTHON_SITE_PACKAGES" OFF) if(APPLE) option(WITH_PYTHON_FRAMEWORK "Enable building using the Python available in the framework (OSX only)" OFF) endif() @@ -617,6 +617,8 @@ endif() # may as well build python module without a UI if(WITH_PYTHON_MODULE) set(WITH_HEADLESS ON) + # building as a Python module wont use /usr/shared + set(WITH_INSTALL_PORTABLE ON) endif() if(NOT WITH_PYTHON) diff --git a/build_files/cmake/Modules/FindPythonLibsUnix.cmake b/build_files/cmake/Modules/FindPythonLibsUnix.cmake index 1fb27e7898c..555ca4cf0a0 100644 --- a/build_files/cmake/Modules/FindPythonLibsUnix.cmake +++ b/build_files/cmake/Modules/FindPythonLibsUnix.cmake @@ -14,6 +14,7 @@ # PYTHON_INCLUDE_CONFIG_DIRS # PYTHON_LIBRARIES # PYTHON_LIBPATH, Used for installation +# PYTHON_SITE_PACKAGES, Used for installation (as a Python module) # PYTHON_LINKFLAGS # PYTHON_ROOT_DIR, The base directory to search for Python. # This can also be an environment variable. @@ -187,6 +188,15 @@ IF(PYTHONLIBSUNIX_FOUND) SET(PYTHON_INCLUDE_DIRS ${PYTHON_INCLUDE_DIR} ${PYTHON_INCLUDE_CONFIG_DIR}) SET(PYTHON_LIBRARIES ${PYTHON_LIBRARY}) + FIND_FILE(PYTHON_SITE_PACKAGES + NAMES + # debian specific + dist-packages + site-packages + HINTS + ${PYTHON_LIBPATH}/python${PYTHON_VERSION} + ) + # we need this for installation # XXX No more valid with debian-like py3.4 packages... # GET_FILENAME_COMPONENT(PYTHON_LIBPATH ${PYTHON_LIBRARY} PATH) @@ -200,4 +210,5 @@ MARK_AS_ADVANCED( PYTHON_INCLUDE_CONFIG_DIR PYTHON_LIBRARY PYTHON_LIBPATH + PYTHON_SITE_PACKAGES ) diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt index 1557cc08182..b9044e64ddd 100644 --- a/source/creator/CMakeLists.txt +++ b/source/creator/CMakeLists.txt @@ -261,11 +261,11 @@ endif() # Platform Specific Var: TARGETDIR_VER if(UNIX AND NOT APPLE) - if(WITH_INSTALL_PORTABLE) - set(TARGETDIR_VER ${BLENDER_VERSION}) + if(WITH_PYTHON_MODULE) + set(TARGETDIR_VER ${PYTHON_SITE_PACKAGES}/${BLENDER_VERSION}) else() - if(WITH_PYTHON_MODULE) - set(TARGETDIR_VER ${PYTHON_LIBPATH}/python${PYTHON_VERSION}/site-packages/${BLENDER_VERSION}) + if(WITH_INSTALL_PORTABLE) + set(TARGETDIR_VER ${BLENDER_VERSION}) else() set(TARGETDIR_VER share/blender/${BLENDER_VERSION}) endif() @@ -407,22 +407,24 @@ if(UNIX AND NOT APPLE) endif() # there are a few differences between portable and system install - if(WITH_INSTALL_PORTABLE) - if(WITH_PYTHON_MODULE) - # pass - else() - if(WITH_DOC_MANPAGE) - install( - FILES ${CMAKE_CURRENT_BINARY_DIR}/blender.1 - DESTINATION "." - ) - endif() - endif() + if(WITH_PYTHON_MODULE) + install( + TARGETS blender + LIBRARY DESTINATION ${PYTHON_SITE_PACKAGES} + ) + # none of the other files are needed currently + elseif(WITH_INSTALL_PORTABLE) install( TARGETS blender DESTINATION "." ) + if(WITH_DOC_MANPAGE) + install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/blender.1 + DESTINATION "." + ) + endif() install( FILES ${CMAKE_SOURCE_DIR}/release/freedesktop/blender.desktop @@ -437,26 +439,18 @@ if(UNIX AND NOT APPLE) ) set(BLENDER_TEXT_FILES_DESTINATION ".") - else() # main blender binary - if(WITH_PYTHON_MODULE) + install( + TARGETS blender + DESTINATION bin + ) + if(WITH_DOC_MANPAGE) + # manpage only with 'blender' binary install( - TARGETS blender - LIBRARY DESTINATION ${PYTHON_LIBPATH}/python${PYTHON_VERSION}/site-packages + FILES ${CMAKE_CURRENT_BINARY_DIR}/blender.1 + DESTINATION share/man/man1 ) - else() - install( - TARGETS blender - DESTINATION bin - ) - if(WITH_DOC_MANPAGE) - # manpage only with 'blender' binary - install( - FILES ${CMAKE_CURRENT_BINARY_DIR}/blender.1 - DESTINATION share/man/man1 - ) - endif() endif() # misc files