[Bf-blender-cvs] [e697442f099] tmp-vfx-platform-2023: deps_builder/win: use our openssl version for python

Ray Molenkamp noreply at git.blender.org
Sun Oct 30 20:07:21 CET 2022


Commit: e697442f099aa390923979941fe7f5298d44b1ec
Author: Ray Molenkamp
Date:   Sun Oct 30 13:06:10 2022 -0600
Branches: tmp-vfx-platform-2023
https://developer.blender.org/rBe697442f099aa390923979941fe7f5298d44b1ec

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.

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

M	build_files/build_environment/CMakeLists.txt
M	build_files/build_environment/cmake/python.cmake
M	build_files/build_environment/cmake/ssl.cmake
A	build_files/build_environment/patches/python_windows.diff

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

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
+



More information about the Bf-blender-cvs mailing list