Date: Friday, June 26, 2015 @ 22:55:32 Author: foutrelis Revision: 135909
Fix build with GCC 5.1 and C++11 ABI https://github.com/OpenImageIO/oiio/issues/1174 Added: openimageio/trunk/ustring-cxx11-std-string.patch Modified: openimageio/trunk/PKGBUILD --------------------------------+ PKGBUILD | 3 +++ ustring-cxx11-std-string.patch | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) Modified: PKGBUILD =================================================================== --- PKGBUILD 2015-06-26 16:17:24 UTC (rev 135908) +++ PKGBUILD 2015-06-26 20:55:32 UTC (rev 135909) @@ -14,9 +14,11 @@ 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') @@ -23,6 +25,7 @@ prepare() { cd oiio + patch -Np1 < "$srcdir/ustring-cxx11-std-string.patch" patch -Np1 < "$srcdir/fix-compiler-warning.patch" patch -Np1 < "$srcdir/stdmath.patch" } Added: ustring-cxx11-std-string.patch =================================================================== --- ustring-cxx11-std-string.patch (rev 0) +++ ustring-cxx11-std-string.patch 2015-06-26 20:55:32 UTC (rev 135909) @@ -0,0 +1,35 @@ +From a2ccfad7c4962a5203ea2cf755fd102b4c67f997 Mon Sep 17 00:00:00 2001 +From: Larry Gritz <l...@larrygritz.com> +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