summaryrefslogtreecommitdiff
path: root/media-libs/openimageio/files/openimageio-1.6.18-repair-breaks-after-boost-python-1.65-changes.patch
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2017-12-23 20:48:53 +0000
committerV3n3RiX <venerix@redcorelinux.org>2017-12-23 20:48:53 +0000
commit51536d2fe4697ba9114d611178bb9e20d3d5b729 (patch)
tree30b91d98e65985a575940ed49e756697c1f049c2 /media-libs/openimageio/files/openimageio-1.6.18-repair-breaks-after-boost-python-1.65-changes.patch
parent4ab6db5717ef23f29320d4c6fb9ebdb8dec1f193 (diff)
gentoo resync : 23.12.2017
Diffstat (limited to 'media-libs/openimageio/files/openimageio-1.6.18-repair-breaks-after-boost-python-1.65-changes.patch')
-rw-r--r--media-libs/openimageio/files/openimageio-1.6.18-repair-breaks-after-boost-python-1.65-changes.patch251
1 files changed, 251 insertions, 0 deletions
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
+