deps: oiio, openexr, tiff updates

OpenimageIO v2.5.11.0
OpenEXR 3.2.4
LibTIFF 4.6.0

This updates OIIO and resolves some CVE's in openexr and libtiff.

some patches that were merged upstream have been removed

Pull Request: https://projects.blender.org/blender/blender/pulls/121823
This commit is contained in:
Ray Molenkamp
2024-06-04 14:46:52 +02:00
committed by Ray molenkamp
parent 6e0a49265a
commit 8db709e149
7 changed files with 10 additions and 184 deletions

View File

@@ -5,6 +5,8 @@
set(DEFLATE_EXTRA_ARGS
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
-DLIBDEFLATE_BUILD_STATIC_LIB=ON
-DLIBDEFLATE_BUILD_SHARED_LIB=OFF
)
ExternalProject_Add(external_deflate

View File

@@ -18,7 +18,6 @@ set(OPENEXR_EXTRA_ARGS
-DOPENEXR_BUILD_BOTH_STATIC_SHARED=OFF
-DBUILD_SHARED_LIBS=ON
-DOPENEXR_INSTALL_TOOLS=OFF
-DOPENEXR_INSTALL_EXAMPLES=OFF
-DImath_DIR=${LIBDIR}/imath/lib/cmake/Imath
-DOPENEXR_LIB_SUFFIX=${OPENEXR_VERSION_BUILD_POSTFIX}
-Dlibdeflate_DIR=${LIBDIR}/deflate/lib/cmake/libdeflate
@@ -29,10 +28,6 @@ ExternalProject_Add(external_openexr
DOWNLOAD_DIR ${DOWNLOAD_DIR}
URL_HASH ${OPENEXR_HASH_TYPE}=${OPENEXR_HASH}
PATCH_COMMAND ${PATCH_CMD} -p 2 -d
${BUILD_DIR}/openexr/src/external_openexr <
${PATCH_DIR}/openexr_deflate_1588.diff
CMAKE_GENERATOR ${PLATFORM_ALT_GENERATOR}
PREFIX ${BUILD_DIR}/openexr

View File

@@ -104,6 +104,8 @@ set(OPENIMAGEIO_EXTRA_ARGS
-Dpybind11_ROOT=${LIBDIR}/pybind11
-DPython_EXECUTABLE=${PYTHON_BINARY}
-DTBB_ROOT=${LIBDIR}/tbb
-Dlibdeflate_ROOT=${LIBDIR}/deflate
-Dfmt_ROOT=${LIBDIR}/fmt
)
ExternalProject_Add(external_openimageio
@@ -120,9 +122,6 @@ ExternalProject_Add(external_openimageio
${PATCH_CMD} -p 1 -N -d
${BUILD_DIR}/openimageio/src/external_openimageio/ <
${PATCH_DIR}/oiio_webp.diff &&
${PATCH_CMD} -p 1 -N -d
${BUILD_DIR}/openimageio/src/external_openimageio/ <
${PATCH_DIR}/oiio_4044.diff &&
${PATCH_CMD} -p 1 -N -d
${BUILD_DIR}/openimageio/src/external_openimageio/ <
${PATCH_DIR}/oiio_4062.diff

View File

@@ -83,9 +83,9 @@ set(DEFLATE_HASH a29d9dd653cbe03f2d5cd83972063f9e)
set(DEFLATE_HASH_TYPE MD5)
set(DEFLATE_FILE libdeflate-v${DEFLATE_VERSION}.tar.gz)
set(OPENEXR_VERSION 3.2.1)
set(OPENEXR_VERSION 3.2.4)
set(OPENEXR_URI https://github.com/AcademySoftwareFoundation/openexr/archive/v${OPENEXR_VERSION}.tar.gz)
set(OPENEXR_HASH 1d5bb07433ec641cf3bb1b519a27ea6f)
set(OPENEXR_HASH 83b23b937b3a76fd37680422f41b81b7)
set(OPENEXR_HASH_TYPE MD5)
set(OPENEXR_FILE openexr-${OPENEXR_VERSION}.tar.gz)
set(OPENEXR_CPE "cpe:2.3:a:openexr:openexr:${OPENEXR_VERSION}:*:*:*:*:*:*:*")
@@ -185,9 +185,9 @@ set(OPENMP_URI https://github.com/llvm/llvm-project/releases/download/llvmorg-${
set(OPENMP_HASH_TYPE MD5)
set(OPENMP_FILE openmp-${OPENMP_VERSION}.src.tar.xz)
set(OPENIMAGEIO_VERSION v2.5.6.0)
set(OPENIMAGEIO_VERSION v2.5.11.0)
set(OPENIMAGEIO_URI https://github.com/AcademySoftwareFoundation/OpenImageIO/archive/refs/tags/${OPENIMAGEIO_VERSION}.tar.gz)
set(OPENIMAGEIO_HASH d02db17716a20a71a446bdc6de57bd9c)
set(OPENIMAGEIO_HASH 691e9364d25e2878e042d48980fad593)
set(OPENIMAGEIO_HASH_TYPE MD5)
set(OPENIMAGEIO_FILE OpenImageIO-${OPENIMAGEIO_VERSION}.tar.gz)
@@ -208,9 +208,9 @@ set(ROBINMAP_HASH c08ec4b1bf1c85eb0d6432244a6a89862229da1cb834f3f90fba8dc35d8c8e
set(ROBINMAP_HASH_TYPE SHA256)
set(ROBINMAP_FILE robinmap-${ROBINMAP_VERSION}.tar.gz)
set(TIFF_VERSION 4.5.1)
set(TIFF_VERSION 4.6.0)
set(TIFF_URI http://download.osgeo.org/libtiff/tiff-${TIFF_VERSION}.tar.gz)
set(TIFF_HASH d08c5f9eee6350fffc239e5993d92779)
set(TIFF_HASH fc7d49a9348b890b29f91a4ecadd5b49)
set(TIFF_HASH_TYPE MD5)
set(TIFF_FILE tiff-${TIFF_VERSION}.tar.gz)
set(TIFF_CPE "cpe:2.3:a:libtiff:libtiff:${TIFF_VERSION}:*:*:*:*:*:*:*")

View File

@@ -1,13 +0,0 @@
diff --git a/src/png.imageio/pngoutput.cpp b/src/png.imageio/pngoutput.cpp
index cc694f5a..f752ab7d 100644
--- a/src/png.imageio/pngoutput.cpp
+++ b/src/png.imageio/pngoutput.cpp
@@ -385,7 +385,7 @@ PNGOutput::write_scanlines(int ybegin, int yend, int z, TypeDesc format,
unassoc_scratch.reset(new float[nvals]);
float* floatvals = unassoc_scratch.get();
// Contiguize and convert to float
- OIIO::convert_image(m_spec.nchannels, m_spec.width, m_spec.height, 1,
+ OIIO::convert_image(m_spec.nchannels, m_spec.width, yend - ybegin, 1,
data, format, xstride, ystride, AutoStride,
floatvals, TypeFloat, AutoStride, AutoStride,
AutoStride);

View File

@@ -1,140 +0,0 @@
diff --git a/openexr_original/cmake/OpenEXRSetup.cmake b/openexr/cmake/OpenEXRSetup.cmake
index 425992d..fa80886 100644
--- a/openexr_original/cmake/OpenEXRSetup.cmake
+++ b/openexr/cmake/OpenEXRSetup.cmake
@@ -160,71 +160,79 @@ set(OPENEXR_DEFLATE_TAG "v1.18" CACHE STRING "Tag to use for libdeflate source r
if(NOT OPENEXR_FORCE_INTERNAL_DEFLATE)
#TODO: ^^ Release should not clone from main, this is a place holder
set(CMAKE_IGNORE_PATH "${CMAKE_CURRENT_BINARY_DIR}/_deps/deflate-src/config;${CMAKE_CURRENT_BINARY_DIR}/_deps/deflate-build/config")
- include(FindPkgConfig)
- pkg_check_modules(deflate IMPORTED_TARGET GLOBAL libdeflate)
- set(CMAKE_IGNORE_PATH)
- if (deflate_FOUND)
- message(STATUS "Using libdeflate from ${deflate_LINK_LIBRARIES}")
+ find_package(libdeflate CONFIG)
+ if(libdeflate_FOUND)
+ message(STATUS "Using libdeflate from ${libdeflate_DIR}")
+ else()
+ include(FindPkgConfig)
+ pkg_check_modules(deflate IMPORTED_TARGET GLOBAL libdeflate)
+ set(CMAKE_IGNORE_PATH)
+ if (deflate_FOUND)
+ message(STATUS "Using libdeflate from ${deflate_LINK_LIBRARIES}")
+ endif()
endif()
endif()
-if(NOT TARGET PkgConfig::deflate AND NOT deflate_FOUND)
- if(OPENEXR_FORCE_INTERNAL_DEFLATE)
- message(STATUS "libdeflate forced internal, installing from ${OPENEXR_DEFLATE_REPO} (${OPENEXR_DEFLATE_TAG})")
- else()
- message(STATUS "libdeflate was not found, installing from ${OPENEXR_DEFLATE_REPO} (${OPENEXR_DEFLATE_TAG})")
- endif()
- include(FetchContent)
- FetchContent_Declare(Deflate
- GIT_REPOSITORY "${OPENEXR_DEFLATE_REPO}"
- GIT_TAG "${OPENEXR_DEFLATE_TAG}"
- GIT_SHALLOW ON
- )
+if(libdeflate_FOUND)
+ set(EXR_DEFLATE_LIB libdeflate::libdeflate_static)
+else()
+ if(NOT TARGET PkgConfig::deflate AND NOT deflate_FOUND)
+ if(OPENEXR_FORCE_INTERNAL_DEFLATE)
+ message(STATUS "libdeflate forced internal, installing from ${OPENEXR_DEFLATE_REPO} (${OPENEXR_DEFLATE_TAG})")
+ else()
+ message(STATUS "libdeflate was not found, installing from ${OPENEXR_DEFLATE_REPO} (${OPENEXR_DEFLATE_TAG})")
+ endif()
+ include(FetchContent)
+ FetchContent_Declare(Deflate
+ GIT_REPOSITORY "${OPENEXR_DEFLATE_REPO}"
+ GIT_TAG "${OPENEXR_DEFLATE_TAG}"
+ GIT_SHALLOW ON
+ )
- FetchContent_GetProperties(Deflate)
- if(NOT Deflate_POPULATED)
- FetchContent_Populate(Deflate)
- endif()
+ FetchContent_GetProperties(Deflate)
+ if(NOT Deflate_POPULATED)
+ FetchContent_Populate(Deflate)
+ endif()
- # Rather than actually compile something, just embed the sources
- # into exrcore. This could in theory cause issues when compiling as
- # a static library into another application which also uses
- # libdeflate but we switch the export symbol to hidden which should
- # hide the symbols when linking...
- set(EXR_DEFLATE_SOURCES
- lib/arm/cpu_features.c
- lib/x86/cpu_features.c
- lib/utils.c
- lib/deflate_compress.c
- lib/deflate_decompress.c
- lib/adler32.c
- lib/zlib_compress.c
- lib/zlib_decompress.c)
- # don't need these
- # lib/crc32.c
- # lib/gzip_compress.c
- # lib/gzip_decompress.c
- file(READ ${deflate_SOURCE_DIR}/lib/lib_common.h DEFLATE_HIDE)
- string(REPLACE "visibility(\"default\")" "visibility(\"hidden\")" DEFLATE_HIDE "${DEFLATE_HIDE}")
- string(REPLACE "__declspec(dllexport)" "/**/" DEFLATE_HIDE "${DEFLATE_HIDE}")
- file(WRITE ${deflate_SOURCE_DIR}/lib/lib_common.h "${DEFLATE_HIDE}")
+ # Rather than actually compile something, just embed the sources
+ # into exrcore. This could in theory cause issues when compiling as
+ # a static library into another application which also uses
+ # libdeflate but we switch the export symbol to hidden which should
+ # hide the symbols when linking...
+ set(EXR_DEFLATE_SOURCES
+ lib/arm/cpu_features.c
+ lib/x86/cpu_features.c
+ lib/utils.c
+ lib/deflate_compress.c
+ lib/deflate_decompress.c
+ lib/adler32.c
+ lib/zlib_compress.c
+ lib/zlib_decompress.c)
+ # don't need these
+ # lib/crc32.c
+ # lib/gzip_compress.c
+ # lib/gzip_decompress.c
+ file(READ ${deflate_SOURCE_DIR}/lib/lib_common.h DEFLATE_HIDE)
+ string(REPLACE "visibility(\"default\")" "visibility(\"hidden\")" DEFLATE_HIDE "${DEFLATE_HIDE}")
+ string(REPLACE "__declspec(dllexport)" "/**/" DEFLATE_HIDE "${DEFLATE_HIDE}")
+ file(WRITE ${deflate_SOURCE_DIR}/lib/lib_common.h "${DEFLATE_HIDE}")
- # cmake makes fetch content name lowercase for the properties (to deflate)
- list(TRANSFORM EXR_DEFLATE_SOURCES PREPEND ${deflate_SOURCE_DIR}/)
- set(EXR_DEFLATE_INCLUDE_DIR ${deflate_SOURCE_DIR})
- set(EXR_DEFLATE_LIB)
-else()
- set(EXR_DEFLATE_INCLUDE_DIR)
- set(EXR_DEFLATE_LIB ${deflate_LIBRARIES})
- # set EXR_DEFATE_LDFLAGS for OpenEXR.pc.in for static build
- if (BUILD_SHARED_LIBS)
- set(EXR_DEFLATE_LDFLAGS "")
+ # cmake makes fetch content name lowercase for the properties (to deflate)
+ list(TRANSFORM EXR_DEFLATE_SOURCES PREPEND ${deflate_SOURCE_DIR}/)
+ set(EXR_DEFLATE_INCLUDE_DIR ${deflate_SOURCE_DIR})
+ set(EXR_DEFLATE_LIB)
else()
- set(EXR_DEFLATE_LDFLAGS "-l${deflate_LIBRARIES}")
+ set(EXR_DEFLATE_INCLUDE_DIR)
+ set(EXR_DEFLATE_LIB ${deflate_LIBRARIES})
+ # set EXR_DEFATE_LDFLAGS for OpenEXR.pc.in for static build
+ if (BUILD_SHARED_LIBS)
+ set(EXR_DEFLATE_LDFLAGS "")
+ else()
+ set(EXR_DEFLATE_LDFLAGS "-l${deflate_LIBRARIES}")
+ endif()
+ set(EXR_DEFLATE_SOURCES)
endif()
- set(EXR_DEFLATE_SOURCES)
endif()
-
#######################################
# Find or install Imath
#######################################

View File

@@ -21,20 +21,3 @@ diff -Naur orig/src/cmake/compiler.cmake external_openimageio/src/cmake/compiler
endif (MSVC)
if (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD"
diff --git a/src/libOpenImageIO/imageioplugin.cpp b/src/libOpenImageIO/imageioplugin.cpp
index 9ad45042e..d2a0210ff 100644
--- a/src/libOpenImageIO/imageioplugin.cpp
+++ b/src/libOpenImageIO/imageioplugin.cpp
@@ -469,12 +469,6 @@ pvt::catalog_all_plugins(std::string searchpath)
std::unique_lock<std::recursive_mutex> lock(imageio_mutex);
append_if_env_exists(searchpath, "OIIO_LIBRARY_PATH", true);
-#ifdef __APPLE__
- append_if_env_exists(searchpath, "DYLD_LIBRARY_PATH");
-#endif
-#if defined(__linux__) || defined(__FreeBSD__)
- append_if_env_exists(searchpath, "LD_LIBRARY_PATH");
-#endif
size_t patlen = pattern.length();
std::vector<std::string> dirs;