diff options
author | Jonathan Scruggs <j.scruggs@gmail.com> | 2017-09-28 18:42:09 +0100 |
---|---|---|
committer | Patrice Clement <monsieurp@gentoo.org> | 2017-12-21 21:16:34 +0100 |
commit | 3075eade9d4edba26a19f36577bd5f094b3da890 (patch) | |
tree | 3a557a3b076d362d5ec3c5de95b60f377fc8bbfc /media-libs/openimageio | |
parent | profiles/base/package.use.mask: change media-libs/openimageio mask. (diff) | |
download | gentoo-3075eade9d4edba26a19f36577bd5f094b3da890.tar.gz gentoo-3075eade9d4edba26a19f36577bd5f094b3da890.tar.bz2 gentoo-3075eade9d4edba26a19f36577bd5f094b3da890.zip |
media-libs/openimageio: version bumps to 1.6.18 and 1.7.17.
* Version 1.6.18 is the last of the RB-1.6 series, but add for
compatibility with all existing programs.
* v1.6.18 only: Add patch to support Boost 1.65 changes
* The follow applies to both versions:
* Patch to use GNUInstallDirs
* Patch to fix boost and python detection on Gentoo
* Added PTex and Field3D support
* Added python module building support in ebuild
* Added SIMD optimization (cpu flags) selection in ebuild
Closes: https://bugs.gentoo.org/596268
Diffstat (limited to 'media-libs/openimageio')
8 files changed, 1658 insertions, 0 deletions
diff --git a/media-libs/openimageio/files/openimageio-1.6.18-make-python-and-boost-detection-more-generic.patch b/media-libs/openimageio/files/openimageio-1.6.18-make-python-and-boost-detection-more-generic.patch new file mode 100644 index 000000000000..ad1a8aeb316d --- /dev/null +++ b/media-libs/openimageio/files/openimageio-1.6.18-make-python-and-boost-detection-more-generic.patch @@ -0,0 +1,343 @@ +From 2d62c7f5068f678317c506d108698a78a90e5ba0 Mon Sep 17 00:00:00 2001 +From: Jonathan Scruggs <j.scruggs@gmail.com> +Date: Thu, 28 Sep 2017 15:20:24 +0100 +Subject: [PATCH 2/2] oiio/RB-1.6: Make python and boost detection more generic + +* Fix boost and python detection for certain systems. +* Clean up boost and python detection. +* Remove redundant code. + +Backported from: +https://github.com/OpenImageIO/oiio/commit/fca7ed62bd679a8221147dcddb23a516796dab90 +--- + CMakeLists.txt | 38 +------------ + src/cmake/externalpackages.cmake | 61 +------------------- + src/python/CMakeLists.txt | 119 ++++++++++++++++----------------------- + 3 files changed, 53 insertions(+), 165 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index b29efac6..dd314d07 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -180,7 +180,6 @@ set (USE_OPENGL ON CACHE BOOL "Include OpenGL support") + set (USE_QT ON CACHE BOOL "Include Qt support") + set (FORCE_OPENGL_1 OFF CACHE BOOL "Force iv to use OpenGL's fixed pipeline") + set (USE_PYTHON ON CACHE BOOL "Build the Python bindings") +-set (USE_PYTHON3 OFF CACHE BOOL "Build the Python3 bindings") + set (USE_FIELD3D ON CACHE BOOL "Use Field3D if found") + set (USE_FFMPEG ON CACHE BOOL "Use FFmpeg if found") + set (JPEG_PATH "" CACHE STRING "Custom JPEG path") +@@ -197,8 +196,7 @@ set (USE_LIBRAW ON CACHE BOOL "Use LibRaw if found") + set (LIBRAW_PATH "" CACHE STRING "Custom LibRaw path") + set (NOTHREADS OFF CACHE BOOL "Compile with no threads or locking") + set (OIIO_THREAD_ALLOW_DCLP ON CACHE BOOL "OIIO threads may use DCLP for speed") +-set (PYTHON_VERSION 2.6) +-set (PYTHON3_VERSION 3.2) ++set (PYTHON_VERSION "2.7" CACHE STRING "Target version of python to find") + set (USE_NUKE ON CACHE BOOL "Build Nuke plugins, if Nuke is found") + set (Nuke_ROOT "" CACHE STRING "Where to find Nuke installation") + set (NUKE_VERSION 7.0) +@@ -321,32 +319,7 @@ include_directories ( + + + ########################################################################### +-# Set install paths for the python modules +-# TODO: Figure out how to get the correct python directory +- +-if (UNIX AND NOT SELF_CONTAINED_INSTALL_TREE) +- # TODO: Figure out how to get the correct python directory +- set (DEFAULT_PYLIB_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/python/site-packages") +- set (DEFAULT_PYLIB3_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/python3/site-packages") +-else () +- # Here is the "self-contained install tree" case: the expectation here +- # is that everything related to this project will go into its own +- # directory, not into some standard system heirarchy. +- set (DEFAULT_PYLIB_INSTALL_DIR "python") +- set (DEFAULT_PYLIB3_INSTALL_DIR "python3") +-endif () +-if (EXEC_INSTALL_PREFIX) +- # Tack on an extra prefix to support multi-arch builds. +- set (DEFAULT_PYLIB_INSTALL_DIR "${EXEC_INSTALL_PREFIX}/${DEFAULT_PYLIB_INSTALL_DIR}") +- set (DEFAULT_PYLIB3_INSTALL_DIR "${EXEC_INSTALL_PREFIX}/${DEFAULT_PYLIB3_INSTALL_DIR}") +-endif () +-# Set up cmake cache variables corresponding to the defaults deduced above, so +-# that the user can override them as desired: +-set (PYLIB_INSTALL_DIR ${DEFAULT_PYLIB_INSTALL_DIR} CACHE STRING +- "Install location for python libraries (relative to CMAKE_INSTALL_PREFIX or absolute)") +-set (PYLIB3_INSTALL_DIR ${DEFAULT_PYLIB3_INSTALL_DIR} CACHE STRING +- "Install location for python3 libraries (relative to CMAKE_INSTALL_PREFIX or absolute)") +- ++# Set default install options + set (PLUGIN_SEARCH_PATH "" CACHE STRING "Default plugin search path") + + set (INSTALL_DOCS ON CACHE BOOL "Install documentation") +@@ -442,14 +415,9 @@ if (NOT EMBEDPLUGINS) + add_subdirectory (src/zfile.imageio) + endif () + +-if (USE_PYTHON AND oiio_boost_PYTHON_FOUND AND NOT BUILD_OIIOUTIL_ONLY) ++if (USE_PYTHON AND NOT BUILD_OIIOUTIL_ONLY) + add_subdirectory (src/python) + endif () +-if (USE_PYTHON3 AND NOT BUILD_OIIOUTIL_ONLY) +- #build the python3 module in a different binary directory since it will +- #have the same name as the python2 module (e.g. OpenImageIO.so) +- add_subdirectory (src/python src/python3) +-endif () + + add_subdirectory (src/include) + add_subdirectory (src/doc) +diff --git a/src/cmake/externalpackages.cmake b/src/cmake/externalpackages.cmake +index 4799df22..2576dee5 100644 +--- a/src/cmake/externalpackages.cmake ++++ b/src/cmake/externalpackages.cmake +@@ -102,10 +102,7 @@ if (NOT Boost_FIND_QUIETLY) + endif () + + if (NOT DEFINED Boost_ADDITIONAL_VERSIONS) +- set (Boost_ADDITIONAL_VERSIONS "1.60" "1.59" "1.58" "1.57" "1.56" +- "1.55" "1.54" "1.53" "1.52" "1.51" "1.50" +- "1.49" "1.48" "1.47" "1.46" "1.45" "1.44" +- "1.43" "1.43.0" "1.42" "1.42.0") ++ set (Boost_ADDITIONAL_VERSIONS "1.65.1" "1.65" "1.63" "1.62") + endif () + if (LINKSTATIC) + set (Boost_USE_STATIC_LIBS ON) +@@ -117,51 +114,7 @@ if (BOOST_CUSTOM) + # Boost_VERSION, Boost_INCLUDE_DIRS, Boost_LIBRARY_DIRS, Boost_LIBRARIES. + else () + set (Boost_COMPONENTS filesystem regex system thread) +- find_package (Boost 1.42 REQUIRED +- COMPONENTS ${Boost_COMPONENTS} +- ) +- +- # Try to figure out if this boost distro has Boost::python. If we +- # include python in the component list above, cmake will abort if +- # it's not found. So we resort to checking for the boost_python +- # library's existance to get a soft failure. +- find_library (oiio_boost_python_lib boost_python +- PATHS ${Boost_LIBRARY_DIRS} NO_DEFAULT_PATH) +- mark_as_advanced (oiio_boost_python_lib) +- if (NOT oiio_boost_python_lib AND Boost_SYSTEM_LIBRARY_RELEASE) +- get_filename_component (oiio_boost_PYTHON_rel +- ${Boost_SYSTEM_LIBRARY_RELEASE} NAME +- ) +- string (REGEX REPLACE "^(lib)?(.+)_system(.+)$" "\\2_python\\3" +- oiio_boost_PYTHON_rel ${oiio_boost_PYTHON_rel} +- ) +- find_library (oiio_boost_PYTHON_LIBRARY_RELEASE +- NAMES ${oiio_boost_PYTHON_rel} lib${oiio_boost_PYTHON_rel} +- HINTS ${Boost_LIBRARY_DIRS} +- NO_DEFAULT_PATH +- ) +- mark_as_advanced (oiio_boost_PYTHON_LIBRARY_RELEASE) +- endif () +- if (NOT oiio_boost_python_lib AND Boost_SYSTEM_LIBRARY_DEBUG) +- get_filename_component (oiio_boost_PYTHON_dbg +- ${Boost_SYSTEM_LIBRARY_DEBUG} NAME +- ) +- string (REGEX REPLACE "^(lib)?(.+)_system(.+)$" "\\2_python\\3" +- oiio_boost_PYTHON_dbg ${oiio_boost_PYTHON_dbg} +- ) +- find_library (oiio_boost_PYTHON_LIBRARY_DEBUG +- NAMES ${oiio_boost_PYTHON_dbg} lib${oiio_boost_PYTHON_dbg} +- HINTS ${Boost_LIBRARY_DIRS} +- NO_DEFAULT_PATH +- ) +- mark_as_advanced (oiio_boost_PYTHON_LIBRARY_DEBUG) +- endif () +- if (oiio_boost_python_lib OR +- oiio_boost_PYTHON_LIBRARY_RELEASE OR oiio_boost_PYTHON_LIBRARY_DEBUG) +- set (oiio_boost_PYTHON_FOUND ON) +- else () +- set (oiio_boost_PYTHON_FOUND OFF) +- endif () ++ find_package (Boost 1.62 REQUIRED COMPONENTS ${Boost_COMPONENTS}) + endif () + + # On Linux, Boost 1.55 and higher seems to need to link against -lrt +@@ -176,16 +129,6 @@ if (NOT Boost_FIND_QUIETLY) + message (STATUS "Boost include dirs ${Boost_INCLUDE_DIRS}") + message (STATUS "Boost library dirs ${Boost_LIBRARY_DIRS}") + message (STATUS "Boost libraries ${Boost_LIBRARIES}") +- message (STATUS "Boost python found ${oiio_boost_PYTHON_FOUND}") +-endif () +-if (NOT oiio_boost_PYTHON_FOUND) +- # If Boost python components were not found, turn off all python support. +- message (STATUS "Boost python support not found -- will not build python components!") +- if (APPLE AND USE_PYTHON) +- message (STATUS " If your Boost is from Macports, you need the +python26 variant to get Python support.") +- endif () +- set (USE_PYTHON OFF) +- set (PYTHONLIBS_FOUND OFF) + endif () + + include_directories (SYSTEM "${Boost_INCLUDE_DIRS}") +diff --git a/src/python/CMakeLists.txt b/src/python/CMakeLists.txt +index 81a4a890..e58d372d 100644 +--- a/src/python/CMakeLists.txt ++++ b/src/python/CMakeLists.txt +@@ -1,54 +1,30 @@ +-#if the CMAKE_CURRENT_BINARY_DIR is python3, then build the python3 module, +-#otherwise the python2 module +-string (REGEX MATCH "python3\$" _py3_subdir ${CMAKE_CURRENT_BINARY_DIR}) ++# Attempt to find the desired version, but fall back to other ++# additional versions. ++find_package (PythonInterp ${PYTHON_VERSION} REQUIRED) + +-if (_py3_subdir) +- set (BUILD_PY3 ON) +-else () +- set (BUILD_PY3 OFF) +-endif () +- +-if (NOT BOOST_CUSTOM AND NOT BUILD_PY3) +- #Unset those, otherwise find_package(PythonLibs) will pick up old stuff +- #if it has been run before +- unset(Python_ADDITIONAL_VERSIONS) +- unset(PYTHON_LIBRARY) +- unset(PYTHON_LIBRARY CACHE) +- unset(PYTHON_INCLUDE_DIR) +- unset(PYTHON_INCLUDE_DIR CACHE) +- unset(PYTHON_INCLUDE_PATH) +- unset(PYTHON_INCLUDE_PATH CACHE) +- find_package (PythonLibs ${PYTHON_VERSION} REQUIRED) +- find_package (Boost 1.42 REQUIRED COMPONENTS python) +-elseif (BOOST_CUSTOM AND NOT BUILD_PY3) +- find_package (PythonLibs ${PYTHON_VERSION} REQUIRED) +-else () +- #BOOST_CUSTOM is ignored for python3 ++# The version that was found may not be the default or user ++# defined one. ++set (PYTHON_VERSION_FOUND ${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}) + +- #Unset those, otherwise find_package(PythonLibs) will pick up old stuff +- #if it has been run before +- unset(PYTHON_LIBRARY) +- unset(PYTHON_LIBRARY CACHE) +- unset(PYTHON_INCLUDE_DIR) +- unset(PYTHON_INCLUDE_DIR CACHE) +- unset(PYTHON_INCLUDE_PATH) +- unset(PYTHON_INCLUDE_PATH CACHE) ++if (NOT ${PYTHON_VERSION} EQUAL ${PYTHON_VERSION_FOUND} ) ++ message (WARNING "The requested version ${PYTHON_VERSION} was not found.") ++ message (WARNING "Using ${PYTHON_VERSION_FOUND} instead.") ++endif () + +- #cmake 2.8 does not look for python 3.4 +- set(Python_ADDITIONAL_VERSIONS 3.4) +- find_package (PythonInterp ${PYTHON3_VERSION} REQUIRED) +- find_package (PythonLibs ${PYTHON3_VERSION} REQUIRED) ++find_package (PythonLibs ${PYTHON_VERSION_FOUND} REQUIRED) + +- #Finding the python3 component for boost is a little tricky, since it has +- #different names on different systems. Try the most common ones +- #(boost_python3, boost_python-py34, …). +- foreach (_boost_py3_lib python3 python-py34 python-py33 python-py32) +- find_package (Boost 1.42 QUIET COMPONENTS ${_boost_py3_lib}) +- string (TOUPPER ${_boost_py3_lib} boost_py3_lib_name) +- if (Boost_${boost_py3_lib_name}_FOUND) +- #Not the most beautiful thing to do, but that gets them included in +- #the target_link_libraries(…) call farther down +- set (Boost_PYTHON_LIBRARIES ${Boost_${boost_py3_lib_name}_LIBRARIES}) ++if (NOT BOOST_CUSTOM) ++ # Finding the python component for boost is a little tricky, since it has ++ # different names on different systems. Try the most common ones. ++ foreach (_py_lib python-${PYTHON_VERSION_FOUND} python ++ python${PYTHON_VERSION_MAJOR} ++ python-py${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR}) ++ find_package (Boost QUIET COMPONENTS ${_py_lib}) ++ string (TOUPPER ${_py_lib} _py_lib_name) ++ if (Boost_${_py_lib_name}_FOUND) ++ # Not the most beautiful thing to do, but that gets them included in ++ # the target_link_libraries(…) call farther down ++ set (Boost_PYTHON_LIBRARIES ${Boost_${_py_lib_name}_LIBRARIES}) + break () + endif () + endforeach () +@@ -58,18 +34,19 @@ if (APPLE) + # set (PYTHON_LIBRARIES /opt/local/lib) + endif () + ++if (NOT DEFINED PYTHON_SITE_DIR) ++ set (PYTHON_SITE_DIR "${CMAKE_INSTALL_LIBDIR}/python${PYTHON_VERSION_FOUND}/site-packages") ++endif () ++ + # Disable some warnings for Clang, it's a little too picky with boost + if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") + add_definitions ("-Wno-array-bounds") + endif () + +-if (BUILD_PY3) +- set (target_name Py3OpenImageIO) +-else () +- set (target_name PyOpenImageIO) +-endif () ++set (target_name PyOpenImageIO) + +-if (BOOST_CUSTOM OR Boost_FOUND AND PYTHONLIBS_FOUND) ++# Test if automatically found or manually set with BOOST_CUSTOM ++if (DEFINED Boost_PYTHON_LIBRARIES) + + set (python_srcs py_imageinput.cpp py_imageoutput.cpp + py_imagecache.cpp py_imagespec.cpp py_roi.cpp +@@ -81,8 +58,12 @@ if (BOOST_CUSTOM OR Boost_FOUND AND PYTHONLIBS_FOUND) + message (STATUS "Python found ${PYTHONLIBS_FOUND} ") + message (STATUS "Python include dirs ${PYTHON_INCLUDE_PATH}") + message (STATUS "Python libraries ${PYTHON_LIBRARIES}") ++ message (STATUS "Python site packages dir ${PYTHON_SITE_DIR}") + message (STATUS "Python to include 'lib' prefix: ${PYLIB_LIB_PREFIX}") + message (STATUS "Python to include SO version: ${PYLIB_INCLUDE_SONAME}") ++ message (STATUS "Python version ${PYTHON_VERSION_STRING}") ++ message (STATUS "Python version major: ${PYTHON_VERSION_MAJOR} minor: ${PYTHON_VERSION_MINOR}") ++ message (STATUS "Boost python libraries ${Boost_PYTHON_LIBRARIES}") + endif () + + include_directories (${PYTHON_INCLUDE_PATH} ${Boost_INCLUDE_DIRS}) +@@ -91,7 +72,7 @@ if (BOOST_CUSTOM OR Boost_FOUND AND PYTHONLIBS_FOUND) + target_link_libraries (${target_name} OpenImageIO ${Boost_LIBRARIES} ${Boost_PYTHON_LIBRARIES} ${CMAKE_DL_LIBS}) + set_target_properties (${target_name} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup") + else () +- target_link_libraries (${target_name} OpenImageIO ${Boost_LIBRARIES} ${Boost_PYTHON_LIBRARIES} ${PYTHON_LIBRARIES} ${CMAKE_DL_LIBS}) ++ target_link_libraries (${target_name} OpenImageIO ${SANITIZE_LIBRARIES} ${Boost_LIBRARIES} ${Boost_PYTHON_LIBRARIES} ${PYTHON_LIBRARIES} ${CMAKE_DL_LIBS}) + endif () + + # Exclude the 'lib' prefix from the name +@@ -123,21 +104,17 @@ if (BOOST_CUSTOM OR Boost_FOUND AND PYTHONLIBS_FOUND) + SUFFIX ".pyd") + endif() + +- if (BUILD_PY3) +- install (TARGETS ${target_name} +- RUNTIME DESTINATION ${PYLIB3_INSTALL_DIR} COMPONENT user +- LIBRARY DESTINATION ${PYLIB3_INSTALL_DIR} COMPONENT user) +- else () +- install (TARGETS ${target_name} +- RUNTIME DESTINATION ${PYLIB_INSTALL_DIR} COMPONENT user +- LIBRARY DESTINATION ${PYLIB_INSTALL_DIR} COMPONENT user) +- endif () +-elseif (BUILD_PY3) +- if (NOT PYTHONLIBS_FOUND) +- message (STATUS "Python3 libraries not found") +- endif () +- if (NOT Boost_FOUND) +- message (STATUS "Boost python3 component not found") +- endif () +- set(USE_PYTHON3 OFF) ++ install (TARGETS ${target_name} ++ RUNTIME DESTINATION ${PYTHON_SITE_DIR} COMPONENT user ++ LIBRARY DESTINATION ${PYTHON_SITE_DIR} COMPONENT user) ++else () ++ # If Boost python components were not found, turn off all python support. ++ message (STATUS "Boost python support not found!") ++ if (APPLE AND USE_PYTHON) ++ message (STATUS " If your Boost is from Macports, you need the +python26 variant to get Python support.") ++ endif () ++ if (BOOST_CUSTOM) ++ message (STATUS " Please set the variable Boost_PYTHON_LIBRARIES to the location of the boost python libraries.") ++ endif () ++ message (FATAL_ERROR "Python module cannot be built. Either disable python support or check your boost installation.") + endif () +-- +2.14.2 + diff --git a/media-libs/openimageio/files/openimageio-1.6.18-repair-breaks-after-boost-python-1.65-changes.patch b/media-libs/openimageio/files/openimageio-1.6.18-repair-breaks-after-boost-python-1.65-changes.patch new file mode 100644 index 000000000000..622890e981ef --- /dev/null +++ b/media-libs/openimageio/files/openimageio-1.6.18-repair-breaks-after-boost-python-1.65-changes.patch @@ -0,0 +1,251 @@ +From 03eca9df5082e97f3b157ce7d1d86ef76016e52b Mon Sep 17 00:00:00 2001 +From: Jonathan Scruggs <j.scruggs@gmail.com> +Date: Thu, 28 Sep 2017 16:00:16 +0100 +Subject: [PATCH 3/3] oiio/RB-1.6: Repair breaks after boost python 1.65 + changes (#1753) + +Alas, the new Boost 1.65 moves some boost python material from one +namespace to another in a way that breaks compatibility related to +support for numpy arrays. This breaks the build, including all of +our MacOS-based TravisCI tests, which of course pick up the latest +Boost via Homebrew. + +Backported from: +https://github.com/OpenImageIO/oiio/commit/57f294df7430a860c60612c28235730fd429ea0d +--- + src/python/py_imagebuf.cpp | 22 +++++++++++++++------- + src/python/py_imageoutput.cpp | 10 +++++----- + src/python/py_oiio.cpp | 22 +++++++++++++++++++--- + src/python/py_oiio.h | 23 +++++++---------------- + 4 files changed, 46 insertions(+), 31 deletions(-) + +diff --git a/src/python/py_imagebuf.cpp b/src/python/py_imagebuf.cpp +index 28a8c537..fa271fe2 100644 +--- a/src/python/py_imagebuf.cpp ++++ b/src/python/py_imagebuf.cpp +@@ -329,7 +329,7 @@ BOOST_PYTHON_FUNCTION_OVERLOADS(ImageBuf_get_pixels_bt_overloads, + + + bool +-ImageBuf_set_pixels_tuple (ImageBuf &buf, ROI roi, tuple data) ++ImageBuf_set_pixels_tuple (ImageBuf &buf, ROI roi, const tuple& data) + { + if (! roi.defined()) + roi = buf.roi(); +@@ -347,8 +347,13 @@ ImageBuf_set_pixels_tuple (ImageBuf &buf, ROI roi, tuple data) + + + bool +-ImageBuf_set_pixels_array (ImageBuf &buf, ROI roi, numeric::array data) ++ImageBuf_set_pixels_array (ImageBuf &buf, ROI roi, const object& data) + { ++ // If it's a tuple, we handle that with the other function ++ extract<tuple> tup (data); ++ if (tup.check()) ++ return ImageBuf_set_pixels_tuple (buf, roi, tup()); ++ + if (! roi.defined()) + roi = buf.roi(); + roi.chend = std::min (roi.chend, buf.nchannels()+1); +@@ -356,13 +361,16 @@ ImageBuf_set_pixels_array (ImageBuf &buf, ROI roi, numeric::array data) + if (size == 0) + return true; // done + +- TypeDesc type; +- size_t pylen = 0; +- const void *addr = python_array_address (data, type, pylen); +- if (!addr || size > pylen) ++ TypeDesc elementtype; ++ size_t numelements; ++ const void* addr = python_array_address (data, elementtype, numelements); ++ if (!addr || size > numelements) + return false; // Not enough data to fill our ROI + +- buf.set_pixels (roi, type, addr); ++ std::vector<float> vals (numelements); ++ convert_types (elementtype, addr, TypeDesc::TypeFloat, vals.data(), ++ int(numelements)); ++ buf.set_pixels (roi, TypeDesc::TypeFloat, &vals[0]); + return true; + } + +diff --git a/src/python/py_imageoutput.cpp b/src/python/py_imageoutput.cpp +index 1c2e5f3c..2203aac4 100644 +--- a/src/python/py_imageoutput.cpp ++++ b/src/python/py_imageoutput.cpp +@@ -112,7 +112,7 @@ ImageOutputWrap::make_read_buffer (object &buffer, imagesize_t size) + + + bool +-ImageOutputWrap::write_scanline_array (int y, int z, numeric::array &buffer) ++ImageOutputWrap::write_scanline_array (int y, int z, object &buffer) + { + TypeDesc format; + size_t numelements = 0; +@@ -154,7 +154,7 @@ ImageOutputWrap::write_scanline_bt (int y, int z, TypeDesc::BASETYPE format, + + bool + ImageOutputWrap::write_scanlines_array (int ybegin, int yend, int z, +- numeric::array &buffer) ++ object &buffer) + { + TypeDesc format; + size_t numelements = 0; +@@ -199,7 +199,7 @@ ImageOutputWrap::write_scanlines_bt (int ybegin, int yend, int z, + + bool + ImageOutputWrap::write_tile_array (int x, int y, int z, +- numeric::array &buffer) ++ object &buffer) + { + TypeDesc format; + size_t numelements = 0; +@@ -243,7 +243,7 @@ ImageOutputWrap::write_tile_bt (int x, int y, int z, TypeDesc::BASETYPE format, + bool + ImageOutputWrap::write_tiles_array (int xbegin, int xend, int ybegin, int yend, + int zbegin, int zend, +- numeric::array &buffer) ++ object &buffer) + { + TypeDesc format; + size_t numelements = 0; +@@ -290,7 +290,7 @@ ImageOutputWrap::write_tiles_bt (int xbegin, int xend, int ybegin, int yend, + + + bool +-ImageOutputWrap::write_image_array (numeric::array &buffer) ++ImageOutputWrap::write_image_array (object &buffer) + { + TypeDesc format; + size_t numelements = 0; +diff --git a/src/python/py_oiio.cpp b/src/python/py_oiio.cpp +index bc10803c..5e965089 100644 +--- a/src/python/py_oiio.cpp ++++ b/src/python/py_oiio.cpp +@@ -78,6 +78,13 @@ typedesc_from_python_array_code (char code) + } + + ++std::string ++object_classname (const object& obj) ++{ ++ return extract<std::string>(obj.attr("__class__").attr("__name__")); ++} ++ ++ + + object + C_array_to_Python_array (const char *data, TypeDesc type, size_t size) +@@ -313,11 +320,18 @@ oiio_get_string_attribute_d (const char *name, const char *defaultval) + + + const void * +-python_array_address (numeric::array &data, TypeDesc &elementtype, ++python_array_address (const object &data, TypeDesc &elementtype, + size_t &numelements) + { + // Figure out the type of the array +- object tcobj = data.attr("typecode"); ++ object tcobj; ++ try { ++ tcobj = data.attr("typecode"); ++ } catch(...) { ++ return NULL; ++ } ++ if (! tcobj) ++ return NULL; + extract<char> tce (tcobj); + char typecode = tce.check() ? (char)tce : 0; + elementtype = typedesc_from_python_array_code (typecode); +@@ -395,7 +409,9 @@ OIIO_DECLARE_PYMODULE(OIIO_PYMODULE_NAME) { + scope().attr("VERSION_PATCH") = OIIO_VERSION_PATCH; + scope().attr("INTRO_STRING") = OIIO_INTRO_STRING; + +- boost::python::numeric::array::set_module_and_type("array", "array"); ++ #if BOOST_VERSION < 106500 ++ boost::python::numeric::array::set_module_and_type("array", "array"); ++ #endif + } + + } // namespace PyOpenImageIO +diff --git a/src/python/py_oiio.h b/src/python/py_oiio.h +index febe2f9e..9fc04d06 100644 +--- a/src/python/py_oiio.h ++++ b/src/python/py_oiio.h +@@ -68,12 +68,13 @@ bool PyProgressCallback(void*, float); + object C_array_to_Python_array (const char *data, TypeDesc type, size_t size); + const char * python_array_code (TypeDesc format); + TypeDesc typedesc_from_python_array_code (char code); ++std::string object_classname (const object& obj); + + + // Given python array 'data', figure out its element type and number of + // elements, and return the memory address of its contents. Return NULL as + // the address for an error. +-const void * python_array_address (numeric::array &data, TypeDesc &elementtype, ++const void * python_array_address (const object &data, TypeDesc &elementtype, + size_t &numelements); + + +@@ -105,16 +106,6 @@ void py_to_stdvector (std::vector<T> &vals, const tuple &tup) + + + +-// Suck up a tuple of presumed T values into a vector<T> +-template<typename T> +-void py_to_stdvector (std::vector<T> &vals, const numeric::array &arr) +-{ +- for (int i = 0, e = len(arr); i < e; ++i) +- vals.push_back (extract<T>(arr[i])); +-} +- +- +- + // Convert an array of T values into either tuple. FUNC is a conversion + // function such as PyInt_FromLong, PyFloat_FromDouble, or + // PyString_FromString. +@@ -312,12 +303,12 @@ public: + stride_t xstride=AutoStride); + bool write_scanline_bt (int, int, TypeDesc::BASETYPE, + boost::python::object&, stride_t xstride=AutoStride); +- bool write_scanline_array (int, int, numeric::array&); ++ bool write_scanline_array (int, int, object&); + bool write_scanlines (int, int, int, TypeDesc, boost::python::object&, + stride_t xstride=AutoStride); + bool write_scanlines_bt (int, int, int, TypeDesc::BASETYPE, + boost::python::object&, stride_t xstride=AutoStride); +- bool write_scanlines_array (int, int, int, numeric::array&); ++ bool write_scanlines_array (int, int, int, object&); + bool write_tile (int, int, int, TypeDesc, boost::python::object&, + stride_t xstride=AutoStride, stride_t ystride=AutoStride, + stride_t zstride=AutoStride); +@@ -325,7 +316,7 @@ public: + boost::python::object&, stride_t xstride=AutoStride, + stride_t ystride=AutoStride, + stride_t zstride=AutoStride); +- bool write_tile_array (int, int, int, numeric::array&); ++ bool write_tile_array (int, int, int, object&); + bool write_tiles (int, int, int, int, int, int, + TypeDesc, boost::python::object&, + stride_t xstride=AutoStride, stride_t ystride=AutoStride, +@@ -335,7 +326,7 @@ public: + stride_t xstride=AutoStride, + stride_t ystride=AutoStride, + stride_t zstride=AutoStride); +- bool write_tiles_array (int, int, int, int, int, int, numeric::array&); ++ bool write_tiles_array (int, int, int, int, int, int, object&); + bool write_image (TypeDesc format, object &buffer, + stride_t xstride=AutoStride, + stride_t ystride=AutoStride, +@@ -344,7 +335,7 @@ public: + stride_t xstride=AutoStride, + stride_t ystride=AutoStride, + stride_t zstride=AutoStride); +- bool write_image_array (numeric::array &buffer); ++ bool write_image_array (object &buffer); + bool write_deep_scanlines (int ybegin, int yend, int z, + const DeepData &deepdata); + bool write_deep_tiles (int xbegin, int xend, int ybegin, int yend, +-- +2.14.2 + diff --git a/media-libs/openimageio/files/openimageio-1.6.18-use-gnuinstalldirs.patch b/media-libs/openimageio/files/openimageio-1.6.18-use-gnuinstalldirs.patch new file mode 100644 index 000000000000..eb6834d6b8fd --- /dev/null +++ b/media-libs/openimageio/files/openimageio-1.6.18-use-gnuinstalldirs.patch @@ -0,0 +1,247 @@ +From c078d90a6570d3cdf372f33f83057b21e44f40ad Mon Sep 17 00:00:00 2001 +From: Jonathan Scruggs <j.scruggs@gmail.com> +Date: Thu, 28 Sep 2017 15:08:47 +0100 +Subject: [PATCH 1/2] oiio/RB-1.6: Use GNUInstallDirs for installation paths + (#1747) + +* Change all hard coded paths to GNUInstallDirs varibles. +* Remove variable setting in install.cmake file since + GNUInstallDirs does all this for you. +* Added new search paths for fonts. + +Backported from: +https://github.com/OpenImageIO/oiio/commit/1383ba314ec2522b4f0c7e9037bd546b68bc2d7d +--- + CMakeLists.txt | 51 ++++++++------------------------ + src/cmake/oiio_macros.cmake | 6 ++-- + src/doc/CMakeLists.txt | 4 +-- + src/fonts/CMakeLists.txt | 2 +- + src/include/CMakeLists.txt | 2 +- + src/libOpenImageIO/imagebufalgo_draw.cpp | 11 +++++++ + src/nuke/txReader/CMakeLists.txt | 3 +- + src/nuke/txWriter/CMakeLists.txt | 3 +- + 8 files changed, 32 insertions(+), 50 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index bcbcbf94..b29efac6 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -302,6 +302,8 @@ if (NOT OIIO_NAMESPACE) + endif () + message(STATUS "Setting Namespace to: ${OIIO_NAMESPACE}") + ++include (GNUInstallDirs) ++ + set (CMAKE_MODULE_PATH + "${PROJECT_SOURCE_DIR}/src/cmake/modules" + "${PROJECT_SOURCE_DIR}/src/cmake") +@@ -319,58 +321,32 @@ include_directories ( + + + ########################################################################### +-# Paths for install tree customization. Note that relative paths are relative +-# to CMAKE_INSTALL_PREFIX. +-set (DEFAULT_BIN_INSTALL_DIR "bin") +-set (DEFAULT_LIB_INSTALL_DIR "lib") +-set (DEFAULT_INCLUDE_INSTALL_DIR "include/OpenImageIO") ++# Set install paths for the python modules ++# TODO: Figure out how to get the correct python directory ++ + if (UNIX AND NOT SELF_CONTAINED_INSTALL_TREE) +- # Try to be well-behaved and install into reasonable places according to +- # the "standard" unix directory heirarchy + # TODO: Figure out how to get the correct python directory +- set (DEFAULT_PYLIB_INSTALL_DIR "lib/python/site-packages") +- set (DEFAULT_PYLIB3_INSTALL_DIR "lib/python3/site-packages") +- set (DEFAULT_DOC_INSTALL_DIR "share/doc/OpenImageIO") +- set (DEFAULT_MAN_INSTALL_DIR "share/man/man1") +- set (DEFAULT_FONTS_INSTALL_DIR "share/fonts/oiio") ++ set (DEFAULT_PYLIB_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/python/site-packages") ++ set (DEFAULT_PYLIB3_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/python3/site-packages") + else () +- # Here is the "self-contained install tree" case: the expectation here is +- # that everything OIIO related will go into its own directory, not into +- # some standard system heirarchy. ++ # Here is the "self-contained install tree" case: the expectation here ++ # is that everything related to this project will go into its own ++ # directory, not into some standard system heirarchy. + set (DEFAULT_PYLIB_INSTALL_DIR "python") + set (DEFAULT_PYLIB3_INSTALL_DIR "python3") +- set (DEFAULT_DOC_INSTALL_DIR "doc") +- set (DEFAULT_MAN_INSTALL_DIR "doc/man") +- set (DEFAULT_FONTS_INSTALL_DIR "fonts/oiio") + endif () + if (EXEC_INSTALL_PREFIX) + # Tack on an extra prefix to support multi-arch builds. +- set (DEFAULT_BIN_INSTALL_DIR "${EXEC_INSTALL_PREFIX}/${DEFAULT_BIN_INSTALL_DIR}") +- set (DEFAULT_LIB_INSTALL_DIR "${EXEC_INSTALL_PREFIX}/${DEFAULT_LIB_INSTALL_DIR}") + set (DEFAULT_PYLIB_INSTALL_DIR "${EXEC_INSTALL_PREFIX}/${DEFAULT_PYLIB_INSTALL_DIR}") + set (DEFAULT_PYLIB3_INSTALL_DIR "${EXEC_INSTALL_PREFIX}/${DEFAULT_PYLIB3_INSTALL_DIR}") +- set (DEFAULT_FONTS_INSTALL_DIR "${EXEC_INSTALL_PREFIX}/${DEFAULT_FONTS_INSTALL_DIR}") + endif () + # Set up cmake cache variables corresponding to the defaults deduced above, so + # that the user can override them as desired: +-set (BIN_INSTALL_DIR ${DEFAULT_BIN_INSTALL_DIR} CACHE STRING +- "Install location for binaries (relative to CMAKE_INSTALL_PREFIX or absolute)") +-set (LIB_INSTALL_DIR ${DEFAULT_LIB_INSTALL_DIR} CACHE STRING +- "Install location for libraries (relative to CMAKE_INSTALL_PREFIX or absolute)") + set (PYLIB_INSTALL_DIR ${DEFAULT_PYLIB_INSTALL_DIR} CACHE STRING + "Install location for python libraries (relative to CMAKE_INSTALL_PREFIX or absolute)") + set (PYLIB3_INSTALL_DIR ${DEFAULT_PYLIB3_INSTALL_DIR} CACHE STRING + "Install location for python3 libraries (relative to CMAKE_INSTALL_PREFIX or absolute)") +-set (INCLUDE_INSTALL_DIR ${DEFAULT_INCLUDE_INSTALL_DIR} CACHE STRING +- "Install location of header files (relative to CMAKE_INSTALL_PREFIX or absolute)") +-set (DOC_INSTALL_DIR ${DEFAULT_DOC_INSTALL_DIR} CACHE STRING +- "Install location for documentation (relative to CMAKE_INSTALL_PREFIX or absolute)") +-set (FONTS_INSTALL_DIR ${DEFAULT_FONTS_INSTALL_DIR} CACHE STRING +- "Install location for fonts (relative to CMAKE_INSTALL_PREFIX or absolute)") +-if (UNIX) +- set (MAN_INSTALL_DIR ${DEFAULT_MAN_INSTALL_DIR} CACHE STRING +- "Install location for manual pages (relative to CMAKE_INSTALL_PREFIX or absolute)") +-endif() ++ + set (PLUGIN_SEARCH_PATH "" CACHE STRING "Default plugin search path") + + set (INSTALL_DOCS ON CACHE BOOL "Install documentation") +@@ -388,10 +364,7 @@ if (CMAKE_SKIP_RPATH) + set (CMAKE_SKIP_RPATH FALSE) + unset (CMAKE_INSTALL_RPATH) + else () +- set (CMAKE_INSTALL_RPATH "${LIB_INSTALL_DIR}") +- if (NOT IS_ABSOLUTE ${CMAKE_INSTALL_RPATH}) +- set (CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}") +- endif () ++ set (CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_FULL_LIBDIR}") + set (CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) + endif () + +diff --git a/src/cmake/oiio_macros.cmake b/src/cmake/oiio_macros.cmake +index e65020bf..22d78ccd 100644 +--- a/src/cmake/oiio_macros.cmake ++++ b/src/cmake/oiio_macros.cmake +@@ -7,9 +7,9 @@ + # + macro (oiio_install_targets) + install (TARGETS ${ARGN} +- RUNTIME DESTINATION "${BIN_INSTALL_DIR}" COMPONENT user +- LIBRARY DESTINATION "${LIB_INSTALL_DIR}" COMPONENT user +- ARCHIVE DESTINATION "${LIB_INSTALL_DIR}" COMPONENT developer) ++ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT user ++ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT user ++ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT developer) + endmacro () + + # Macro to add a build target for an IO plugin. +diff --git a/src/doc/CMakeLists.txt b/src/doc/CMakeLists.txt +index 5e2e9866..170ff89c 100644 +--- a/src/doc/CMakeLists.txt ++++ b/src/doc/CMakeLists.txt +@@ -7,7 +7,7 @@ set (public_docs + ) + + if (INSTALL_DOCS) +- install (FILES ${public_docs} DESTINATION ${DOC_INSTALL_DIR} ++ install (FILES ${public_docs} DESTINATION ${CMAKE_INSTALL_DOCDIR} + COMPONENT documentation) + endif () + +@@ -37,6 +37,6 @@ if (UNIX AND TXT2MAN AND PYTHONINTERP_FOUND) + + if (INSTALL_DOCS) + install (FILES ${manpage_files} +- DESTINATION ${MAN_INSTALL_DIR} COMPONENT documentation) ++ DESTINATION ${CMAKE_INSTALL_MANDIR} COMPONENT documentation) + endif () + endif() +diff --git a/src/fonts/CMakeLists.txt b/src/fonts/CMakeLists.txt +index 1e296da0..d1bd6409 100644 +--- a/src/fonts/CMakeLists.txt ++++ b/src/fonts/CMakeLists.txt +@@ -1,7 +1,7 @@ + file (GLOB public_fonts "*/*.ttf") + + if (INSTALL_FONTS AND USE_FREETYPE) +- install (FILES ${public_fonts} DESTINATION ${FONTS_INSTALL_DIR} ++ install (FILES ${public_fonts} DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/fonts/OpenImageIO + COMPONENT fonts) + endif () + +diff --git a/src/include/CMakeLists.txt b/src/include/CMakeLists.txt +index b605b53b..5cdc6542 100644 +--- a/src/include/CMakeLists.txt ++++ b/src/include/CMakeLists.txt +@@ -17,5 +17,5 @@ set (OIIO_VERSION_NS "v${MANGLED_SOVERSION}") + configure_file(OpenImageIO/oiioversion.h.in "${CMAKE_BINARY_DIR}/include/OpenImageIO/oiioversion.h" @ONLY) + list(APPEND public_headers "${CMAKE_BINARY_DIR}/include/OpenImageIO/oiioversion.h") + +-install (FILES ${public_headers} DESTINATION ${INCLUDE_INSTALL_DIR} ++install (FILES ${public_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/OpenImageIO + COMPONENT developer) +diff --git a/src/libOpenImageIO/imagebufalgo_draw.cpp b/src/libOpenImageIO/imagebufalgo_draw.cpp +index fb4dcf4d..cb9ef095 100644 +--- a/src/libOpenImageIO/imagebufalgo_draw.cpp ++++ b/src/libOpenImageIO/imagebufalgo_draw.cpp +@@ -441,27 +441,38 @@ ImageBufAlgo::render_text (ImageBuf &R, int x, int y, string_view text, + if (home && *home) { + std::string h (home); + search_dirs.push_back (h + "/fonts"); ++ search_dirs.push_back (h + "/fonts/OpenImageIO"); + search_dirs.push_back (h + "/Fonts"); ++ search_dirs.push_back (h + "/Fonts/OpenImageIO"); + search_dirs.push_back (h + "/Library/Fonts"); ++ search_dirs.push_back (h + "/Library/Fonts/OpenImageIO"); + } + const char *systemRoot = getenv ("SystemRoot"); + if (systemRoot && *systemRoot) + search_dirs.push_back (std::string(systemRoot) + "/Fonts"); ++ search_dirs.push_back (std::string(systemRoot) + "/Fonts/OpenImageIO"); + search_dirs.push_back ("/usr/share/fonts"); ++ + search_dirs.push_back ("/Library/Fonts"); ++ search_dirs.push_back ("/Library/Fonts/OpenImageIO"); + search_dirs.push_back ("C:/Windows/Fonts"); ++ search_dirs.push_back ("C:/Windows/Fonts/OpenImageIO"); + search_dirs.push_back ("/usr/local/share/fonts"); ++ search_dirs.push_back ("/usr/local/share/fonts/OpenImageIO"); + search_dirs.push_back ("/opt/local/share/fonts"); ++ search_dirs.push_back ("/opt/local/share/fonts/OpenImageIO"); + // Try $OPENIMAGEIOHOME/fonts + const char *oiiohomedir = getenv ("OPENIMAGEIOHOME"); + if (oiiohomedir && *oiiohomedir) + search_dirs.push_back (std::string(oiiohomedir) + "/fonts"); ++ search_dirs.push_back (std::string(oiiohomedir) + "/fonts/OpenImageIO"); + // Try ../fonts relative to where this executing binary came from + std::string this_program = OIIO::Sysutil::this_program_path (); + if (this_program.size()) { + std::string path = Filesystem::parent_path (this_program); + path = Filesystem::parent_path (path); + search_dirs.push_back (path+"/fonts"); ++ search_dirs.push_back (path+"/fonts/OpenImageIO"); + } + + // Try to find the font. Experiment with several extensions +diff --git a/src/nuke/txReader/CMakeLists.txt b/src/nuke/txReader/CMakeLists.txt +index 3e72b6d4..660a2ee1 100644 +--- a/src/nuke/txReader/CMakeLists.txt ++++ b/src/nuke/txReader/CMakeLists.txt +@@ -28,5 +28,4 @@ else () + COMPILE_FLAGS "-fPIC -msse") + endif () + +-install (TARGETS txReader +- LIBRARY DESTINATION "${LIB_INSTALL_DIR}/nuke") ++oiio_install_targets (txReader) +diff --git a/src/nuke/txWriter/CMakeLists.txt b/src/nuke/txWriter/CMakeLists.txt +index 66312bc4..0fb70a36 100644 +--- a/src/nuke/txWriter/CMakeLists.txt ++++ b/src/nuke/txWriter/CMakeLists.txt +@@ -28,5 +28,4 @@ else () + COMPILE_FLAGS "-fPIC -msse") + endif () + +-install (TARGETS txWriter +- LIBRARY DESTINATION "${LIB_INSTALL_DIR}/nuke") ++oiio_install_targets (txWriter) +-- +2.14.2 + diff --git a/media-libs/openimageio/files/openimageio-1.7.17-make-python-and-boost-detection-more-generic.patch b/media-libs/openimageio/files/openimageio-1.7.17-make-python-and-boost-detection-more-generic.patch new file mode 100644 index 000000000000..06934ca0f069 --- /dev/null +++ b/media-libs/openimageio/files/openimageio-1.7.17-make-python-and-boost-detection-more-generic.patch @@ -0,0 +1,336 @@ +From 0ec53b0e2cd0713fa3e0fbe538eb1c89fe4e59d2 Mon Sep 17 00:00:00 2001 +From: Jonathan Scruggs <j.scruggs@gmail.com> +Date: Thu, 28 Sep 2017 16:42:25 +0100 +Subject: [PATCH 2/2] oiio/RB-1.7: Make python and boost detection more generic + +* Fix boost and python detection for certain systems. +* Clean up boost and python detection. +* Remove redundant code. + +Backported from: +https://github.com/OpenImageIO/oiio/commit/fca7ed62bd679a8221147dcddb23a516796dab90 +--- + CMakeLists.txt | 38 +------------ + src/cmake/externalpackages.cmake | 61 +------------------- + src/python/CMakeLists.txt | 119 ++++++++++++++++----------------------- + 3 files changed, 53 insertions(+), 165 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 635c61f4..0f80959a 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -181,9 +181,7 @@ set (USE_OPENGL ON CACHE BOOL "Include OpenGL support") + set (USE_QT ON CACHE BOOL "Include Qt support") + set (FORCE_OPENGL_1 OFF CACHE BOOL "Force iv to use OpenGL's fixed pipeline") + set (USE_PYTHON ON CACHE BOOL "Build the Python bindings") +-set (USE_PYTHON3 OFF CACHE BOOL "Build the Python3 bindings") +-set (PYTHON_VERSION 2.6) +-set (PYTHON3_VERSION 3.2) ++set (PYTHON_VERSION "2.7" CACHE STRING "Target version of python to find") + set (PYLIB_INCLUDE_SONAME OFF CACHE BOOL "If ON, soname/soversion will be set for Python module library") + set (PYLIB_LIB_PREFIX OFF CACHE BOOL "If ON, prefix the Python module with 'lib'") + set (USE_FIELD3D ON CACHE BOOL "Use Field3D if found") +@@ -373,32 +371,7 @@ include_directories ( + + + ########################################################################### +-# Set install paths for the python modules +-# TODO: Figure out how to get the correct python directory +- +-if (UNIX AND NOT SELF_CONTAINED_INSTALL_TREE) +- # TODO: Figure out how to get the correct python directory +- set (DEFAULT_PYLIB_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/python/site-packages") +- set (DEFAULT_PYLIB3_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/python3/site-packages") +-else () +- # Here is the "self-contained install tree" case: the expectation here +- # is that everything related to this project will go into its own +- # directory, not into some standard system heirarchy. +- set (DEFAULT_PYLIB_INSTALL_DIR "python") +- set (DEFAULT_PYLIB3_INSTALL_DIR "python3") +-endif () +-if (EXEC_INSTALL_PREFIX) +- # Tack on an extra prefix to support multi-arch builds. +- set (DEFAULT_PYLIB_INSTALL_DIR "${EXEC_INSTALL_PREFIX}/${DEFAULT_PYLIB_INSTALL_DIR}") +- set (DEFAULT_PYLIB3_INSTALL_DIR "${EXEC_INSTALL_PREFIX}/${DEFAULT_PYLIB3_INSTALL_DIR}") +-endif () +-# Set up cmake cache variables corresponding to the defaults deduced above, so +-# that the user can override them as desired: +-set (PYLIB_INSTALL_DIR ${DEFAULT_PYLIB_INSTALL_DIR} CACHE STRING +- "Install location for python libraries (relative to CMAKE_INSTALL_PREFIX or absolute)") +-set (PYLIB3_INSTALL_DIR ${DEFAULT_PYLIB3_INSTALL_DIR} CACHE STRING +- "Install location for python3 libraries (relative to CMAKE_INSTALL_PREFIX or absolute)") +- ++# Set default install options + set (PLUGIN_SEARCH_PATH "" CACHE STRING "Default plugin search path") + + set (INSTALL_DOCS ON CACHE BOOL "Install documentation") +@@ -494,14 +467,9 @@ if (NOT EMBEDPLUGINS AND NOT BUILD_OIIOUTIL_ONLY) + endforeach () + endif () + +-if (USE_PYTHON AND boost_PYTHON_FOUND AND NOT BUILD_OIIOUTIL_ONLY) ++if (USE_PYTHON AND NOT BUILD_OIIOUTIL_ONLY) + add_subdirectory (src/python) + endif () +-if (USE_PYTHON3 AND boost_PYTHON_FOUND AND NOT BUILD_OIIOUTIL_ONLY) +- #build the python3 module in a different binary directory since it will +- #have the same name as the python2 module (e.g. OpenImageIO.so) +- add_subdirectory (src/python src/python3) +-endif () + + add_subdirectory (src/include) + add_subdirectory (src/doc) +diff --git a/src/cmake/externalpackages.cmake b/src/cmake/externalpackages.cmake +index 03faf7bd..b354cda0 100644 +--- a/src/cmake/externalpackages.cmake ++++ b/src/cmake/externalpackages.cmake +@@ -116,10 +116,7 @@ if (NOT Boost_FIND_QUIETLY) + endif () + + if (NOT DEFINED Boost_ADDITIONAL_VERSIONS) +- set (Boost_ADDITIONAL_VERSIONS "1.60" "1.59" "1.58" "1.57" "1.56" +- "1.55" "1.54" "1.53" "1.52" "1.51" "1.50" +- "1.49" "1.48" "1.47" "1.46" "1.45" "1.44" +- "1.43" "1.43.0" "1.42" "1.42.0") ++ set (Boost_ADDITIONAL_VERSIONS "1.65.1" "1.65" "1.63" "1.62") + endif () + if (LINKSTATIC) + set (Boost_USE_STATIC_LIBS ON) +@@ -131,51 +128,7 @@ if (BOOST_CUSTOM) + # Boost_VERSION, Boost_INCLUDE_DIRS, Boost_LIBRARY_DIRS, Boost_LIBRARIES. + else () + set (Boost_COMPONENTS filesystem regex system thread) +- find_package (Boost 1.42 REQUIRED +- COMPONENTS ${Boost_COMPONENTS} +- ) +- +- # Try to figure out if this boost distro has Boost::python. If we +- # include python in the component list above, cmake will abort if +- # it's not found. So we resort to checking for the boost_python +- # library's existance to get a soft failure. +- find_library (my_boost_python_lib boost_python +- PATHS ${Boost_LIBRARY_DIRS} NO_DEFAULT_PATH) +- mark_as_advanced (my_boost_python_lib) +- if (NOT my_boost_python_lib AND Boost_SYSTEM_LIBRARY_RELEASE) +- get_filename_component (my_boost_PYTHON_rel +- ${Boost_SYSTEM_LIBRARY_RELEASE} NAME +- ) +- string (REGEX REPLACE "^(lib)?(.+)_system(.+)$" "\\2_python\\3" +- my_boost_PYTHON_rel ${my_boost_PYTHON_rel} +- ) +- find_library (my_boost_PYTHON_LIBRARY_RELEASE +- NAMES ${my_boost_PYTHON_rel} lib${my_boost_PYTHON_rel} +- HINTS ${Boost_LIBRARY_DIRS} +- NO_DEFAULT_PATH +- ) +- mark_as_advanced (my_boost_PYTHON_LIBRARY_RELEASE) +- endif () +- if (NOT my_boost_python_lib AND Boost_SYSTEM_LIBRARY_DEBUG) +- get_filename_component (my_boost_PYTHON_dbg +- ${Boost_SYSTEM_LIBRARY_DEBUG} NAME +- ) +- string (REGEX REPLACE "^(lib)?(.+)_system(.+)$" "\\2_python\\3" +- my_boost_PYTHON_dbg ${my_boost_PYTHON_dbg} +- ) +- find_library (my_boost_PYTHON_LIBRARY_DEBUG +- NAMES ${my_boost_PYTHON_dbg} lib${my_boost_PYTHON_dbg} +- HINTS ${Boost_LIBRARY_DIRS} +- NO_DEFAULT_PATH +- ) +- mark_as_advanced (my_boost_PYTHON_LIBRARY_DEBUG) +- endif () +- if (my_boost_python_lib OR +- my_boost_PYTHON_LIBRARY_RELEASE OR my_boost_PYTHON_LIBRARY_DEBUG) +- set (boost_PYTHON_FOUND ON) +- else () +- set (boost_PYTHON_FOUND OFF) +- endif () ++ find_package (Boost 1.62 REQUIRED COMPONENTS ${Boost_COMPONENTS}) + endif () + + # On Linux, Boost 1.55 and higher seems to need to link against -lrt +@@ -190,16 +143,6 @@ if (NOT Boost_FIND_QUIETLY) + message (STATUS "Boost include dirs ${Boost_INCLUDE_DIRS}") + message (STATUS "Boost library dirs ${Boost_LIBRARY_DIRS}") + message (STATUS "Boost libraries ${Boost_LIBRARIES}") +- message (STATUS "Boost python found ${boost_PYTHON_FOUND}") +-endif () +-if (NOT boost_PYTHON_FOUND) +- # If Boost python components were not found, turn off all python support. +- message (STATUS "Boost python support not found -- will not build python components!") +- if (APPLE AND USE_PYTHON) +- message (STATUS " If your Boost is from Macports, you need the +python26 variant to get Python support.") +- endif () +- set (USE_PYTHON OFF) +- set (PYTHONLIBS_FOUND OFF) + endif () + + include_directories (SYSTEM "${Boost_INCLUDE_DIRS}") +diff --git a/src/python/CMakeLists.txt b/src/python/CMakeLists.txt +index 81a4a890..e58d372d 100644 +--- a/src/python/CMakeLists.txt ++++ b/src/python/CMakeLists.txt +@@ -1,54 +1,30 @@ +-#if the CMAKE_CURRENT_BINARY_DIR is python3, then build the python3 module, +-#otherwise the python2 module +-string (REGEX MATCH "python3\$" _py3_subdir ${CMAKE_CURRENT_BINARY_DIR}) ++# Attempt to find the desired version, but fall back to other ++# additional versions. ++find_package (PythonInterp ${PYTHON_VERSION} REQUIRED) + +-if (_py3_subdir) +- set (BUILD_PY3 ON) +-else () +- set (BUILD_PY3 OFF) +-endif () +- +-if (NOT BOOST_CUSTOM AND NOT BUILD_PY3) +- #Unset those, otherwise find_package(PythonLibs) will pick up old stuff +- #if it has been run before +- unset(Python_ADDITIONAL_VERSIONS) +- unset(PYTHON_LIBRARY) +- unset(PYTHON_LIBRARY CACHE) +- unset(PYTHON_INCLUDE_DIR) +- unset(PYTHON_INCLUDE_DIR CACHE) +- unset(PYTHON_INCLUDE_PATH) +- unset(PYTHON_INCLUDE_PATH CACHE) +- find_package (PythonLibs ${PYTHON_VERSION} REQUIRED) +- find_package (Boost 1.42 REQUIRED COMPONENTS python) +-elseif (BOOST_CUSTOM AND NOT BUILD_PY3) +- find_package (PythonLibs ${PYTHON_VERSION} REQUIRED) +-else () +- #BOOST_CUSTOM is ignored for python3 ++# The version that was found may not be the default or user ++# defined one. ++set (PYTHON_VERSION_FOUND ${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}) + +- #Unset those, otherwise find_package(PythonLibs) will pick up old stuff +- #if it has been run before +- unset(PYTHON_LIBRARY) +- unset(PYTHON_LIBRARY CACHE) +- unset(PYTHON_INCLUDE_DIR) +- unset(PYTHON_INCLUDE_DIR CACHE) +- unset(PYTHON_INCLUDE_PATH) +- unset(PYTHON_INCLUDE_PATH CACHE) ++if (NOT ${PYTHON_VERSION} EQUAL ${PYTHON_VERSION_FOUND} ) ++ message (WARNING "The requested version ${PYTHON_VERSION} was not found.") ++ message (WARNING "Using ${PYTHON_VERSION_FOUND} instead.") ++endif () + +- #cmake 2.8 does not look for python 3.4 +- set(Python_ADDITIONAL_VERSIONS 3.4) +- find_package (PythonInterp ${PYTHON3_VERSION} REQUIRED) +- find_package (PythonLibs ${PYTHON3_VERSION} REQUIRED) ++find_package (PythonLibs ${PYTHON_VERSION_FOUND} REQUIRED) + +- #Finding the python3 component for boost is a little tricky, since it has +- #different names on different systems. Try the most common ones +- #(boost_python3, boost_python-py34, …). +- foreach (_boost_py3_lib python3 python-py34 python-py33 python-py32) +- find_package (Boost 1.42 QUIET COMPONENTS ${_boost_py3_lib}) +- string (TOUPPER ${_boost_py3_lib} boost_py3_lib_name) +- if (Boost_${boost_py3_lib_name}_FOUND) +- #Not the most beautiful thing to do, but that gets them included in +- #the target_link_libraries(…) call farther down +- set (Boost_PYTHON_LIBRARIES ${Boost_${boost_py3_lib_name}_LIBRARIES}) ++if (NOT BOOST_CUSTOM) ++ # Finding the python component for boost is a little tricky, since it has ++ # different names on different systems. Try the most common ones. ++ foreach (_py_lib python-${PYTHON_VERSION_FOUND} python ++ python${PYTHON_VERSION_MAJOR} ++ python-py${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR}) ++ find_package (Boost QUIET COMPONENTS ${_py_lib}) ++ string (TOUPPER ${_py_lib} _py_lib_name) ++ if (Boost_${_py_lib_name}_FOUND) ++ # Not the most beautiful thing to do, but that gets them included in ++ # the target_link_libraries(…) call farther down ++ set (Boost_PYTHON_LIBRARIES ${Boost_${_py_lib_name}_LIBRARIES}) + break () + endif () + endforeach () +@@ -58,18 +34,19 @@ if (APPLE) + # set (PYTHON_LIBRARIES /opt/local/lib) + endif () + ++if (NOT DEFINED PYTHON_SITE_DIR) ++ set (PYTHON_SITE_DIR "${CMAKE_INSTALL_LIBDIR}/python${PYTHON_VERSION_FOUND}/site-packages") ++endif () ++ + # Disable some warnings for Clang, it's a little too picky with boost + if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") + add_definitions ("-Wno-array-bounds") + endif () + +-if (BUILD_PY3) +- set (target_name Py3OpenImageIO) +-else () +- set (target_name PyOpenImageIO) +-endif () ++set (target_name PyOpenImageIO) + +-if (BOOST_CUSTOM OR Boost_FOUND AND PYTHONLIBS_FOUND) ++# Test if automatically found or manually set with BOOST_CUSTOM ++if (DEFINED Boost_PYTHON_LIBRARIES) + + set (python_srcs py_imageinput.cpp py_imageoutput.cpp + py_imagecache.cpp py_imagespec.cpp py_roi.cpp +@@ -81,8 +58,12 @@ if (BOOST_CUSTOM OR Boost_FOUND AND PYTHONLIBS_FOUND) + message (STATUS "Python found ${PYTHONLIBS_FOUND} ") + message (STATUS "Python include dirs ${PYTHON_INCLUDE_PATH}") + message (STATUS "Python libraries ${PYTHON_LIBRARIES}") ++ message (STATUS "Python site packages dir ${PYTHON_SITE_DIR}") + message (STATUS "Python to include 'lib' prefix: ${PYLIB_LIB_PREFIX}") + message (STATUS "Python to include SO version: ${PYLIB_INCLUDE_SONAME}") ++ message (STATUS "Python version ${PYTHON_VERSION_STRING}") ++ message (STATUS "Python version major: ${PYTHON_VERSION_MAJOR} minor: ${PYTHON_VERSION_MINOR}") ++ message (STATUS "Boost python libraries ${Boost_PYTHON_LIBRARIES}") + endif () + + include_directories (${PYTHON_INCLUDE_PATH} ${Boost_INCLUDE_DIRS}) +@@ -91,7 +72,7 @@ if (BOOST_CUSTOM OR Boost_FOUND AND PYTHONLIBS_FOUND) + target_link_libraries (${target_name} OpenImageIO ${Boost_LIBRARIES} ${Boost_PYTHON_LIBRARIES} ${CMAKE_DL_LIBS}) + set_target_properties (${target_name} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup") + else () +- target_link_libraries (${target_name} OpenImageIO ${Boost_LIBRARIES} ${Boost_PYTHON_LIBRARIES} ${PYTHON_LIBRARIES} ${CMAKE_DL_LIBS}) ++ target_link_libraries (${target_name} OpenImageIO ${SANITIZE_LIBRARIES} ${Boost_LIBRARIES} ${Boost_PYTHON_LIBRARIES} ${PYTHON_LIBRARIES} ${CMAKE_DL_LIBS}) + endif () + + # Exclude the 'lib' prefix from the name +@@ -123,21 +104,17 @@ if (BOOST_CUSTOM OR Boost_FOUND AND PYTHONLIBS_FOUND) + SUFFIX ".pyd") + endif() + +- if (BUILD_PY3) +- install (TARGETS ${target_name} +- RUNTIME DESTINATION ${PYLIB3_INSTALL_DIR} COMPONENT user +- LIBRARY DESTINATION ${PYLIB3_INSTALL_DIR} COMPONENT user) +- else () +- install (TARGETS ${target_name} +- RUNTIME DESTINATION ${PYLIB_INSTALL_DIR} COMPONENT user +- LIBRARY DESTINATION ${PYLIB_INSTALL_DIR} COMPONENT user) +- endif () +-elseif (BUILD_PY3) +- if (NOT PYTHONLIBS_FOUND) +- message (STATUS "Python3 libraries not found") +- endif () +- if (NOT Boost_FOUND) +- message (STATUS "Boost python3 component not found") +- endif () +- set(USE_PYTHON3 OFF) ++ install (TARGETS ${target_name} ++ RUNTIME DESTINATION ${PYTHON_SITE_DIR} COMPONENT user ++ LIBRARY DESTINATION ${PYTHON_SITE_DIR} COMPONENT user) ++else () ++ # If Boost python components were not found, turn off all python support. ++ message (STATUS "Boost python support not found!") ++ if (APPLE AND USE_PYTHON) ++ message (STATUS " If your Boost is from Macports, you need the +python26 variant to get Python support.") ++ endif () ++ if (BOOST_CUSTOM) ++ message (STATUS " Please set the variable Boost_PYTHON_LIBRARIES to the location of the boost python libraries.") ++ endif () ++ message (FATAL_ERROR "Python module cannot be built. Either disable python support or check your boost installation.") + endif () +-- +2.14.2 + diff --git a/media-libs/openimageio/files/openimageio-1.7.17-use-gnuinstalldirs.patch b/media-libs/openimageio/files/openimageio-1.7.17-use-gnuinstalldirs.patch new file mode 100644 index 000000000000..e77b362be699 --- /dev/null +++ b/media-libs/openimageio/files/openimageio-1.7.17-use-gnuinstalldirs.patch @@ -0,0 +1,247 @@ +From 603f85536982669f2618be061511c48c93e1c5e9 Mon Sep 17 00:00:00 2001 +From: Jonathan Scruggs <j.scruggs@gmail.com> +Date: Thu, 28 Sep 2017 16:35:26 +0100 +Subject: [PATCH 1/2] oiio/RB-1.7: Use GNUInstallDirs for installation paths + (#1747) + +* Change all hard coded paths to GNUInstallDirs varibles. +* Remove variable setting in install.cmake file since + GNUInstallDirs does all this for you. +* Added new search paths for fonts. + +Backported from: +https://github.com/OpenImageIO/oiio/commit/1383ba314ec2522b4f0c7e9037bd546b68bc2d7d +--- + CMakeLists.txt | 51 ++++++++------------------------ + src/cmake/oiio_macros.cmake | 6 ++-- + src/doc/CMakeLists.txt | 4 +-- + src/fonts/CMakeLists.txt | 2 +- + src/include/CMakeLists.txt | 2 +- + src/libOpenImageIO/imagebufalgo_draw.cpp | 11 +++++++ + src/nuke/txReader/CMakeLists.txt | 3 +- + src/nuke/txWriter/CMakeLists.txt | 3 +- + 8 files changed, 32 insertions(+), 50 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index ca8da565..635c61f4 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -353,6 +353,8 @@ if (LINKSTATIC) + set (Boost_USE_STATIC_LIBS 1) + endif () + ++include (GNUInstallDirs) ++ + set (CMAKE_MODULE_PATH + "${PROJECT_SOURCE_DIR}/src/cmake/modules" + "${PROJECT_SOURCE_DIR}/src/cmake") +@@ -371,58 +373,32 @@ include_directories ( + + + ########################################################################### +-# Paths for install tree customization. Note that relative paths are relative +-# to CMAKE_INSTALL_PREFIX. +-set (DEFAULT_BIN_INSTALL_DIR "bin") +-set (DEFAULT_LIB_INSTALL_DIR "lib") +-set (DEFAULT_INCLUDE_INSTALL_DIR "include/OpenImageIO") ++# Set install paths for the python modules ++# TODO: Figure out how to get the correct python directory ++ + if (UNIX AND NOT SELF_CONTAINED_INSTALL_TREE) +- # Try to be well-behaved and install into reasonable places according to +- # the "standard" unix directory heirarchy + # TODO: Figure out how to get the correct python directory +- set (DEFAULT_PYLIB_INSTALL_DIR "lib/python/site-packages") +- set (DEFAULT_PYLIB3_INSTALL_DIR "lib/python3/site-packages") +- set (DEFAULT_DOC_INSTALL_DIR "share/doc/OpenImageIO") +- set (DEFAULT_MAN_INSTALL_DIR "share/man/man1") +- set (DEFAULT_FONTS_INSTALL_DIR "share/fonts/oiio") ++ set (DEFAULT_PYLIB_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/python/site-packages") ++ set (DEFAULT_PYLIB3_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/python3/site-packages") + else () +- # Here is the "self-contained install tree" case: the expectation here is +- # that everything OIIO related will go into its own directory, not into +- # some standard system heirarchy. ++ # Here is the "self-contained install tree" case: the expectation here ++ # is that everything related to this project will go into its own ++ # directory, not into some standard system heirarchy. + set (DEFAULT_PYLIB_INSTALL_DIR "python") + set (DEFAULT_PYLIB3_INSTALL_DIR "python3") +- set (DEFAULT_DOC_INSTALL_DIR "doc") +- set (DEFAULT_MAN_INSTALL_DIR "doc/man") +- set (DEFAULT_FONTS_INSTALL_DIR "fonts/oiio") + endif () + if (EXEC_INSTALL_PREFIX) + # Tack on an extra prefix to support multi-arch builds. +- set (DEFAULT_BIN_INSTALL_DIR "${EXEC_INSTALL_PREFIX}/${DEFAULT_BIN_INSTALL_DIR}") +- set (DEFAULT_LIB_INSTALL_DIR "${EXEC_INSTALL_PREFIX}/${DEFAULT_LIB_INSTALL_DIR}") + set (DEFAULT_PYLIB_INSTALL_DIR "${EXEC_INSTALL_PREFIX}/${DEFAULT_PYLIB_INSTALL_DIR}") + set (DEFAULT_PYLIB3_INSTALL_DIR "${EXEC_INSTALL_PREFIX}/${DEFAULT_PYLIB3_INSTALL_DIR}") +- set (DEFAULT_FONTS_INSTALL_DIR "${EXEC_INSTALL_PREFIX}/${DEFAULT_FONTS_INSTALL_DIR}") + endif () + # Set up cmake cache variables corresponding to the defaults deduced above, so + # that the user can override them as desired: +-set (BIN_INSTALL_DIR ${DEFAULT_BIN_INSTALL_DIR} CACHE STRING +- "Install location for binaries (relative to CMAKE_INSTALL_PREFIX or absolute)") +-set (LIB_INSTALL_DIR ${DEFAULT_LIB_INSTALL_DIR} CACHE STRING +- "Install location for libraries (relative to CMAKE_INSTALL_PREFIX or absolute)") + set (PYLIB_INSTALL_DIR ${DEFAULT_PYLIB_INSTALL_DIR} CACHE STRING + "Install location for python libraries (relative to CMAKE_INSTALL_PREFIX or absolute)") + set (PYLIB3_INSTALL_DIR ${DEFAULT_PYLIB3_INSTALL_DIR} CACHE STRING + "Install location for python3 libraries (relative to CMAKE_INSTALL_PREFIX or absolute)") +-set (INCLUDE_INSTALL_DIR ${DEFAULT_INCLUDE_INSTALL_DIR} CACHE STRING +- "Install location of header files (relative to CMAKE_INSTALL_PREFIX or absolute)") +-set (DOC_INSTALL_DIR ${DEFAULT_DOC_INSTALL_DIR} CACHE STRING +- "Install location for documentation (relative to CMAKE_INSTALL_PREFIX or absolute)") +-set (FONTS_INSTALL_DIR ${DEFAULT_FONTS_INSTALL_DIR} CACHE STRING +- "Install location for fonts (relative to CMAKE_INSTALL_PREFIX or absolute)") +-if (UNIX) +- set (MAN_INSTALL_DIR ${DEFAULT_MAN_INSTALL_DIR} CACHE STRING +- "Install location for manual pages (relative to CMAKE_INSTALL_PREFIX or absolute)") +-endif() ++ + set (PLUGIN_SEARCH_PATH "" CACHE STRING "Default plugin search path") + + set (INSTALL_DOCS ON CACHE BOOL "Install documentation") +@@ -440,10 +416,7 @@ if (CMAKE_SKIP_RPATH) + set (CMAKE_SKIP_RPATH FALSE) + unset (CMAKE_INSTALL_RPATH) + else () +- set (CMAKE_INSTALL_RPATH "${LIB_INSTALL_DIR}") +- if (NOT IS_ABSOLUTE ${CMAKE_INSTALL_RPATH}) +- set (CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}") +- endif () ++ set (CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_FULL_LIBDIR}") + set (CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) + endif () + set (MACOSX_RPATH ON) +diff --git a/src/cmake/oiio_macros.cmake b/src/cmake/oiio_macros.cmake +index ee7be325..bfd07413 100644 +--- a/src/cmake/oiio_macros.cmake ++++ b/src/cmake/oiio_macros.cmake +@@ -7,9 +7,9 @@ + # + macro (oiio_install_targets) + install (TARGETS ${ARGN} +- RUNTIME DESTINATION "${BIN_INSTALL_DIR}" COMPONENT user +- LIBRARY DESTINATION "${LIB_INSTALL_DIR}" COMPONENT user +- ARCHIVE DESTINATION "${LIB_INSTALL_DIR}" COMPONENT developer) ++ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT user ++ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT user ++ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT developer) + endmacro () + + # Macro to add a build target for an IO plugin. +diff --git a/src/doc/CMakeLists.txt b/src/doc/CMakeLists.txt +index eea04340..a3dc1e71 100644 +--- a/src/doc/CMakeLists.txt ++++ b/src/doc/CMakeLists.txt +@@ -7,7 +7,7 @@ set (public_docs + ) + + if (INSTALL_DOCS) +- install (FILES ${public_docs} DESTINATION ${DOC_INSTALL_DIR} ++ install (FILES ${public_docs} DESTINATION ${CMAKE_INSTALL_DOCDIR} + COMPONENT documentation) + endif () + +@@ -39,6 +39,6 @@ if (UNIX AND TXT2MAN AND PYTHONINTERP_FOUND) + + if (INSTALL_DOCS) + install (FILES ${manpage_files} +- DESTINATION ${MAN_INSTALL_DIR} COMPONENT documentation) ++ DESTINATION ${CMAKE_INSTALL_MANDIR} COMPONENT documentation) + endif () + endif() +diff --git a/src/fonts/CMakeLists.txt b/src/fonts/CMakeLists.txt +index 1e296da0..d1bd6409 100644 +--- a/src/fonts/CMakeLists.txt ++++ b/src/fonts/CMakeLists.txt +@@ -1,7 +1,7 @@ + file (GLOB public_fonts "*/*.ttf") + + if (INSTALL_FONTS AND USE_FREETYPE) +- install (FILES ${public_fonts} DESTINATION ${FONTS_INSTALL_DIR} ++ install (FILES ${public_fonts} DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/fonts/OpenImageIO + COMPONENT fonts) + endif () + +diff --git a/src/include/CMakeLists.txt b/src/include/CMakeLists.txt +index b063e6f3..3aa96877 100644 +--- a/src/include/CMakeLists.txt ++++ b/src/include/CMakeLists.txt +@@ -19,5 +19,5 @@ set (OIIO_BUILD_CPP14 ${USE_CPP14}) + configure_file(OpenImageIO/oiioversion.h.in "${CMAKE_BINARY_DIR}/include/OpenImageIO/oiioversion.h" @ONLY) + list(APPEND public_headers "${CMAKE_BINARY_DIR}/include/OpenImageIO/oiioversion.h") + +-install (FILES ${public_headers} DESTINATION ${INCLUDE_INSTALL_DIR} ++install (FILES ${public_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/OpenImageIO + COMPONENT developer) +diff --git a/src/libOpenImageIO/imagebufalgo_draw.cpp b/src/libOpenImageIO/imagebufalgo_draw.cpp +index 4e3cc985..a877ff6e 100644 +--- a/src/libOpenImageIO/imagebufalgo_draw.cpp ++++ b/src/libOpenImageIO/imagebufalgo_draw.cpp +@@ -685,27 +685,38 @@ ImageBufAlgo::render_text (ImageBuf &R, int x, int y, string_view text, + if (home && *home) { + std::string h (home); + search_dirs.push_back (h + "/fonts"); ++ search_dirs.push_back (h + "/fonts/OpenImageIO"); + search_dirs.push_back (h + "/Fonts"); ++ search_dirs.push_back (h + "/Fonts/OpenImageIO"); + search_dirs.push_back (h + "/Library/Fonts"); ++ search_dirs.push_back (h + "/Library/Fonts/OpenImageIO"); + } + const char *systemRoot = getenv ("SystemRoot"); + if (systemRoot && *systemRoot) + search_dirs.push_back (std::string(systemRoot) + "/Fonts"); ++ search_dirs.push_back (std::string(systemRoot) + "/Fonts/OpenImageIO"); + search_dirs.push_back ("/usr/share/fonts"); ++ + search_dirs.push_back ("/Library/Fonts"); ++ search_dirs.push_back ("/Library/Fonts/OpenImageIO"); + search_dirs.push_back ("C:/Windows/Fonts"); ++ search_dirs.push_back ("C:/Windows/Fonts/OpenImageIO"); + search_dirs.push_back ("/usr/local/share/fonts"); ++ search_dirs.push_back ("/usr/local/share/fonts/OpenImageIO"); + search_dirs.push_back ("/opt/local/share/fonts"); ++ search_dirs.push_back ("/opt/local/share/fonts/OpenImageIO"); + // Try $OPENIMAGEIOHOME/fonts + const char *oiiohomedir = getenv ("OPENIMAGEIOHOME"); + if (oiiohomedir && *oiiohomedir) + search_dirs.push_back (std::string(oiiohomedir) + "/fonts"); ++ search_dirs.push_back (std::string(oiiohomedir) + "/fonts/OpenImageIO"); + // Try ../fonts relative to where this executing binary came from + std::string this_program = OIIO::Sysutil::this_program_path (); + if (this_program.size()) { + std::string path = Filesystem::parent_path (this_program); + path = Filesystem::parent_path (path); + search_dirs.push_back (path+"/fonts"); ++ search_dirs.push_back (path+"/fonts/OpenImageIO"); + } + + // Try to find the font. Experiment with several extensions +diff --git a/src/nuke/txReader/CMakeLists.txt b/src/nuke/txReader/CMakeLists.txt +index 3e72b6d4..660a2ee1 100644 +--- a/src/nuke/txReader/CMakeLists.txt ++++ b/src/nuke/txReader/CMakeLists.txt +@@ -28,5 +28,4 @@ else () + COMPILE_FLAGS "-fPIC -msse") + endif () + +-install (TARGETS txReader +- LIBRARY DESTINATION "${LIB_INSTALL_DIR}/nuke") ++oiio_install_targets (txReader) +diff --git a/src/nuke/txWriter/CMakeLists.txt b/src/nuke/txWriter/CMakeLists.txt +index 66312bc4..0fb70a36 100644 +--- a/src/nuke/txWriter/CMakeLists.txt ++++ b/src/nuke/txWriter/CMakeLists.txt +@@ -28,5 +28,4 @@ else () + COMPILE_FLAGS "-fPIC -msse") + endif () + +-install (TARGETS txWriter +- LIBRARY DESTINATION "${LIB_INSTALL_DIR}/nuke") ++oiio_install_targets (txWriter) +-- +2.14.2 + diff --git a/media-libs/openimageio/metadata.xml b/media-libs/openimageio/metadata.xml index f8f22f8b6fd2..935e4012defd 100644 --- a/media-libs/openimageio/metadata.xml +++ b/media-libs/openimageio/metadata.xml @@ -6,8 +6,20 @@ <name>Gentoo Graphics Project</name> </maintainer> <use> + <flag name="cpu_flags_x86_avx512f" restrict=">=media-libs/openimageio-1.7.11"> + SIMD Optimization + </flag> + <flag name="cpu_flags_x86_f16c" restrict=">=media-libs/openimageio-1.7.11"> + SIMD Optimization + </flag> <flag name="colorio">Use <pkg>media-libs/opencolorio</pkg></flag> + <flag name="field3d" restrict=">=media-libs/openimageio-1.6.18"> + Use <pkg>media-libs/Field3D</pkg> + </flag> <flag name="opencv">Use <pkg>media-libs/opencv</pkg></flag> + <flag name="ptex" restrict=">=media-libs/openimageio-1.6.18"> + Use <pkg>media-libs/ptex</pkg> + </flag> <flag name="tbb">Use <pkg>dev-cpp/tbb</pkg></flag> </use> <upstream> diff --git a/media-libs/openimageio/openimageio-1.6.18.ebuild b/media-libs/openimageio/openimageio-1.6.18.ebuild new file mode 100644 index 000000000000..874a927f7b8d --- /dev/null +++ b/media-libs/openimageio/openimageio-1.6.18.ebuild @@ -0,0 +1,109 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 +PYTHON_COMPAT=( python{2_7,3_4,3_5,3_6} ) + +inherit cmake-utils vcs-snapshot python-single-r1 + +DESCRIPTION="A library for reading and writing images" +HOMEPAGE="https://sites.google.com/site/openimageio/ https://github.com/OpenImageIO" +SRC_URI="https://github.com/OpenImageIO/oiio/archive/Release-${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~ppc64 ~x86" + +X86_CPU_FEATURES=( sse2:sse2 sse3:sse3 ssse3:ssse3 sse4_1:sse4.1 sse4_2:sse4.2 ) +CPU_FEATURES=( ${X86_CPU_FEATURES[@]/#/cpu_flags_x86_} ) + +IUSE="colorio doc ffmpeg field3d gif jpeg2k opencv opengl ptex python qt4 raw ssl +truetype ${CPU_FEATURES[@]%:*}" +REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" + +RESTRICT="test" #431412 + +RDEPEND="dev-libs/boost:= + dev-libs/pugixml:0= + media-libs/ilmbase:= + media-libs/libpng:0= + >=media-libs/libwebp-0.2.1:= + media-libs/openexr:= + media-libs/tiff:0= + sys-libs/zlib:= + virtual/jpeg:= + colorio? ( media-libs/opencolorio:0= ) + ffmpeg? ( media-video/ffmpeg:0= ) + field3d? ( media-libs/Field3D ) + gif? ( media-libs/giflib:0= ) + jpeg2k? ( >=media-libs/openjpeg-1.5:0= ) + opencv? ( media-libs/opencv:= ) + opengl? ( + virtual/glu + virtual/opengl + ) + ptex? ( media-libs/ptex ) + python? ( + ${PYTHON_DEPS} + dev-libs/boost:=[python,${PYTHON_USEDEP}] + ) + qt4? ( + dev-qt/qtcore:4 + dev-qt/qtgui:4 + dev-qt/qtopengl:4 + media-libs/glew:= + ) + raw? ( media-libs/libraw:0= ) + ssl? ( dev-libs/openssl:0= ) + truetype? ( media-libs/freetype:2= )" +DEPEND="${RDEPEND}" + +PATCHES=( + "${FILESDIR}/${P}-use-gnuinstalldirs.patch" + "${FILESDIR}/${P}-make-python-and-boost-detection-more-generic.patch" + "${FILESDIR}/${P}-repair-breaks-after-boost-python-1.65-changes.patch" +) + +DOCS=( CHANGES CREDITS README.rst src/doc/${PN}.pdf ) + +pkg_setup() { + use python && python-single-r1_pkg_setup +} + +src_configure() { + # Build with SIMD support (choices: 0, sse2, sse3," + # ssse3, sse4.1, sse4.2)" + local cpufeature + local mysimd=() + for cpufeature in "${CPU_FEATURES[@]}"; do + use "${cpufeature%:*}" && mysimd+=("${cpufeature#*:}") + done + # If no CPU SIMDs were used, completely disable them + [[ -z ${mysimd} ]] && mysimd=("0") + + local mycmakeargs=( + -DCMAKE_INSTALL_DOCDIR="share/doc/${PF}" + -DINSTALL_DOCS=$(usex doc) + -DOIIO_BUILD_CPP11=ON + -DOIIO_BUILD_TESTS=OFF # as they are RESTRICTed + -DSTOP_ON_WARNING=OFF + -DUSE_EXTERNAL_PUGIXML=ON + -DUSE_FFMPEG=$(usex ffmpeg) + -DUSE_FIELD3D=$(usex field3d) + -DUSE_FREETYPE=$(usex truetype) + -DUSE_GIF=$(usex gif) + -DUSE_JPEGTURBO=ON + -DUSE_LIBRAW=$(usex raw) + -DUSE_NUKE=NO # Missing in Gentoo + -DUSE_OCIO=$(usex colorio) + -DUSE_OPENCV=$(usex opencv) + -DUSE_OPENGL=$(usex opengl) + -DUSE_OPENJPEG=$(usex jpeg2k) + -DUSE_OPENSSL=$(usex ssl) + -DUSE_PTEX=$(usex ptex) + -DUSE_PYTHON=$(usex python) + -DUSE_QT=$(usex qt4) + -DUSE_SIMD="$(IFS=","; echo "${mysimd[*]}")" + ) + + cmake-utils_src_configure +} diff --git a/media-libs/openimageio/openimageio-1.7.17.ebuild b/media-libs/openimageio/openimageio-1.7.17.ebuild new file mode 100644 index 000000000000..20a3d9542038 --- /dev/null +++ b/media-libs/openimageio/openimageio-1.7.17.ebuild @@ -0,0 +1,113 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 +PYTHON_COMPAT=( python{2_7,3_4,3_5,3_6} ) + +inherit cmake-utils vcs-snapshot python-single-r1 + +DESCRIPTION="A library for reading and writing images" +HOMEPAGE="https://sites.google.com/site/openimageio/ https://github.com/OpenImageIO" +SRC_URI="https://github.com/OpenImageIO/oiio/archive/Release-${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~ppc64 ~x86" + +X86_CPU_FEATURES=( + sse2:sse2 sse3:sse3 ssse3:ssse3 sse4_1:sse4.1 sse4_2:sse4.2 + avx:avx avx2:avx2 avx512f:avx512f f16c:f16c +) +CPU_FEATURES=( ${X86_CPU_FEATURES[@]/#/cpu_flags_x86_} ) + +IUSE="colorio doc ffmpeg field3d gif jpeg2k opencv opengl ptex python qt4 raw ssl +truetype ${CPU_FEATURES[@]%:*}" +REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" + +RESTRICT="test" #431412 + +RDEPEND=">=dev-libs/boost-1.62:= + dev-libs/pugixml:= + >=media-libs/ilmbase-2.2.0-r1:= + media-libs/libpng:0= + >=media-libs/libwebp-0.2.1:= + >=media-libs/openexr-2.2.0-r2:= + media-libs/tiff:0= + sys-libs/zlib:= + virtual/jpeg:= + colorio? ( media-libs/opencolorio:= ) + ffmpeg? ( media-video/ffmpeg:= ) + field3d? ( media-libs/Field3D:= ) + gif? ( media-libs/giflib:0= ) + jpeg2k? ( >=media-libs/openjpeg-1.5:0= ) + opencv? ( media-libs/opencv:= ) + opengl? ( + virtual/glu + virtual/opengl + ) + ptex? ( media-libs/ptex:= ) + python? ( + ${PYTHON_DEPS} + dev-libs/boost:=[python,${PYTHON_USEDEP}] + ) + qt4? ( + dev-qt/qtcore:4 + dev-qt/qtgui:4 + dev-qt/qtopengl:4 + media-libs/glew:= + ) + raw? ( media-libs/libraw:= ) + ssl? ( dev-libs/openssl:0= ) + truetype? ( media-libs/freetype:2= )" +DEPEND="${RDEPEND} + doc? ( app-doc/doxygen[latex] )" + +PATCHES=( + "${FILESDIR}/${P}-use-gnuinstalldirs.patch" + "${FILESDIR}/${P}-make-python-and-boost-detection-more-generic.patch" +) + +DOCS=( CHANGES.md CREDITS.md README.md src/doc/${PN}.pdf ) + +pkg_setup() { + use python && python-single-r1_pkg_setup +} + +src_configure() { + # Build with SIMD support + local cpufeature + local mysimd=() + for cpufeature in "${CPU_FEATURES[@]}"; do + use "${cpufeature%:*}" && mysimd+=("${cpufeature#*:}") + done + + # If no CPU SIMDs were used, completely disable them + [[ -z ${mysimd} ]] && mysimd=("0") + + local mycmakeargs=( + -DCMAKE_INSTALL_DOCDIR="share/doc/${PF}" + -DINSTALL_DOCS=$(usex doc) + -DOIIO_BUILD_TESTS=OFF # as they are RESTRICTed + -DSTOP_ON_WARNING=OFF + -DUSE_CPP14=ON + -DUSE_EXTERNAL_PUGIXML=ON + -DUSE_FFMPEG=$(usex ffmpeg) + -DUSE_FIELD3D=$(usex field3d) + -DUSE_FREETYPE=$(usex truetype) + -DUSE_GIF=$(usex gif) + -DUSE_JPEGTURBO=ON + -DUSE_LIBRAW=$(usex raw) + -DUSE_NUKE=NO # Missing in Gentoo + -DUSE_NUKE=OFF + -DUSE_OCIO=$(usex colorio) + -DUSE_OPENCV=$(usex opencv) + -DUSE_OPENGL=$(usex opengl) + -DUSE_OPENJPEG=$(usex jpeg2k) + -DUSE_OPENSSL=$(usex ssl) + -DUSE_PTEX=$(usex ptex) + -DUSE_PYTHON=$(usex python) + -DUSE_QT=$(usex qt4) + -DUSE_SIMD="$(IFS=","; echo "${mysimd[*]}")" + ) + + cmake-utils_src_configure +} |