diff --git a/trunk/PKGBUILD b/trunk/PKGBUILD index 8ba59115e5..407a85fc70 100644 --- a/trunk/PKGBUILD +++ b/trunk/PKGBUILD @@ -14,15 +14,18 @@ makedepends=('cmake' 'qt4' 'python2' 'boost' 'mesa' 'git') optdepends=('qt4: iv image viewer' 'python2: bindings support') source=(git+git://github.com/OpenImageIO/oiio.git#tag=Release-${pkgver} + ustring-cxx11-std-string.patch fix-compiler-warning.patch stdmath.patch) md5sums=('SKIP' + 'ec2e922a5297331901fd9331fcfb6bdb' 'f41243f93ad9370060efdad931750289' '7b819bf20cf2c13cbde5fc6511e39f35') prepare() { cd oiio + patch -Np1 < "$srcdir/ustring-cxx11-std-string.patch" patch -Np1 < "$srcdir/fix-compiler-warning.patch" patch -Np1 < "$srcdir/stdmath.patch" } diff --git a/trunk/ustring-cxx11-std-string.patch b/trunk/ustring-cxx11-std-string.patch new file mode 100644 index 0000000000..db4a17c936 --- /dev/null +++ b/trunk/ustring-cxx11-std-string.patch @@ -0,0 +1,35 @@ +From a2ccfad7c4962a5203ea2cf755fd102b4c67f997 Mon Sep 17 00:00:00 2001 +From: Larry Gritz +Date: Fri, 26 Jun 2015 11:46:23 -0700 +Subject: [PATCH] ustring fixes for new gcc (5.1+) std::string ABI + +This makes it work (and adds a test). +We still need to return and do something more clever for that case. +I'll need to install gcc 5.1 first to see how the internals work. +But in the mean time, at least this will unbreak things for people +already on gcc 5.1. + +Fixes #1174 +--- + src/libutil/ustring.cpp | 7 ++++++- + src/libutil/ustring_test.cpp | 2 ++ + 2 files changed, 8 insertions(+), 1 deletion(-) + +diff --git a/src/libutil/ustring.cpp b/src/libutil/ustring.cpp +index 1d12533..4b4a8c2 100644 +--- a/src/libutil/ustring.cpp ++++ b/src/libutil/ustring.cpp +@@ -318,7 +318,12 @@ ustring::TableRep::TableRep (string_view strref, size_t hash) + // the std::string to make it point to our chars! In such a case, the + // destructor will be careful not to allow a deallocation. + +-#if defined(__GNUC__) && !defined(_LIBCPP_VERSION) ++#if defined(__GNUC__) && !defined(_LIBCPP_VERSION) && defined(_GLIBCXX_USE_CXX11_ABI) && _GLIBCXX_USE_CXX11_ABI ++ // NEW gcc ABI ++ // FIXME -- do something smart with this. ++ ++#elif defined(__GNUC__) && !defined(_LIBCPP_VERSION) ++ // OLD gcc ABI + // It turns out that the first field of a gcc std::string is a pointer + // to the characters within the basic_string::_Rep. We merely redirect + // that pointer, though for std::string to function properly, the chars