diff options
author | Ray Molenkamp <github@lazydodo.com> | 2022-10-30 22:06:10 +0300 |
---|---|---|
committer | Ray Molenkamp <github@lazydodo.com> | 2022-10-30 22:07:16 +0300 |
commit | e697442f099aa390923979941fe7f5298d44b1ec (patch) | |
tree | 8ebaf6b1151ed0bed1a49367996b13e70506f5c6 /build_files | |
parent | ce3a045009f298ad5014f36ace07b104f696b924 (diff) |
deps_builder/win: use our openssl version for python
Python will take care of the build, we only need to unpack openssl
in the right place and python's prepare_ssl will patch and build
openssl for us.
Diffstat (limited to 'build_files')
-rw-r--r-- | build_files/build_environment/CMakeLists.txt | 3 | ||||
-rw-r--r-- | build_files/build_environment/cmake/python.cmake | 18 | ||||
-rw-r--r-- | build_files/build_environment/cmake/ssl.cmake | 66 | ||||
-rw-r--r-- | build_files/build_environment/patches/python_windows.diff | 22 |
4 files changed, 76 insertions, 33 deletions
diff --git a/build_files/build_environment/CMakeLists.txt b/build_files/build_environment/CMakeLists.txt index ef3c0388c29..6dacedcf98d 100644 --- a/build_files/build_environment/CMakeLists.txt +++ b/build_files/build_environment/CMakeLists.txt @@ -43,7 +43,7 @@ if(ENABLE_MINGW64) else() set(mingw_LIBDIR ${LIBDIR}) endif() - +include(cmake/ssl.cmake) include(cmake/zlib.cmake) include(cmake/zstd.cmake) include(cmake/openal.cmake) @@ -167,7 +167,6 @@ if(UNIX) include(cmake/bzip2.cmake) include(cmake/ffi.cmake) include(cmake/lzma.cmake) - include(cmake/ssl.cmake) include(cmake/sqlite.cmake) endif() diff --git a/build_files/build_environment/cmake/python.cmake b/build_files/build_environment/cmake/python.cmake index c56f1e62419..c9a0d5ab6af 100644 --- a/build_files/build_environment/cmake/python.cmake +++ b/build_files/build_environment/cmake/python.cmake @@ -16,10 +16,12 @@ if(WIN32) set(PYTHON_EXTERNALS_FOLDER ${BUILD_DIR}/python/src/external_python/externals) set(ZLIB_SOURCE_FOLDER ${BUILD_DIR}/zlib/src/external_zlib) + set(SSL_SOURCE_FOLDER ${BUILD_DIR}/ssl/src/external_ssl) set(DOWNLOADS_EXTERNALS_FOLDER ${DOWNLOAD_DIR}/externals) cmake_to_dos_path(${PYTHON_EXTERNALS_FOLDER} PYTHON_EXTERNALS_FOLDER_DOS) cmake_to_dos_path(${ZLIB_SOURCE_FOLDER} ZLIB_SOURCE_FOLDER_DOS) + cmake_to_dos_path(${SSL_SOURCE_FOLDER} SSL_SOURCE_FOLDER_DOS) cmake_to_dos_path(${DOWNLOADS_EXTERNALS_FOLDER} DOWNLOADS_EXTERNALS_FOLDER_DOS) ExternalProject_Add(external_python @@ -31,11 +33,14 @@ if(WIN32) # that beyond placing some code in their externals dir before it tries. # the foldernames *HAVE* to match the ones inside pythons get_externals.cmd. # python 3.10.8 still ships zlib 1.2.12, replace it with our 1.2.13 - # copy until they update. + # copy until they update. Same rules apply to openssl foldernames HAVE to match + # regardless of the version actually in there. CONFIGURE_COMMAND mkdir ${PYTHON_EXTERNALS_FOLDER_DOS} && mklink /J ${PYTHON_EXTERNALS_FOLDER_DOS}\\zlib-1.2.12 ${ZLIB_SOURCE_FOLDER_DOS} && - ${CMAKE_COMMAND} -E copy ${ZLIB_SOURCE_FOLDER}/../external_zlib-build/zconf.h ${PYTHON_EXTERNALS_FOLDER}/zlib-1.2.12/zconf.h - BUILD_COMMAND cd ${BUILD_DIR}/python/src/external_python/pcbuild/ && set IncludeTkinter=false && call build.bat -e -p x64 -c ${BUILD_MODE} + mklink /J ${PYTHON_EXTERNALS_FOLDER_DOS}\\openssl-1.1.1q ${SSL_SOURCE_FOLDER_DOS} && + ${CMAKE_COMMAND} -E copy ${ZLIB_SOURCE_FOLDER}/../external_zlib-build/zconf.h ${PYTHON_EXTERNALS_FOLDER}/zlib-1.2.12/zconf.h && + ${PATCH_CMD} --verbose -p1 -d ${BUILD_DIR}/python/src/external_python < ${PATCH_DIR}/python_windows.diff + BUILD_COMMAND ${CONFIGURE_ENV_MSVC} && cd ${BUILD_DIR}/python/src/external_python/pcbuild/ && set IncludeTkinter=false && set LDFLAGS=/DEBUG && call prepare_ssl.bat && call build.bat -e -p x64 -c ${BUILD_MODE} INSTALL_COMMAND ${PYTHON_BINARY_INTERNAL} ${PYTHON_SRC}/PC/layout/main.py -b ${PYTHON_SRC}/PCbuild/amd64 -s ${PYTHON_SRC} -t ${PYTHON_SRC}/tmp/ --include-stable --include-pip --include-dev --include-launchers --include-venv --include-symbols ${PYTHON_EXTRA_INSTLAL_FLAGS} --copy ${LIBDIR}/python ) add_dependencies( @@ -96,15 +101,18 @@ else() INSTALL_DIR ${LIBDIR}/python) endif() +add_dependencies( + external_python + external_ssl + external_zlib +) if(UNIX) add_dependencies( external_python external_bzip2 external_ffi external_lzma - external_ssl external_sqlite - external_zlib ) endif() diff --git a/build_files/build_environment/cmake/ssl.cmake b/build_files/build_environment/cmake/ssl.cmake index 628187dc0ac..6241e2d44e6 100644 --- a/build_files/build_environment/cmake/ssl.cmake +++ b/build_files/build_environment/cmake/ssl.cmake @@ -3,33 +3,47 @@ set(SSL_CONFIGURE_COMMAND ./Configure) set(SSL_PATCH_CMD echo .) -if(APPLE) - set(SSL_OS_COMPILER "blender-darwin-${CMAKE_OSX_ARCHITECTURES}") - set(SSL_PATCH_CMD ${PATCH_CMD} --verbose -p 0 -d ${BUILD_DIR}/ssl/src/external_ssl < ${PATCH_DIR}/ssl.diff) +if(WIN32) + # Python will build this with its preferred build options and patches. We only need to unpack openssl + ExternalProject_Add(external_ssl + URL file://${PACKAGE_DIR}/${SSL_FILE} + DOWNLOAD_DIR ${DOWNLOAD_DIR} + URL_HASH ${SSL_HASH_TYPE}=${SSL_HASH} + PREFIX ${BUILD_DIR}/ssl + CONFIGURE_COMMAND echo "." + BUILD_COMMAND echo "." + INSTALL_COMMAND echo "." + INSTALL_DIR ${LIBDIR}/ssl + ) else() - if(BLENDER_PLATFORM_ARM) - set(SSL_OS_COMPILER "blender-linux-aarch64") - elseif("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") - set(SSL_EXTRA_ARGS enable-ec_nistp_64_gcc_128) - set(SSL_OS_COMPILER "blender-linux-x86_64") + if(APPLE) + set(SSL_OS_COMPILER "blender-darwin-${CMAKE_OSX_ARCHITECTURES}") + set(SSL_PATCH_CMD ${PATCH_CMD} --verbose -p 0 -d ${BUILD_DIR}/ssl/src/external_ssl < ${PATCH_DIR}/ssl.diff) else() - set(SSL_OS_COMPILER "blender-linux-x86") + if(BLENDER_PLATFORM_ARM) + set(SSL_OS_COMPILER "blender-linux-aarch64") + elseif("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") + set(SSL_EXTRA_ARGS enable-ec_nistp_64_gcc_128) + set(SSL_OS_COMPILER "blender-linux-x86_64") + else() + set(SSL_OS_COMPILER "blender-linux-x86") + endif() endif() -endif() -ExternalProject_Add(external_ssl - URL file://${PACKAGE_DIR}/${SSL_FILE} - DOWNLOAD_DIR ${DOWNLOAD_DIR} - URL_HASH ${SSL_HASH_TYPE}=${SSL_HASH} - PREFIX ${BUILD_DIR}/ssl - PATCH_COMMAND ${SSL_PATCH_CMD} - CONFIGURE_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/ssl/src/external_ssl/ && ${SSL_CONFIGURE_COMMAND} --prefix=${LIBDIR}/ssl - --openssldir=${LIBDIR}/ssl - no-shared - no-idea no-mdc2 no-rc5 no-zlib no-ssl3 enable-unit-test no-ssl3-method enable-rfc3779 enable-cms - --config=${CMAKE_CURRENT_SOURCE_DIR}/cmake/ssl.conf - ${SSL_OS_COMPILER} - BUILD_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/ssl/src/external_ssl/ && make -j${MAKE_THREADS} - INSTALL_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/ssl/src/external_ssl/ && make install - INSTALL_DIR ${LIBDIR}/ssl -) + ExternalProject_Add(external_ssl + URL file://${PACKAGE_DIR}/${SSL_FILE} + DOWNLOAD_DIR ${DOWNLOAD_DIR} + URL_HASH ${SSL_HASH_TYPE}=${SSL_HASH} + PREFIX ${BUILD_DIR}/ssl + PATCH_COMMAND ${SSL_PATCH_CMD} + CONFIGURE_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/ssl/src/external_ssl/ && ${SSL_CONFIGURE_COMMAND} --prefix=${LIBDIR}/ssl + --openssldir=${LIBDIR}/ssl + no-shared + no-idea no-mdc2 no-rc5 no-zlib no-ssl3 enable-unit-test no-ssl3-method enable-rfc3779 enable-cms + --config=${CMAKE_CURRENT_SOURCE_DIR}/cmake/ssl.conf + ${SSL_OS_COMPILER} + BUILD_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/ssl/src/external_ssl/ && make -j${MAKE_THREADS} + INSTALL_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/ssl/src/external_ssl/ && make install + INSTALL_DIR ${LIBDIR}/ssl + ) +endif()
\ No newline at end of file diff --git a/build_files/build_environment/patches/python_windows.diff b/build_files/build_environment/patches/python_windows.diff new file mode 100644 index 00000000000..5b6434f1440 --- /dev/null +++ b/build_files/build_environment/patches/python_windows.diff @@ -0,0 +1,22 @@ +--- a/PCbuild/prepare_ssl.bat 2022-10-30 11:48:14 -0600 ++++ b/PCbuild/prepare_ssl.bat 2022-10-30 11:53:16 -0600 +@@ -47,12 +47,13 @@ + if "%PERL%" == "" where perl > "%TEMP%\perl.loc" 2> nul && set /P PERL= <"%TEMP%\perl.loc" & del "%TEMP%\perl.loc" + if "%PERL%" == "" (echo Cannot locate perl.exe on PATH or as PERL variable & exit /b 4) + +-%MSBUILD% "%PCBUILD%\openssl.vcxproj" /p:Configuration=Release /p:Platform=Win32 +-if errorlevel 1 exit /b ++REM Blender: we only need x64, ssl is kind of a long build, so just build what we need ++REM %MSBUILD% "%PCBUILD%\openssl.vcxproj" /p:Configuration=Release /p:Platform=Win32 ++REMif errorlevel 1 exit /b + %MSBUILD% "%PCBUILD%\openssl.vcxproj" /p:Configuration=Release /p:Platform=x64 + if errorlevel 1 exit /b +-%MSBUILD% "%PCBUILD%\openssl.vcxproj" /p:Configuration=Release /p:Platform=ARM +-if errorlevel 1 exit /b +-%MSBUILD% "%PCBUILD%\openssl.vcxproj" /p:Configuration=Release /p:Platform=ARM64 +-if errorlevel 1 exit /b ++REM %MSBUILD% "%PCBUILD%\openssl.vcxproj" /p:Configuration=Release /p:Platform=ARM ++REM if errorlevel 1 exit /b ++REM %MSBUILD% "%PCBUILD%\openssl.vcxproj" /p:Configuration=Release /p:Platform=ARM64 ++REM if errorlevel 1 exit /b + |