summaryrefslogtreecommitdiff
path: root/dev-libs/libmemcached
diff options
context:
space:
mode:
Diffstat (limited to 'dev-libs/libmemcached')
-rw-r--r--dev-libs/libmemcached/Manifest6
-rw-r--r--dev-libs/libmemcached/files/continuum-1.0.18.patch56
-rw-r--r--dev-libs/libmemcached/files/debug-disable-enable-1.0.18.patch29
-rw-r--r--dev-libs/libmemcached/files/libmemcached-1.0.18-gcc7.patch29
-rw-r--r--dev-libs/libmemcached/libmemcached-1.0.18-r3.ebuild55
-rw-r--r--dev-libs/libmemcached/metadata.xml23
6 files changed, 198 insertions, 0 deletions
diff --git a/dev-libs/libmemcached/Manifest b/dev-libs/libmemcached/Manifest
new file mode 100644
index 000000000000..04bb4f50b1e7
--- /dev/null
+++ b/dev-libs/libmemcached/Manifest
@@ -0,0 +1,6 @@
+AUX continuum-1.0.18.patch 3086 BLAKE2B 4f5b004d0910be5a8f8bb9c568a2555c2b3f4ab71b52964622d66ef43a0ca2c7ee8e6e0e9128b7863a465bb887ac300a8cfc1f6efcdb740fdd88ed36cd465b75 SHA512 905c5f1dc22b665ef8910b6319b25e1d1e9dd80892c03c6c71de597599d8ce2972b35d92e6976ad8798d2f10927e3e884570246d5d8162e84dc3e1f963959012
+AUX debug-disable-enable-1.0.18.patch 1458 BLAKE2B ce806c34ab5525f8d493030ad870d9a7fb1b27d18159c6626d37c1540f0cb7aec6a9d45d17423dabebfde8fb68fdb6796cc88ff8fa109c9622958a2eef322ede SHA512 f4d731ce227e91324b88d155daaf35f2228a48e61d8e448c93f9d102c9939fa4c3b2a07b96741d442382cc5498358e9ae0471f766373654b21d849a96a42d813
+AUX libmemcached-1.0.18-gcc7.patch 846 BLAKE2B 6c82a0cec03e6992e975b30a6c2b00bf6630104b107ee1241fc9fc6be11054f3def0b2a3c9606762d193f7c729e3ef31865cdaab6b4294071a14bbb0a0aed212 SHA512 87667843bee44e1388f6088085a5d0c3a3a824f4830861024f5a19ab1747e96a74b8fae5870f848358a66258aeb18c9a6fa3a1d17bd03260b41f389e01e19c49
+DIST libmemcached-1.0.18.tar.gz 1039649 BLAKE2B e55acdc4c0cb2417f01b2980f7f71d9dfd685877361622422ee812f9e066ed2711549d457cf1b4a48a14c778e820b54abfe0c6274812c71fc7961e68167975e9 SHA512 2d95fea63b8b6dc7ded42c3a88a54aad74d5a1d417af1247144dae4a88c3b639a3aabc0c2b66661ff69a7609a314efaaae236e10971af9c428a4bca0a0101585
+EBUILD libmemcached-1.0.18-r3.ebuild 1610 BLAKE2B d2080c57255f7d6527f5799a97e729adba6cedfa7f91156b883b1af0a6a89febbafc941e9124acb67da777c1cb0c94e69574781f3b8ab4d4b0097947296b7c5d SHA512 33ba4f396c80db7eac9a15b5b866ed4db844eb94b02bad995a1d772990d6f3f8b4cc465f4bfbbfd409a43ea6fe04bb649b1c7a3ec95da343e0bbf17a861c1276
+MISC metadata.xml 826 BLAKE2B a77184515934e8eb06a2f7b42a4e4354c998192d617a1a4a3e0e6fdad88a189cdf809779106e3157f4b9f46675a6ae6961ef5280bdefaa1794b7c146b89fdeef SHA512 5bc0caef489fb8a9c6c038aa2a5620cd43d700104ab77407391eb0961f12392ac8535efd5fbe86c1e6be17cb89d766049fe1394461fa652bcdc1abd64afb9962
diff --git a/dev-libs/libmemcached/files/continuum-1.0.18.patch b/dev-libs/libmemcached/files/continuum-1.0.18.patch
new file mode 100644
index 000000000000..296978044311
--- /dev/null
+++ b/dev-libs/libmemcached/files/continuum-1.0.18.patch
@@ -0,0 +1,56 @@
+diff --git libmemcached/memcached.cc libmemcached/memcached.cc
+index 337f918..6e88c25 100644
+--- libmemcached/memcached.cc
++++ libmemcached/memcached.cc
+@@ -285,6 +285,8 @@ void memcached_servers_reset(memcached_st *shell)
+ {
+ libmemcached_free(self, self->ketama.continuum);
+ self->ketama.continuum= NULL;
++ self->ketama.continuum_count= 0;
++ self->ketama.continuum_points_counter= 0;
+
+ memcached_instance_list_free(memcached_instance_list(self), self->number_of_hosts);
+ memcached_instance_set(self, NULL, 0);
+diff --git tests/libmemcached-1.0/all_tests.h tests/libmemcached-1.0/all_tests.h
+index b4abe9d..f89f007 100644
+--- tests/libmemcached-1.0/all_tests.h
++++ tests/libmemcached-1.0/all_tests.h
+@@ -452,6 +452,7 @@ collection_st collection[] ={
+ {"hsieh_availability", 0, 0, hsieh_availability},
+ {"murmur_availability", 0, 0, murmur_availability},
+ {"memcached_server_add", (test_callback_fn*)memcached_servers_reset_SETUP, 0, memcached_server_add_TESTS},
++ {"memcached_server_add(continuum)", (test_callback_fn*)memcached_servers_reset_CONTINUUM, 0, memcached_server_add_TESTS},
+ {"memcached_server_add(MEMCACHED_DISTRIBUTION_CONSISTENT)", (test_callback_fn*)memcached_servers_reset_MEMCACHED_DISTRIBUTION_CONSISTENT_SETUP, 0, memcached_server_add_TESTS},
+ {"memcached_server_add(MEMCACHED_DISTRIBUTION_CONSISTENT_WEIGHTED)", (test_callback_fn*)memcached_servers_reset_MEMCACHED_DISTRIBUTION_CONSISTENT_WEIGHTED_SETUP, 0, memcached_server_add_TESTS},
+ {"block", 0, 0, tests},
+diff --git tests/libmemcached-1.0/setup_and_teardowns.cc tests/libmemcached-1.0/setup_and_teardowns.cc
+index 4191c38..eb29128 100644
+--- tests/libmemcached-1.0/setup_and_teardowns.cc
++++ tests/libmemcached-1.0/setup_and_teardowns.cc
+@@ -177,6 +177,16 @@ test_return_t memcached_servers_reset_SETUP(memcached_st *memc)
+ return TEST_SUCCESS;
+ }
+
++test_return_t memcached_servers_reset_CONTINUUM(memcached_st *memc)
++{
++ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_DISTRIBUTION, MEMCACHED_DISTRIBUTION_CONSISTENT);
++ memcached_servers_reset(memc);
++ test_compare(0, memc->ketama.continuum_count);
++ // If memc->ketama.continuum_count is non-zero at this point, any call to
++ // memcached_server_add will cause a segfault.
++ return TEST_SUCCESS;
++}
++
+ test_return_t memcached_servers_reset_MEMCACHED_DISTRIBUTION_CONSISTENT_SETUP(memcached_st *memc)
+ {
+ test_compare(TEST_SUCCESS, memcached_servers_reset_SETUP(memc));
+diff --git tests/libmemcached-1.0/setup_and_teardowns.h tests/libmemcached-1.0/setup_and_teardowns.h
+index 7610c5a..59b56f6 100644
+--- tests/libmemcached-1.0/setup_and_teardowns.h
++++ tests/libmemcached-1.0/setup_and_teardowns.h
+@@ -64,3 +64,4 @@ test_return_t pre_buffer(memcached_st*);
+ test_return_t memcached_servers_reset_MEMCACHED_DISTRIBUTION_CONSISTENT_SETUP(memcached_st *memc);
+ test_return_t memcached_servers_reset_MEMCACHED_DISTRIBUTION_CONSISTENT_WEIGHTED_SETUP(memcached_st *memc);
+ test_return_t memcached_servers_reset_SETUP(memcached_st *memc);
++test_return_t memcached_servers_reset_CONTINUUM(memcached_st *memc);
+
diff --git a/dev-libs/libmemcached/files/debug-disable-enable-1.0.18.patch b/dev-libs/libmemcached/files/debug-disable-enable-1.0.18.patch
new file mode 100644
index 000000000000..ed87cbd7a1c1
--- /dev/null
+++ b/dev-libs/libmemcached/files/debug-disable-enable-1.0.18.patch
@@ -0,0 +1,29 @@
+Fixed a bug that caused configure to disobey the enable/disable debug flag. The debug flag will default to disabled if not specified.
+diff -ru libmemcached-1.0.18-orig/m4/ax_debug.m4 libmemcached-1.0.18/m4/ax_debug.m4
+--- libmemcached-1.0.18-orig/m4/ax_debug.m4 2014-11-05 14:43:53.720284916 -0600
++++ libmemcached-1.0.18/m4/ax_debug.m4 2014-11-19 14:23:19.512482198 -0600
+@@ -49,16 +49,18 @@
+ [AC_PREREQ([2.63])dnl
+ AC_ARG_ENABLE([debug],
+ [AS_HELP_STRING([--enable-debug],
+- [Add debug code/turns off optimizations (yes|no) @<:@default=no@:>@])],
+- [ax_enable_debug=yes
++ [Add debug code/turns off optimizations (yes|no) @<:@default=no@:>@])])
++ AS_IF([test "x$enable_debug" = "xyes"], [
++ ax_enable_debug=yes
+ AC_DEFINE([DEBUG],[1],[Define to 1 to enable debugging code.])
+ AX_CHECK_LIBRARY([MCHECK],[mcheck.h],[mcheck],[AX_APPEND_LINK_FLAGS([-lmcheck])])
+ AX_ADD_AM_MACRO([--debug],[AM_YFLAGS])
+- AX_ADD_AM_MACRO([-D_GLIBCXX_DEBUG],[AM_CPPFLAGS])],
+- [ax_enable_debug=no
++ AX_ADD_AM_MACRO([-D_GLIBCXX_DEBUG],[AM_CPPFLAGS])
++ ], [
++ ax_enable_debug=no
+ AC_SUBST([MCHECK])
+- AC_DEFINE([DEBUG],[0],[Define to 1 to enable debugging code.])])
+-
++ AC_DEFINE([DEBUG],[0],[Define to 1 to enable debugging code.])
++ ])
+ AC_MSG_CHECKING([for debug])
+ AC_MSG_RESULT([$ax_enable_debug])
+ AM_CONDITIONAL([DEBUG],[test "x${ax_enable_debug}" = "xyes"])])
diff --git a/dev-libs/libmemcached/files/libmemcached-1.0.18-gcc7.patch b/dev-libs/libmemcached/files/libmemcached-1.0.18-gcc7.patch
new file mode 100644
index 000000000000..6bcb23136c4b
--- /dev/null
+++ b/dev-libs/libmemcached/files/libmemcached-1.0.18-gcc7.patch
@@ -0,0 +1,29 @@
+gcc-7 fails the build as:
+ clients/memflush.cc: In function 'int main(int, char**)':
+ clients/memflush.cc:42:22: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
+ if (opt_servers == false)
+ ^~~~~
+
+opt_servers is declated as 'static char *opt_servers= NULL;'
+diff --git a/clients/memflush.cc b/clients/memflush.cc
+index 8bd0dbf..7641b88 100644
+--- a/clients/memflush.cc
++++ b/clients/memflush.cc
+@@ -39,7 +39,7 @@ int main(int argc, char *argv[])
+ {
+ options_parse(argc, argv);
+
+- if (opt_servers == false)
++ if (!opt_servers)
+ {
+ char *temp;
+
+@@ -48,7 +48,7 @@ int main(int argc, char *argv[])
+ opt_servers= strdup(temp);
+ }
+
+- if (opt_servers == false)
++ if (!opt_servers)
+ {
+ std::cerr << "No Servers provided" << std::endl;
+ exit(EXIT_FAILURE);
diff --git a/dev-libs/libmemcached/libmemcached-1.0.18-r3.ebuild b/dev-libs/libmemcached/libmemcached-1.0.18-r3.ebuild
new file mode 100644
index 000000000000..46765994581a
--- /dev/null
+++ b/dev-libs/libmemcached/libmemcached-1.0.18-r3.ebuild
@@ -0,0 +1,55 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+WANT_AUTOMAKE=1.13
+
+inherit autotools eutils multilib
+RESTRICT="test" # https://bugs.gentoo.org/show_bug.cgi?id=498250 https://bugs.launchpad.net/gentoo/+bug/1278023
+
+DESCRIPTION="a C client library to the memcached server"
+HOMEPAGE="http://libmemcached.org/libMemcached.html"
+SRC_URI="https://launchpad.net/${PN}/1.0/${PV}/+download/${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="alpha amd64 arm hppa ia64 ppc ppc64 ~sh sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x86-macos"
+IUSE="debug hsieh +libevent sasl static-libs"
+
+DEPEND="net-misc/memcached
+ sasl? ( dev-libs/cyrus-sasl )
+ libevent? ( dev-libs/libevent )"
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+ epatch "${FILESDIR}/debug-disable-enable-1.0.18.patch"
+ epatch "${FILESDIR}/continuum-1.0.18.patch"
+ epatch "${FILESDIR}"/${P}-gcc7.patch
+ sed -i '6i CFLAGS = @CFLAGS@' Makefile.am
+ sed -e "/_APPEND_COMPILE_FLAGS_ERROR(\[-fmudflapth\?\])/d" -i m4/ax_harden_compiler_flags.m4
+ eautoreconf
+}
+
+src_configure() {
+ econf \
+ --disable-dtrace \
+ $(use_enable static-libs static) \
+ $(use_enable sasl sasl) \
+ $(use_enable debug debug) \
+ $(use_enable debug assert) \
+ $(use_enable hsieh hsieh_hash) \
+ --libdir=/usr/$(get_libdir) \
+ ${myconf}
+}
+
+src_install() {
+ emake DESTDIR="${D}" install
+
+ use static-libs || rm -f "${D}"/usr/$(get_libdir)/lib*.la
+
+ dodoc AUTHORS ChangeLog README THANKS TODO
+ # remove manpage to avoid collision, see bug #299330
+ rm -f "${D}"/usr/share/man/man1/memdump.*
+ newman man/memdump.1 memcached_memdump.1
+}
diff --git a/dev-libs/libmemcached/metadata.xml b/dev-libs/libmemcached/metadata.xml
new file mode 100644
index 000000000000..3bfda0a0415b
--- /dev/null
+++ b/dev-libs/libmemcached/metadata.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>robbat2@gentoo.org</email>
+ </maintainer>
+ <maintainer type="person">
+ <email>prometheanfire@gentoo.org</email>
+ </maintainer>
+ <longdescription>
+ libmemcached is a C client library to the memcached server
+ (http://danga.com/memcached). It has been designed to be light on memory
+ usage, thread safe, and provide full access to server side methods.
+ </longdescription>
+ <use>
+ <flag name="hsieh">Use Hsieh hash algorithm.</flag>
+ <flag name="libevent">Use the libevent event loop interface.</flag>
+ <flag name="sasl">Use sasl auth for communications.</flag>
+ </use>
+ <upstream>
+ <remote-id type="launchpad">libmemcached</remote-id>
+ </upstream>
+</pkgmetadata>