Commit: c538903558d8c648817f5921e6f7acd284645214 Author: Lazydodo Date: Tue Aug 13 17:02:19 2019 -0600 Branches: master https://developer.blender.org/rBc538903558d8c648817f5921e6f7acd284645214
deps: python 3.7.4 for windows. This also updates to a new packaging method where python is runnable from the library folder rather than having tarballs in the release folder. =================================================================== M build_files/build_environment/CMakeLists.txt M build_files/build_environment/cmake/numpy.cmake A build_files/build_environment/cmake/package_python.cmake M build_files/build_environment/cmake/python.cmake M build_files/build_environment/cmake/python_site_packages.cmake M build_files/cmake/platform/platform_win32.cmake M source/creator/CMakeLists.txt =================================================================== diff --git a/build_files/build_environment/CMakeLists.txt b/build_files/build_environment/CMakeLists.txt index e4fe7d90176..0dbd3b572cf 100644 --- a/build_files/build_environment/CMakeLists.txt +++ b/build_files/build_environment/CMakeLists.txt @@ -90,6 +90,7 @@ include(cmake/tbb.cmake) include(cmake/openvdb.cmake) include(cmake/python.cmake) include(cmake/python_site_packages.cmake) +include(cmake/package_python.cmake) include(cmake/numpy.cmake) if(UNIX AND NOT APPLE) # Rely on PugiXML compiled with OpenImageIO diff --git a/build_files/build_environment/cmake/numpy.cmake b/build_files/build_environment/cmake/numpy.cmake index 1a6ffa95ad6..abf2464e88c 100644 --- a/build_files/build_environment/cmake/numpy.cmake +++ b/build_files/build_environment/cmake/numpy.cmake @@ -17,6 +17,7 @@ # ***** END GPL LICENSE BLOCK ***** if(MSVC) + message("BIN >${PYTHON_BINARY}<") if(BUILD_MODE STREQUAL Debug) set(NUMPY_DIR_POSTFIX -pydebug) set(NUMPY_ARCHIVE_POSTFIX d) @@ -30,17 +31,6 @@ endif() set(NUMPY_POSTFIX) -if(WIN32) - set(NUMPY_INSTALL - ${CMAKE_COMMAND} -E copy_directory "${BUILD_DIR}/python/src/external_python/run/lib/site-packages/numpy/core/include/numpy" "${LIBDIR}/python/include/python${PYTHON_SHORT_VERSION}/numpy" && - ${CMAKE_COMMAND} -E chdir "${BUILD_DIR}/numpy/src/external_numpy/build/lib.${PYTHON_ARCH2}-${PYTHON_SHORT_VERSION}${NUMPY_DIR_POSTFIX}" - ${CMAKE_COMMAND} -E tar "cfvz" "${LIBDIR}/python${PYTHON_SHORT_VERSION_NO_DOTS}_numpy_${NUMPY_SHORT_VERSION}${NUMPY_ARCHIVE_POSTFIX}.tar.gz" "." - ) -else() - set(NUMPY_INSTALL echo .) - set(NUMPY_PATCH echo .) -endif() - ExternalProject_Add(external_numpy URL ${NUMPY_URI} DOWNLOAD_DIR ${DOWNLOAD_DIR} @@ -50,17 +40,10 @@ ExternalProject_Add(external_numpy CONFIGURE_COMMAND "" LOG_BUILD 1 BUILD_COMMAND ${PYTHON_BINARY} ${BUILD_DIR}/numpy/src/external_numpy/setup.py build ${NUMPY_BUILD_OPTION} install --old-and-unmanageable - INSTALL_COMMAND ${NUMPY_INSTALL} + INSTALL_COMMAND "" ) -if(WIN32) - ExternalProject_Add_Step(external_numpy after_install - COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/python${PYTHON_SHORT_VERSION_NO_DOTS}_numpy_${NUMPY_SHORT_VERSION}${NUMPY_ARCHIVE_POSTFIX}.tar.gz ${HARVEST_TARGET}/Release/python${PYTHON_SHORT_VERSION_NO_DOTS}_numpy_${NUMPY_SHORT_VERSION}${NUMPY_ARCHIVE_POSTFIX}.tar.gz - DEPENDEES install - ) -endif() - add_dependencies( external_numpy - Make_Python_Environment + external_python ) diff --git a/build_files/build_environment/cmake/package_python.cmake b/build_files/build_environment/cmake/package_python.cmake new file mode 100644 index 00000000000..e2eda66a4e0 --- /dev/null +++ b/build_files/build_environment/cmake/package_python.cmake @@ -0,0 +1,58 @@ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# ***** END GPL LICENSE BLOCK ***** + +if(MSVC) + set(PYTARGET ${HARVEST_TARGET}/python/${PYTHON_SHORT_VERSION_NO_DOTS}) + set(PYSRC ${LIBDIR}/python/) + + if(BUILD_MODE STREQUAL Release) + add_custom_command( + OUTPUT ${PYTARGET}/bin/python${PYTHON_POSTFIX}.exe + COMMAND echo packaging python + COMMAND echo this should ouput at ${PYTARGET}/bin/python${PYTHON_POSTFIX}.exe + COMMAND ${CMAKE_COMMAND} -E make_directory ${PYTARGET}/libs + COMMAND ${CMAKE_COMMAND} -E copy ${PYSRC}/libs/python${PYTHON_SHORT_VERSION_NO_DOTS}.lib ${PYTARGET}/libs/python${PYTHON_SHORT_VERSION_NO_DOTS}.lib + COMMAND ${CMAKE_COMMAND} -E copy ${PYSRC}/python.exe ${PYTARGET}/bin/python.exe + COMMAND ${CMAKE_COMMAND} -E copy ${PYSRC}/python${PYTHON_SHORT_VERSION_NO_DOTS}.dll ${PYTARGET}/bin/python${PYTHON_SHORT_VERSION_NO_DOTS}.dll + COMMAND ${CMAKE_COMMAND} -E copy ${PYSRC}/python${PYTHON_SHORT_VERSION_NO_DOTS}.pdb ${PYTARGET}/libs/python${PYTHON_SHORT_VERSION_NO_DOTS}.pdb + COMMAND ${CMAKE_COMMAND} -E copy_directory ${PYSRC}/include/ ${PYTARGET}/include/ + COMMAND ${CMAKE_COMMAND} -E copy_directory ${PYSRC}/lib/ ${PYTARGET}/lib/ + COMMAND ${CMAKE_COMMAND} -E copy_directory ${PYSRC}/DLLs/ ${PYTARGET}/DLLs/ + COMMAND cd ${PYTARGET}/lib/ && for /d /r . %%d in (__pycache__) do @if exist "%%d" echo "%%d" && rd /s/q "%%d" + ) + add_custom_target(Package_Python ALL DEPENDS external_python external_numpy external_python_site_packages OUTPUT ${HARVEST_TARGET}/python/${PYTHON_SHORT_VERSION_NO_DOTS}/bin/python${PYTHON_POSTFIX}.exe) + endif() + + if(BUILD_MODE STREQUAL Debug) + add_custom_command( + OUTPUT ${PYTARGET}/bin/python${PYTHON_POSTFIX}.exe + COMMAND echo packaging python + COMMAND echo this should ouput at ${PYTARGET}/bin/python${PYTHON_POSTFIX}.exe + COMMAND ${CMAKE_COMMAND} -E make_directory ${PYTARGET}/libs + COMMAND ${CMAKE_COMMAND} -E copy ${PYSRC}/libs/python${PYTHON_SHORT_VERSION_NO_DOTS}${PYTHON_POSTFIX}.lib ${PYTARGET}/libs/python${PYTHON_SHORT_VERSION_NO_DOTS}${PYTHON_POSTFIX}.lib + COMMAND ${CMAKE_COMMAND} -E copy ${PYSRC}/python${PYTHON_POSTFIX}.exe ${PYTARGET}/bin/python${PYTHON_POSTFIX}.exe + COMMAND ${CMAKE_COMMAND} -E copy ${PYSRC}/python${PYTHON_SHORT_VERSION_NO_DOTS}${PYTHON_POSTFIX}.dll ${PYTARGET}/bin/python${PYTHON_SHORT_VERSION_NO_DOTS}${PYTHON_POSTFIX}.dll + COMMAND ${CMAKE_COMMAND} -E copy ${PYSRC}/python${PYTHON_SHORT_VERSION_NO_DOTS}${PYTHON_POSTFIX}.pdb ${PYTARGET}/libs/python${PYTHON_SHORT_VERSION_NO_DOTS}${PYTHON_POSTFIX}.pdb + COMMAND ${CMAKE_COMMAND} -E copy_directory ${PYSRC}/include/ ${PYTARGET}/include/ + COMMAND ${CMAKE_COMMAND} -E copy_directory ${PYSRC}/lib/ ${PYTARGET}/lib/ + COMMAND ${CMAKE_COMMAND} -E copy_directory ${PYSRC}/DLLs/ ${PYTARGET}/DLLs/ + COMMAND cd ${PYTARGET}/lib/ && for /d /r . %%d in (__pycache__) do @if exist "%%d" echo "%%d" && rd /s/q "%%d" + ) + add_custom_target(Package_Python ALL DEPENDS external_python external_numpy external_python_site_packages OUTPUT ${PYTARGET}/bin/python${PYTHON_POSTFIX}.exe) + endif() +endif() diff --git a/build_files/build_environment/cmake/python.cmake b/build_files/build_environment/cmake/python.cmake index cb3aefa3a9d..ee218e9782a 100644 --- a/build_files/build_environment/cmake/python.cmake +++ b/build_files/build_environment/cmake/python.cmake @@ -19,17 +19,13 @@ set(PYTHON_POSTFIX) if(BUILD_MODE STREQUAL Debug) set(PYTHON_POSTFIX _d) + set(PYTHON_EXTRA_INSTLAL_FLAGS -d) endif() if(WIN32) - if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") - set(SSL_POSTFIX -x64) - else() - set(SSL_POSTFIX) - endif() - - set(PYTHON_BINARY ${BUILD_DIR}/python/src/external_python/run/python${PYTHON_POSTFIX}.exe) - + set(PYTHON_BINARY_INTERNAL ${BUILD_DIR}/python/src/external_python/PCBuild/amd64/python${PYTHON_POSTFIX}.exe) + set(PYTHON_BINARY ${LIBDIR}/python/python${PYTHON_POSTFIX}.exe) + set(PYTHON_SRC ${BUILD_DIR}/python/src/external_python/) macro(cmake_to_dos_path MsysPath ResultingPath) string(REPLACE "/" "\\" ${ResultingPath} "${MsysPath}") endmacro() @@ -40,31 +36,16 @@ if(WIN32) cmake_to_dos_path(${PYTHON_EXTERNALS_FOLDER} PYTHON_EXTERNALS_FOLDER_DOS) cmake_to_dos_path(${DOWNLOADS_EXTERNALS_FOLDER} DOWNLOADS_EXTERNALS_FOLDER_DOS) - message("Python externals = ${PYTHON_EXTERNALS_FOLDER}") - message("Python externals_dos = ${PYTHON_EXTERNALS_FOLDER_DOS}") - message("Python DOWNLOADS_EXTERNALS_FOLDER = ${DOWNLOADS_EXTERNALS_FOLDER}") - message("Python DOWNLOADS_EXTERNALS_FOLDER_DOS = ${DOWNLOADS_EXTERNALS_FOLDER_DOS}") - ExternalProject_Add(external_python URL ${PYTHON_URI} DOWNLOAD_DIR ${DOWNLOAD_DIR} URL_HASH MD5=${PYTHON_HASH} PREFIX ${BUILD_DIR}/python - PATCH_COMMAND - echo mklink /D "${PYTHON_EXTERNALS_FOLDER_DOS}" "${DOWNLOADS_EXTERNALS_FOLDER_DOS}" && - mklink /D "${PYTHON_EXTERNALS_FOLDER_DOS}" "${DOWNLOADS_EXTERNALS_FOLDER_DOS}" CONFIGURE_COMMAND "" BUILD_COMMAND cd ${BUILD_DIR}/python/src/external_python/pcbuild/ && set IncludeTkinter=false && call build.bat -e -p ${PYTHON_ARCH} -c ${BUILD_MODE} - INSTALL_COMMAND COMMAND - ${CMAKE_COMMAND} -E copy ${PYTHON_OUTPUTDIR}/python${PYTHON_SHORT_VERSION_NO_DOTS}${PYTHON_POSTFIX}.dll ${LIBDIR}/python/lib/python${PYTHON_SHORT_VERSION_NO_DOTS}${PYTHON_POSTFIX}.dll && - ${CMAKE_COMMAND} -E copy ${PYTHON_OUTPUTDIR}/python${PYTHON_SHORT_VERSION_NO_DOTS}${PYTHON_POSTFIX}.pdb ${LIBDIR}/python/lib/python${PYTHON_SHORT_VERSION_NO_DOTS}${PYTHON_POSTFIX}.pdb && - ${CMAKE_COMMAND} -E copy ${PYTHON_OUTPUTDIR}/python${PYTHON_SHORT_VERSION_NO_DOTS}${PYTHON_POSTFIX}.lib ${LIBDIR}/python/lib/python${PYTHON_SHORT_VERSION_NO_DOTS}${PYTHON_POSTFIX}.lib && - ${CMAKE_COMMAND} -E copy ${PYTHON_OUTPUTDIR}/python${PYTHON_SHORT_VERSION_NO_DOTS}${PYTHON_POSTFIX}.exp ${LIBDIR}/python/lib/python${PYTHON_SHORT_VERSION_NO_DOTS}${PYTHON_POSTFIX}.exp && - ${CMAKE_COMMAND} -E copy_directory ${BUILD_DIR}/python/src/external_python/include ${LIBDIR}/python/include/Python${PYTHON_SHORT_VERSION} && - ${CMAKE_COMMAND} -E copy "${BUILD_DIR}/python/src/external_python/PC/pyconfig.h" ${LIBDIR}/python/include/Python${PYTHON_SHORT_VERSION}/pyconfig.h + INSTALL_COMMAND ${PYTHON_BINARY_INTERNAL} ${PYTHON_SRC}/PC/layout/main.py -b ${PYTHON_SRC}/PCbuild/amd64 -s ${PYTHON_SRC} -t ${PYTHON_SRC}/tmp/ --include-underpth --include-stable --include-pip --include-dev --include-launchers --include-symbols ${PYTHON_EXTRA_INSTLAL_FLAGS} --copy ${LIBDIR}/python ) - message("PythinRedist = ${BUILD_DIR}/python/src/external_python/redist") - message("POutput = ${PYTHON_OUTPUTDIR @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs