From 73a104b8e86c45912ad99ea349c296e502811584 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Wed, 10 Jun 2015 13:39:57 +0500 Subject: [PATCH] Fix T44968: Python executable crashes due to missing .DLL For now we work this around by copying python DLL to the bin folder. Ideally the DLL should be shared between blender and python, but that's a bit tricky to do on windows. --- SConstruct | 9 +++++++++ source/creator/CMakeLists.txt | 13 +++++++++++++ 2 files changed, 22 insertions(+) diff --git a/SConstruct b/SConstruct index d05e6899a61..573d4c1934f 100644 --- a/SConstruct +++ b/SConstruct @@ -1300,6 +1300,15 @@ if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'win64-vc', 'linuxcross'): windlls = env.Install(dir=env['BF_INSTALLDIR'], source = dllsources) allinstall += windlls + # TODO(sergey): For unti we've got better way to deal with python binary + if env['WITH_BF_PYTHON']: + py_target = os.path.join(env['BF_INSTALLDIR'], VERSION, 'python', 'bin') + if env['BF_DEBUG']: + allinstall += env.Install(dir=py_target, source = ['${BF_PYTHON_LIBPATH}/${BF_PYTHON_DLL}_d.dll']) + else: + allinstall += env.Install(dir=py_target, source = ['${BF_PYTHON_LIBPATH}/${BF_PYTHON_DLL}.dll']) + + if env['OURPLATFORM'] == 'win64-mingw': dllsources = [] diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt index eb912775639..1b2dd216904 100644 --- a/source/creator/CMakeLists.txt +++ b/source/creator/CMakeLists.txt @@ -679,6 +679,19 @@ elseif(WIN32) install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${BLENDER_VERSION}/python/lib/site-packages/numpy DESTINATION ${BLENDER_VERSION}/python/lib/site-packages) endif() + + + # TODO(sergey): For unti we've got better way to deal with python binary + install( + FILES ${LIBDIR}/python/lib/python${_PYTHON_VERSION_NO_DOTS}.dll + DESTINATION ${BLENDER_VERSION}/python/bin + CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel + ) + install( + FILES ${LIBDIR}/python/lib/python${_PYTHON_VERSION_NO_DOTS}_d.dll + DESTINATION ${BLENDER_VERSION}/python/bin + CONFIGURATIONS Debug + ) endif() unset(_PYTHON_VERSION_NO_DOTS)