app-crypt/qca: fix c++11 build
authorAlon Bar-Lev <alonbl@gentoo.org>
Tue, 21 Mar 2017 10:41:24 +0000 (12:41 +0200)
committerAlon Bar-Lev <alonbl@gentoo.org>
Tue, 21 Mar 2017 10:42:16 +0000 (12:42 +0200)
Bug: 612238

Package-Manager: Portage-2.3.3, Repoman-2.3.1

app-crypt/qca/files/qca-2.1.3-c++11.patch [new file with mode: 0644]
app-crypt/qca/qca-2.1.3.ebuild

diff --git a/app-crypt/qca/files/qca-2.1.3-c++11.patch b/app-crypt/qca/files/qca-2.1.3-c++11.patch
new file mode 100644 (file)
index 0000000..a12f96b
--- /dev/null
@@ -0,0 +1,97 @@
+From 5f18ebc705ec98e883aa63cb537e36e6a08b7e34 Mon Sep 17 00:00:00 2001
+From: Alon Bar-Lev <alon.barlev@gmail.com>
+Date: Tue, 21 Mar 2017 12:23:17 +0200
+Subject: [PATCH] build: fix C++11 throwing distructors
+
+For >=C++11, explicitly mark throwing destructors `noexcept(false)`
+
+Thanks: Peter-Levine <plevine457@gmail.com>
+---
+ Doxyfile.in                                  | 2 +-
+ src/botantools/botan/alloc_mmap/mmap_mem.cpp | 2 +-
+ src/botantools/botan/botan/allocate.h        | 8 +++++++-
+ src/botantools/botan/botan/mem_pool.h        | 2 +-
+ src/botantools/botan/mem_pool.cpp            | 2 +-
+ 5 files changed, 11 insertions(+), 5 deletions(-)
+
+diff --git a/Doxyfile.in b/Doxyfile.in
+index 59d9afe..844c234 100644
+--- a/Doxyfile.in
++++ b/Doxyfile.in
+@@ -1070,7 +1070,7 @@ PREDEFINED             = DOXYGEN_SHOULD_SKIP_THIS \
+ # The macro definition that is found in the sources will be used. 
+ # Use the PREDEFINED tag if you want to use a different macro definition.
+-EXPAND_AS_DEFINED      = QCA_EXPORT
++EXPAND_AS_DEFINED      = QCA_EXPORT QCA_NOEXCEPT
+ # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
+ # doxygen's preprocessor will remove all function-like macros that are alone 
+diff --git a/src/botantools/botan/alloc_mmap/mmap_mem.cpp b/src/botantools/botan/alloc_mmap/mmap_mem.cpp
+index 362b688..54f0d23 100644
+--- a/src/botantools/botan/alloc_mmap/mmap_mem.cpp
++++ b/src/botantools/botan/alloc_mmap/mmap_mem.cpp
+@@ -107,7 +107,7 @@ void* MemoryMapping_Allocator::alloc_block(u32bit n)
+             umask(old_umask);
+             }
+-         ~TemporaryFile()
++         ~TemporaryFile() QCA_NOEXCEPT(false)
+             {
+             delete[] filepath;
+             if(fd != -1 && close(fd) == -1)
+diff --git a/src/botantools/botan/botan/allocate.h b/src/botantools/botan/botan/allocate.h
+index 0ac351e..52bc397 100644
+--- a/src/botantools/botan/botan/allocate.h
++++ b/src/botantools/botan/botan/allocate.h
+@@ -40,6 +40,12 @@ namespace QCA { // WRAPNS_LINE
+ #include <string>
+ namespace QCA { // WRAPNS_LINE
++#if __cplusplus >= 201103L
++#define QCA_NOEXCEPT(x) noexcept(x)
++#else
++#define QCA_NOEXCEPT(x)
++#endif
++
+ namespace Botan {
+ /*************************************************
+@@ -58,7 +64,7 @@ class Allocator
+       virtual void init() {}
+       virtual void destroy() {}
+-      virtual ~Allocator() {}
++      virtual ~Allocator() QCA_NOEXCEPT(false) {}
+    };
+ /*************************************************
+diff --git a/src/botantools/botan/botan/mem_pool.h b/src/botantools/botan/botan/mem_pool.h
+index 32834b8..1cb903e 100644
+--- a/src/botantools/botan/botan/mem_pool.h
++++ b/src/botantools/botan/botan/mem_pool.h
+@@ -63,7 +63,7 @@ class Pooling_Allocator : public Allocator
+       void destroy();
+       Pooling_Allocator(u32bit, bool);
+-      ~Pooling_Allocator();
++      ~Pooling_Allocator() QCA_NOEXCEPT(false);
+    private:
+       void get_more_core(u32bit);
+       byte* allocate_blocks(u32bit);
+diff --git a/src/botantools/botan/mem_pool.cpp b/src/botantools/botan/mem_pool.cpp
+index 00280ec..baa47aa 100644
+--- a/src/botantools/botan/mem_pool.cpp
++++ b/src/botantools/botan/mem_pool.cpp
+@@ -171,7 +171,7 @@ Pooling_Allocator::Pooling_Allocator(u32bit p_size, bool) :
+ /*************************************************
+ * Pooling_Allocator Destructor                   *
+ *************************************************/
+-Pooling_Allocator::~Pooling_Allocator()
++Pooling_Allocator::~Pooling_Allocator() QCA_NOEXCEPT(false)
+    {
+    delete mutex;
+    if(blocks.size())
+-- 
+2.10.2
+
index fc600e04fb7542d85f257decadfb14409ed07ea9..4b9e9bf34294ed0c5ebf45b1a2543d708581eebc 100644 (file)
@@ -55,6 +55,7 @@ DOCS=( README TODO )
 
 PATCHES=(
        "${FILESDIR}/${PN}-disable-pgp-test.patch"
+       "${FILESDIR}/${P}-c++11.patch"
 )
 
 qca_plugin_use() {