[Bf-blender-cvs] [04f697887ee] tmp-vfx-platform-2023: deps: Add oiio python bindings

Ray Molenkamp noreply at git.blender.org
Tue Nov 22 18:29:25 CET 2022


Commit: 04f697887ee6bca42a26e5733c728bfa58d89626
Author: Ray Molenkamp
Date:   Tue Nov 22 10:29:17 2022 -0700
Branches: tmp-vfx-platform-2023
https://developer.blender.org/rB04f697887ee6bca42a26e5733c728bfa58d89626

deps: Add oiio python bindings

This adds the python bindings for OIIO tested
on windows only at this point. New build time
dep pybind11 which is header only.

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

M	build_files/build_environment/CMakeLists.txt
M	build_files/build_environment/cmake/download.cmake
M	build_files/build_environment/cmake/openimageio.cmake
A	build_files/build_environment/cmake/pybind11.cmake
M	build_files/build_environment/cmake/versions.cmake
M	release/scripts/site/usercustomize.py
M	source/creator/CMakeLists.txt

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

diff --git a/build_files/build_environment/CMakeLists.txt b/build_files/build_environment/CMakeLists.txt
index 0e3df021a25..f8a4d5d8c20 100644
--- a/build_files/build_environment/CMakeLists.txt
+++ b/build_files/build_environment/CMakeLists.txt
@@ -68,7 +68,6 @@ endif()
 if(UNIX)
   include(cmake/nasm.cmake)
 endif()
-include(cmake/openimageio.cmake)
 include(cmake/tiff.cmake)
 if(WIN32)
   include(cmake/flexbison.cmake)
@@ -87,6 +86,7 @@ else()
 endif()
 include(cmake/python_site_packages.cmake)
 include(cmake/package_python.cmake)
+include(cmake/openimageio.cmake)
 include(cmake/usd.cmake)
 include(cmake/materialx.cmake)
 include(cmake/openvdb.cmake)
@@ -184,5 +184,6 @@ endif()
 include(cmake/shaderc_deps.cmake)
 include(cmake/shaderc.cmake)
 include(cmake/vulkan.cmake)
+include(cmake/pybind11.cmake)
 include(cmake/harvest.cmake)
 include(cmake/cve_check.cmake)
diff --git a/build_files/build_environment/cmake/download.cmake b/build_files/build_environment/cmake/download.cmake
index 292cc994a44..a6fa82bceed 100644
--- a/build_files/build_environment/cmake/download.cmake
+++ b/build_files/build_environment/cmake/download.cmake
@@ -173,3 +173,4 @@ download_source(SHADERC_SPIRV_HEADERS)
 download_source(SHADERC_GLSLANG)
 download_source(VULKAN_HEADERS)
 download_source(VULKAN_LOADER)
