summaryrefslogtreecommitdiff
path: root/dev-libs/beecrypt
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2018-07-14 21:03:06 +0100
committerV3n3RiX <venerix@redcorelinux.org>2018-07-14 21:03:06 +0100
commit8376ef56580626e9c0f796d5b85b53a0a1c7d5f5 (patch)
tree7681bbd4e8b05407772df40a4bf04cbbc8afc3fa /dev-libs/beecrypt
parent30a9caf154332f12ca60756e1b75d2f0e3e1822d (diff)
gentoo resync : 14.07.2018
Diffstat (limited to 'dev-libs/beecrypt')
-rw-r--r--dev-libs/beecrypt/Manifest7
-rw-r--r--dev-libs/beecrypt/beecrypt-4.2.1-r4.ebuild96
-rw-r--r--dev-libs/beecrypt/files/beecrypt-4.2.1-build-system.patch160
-rwxr-xr-xdev-libs/beecrypt/files/beecrypt-4.2.1-c++11-allow-throw-in-destructors.patch26
-rw-r--r--dev-libs/beecrypt/files/beecrypt-4.2.1-cast-uchar.patch214
-rw-r--r--dev-libs/beecrypt/files/beecrypt-4.2.1-gcc-4.7.patch11
-rw-r--r--dev-libs/beecrypt/metadata.xml8
7 files changed, 522 insertions, 0 deletions
diff --git a/dev-libs/beecrypt/Manifest b/dev-libs/beecrypt/Manifest
new file mode 100644
index 000000000000..2959a8da8121
--- /dev/null
+++ b/dev-libs/beecrypt/Manifest
@@ -0,0 +1,7 @@
+AUX beecrypt-4.2.1-build-system.patch 3796 BLAKE2B 2b89dcd9c8c06420100d9c59e75c07368705f853e3cfe1f301fb4c1c2246545d55ae64f10ced7b3a1d8772b5b8ce2ff1dac86a157b9f715fbe131ef3e98fb9cc SHA512 6f13707e238cd2602c1482554381fc4ffb59d367fc095453ae05c7bc17438552745b304ce2ad5c071a367a0a90809173682676a392396521e20006f214db0c46
+AUX beecrypt-4.2.1-c++11-allow-throw-in-destructors.patch 734 BLAKE2B a0997dde4da38d681fc8cb2858eaf40e8e4ce6b90aafb0c53fb2b268cad41eefb8a0fce5d708bdd5509357ca77d52cec0dbbf2455f3498a08743db7ea37b53a9 SHA512 b6963a089587ecb495f097a890b57375f4580308f935424883ec0e694bf88848cded2e8108edc01f0887b6a8151437c94b7a2cd5bbdc48df151e16ea4755d2e4
+AUX beecrypt-4.2.1-cast-uchar.patch 8230 BLAKE2B ee94bf2e741e2c250ac4dbd6dbc7b2f5af4bbec8db5c87f7faefa381e8d973159f2b1a5e74189511eb43d200b7617cafd5cec18e23eaa69c99b68113fcf5998f SHA512 d344979022ea1e7ed2b7894bf9015996488cb5ec7c458aaad93a639ce457a1b790ba9e51b5369318566eb9ffc0df12d0b4108fd2997aa21c886dc079b836e973
+AUX beecrypt-4.2.1-gcc-4.7.patch 262 BLAKE2B a99fa0e61728bd38510622a1770c3ecad156654dd79a2e380a0aaf48cd895d1308964a4dbc0ebcbbed978f78c066e4e480e193eeeb9b0e941828301256b0cabb SHA512 908d688ae29f23a3f67cb1ddf8d2f5277853abbf6fe291e371fa8595b8c6c5e4293c1c15b80171270639b9d4f092b4602bbd5144448c4f19ff958d5522edbc77
+DIST beecrypt-4.2.1.tar.gz 882758 BLAKE2B 7ca25613cf95df8657c762d932618979783ea2ddfbaecdf066701d61a5f9ac76bd474a51eb65e140c83ef01880477cb7104e3d67c2fc078ae7b710637d18bb53 SHA512 59995d53c024efe6344a21ac0d6d55fbe652488a4a22cc6719f9fc3851d56697fa8738937d48aa1e6f9ebe749de61ac3c79a5f0cea793872213c3bdf922e71bc
+EBUILD beecrypt-4.2.1-r4.ebuild 2238 BLAKE2B b31b50b146d5a12ebd196b4675bce2b12d21c2f6224a7c8f46faf45dde0a3c78c2dc1f3cfc5cd34ec89bb2b3b865073c83897c423cf5b13f2a4a99a92186f443 SHA512 23bd4a818ec4b4965f3f08fe35910674cc572a5da85abaa00b9b4638f31b63ce620f686674c959d14de2cd5c12ca1be20457f82a49926b4ec089f6b17802dec9
+MISC metadata.xml 245 BLAKE2B a937157650e974ab296da9c19930deffad940d0c256541ea0338121f36fde942eb41529c5f3f39d37fdd3fe6e30eb8e9b987a0cb5c2b7736ff837c2e332ddf95 SHA512 7da531ddd382748b46b2be3d6324c0f654e772ca0d1b87884a5de0ae1f4cf8a6e32d9cd0e4b87b7fd632aa176f873d7e315adbb974c367b4539045fdeffde98b
diff --git a/dev-libs/beecrypt/beecrypt-4.2.1-r4.ebuild b/dev-libs/beecrypt/beecrypt-4.2.1-r4.ebuild
new file mode 100644
index 000000000000..a04082f9c8ae
--- /dev/null
+++ b/dev-libs/beecrypt/beecrypt-4.2.1-r4.ebuild
@@ -0,0 +1,96 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+PYTHON_COMPAT=( python2_7 )
+
+inherit autotools flag-o-matic java-pkg-opt-2 python-single-r1
+
+DESCRIPTION="General-purpose cryptography library"
+HOMEPAGE="https://sourceforge.net/projects/beecrypt/"
+SRC_URI="mirror://sourceforge/beecrypt/${P}.tar.gz"
+
+LICENSE="GPL-2 LGPL-2"
+SLOT="0"
+KEYWORDS="alpha amd64 arm hppa ~ia64 ppc ppc64 ~s390 ~sh ~sparc x86 ~x86-fbsd ~amd64-linux ~arm-linux ~x86-linux ~ppc-macos"
+IUSE="+threads java cxx python static-libs doc"
+REQUIRED_USE="cxx? ( threads )
+ python? ( ${PYTHON_REQUIRED_USE} )"
+
+COMMON_DEPEND="!<app-arch/rpm-4.2.1
+ cxx? ( >=dev-libs/icu-2.8:= )
+ python? ( ${PYTHON_DEPS} )"
+
+DEPEND="${COMMON_DEPEND}
+ java? ( >=virtual/jdk-1.4 )
+ doc? ( app-doc/doxygen
+ virtual/latex-base
+ dev-texlive/texlive-fontsextra
+ )"
+RDEPEND="${COMMON_DEPEND}
+ java? ( >=virtual/jre-1.4 )"
+
+DOCS=( BUGS README BENCHMARKS NEWS )
+PATCHES=(
+ "${FILESDIR}"/${P}-build-system.patch
+ "${FILESDIR}"/${P}-gcc-4.7.patch
+
+ # Fixes bug 596904
+ "${FILESDIR}"/${P}-c++11-allow-throw-in-destructors.patch
+ "${FILESDIR}"/${P}-cast-uchar.patch #618676
+)
+
+pkg_setup() {
+ use python && python-single-r1_pkg_setup
+ java-pkg-opt-2_pkg_setup
+}
+
+src_prepare() {
+ default
+ eautoreconf
+}
+
+src_configure() {
+ # ICU needs char16_t support now
+ # bug 649548
+ append-cxxflags -std=c++14
+
+ # cplusplus needs threads support
+ ac_cv_java_include=$(use java && java-pkg_get-jni-cflags) \
+ econf \
+ --disable-expert-mode \
+ $(use_enable static-libs static) \
+ $(use_enable threads) \
+ $(use_with python python "${PYTHON}") \
+ $(use_with cxx cplusplus) \
+ $(use_with java)
+}
+
+src_compile() {
+ default
+
+ if use doc; then
+ pushd include/beecrypt >/dev/null || die
+ doxygen || die "doxygen failed"
+ popd >/dev/null || die
+ HTML_DOCS=( docs/html/*.{css,html,js,png} )
+ fi
+}
+
+src_test() {
+ export BEECRYPT_CONF_FILE="${T}/beecrypt-test.conf"
+ echo "provider.1=${S}/c++/provider/.libs/base.so" > "${BEECRYPT_CONF_FILE}" || die
+ emake check bench
+}
+
+src_install() {
+ default
+
+ if use python; then
+ rm -f "${D%/}$(python_get_sitedir)"/_bc.*a || die
+ fi
+ if ! use static-libs; then
+ find "${D}" -name '*.la' -delete || die
+ fi
+}
diff --git a/dev-libs/beecrypt/files/beecrypt-4.2.1-build-system.patch b/dev-libs/beecrypt/files/beecrypt-4.2.1-build-system.patch
new file mode 100644
index 000000000000..e35095f53b6e
--- /dev/null
+++ b/dev-libs/beecrypt/files/beecrypt-4.2.1-build-system.patch
@@ -0,0 +1,160 @@
+--- beecrypt-4.2.1/configure.ac
++++ beecrypt-4.2.1/configure.ac
+@@ -11,7 +11,7 @@
+
+ # Checks for package options
+ AC_ARG_ENABLE(expert-mode, [ --enable-expert-mode follow user-defined CFLAGS settings [[default=no]]],[
+- ac_enable_expert_mode=yes
++ ac_enable_expert_mode=$enableval
+ ],[
+ if test "X$CFLAGS" != "X"; then
+ echo "enabling expert mode"
+@@ -25,7 +25,7 @@
+ if test "$ac_enable_expert_mode" = yes; then
+ AC_MSG_ERROR([--enable-debug cannot be used in conjunction with --enable-expert-mode])
+ fi
+- ac_enable_debug=yes
++ ac_enable_debug=$enableval
+ ],[
+ ac_enable_debug=no
+ ])
+@@ -456,7 +456,7 @@
+ ac_cv_python_include="-I`$PYTHON -c 'import distutils.sysconfig; print distutils.sysconfig.get_python_inc()'`"
+ ])
+ AC_CACHE_CHECK([where to install python libraries], ac_cv_python_libdir, [
+- ac_cv_python_libdir=`$PYTHON -c 'import distutils.sysconfig; print distutils.sysconfig.get_python_lib()'`
++ ac_cv_python_libdir=`$PYTHON -c 'import distutils.sysconfig; print distutils.sysconfig.get_python_lib(1, 0)'`
+ ])
+ fi
+ fi
+--- beecrypt-4.2.1/acinclude.m4
++++ beecrypt-4.2.1/acinclude.m4
+@@ -498,15 +498,6 @@ AC_DEFUN([BEE_GNU_CC],[
+ AC_SUBST(OPENMP_LIBS,"-lgomp")
+ fi
+ case $bc_target_arch in
+- x86_64 | athlon64 | athlon-fx | k8 | opteron | em64t | nocona)
+- CC="$CC -m64"
+- ;;
+- i[[3456]]86 | \
+- pentium* | \
+- athlon*)
+- CC="$CC -m32"
+- CCAS="$CCAS -m32"
+- ;;
+ ia64)
+ case $target_os in
+ # HP/UX on Itanium needs to be told that a long is 64-bit!
+@@ -525,17 +516,8 @@ AC_DEFUN([BEE_GNU_CC],[
+ aix*)
+ CC="$CC -maix64"
+ ;;
+- linux*)
+- CC="$CC -m64"
+- ;;
+ esac
+ ;;
+- sparc | sparcv8*)
+- CC="$CC -m32"
+- ;;
+- sparc64 | sparcv9*)
+- CC="$CC -m64"
+- ;;
+ esac
+ # Certain platforms needs special flags for multi-threaded code
+ if test "$ac_enable_threads" = yes; then
+@@ -646,14 +646,6 @@ dnl BEE_GNU_CXX
+ AC_DEFUN([BEE_GNU_CXX],[
+ AC_REQUIRE([AC_PROG_CXX])
+ case $bc_target_arch in
+- x86_64 | athlon64 | athlon-fx | k8 | opteron | em64t | nocona | core2)
+- CXX="$CXX -m64"
+- ;;
+- i[[3456]]86 | \
+- pentium* | \
+- athlon*)
+- CXX="$CXX -m32"
+- ;;
+ ia64)
+ case $target_os in
+ # HP/UX on Itanium needs to be told that a long is 64-bit!
+@@ -672,17 +664,8 @@ AC_DEFUN([BEE_GNU_CXX],[
+ aix*)
+ CXX="$CXX -maix64"
+ ;;
+- linux*)
+- CXX="$CXX -m64"
+- ;;
+ esac
+ ;;
+- sparc | sparcv8*)
+- CXX="$CXX -m32"
+- ;;
+- sparc64 | sparcv9*)
+- CXX="$CXX -m64"
+- ;;
+ esac
+ # Certain platforms needs special flags for multi-threaded code
+ if test "$ac_enable_threads" = yes; then
+--- beecrypt-4.2.1/java/Makefile.am
++++ beecrypt-4.2.1/java/Makefile.am
+@@ -26,7 +26,7 @@
+
+ INCLUDES = -I$(top_srcdir)/include
+
+-libaltdir=$(prefix)/lib@LIBALT@
++libaltdir=$(libdir)
+
+ libalt_LTLIBRARIES = libbeecrypt_java.la
+
+--- beecrypt-4.2.1/acinclude.m4
++++ beecrypt-4.2.1/acinclude.m4
+@@ -1589,20 +1589,5 @@
+ AC_SUBST(TYPEDEF_BC_THREADID_T,$bc_typedef_bc_threadid_t)
+ ])
+-
+-AH_BOTTOM([
+-#if ENABLE_THREADS
+-# ifndef _REENTRANT
+-# define _REENTRANT
+-# endif
+-# if LINUX
+-# define _LIBC_REENTRANT
+-# endif
+-#else
+-# ifdef _REENTRANT
+-# undef _REENTRANT
+-# endif
+-#endif
+-])
+
+
+ dnl BEE_THREAD_LOCAL_STORAGE
+@@ -1623,7 +1609,5 @@
+ ])
+
+ AH_BOTTOM([
+-#if !ENABLE_THREAD_LOCAL_STORAGE
+-# define __thread
+-#endif
++#include "config.threads.h"
+ ])
+--- beecrypt-4.2.1/config.threads.h
++++ beecrypt-4.2.1/config.threads.h
+@@ -0,0 +1,16 @@
++#if ENABLE_THREADS
++# ifndef _REENTRANT
++# define _REENTRANT
++# endif
++# if LINUX
++# define _LIBC_REENTRANT
++# endif
++#else
++# ifdef _REENTRANT
++# undef _REENTRANT
++# endif
++#endif
++
++#if !ENABLE_THREAD_LOCAL_STORAGE
++# define __thread
++#endif
diff --git a/dev-libs/beecrypt/files/beecrypt-4.2.1-c++11-allow-throw-in-destructors.patch b/dev-libs/beecrypt/files/beecrypt-4.2.1-c++11-allow-throw-in-destructors.patch
new file mode 100755
index 000000000000..0cb291d8ff15
--- /dev/null
+++ b/dev-libs/beecrypt/files/beecrypt-4.2.1-c++11-allow-throw-in-destructors.patch
@@ -0,0 +1,26 @@
+--- beecrypt-4.2.1/include/beecrypt/c++/lang/Object.h.old 2016-10-12 18:40:10.878868563 -0400
++++ beecrypt-4.2.1/include/beecrypt/c++/lang/Object.h 2016-10-12 19:17:22.508857979 -0400
+@@ -145,7 +145,11 @@
+ waiter* prev;
+
+ waiter(bc_threadid_t owner, unsigned int lock_count);
++#if __cplusplus < 201103L
+ ~waiter();
++#else
++ ~waiter() noexcept(false);
++#endif
+ };
+
+ waiter* _lock_head;
+--- beecrypt-4.2.1/c++/lang/Object.cxx.old 2016-10-12 18:40:39.024665316 -0400
++++ beecrypt-4.2.1/c++/lang/Object.cxx 2016-10-12 19:14:41.630529720 -0400
+@@ -767,6 +767,9 @@
+ }
+
+ Object::FairMonitor::waiter::~waiter()
++#if __cplusplus >= 201103L
++noexcept(false)
++#endif
+ {
+ #if WIN32
+ if (!CloseHandle(event))
diff --git a/dev-libs/beecrypt/files/beecrypt-4.2.1-cast-uchar.patch b/dev-libs/beecrypt/files/beecrypt-4.2.1-cast-uchar.patch
new file mode 100644
index 000000000000..8efedc01e4aa
--- /dev/null
+++ b/dev-libs/beecrypt/files/beecrypt-4.2.1-cast-uchar.patch
@@ -0,0 +1,214 @@
+beecrypt's c++ api uses jchar arrays for strings, while ICU 59 expects
+char16_t type
+
+In practice these both seem to be defined as short int on amd64 so it
+might be okay to just reinterpret_cast them? There's probably no easy
+way out on a platform where char16_t won't match jchar
+
+Patch by Valeriy Malov <jazzvoid@gmail.com>
+https://bugs.gentoo.org/618676
+
+--- a/c++/io/DataInputStream.cxx
++++ b/c++/io/DataInputStream.cxx
+@@ -201,7 +201,7 @@ String DataInputStream::readUTF() throw (IOException)
+ jchar* buffer = new jchar[ulen+1];
+
+ status = U_ZERO_ERROR;
+- ucnv_toUChars(_utf, buffer, ulen+1, (const char*) data, (jint) utflen, &status);
++ ucnv_toUChars(_utf, reinterpret_cast<UChar*>(buffer), ulen+1, (const char*) data, (jint) utflen, &status);
+
+ delete[] data;
+
+@@ -232,7 +232,7 @@ String DataInputStream::readLine() throw (IOException)
+
+ array<jchar> target_buffer(80);
+ jint target_offset = 0;
+- UChar* target = target_buffer.data();
++ UChar* target = reinterpret_cast<UChar*>(target_buffer.data());
+ const UChar* target_limit = target+1;
+ char source_buffer[MAX_BYTES_PER_CHARACTER];
+ const char* source = source_buffer;
+--- a/c++/io/DataOutputStream.cxx
++++ b/c++/io/DataOutputStream.cxx
+@@ -187,7 +187,7 @@ void DataOutputStream::writeUTF(const String& str) throw (IOException)
+ const array<jchar>& src = str.toCharArray();
+
+ // the expected status code here is U_BUFFER_OVERFLOW_ERROR
+- jint need = ucnv_fromUChars(_utf, 0, 0, src.data(), src.size(), &status);
++ jint need = ucnv_fromUChars(_utf, 0, 0, reinterpret_cast<const UChar*>(src.data()), src.size(), &status);
+ if (U_FAILURE(status))
+ if (status != U_BUFFER_OVERFLOW_ERROR)
+ throw IOException("ucnv_fromUChars failed");
+@@ -200,7 +200,7 @@ void DataOutputStream::writeUTF(const String& str) throw (IOException)
+ status = U_ZERO_ERROR;
+
+ // the expected status code here is U_STRING_NOT_TERMINATED_WARNING
+- ucnv_fromUChars(_utf, (char*) buffer, need, src.data(), src.size(), &status);
++ ucnv_fromUChars(_utf, (char*) buffer, need, reinterpret_cast<const UChar*>(src.data()), src.size(), &status);
+ if (status != U_STRING_NOT_TERMINATED_WARNING)
+ {
+ delete[] buffer;
+--- a/c++/io/PrintStream.cxx
++++ b/c++/io/PrintStream.cxx
+@@ -191,7 +191,7 @@ void PrintStream::print(jchar ch) throw ()
+ UErrorCode status = U_ZERO_ERROR;
+
+ // do conversion of one character
+- size_t used = ucnv_fromUChars(_loc, buffer, 8, &ch, 1, &status);
++ size_t used = ucnv_fromUChars(_loc, buffer, 8, reinterpret_cast<UChar*>(&ch), 1, &status);
+ if (U_FAILURE(status))
+ throw IOException("failure in ucnv_fromUChars");
+
+@@ -268,14 +268,14 @@ void PrintStream::print(jlong x) throw ()
+
+ void PrintStream::print(const array<jchar>& chars) throw ()
+ {
+- print(chars.data(), chars.size());
++ print(reinterpret_cast<const UChar*>(chars.data()), chars.size());
+ }
+
+ void PrintStream::print(const String& str) throw ()
+ {
+ const array<jchar>& tmp = str.toCharArray();
+
+- print(tmp.data(), tmp.size());
++ print(reinterpret_cast<const UChar*>(tmp.data()), tmp.size());
+ }
+
+ void PrintStream::println() throw ()
+--- a/c++/lang/String.cxx
++++ b/c++/lang/String.cxx
+@@ -33,6 +33,8 @@ using namespace beecrypt::lang;
+ #include <unicode/ustdio.h>
+ #include <unicode/ustring.h>
+
++static_assert(sizeof(jchar) == sizeof(UChar), "jchar and UChar sizes mismatch");
++
+ String::String(array<jchar>& swapWith)
+ {
+ assert(swapWith.size() <= Integer::MAX_VALUE);
+@@ -56,7 +58,7 @@ String::String()
+
+ String::String(char c) : _value(1)
+ {
+- u_charsToUChars(&c, _value.data(), 1);
++ u_charsToUChars(&c, reinterpret_cast<UChar*>(_value.data()), 1);
+ }
+
+ String::String(jchar c) : _value(&c, 1)
+@@ -67,7 +69,7 @@ String::String(const char* value) : _value(::strlen(value))
+ {
+ assert(_value.size() <= Integer::MAX_VALUE);
+
+- u_charsToUChars(value, _value.data(), _value.size());
++ u_charsToUChars(value, reinterpret_cast<UChar*>(_value.data()), _value.size());
+ }
+
+ String::String(const jchar* value, int offset, int length) : _value(value+offset, length)
+@@ -449,7 +451,7 @@ std::ostream& beecrypt::lang::operator<<(std::ostream& stream, const String& str
+ if (U_FAILURE(status))
+ throw RuntimeException("ucnv_open failed");
+
+- int need = ucnv_fromUChars(loc, 0, 0, src.data(), src.size(), &status);
++ int need = ucnv_fromUChars(loc, 0, 0, reinterpret_cast<const UChar*>(src.data()), src.size(), &status);
+ if (U_FAILURE(status))
+ if (status != U_BUFFER_OVERFLOW_ERROR)
+ throw RuntimeException("ucnv_fromUChars failed");
+@@ -458,7 +460,7 @@ std::ostream& beecrypt::lang::operator<<(std::ostream& stream, const String& str
+
+ status = U_ZERO_ERROR;
+
+- ucnv_fromUChars(loc, out, need+1, src.data(), src.size(), &status);
++ ucnv_fromUChars(loc, out, need+1, reinterpret_cast<const UChar*>(src.data()), src.size(), &status);
+ if (U_FAILURE(status))
+ throw RuntimeException("ucnv_fromUChars failed");
+
+--- a/c++/lang/StringBuffer.cxx
++++ b/c++/lang/StringBuffer.cxx
+@@ -35,7 +35,7 @@ StringBuffer::StringBuffer() : _buffer(16)
+
+ StringBuffer::StringBuffer(const char* s) : _buffer(16 + strlen(s))
+ {
+- u_charsToUChars(s, _buffer.data(), _used = strlen(s));
++ u_charsToUChars(s, reinterpret_cast<UChar*>(_buffer.data()), _used = strlen(s));
+ }
+
+ StringBuffer::StringBuffer(const String& s) : _buffer(16 + s._value.size())
+@@ -53,7 +53,7 @@ StringBuffer& StringBuffer::append(char c)
+ synchronized (this)
+ {
+ core_ensureCapacity(_used+1);
+- u_charsToUChars(&c, _buffer.data() + _used++, 1);
++ u_charsToUChars(&c, reinterpret_cast<UChar*>(_buffer.data() + _used++), 1);
+ }
+ return *this;
+ }
+@@ -88,7 +88,7 @@ StringBuffer& StringBuffer::append(const char* s)
+ jint need = strlen(s);
+
+ core_ensureCapacity(_used + need);
+- u_charsToUChars(s, _buffer.data() + _used, need);
++ u_charsToUChars(s, reinterpret_cast<UChar*>(_buffer.data() + _used), need);
+
+ _used += need;
+ }
+--- a/c++/lang/StringBuilder.cxx
++++ b/c++/lang/StringBuilder.cxx
+@@ -38,7 +38,7 @@ StringBuilder::StringBuilder() : _buffer(16)
+
+ StringBuilder::StringBuilder(const char* s) : _buffer(16 + strlen(s))
+ {
+- u_charsToUChars(s, _buffer.data(), _used = strlen(s));
++ u_charsToUChars(s, reinterpret_cast<UChar*>(_buffer.data()), _used = strlen(s));
+ }
+
+ StringBuilder::StringBuilder(const String& s) : _buffer(16 + s._value.size())
+@@ -55,7 +55,7 @@ StringBuilder& StringBuilder::append(char c)
+ {
+ ensureCapacity(_used+1);
+
+- u_charsToUChars(&c, _buffer.data() + _used++, 1);
++ u_charsToUChars(&c, reinterpret_cast<UChar*>(_buffer.data() + _used++), 1);
+
+ return *this;
+ }
+@@ -97,7 +97,7 @@ StringBuilder& StringBuilder::append(const char* s)
+
+ ensureCapacity(_used + need);
+
+- u_charsToUChars(s, _buffer.data() + _used, need);
++ u_charsToUChars(s, reinterpret_cast<UChar*>(_buffer.data() + _used), need);
+
+ _used += need;
+
+--- a/c++/security/Provider.cxx
++++ b/c++/security/Provider.cxx
+@@ -90,7 +90,7 @@ Object* Provider::setProperty(const String& key, const String& value)
+
+ UErrorCode status = U_ZERO_ERROR;
+
+- ucnv_fromUChars(_conv, symname, 1024, src.data(), src.size(), &status);
++ ucnv_fromUChars(_conv, symname, 1024, reinterpret_cast<const UChar*>(src.data()), src.size(), &status);
+
+ if (status != U_ZERO_ERROR)
+ throw RuntimeException("error in ucnv_fromUChars");
+--- a/c++/security/Security.cxx
++++ b/c++/security/Security.cxx
+@@ -104,7 +104,7 @@ void Security::initialize()
+
+ const array<jchar>& src = value->toCharArray();
+
+- int need = ucnv_fromUChars(_loc, 0, 0, src.data(), src.size(), &status);
++ int need = ucnv_fromUChars(_loc, 0, 0, reinterpret_cast<const UChar*>(src.data()), src.size(), &status);
+ if (U_FAILURE(status))
+ if (status != U_BUFFER_OVERFLOW_ERROR)
+ throw RuntimeException("ucnv_fromUChars failed");
+@@ -112,7 +112,7 @@ void Security::initialize()
+ char* shared_library = new char[need+1];
+
+ status = U_ZERO_ERROR;
+- ucnv_fromUChars(_loc, shared_library, need+1, src.data(), src.size(), &status);
++ ucnv_fromUChars(_loc, shared_library, need+1, reinterpret_cast<const UChar*>(src.data()), src.size(), &status);
+ if (U_FAILURE(status))
+ throw RuntimeException("ucnv_fromUChars failed");
+
diff --git a/dev-libs/beecrypt/files/beecrypt-4.2.1-gcc-4.7.patch b/dev-libs/beecrypt/files/beecrypt-4.2.1-gcc-4.7.patch
new file mode 100644
index 000000000000..dff5d8c04ab9
--- /dev/null
+++ b/dev-libs/beecrypt/files/beecrypt-4.2.1-gcc-4.7.patch
@@ -0,0 +1,11 @@
+--- a/include/beecrypt/c++/util/AbstractSet.h
++++ b/include/beecrypt/c++/util/AbstractSet.h
+@@ -56,7 +56,7 @@
+ if (c->size() != size())
+ return false;
+
+- return containsAll(*c);
++ return this->containsAll(*c);
+ }
+ return false;
+ }
diff --git a/dev-libs/beecrypt/metadata.xml b/dev-libs/beecrypt/metadata.xml
new file mode 100644
index 000000000000..69ec19c5857b
--- /dev/null
+++ b/dev-libs/beecrypt/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <!-- maintainer-needed -->
+ <upstream>
+ <remote-id type="sourceforge">beecrypt</remote-id>
+ </upstream>
+</pkgmetadata>