[arch-commits] Commit in openimageio/trunk (PKGBUILD ustring-cxx11-std-string.patch)

Evangelos Foutras foutrelis at archlinux.org
Fri Jun 26 20:55:32 UTC 2015


    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 <lg at 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



More information about the arch-commits mailing list