[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