+download_source(PYBIND11)
diff --git a/build_files/build_environment/cmake/openimageio.cmake b/build_files/build_environment/cmake/openimageio.cmake
index 33ab3d51b3a..329d525e60e 100644
--- a/build_files/build_environment/cmake/openimageio.cmake
+++ b/build_files/build_environment/cmake/openimageio.cmake
@@ -56,7 +56,7 @@ set(OPENIMAGEIO_EXTRA_ARGS
   -DUSE_OPENGL=OFF
   -DUSE_TBB=OFF
   -DUSE_QT=OFF
-  -DUSE_PYTHON=OFF
+  -DUSE_PYTHON=ON
   -DUSE_GIF=OFF
   -DUSE_OPENCV=OFF
   -DUSE_OPENJPEG=ON
@@ -94,6 +94,8 @@ set(OPENIMAGEIO_EXTRA_ARGS
   ${OIIO_SIMD_FLAGS}
   -DOpenEXR_ROOT=${LIBDIR}/openexr
   -DImath_ROOT=${LIBDIR}/imath
+  -Dpybind11_ROOT=${LIBDIR}/pybind11
+  -DPython_EXECUTABLE=${PYTHON_BINARY}
 )
 
 ExternalProject_Add(external_openimageio
@@ -121,6 +123,7 @@ add_dependencies(
   external_robinmap
   external_openjpeg${OPENJPEG_POSTFIX}
   external_webp
+  external_pybind11
 )
 
 if(WIN32)
@@ -140,6 +143,7 @@ if(WIN32)
       COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/openimageio/lib/OpenImageIO_Util_d.lib ${HARVEST_TARGET}/openimageio/lib/OpenImageIO_Util_d.lib
       COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/OpenImageIO/bin/OpenImageIO_d.dll ${HARVEST_TARGET}/OpenImageIO/bin/OpenImageIO_d.dll
       COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/OpenImageIO/bin/OpenImageIO_Util_d.dll ${HARVEST_TARGET}/OpenImageIO/bin/OpenImageIO_Util_d.dll
+      COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/OpenImageIO/lib/python${PYTHON_SHORT_VERSION}/ ${HARVEST_TARGET}/OpenImageIO/lib/python${PYTHON_SHORT_VERSION}_debug/
       DEPENDEES install
     )
   endif()
diff --git a/build_files/build_environment/cmake/pybind11.cmake b/build_files/build_environment/cmake/pybind11.cmake
new file mode 100644
index 00000000000..971300ef394
--- /dev/null
+++ b/build_files/build_environment/cmake/pybind11.cmake
@@ -0,0 +1,16 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+set(PYBIND11_EXTRA_ARGS
+  -DPYBIND11_TEST=OFF
+  -DPYTHON_EXECUTABLE=${PYTHON_BINARY}
+)
+
+ExternalProject_Add(external_pybind11
+  URL file://${PACKAGE_DIR}/${PYBIND11_FILE}
+  DOWNLOAD_DIR ${DOWNLOAD_DIR}
+  URL_HASH ${PYBIND11_HASH_TYPE}=${PYBIND11_HASH}
+  PREFIX ${BUILD_DIR}/pybind11
+  CMAKE_GENERATOR ${PLATFORM_ALT_GENERATOR}
+  CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/pybind11 ${DEFAULT_CMAKE_FLAGS} ${PYBIND11_EXTRA_ARGS}
+  INSTALL_DIR ${LIBDIR}/pybind11
+)
diff --git a/build_files/build_environment/cmake/versions.cmake b/build_files/build_environment/cmake/versions.cmake
index 46ff62a79df..76744d12f6c 100644
--- a/build_files/build_environment/cmake/versions.cmake
+++ b/build_files/build_environment/cmake/versions.cmake
@@ -776,3 +776,8 @@ set(VULKAN_LOADER_HASH 015170a74f648fd2b41e209b6bf1ebc4)
 set(VULKAN_LOADER_HASH_TYPE MD5)
 set(VULKAN_LOADER_FILE Vulkan-Loader-${VULKAN_VERSION}.tar.gz)
 
+set(PYBIND11_VERSION 2.10.1)
+set(PYBIND11_URI https://github.com/pybind/pybind11/archive/refs/tags/v${PYBIND11_VERSION}.tar.gz)
+set(PYBIND11_HASH ce07bfd5089245da7807b3faf6cbc878)
+set(PYBIND11_HASH_TYPE MD5)
+set(PYBIND11_FILE pybind-v${PYBIND11_VERSION}.tar.gz)
diff --git a/release/scripts/site/usercustomize.py b/release/scripts/site/usercustomize.py
index 8c2e37ee790..21f9acc5f05 100644
--- a/release/scripts/site/usercustomize.py
+++ b/release/scripts/site/usercustomize.py
@@ -9,6 +9,12 @@ if sys.platform == 'win32':
     if exe_file.startswith('python'):
         blender_dir = os.path.abspath(os.path.join(exe_dir, '..', '..', '..','blender.shared'))
         os.add_dll_directory(blender_dir)
+        # OIIO will by default add all paths from the path variable to add_dll_directory
+        # problem there is that those folders will be searched before ours and versions of
+        # some dlls may be found that are not blenders and may not even be the right version
+        # causing compatibility issues.
+        os.environ["OIIO_LOAD_DLLS_FROM_PATH"] = "0"
+
         import_paths = os.getenv('PXR_USD_WINDOWS_DLL_PATH')
         if import_paths is None:
             os.environ["PXR_USD_WINDOWS_DLL_PATH"] = blender_dir
diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt
index cd70e8639db..f45e8b4b359 100644
--- a/source/creator/CMakeLists.txt
+++ b/source/creator/CMakeLists.txt
@@ -1085,7 +1085,30 @@ elseif(WIN32)
         DESTINATION ${BLENDER_VERSION}/python/bin
         CONFIGURATIONS Debug
       )
-
+      if(WITH_OPENIMAGEIO)
+        if(EXISTS ${LIBDIR}/openimageio/lib/python${PYTHON_VERSION}/site-packages) #this will only exist for 3.5+
+           install(
+            DIRECTORY ${LIBDIR}/openimageio/lib/python${PYTHON_VERSION}/site-packages/
+            DESTINATION ${TARGETDIR_VER}/python/lib/site-packages/
+            CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel
+            PATTERN ".svn" EXCLUDE
+            PATTERN "__pycache__" EXCLUDE           # * any cache *
+            PATTERN "*.pyc" EXCLUDE                 # * any cache *
+            PATTERN "*.pyo" EXCLUDE                 # * any cache *
+          )
+        endif()
+        if(EXISTS ${LIBDIR}/openimageio/lib/python${PYTHON_VERSION}_debug/site-packages)
+          install(
+            DIRECTORY ${LIBDIR}/openimageio/lib/python${PYTHON_VERSION}_debug/site-packages/
+            DESTINATION ${TARGETDIR_VER}/python/lib/site-packages/
+            CONFIGURATIONS Debug
+            PATTERN ".svn" EXCLUDE
+            PATTERN "__pycache__" EXCLUDE           # * any cache *
+            PATTERN "*.pyc" EXCLUDE                 # * any cache *
+            PATTERN "*.pyo" EXCLUDE                 # * any cache *
+          )
+        endif()
+      endif()
       if(WITH_USD)
         # This will not exist for 3.4 and earlier lib folders
         # to ease the transition, support both 3.4 and 3.5 lib



More information about the Bf-blender-cvs mailing list