Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 17 May 2013 09:42:44 GMT
From:      Veniamin Gvozdikov <g.veniamin@googlemail.com>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   ports/178709: [new port]: databases/hyperdex Searchable distributed key-value store
Message-ID:  <201305170942.r4H9gi6j097528@oldred.FreeBSD.org>
Resent-Message-ID: <201305170950.r4H9o1CE078362@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         178709
>Category:       ports
>Synopsis:       [new port]: databases/hyperdex Searchable distributed key-value store
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Fri May 17 09:50:01 UTC 2013
>Closed-Date:
>Last-Modified:
>Originator:     Veniamin Gvozdikov
>Release:        FreeBSD 9.1-RELEASE
>Organization:
>Environment:
FreeBSD ololo 9.1-RELEASE FreeBSD 9.1-RELEASE #0 r243825: Tue Dec  4 09:23:10 UTC 2012     root@farrell.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  amd64

>Description:
HyperDex is a next-generation key-value store with the following features:

Fast HyperDex has lower latency, higher throughput, and lower variance than
other key-value stores. Specifically, HyperDex is a factor of 2-14
faster than MongoDB, Cassandra and Redis on the industry-standard
YCSB benchmarks.

Searchable HyperDex enables lookups of non-primary data attributes. Such
searches are implemented efficiently and contact a small number of servers.

Scalable HyperDex scales as more machines are added to the system.

Consistent The value you GET is always the latest value you PUT. Not just
"eventually," but immediately and always.

Fault tolerant HyperDex handles failures. Data is automatically replicated
on multiple machines so that failures do not cause data loss


>How-To-Repeat:

>Fix:
# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#	hyperdex
#	hyperdex/pkg-descr
#	hyperdex/files
#	hyperdex/files/patch-coordinator_coordinator.cc
#	hyperdex/files/patch-tools_async-benchmark.cc
#	hyperdex/files/patch-tools_benchmark.cc
#	hyperdex/files/patch-coordinator_coordinator.h
#	hyperdex/files/patch-common_serialization.cc
#	hyperdex/files/patch-daemon_index_encode.cc
#	hyperdex/files/patch-common_float_encode.cc
#	hyperdex/files/patch-daemon_daemon.cc
#	hyperdex/Makefile
#	hyperdex/distinfo
#	hyperdex/pkg-plist
#
echo c - hyperdex
mkdir -p hyperdex > /dev/null 2>&1
echo x - hyperdex/pkg-descr
sed 's/^X//' >hyperdex/pkg-descr << '4f081fa0d18b9bdbe033b8c3e7675d01'
XHyperDex is a next-generation key-value store with the following features:
X
XFast HyperDex has lower latency, higher throughput, and lower variance than
Xother key-value stores. Specifically, HyperDex is a factor of 2-14
Xfaster than MongoDB, Cassandra and Redis on the industry-standard
XYCSB benchmarks.
X
XSearchable HyperDex enables lookups of non-primary data attributes. Such
Xsearches are implemented efficiently and contact a small number of servers.
X
XScalable HyperDex scales as more machines are added to the system.
X
XConsistent The value you GET is always the latest value you PUT. Not just
X"eventually," but immediately and always.
X
XFault tolerant HyperDex handles failures. Data is automatically replicated
Xon multiple machines so that failures do not cause data loss
X
XWWW: http://hyperdex.org
4f081fa0d18b9bdbe033b8c3e7675d01
echo c - hyperdex/files
mkdir -p hyperdex/files > /dev/null 2>&1
echo x - hyperdex/files/patch-coordinator_coordinator.cc
sed 's/^X//' >hyperdex/files/patch-coordinator_coordinator.cc << '2c6c3d82b98ce75bb5bc5a30afda5d29'
X--- coordinator/coordinator.cc.orig	2013-05-14 12:36:06.346911864 +0000
X+++ coordinator/coordinator.cc	2013-05-14 12:41:43.671911204 +0000
X@@ -424,7 +424,7 @@
X         fprintf(log, "initializing HyperDex cluster with id %lu\n", token);
X         m_cluster = token;
X         memset(&m_seed, 0, sizeof(m_seed));
X-#ifdef __APPLE__
X+#if defined __APPLE__ || defined __FreeBSD__
X         srand(m_seed);
X #else
X         srand48_r(m_cluster, &m_seed);
X@@ -1308,7 +1308,7 @@
X 
X     while (available.size() > replicas.size())
X     {
X-#ifdef __APPLE__
X+#if defined __APPLE__ || defined __FreeBSD__
X         int y;
X         y = rand_r(&m_seed);
X #else
2c6c3d82b98ce75bb5bc5a30afda5d29
echo x - hyperdex/files/patch-tools_async-benchmark.cc
sed 's/^X//' >hyperdex/files/patch-tools_async-benchmark.cc << '7bd11c58c139ff850ceef507e0ddd5d4'
X--- tools/async-benchmark.cc.orig	2013-05-14 13:54:17.292911708 +0000
X+++ tools/async-benchmark.cc	2013-05-15 11:54:22.354909975 +0000
X@@ -26,6 +26,8 @@
X // POSSIBILITY OF SUCH DAMAGE.
X 
X // POSIX
X+#define _WITH_GETLINE
X+#include <stdio.h>
X #include <errno.h>
X 
X // STL
X@@ -112,7 +114,7 @@
X         assert(o->line == NULL);
X         assert(o->line_sz == 0);
X 
X-        ssize_t amt = getline(&o->line, &o->line_sz, fin);
X+        ssize_t amt = ::getline(&o->line, &o->line_sz, fin);
X 
X         if (amt < 0)
X         {
7bd11c58c139ff850ceef507e0ddd5d4
echo x - hyperdex/files/patch-tools_benchmark.cc
sed 's/^X//' >hyperdex/files/patch-tools_benchmark.cc << '1b08280a468d53a283375a530edf4cda'
X--- tools/benchmark.cc.orig	2013-05-15 06:14:45.662910140 +0000
X+++ tools/benchmark.cc	2013-05-15 06:15:27.639909533 +0000
X@@ -26,6 +26,8 @@
X // POSSIBILITY OF SUCH DAMAGE.
X 
X // POSIX
X+#define _WITH_GETLINE
X+#include <stdio.h>
X #include <errno.h>
X 
X // LevelDB
1b08280a468d53a283375a530edf4cda
echo x - hyperdex/files/patch-coordinator_coordinator.h
sed 's/^X//' >hyperdex/files/patch-coordinator_coordinator.h << '1b46e92c15a7528625a2af13c4c79f3b'
X--- coordinator/coordinator.h.orig	2013-05-14 12:44:44.359909945 +0000
X+++ coordinator/coordinator.h	2013-05-14 12:45:03.875912156 +0000
X@@ -146,7 +146,7 @@
X         std::vector<std::pair<region_id, server_id> > m_region_server_references;
X         std::auto_ptr<e::buffer> m_latest_config; // cached config
X         std::auto_ptr<e::buffer> m_resp; // response space
X-#ifdef __APPLE__
X+#if defined __APPLE__ || defined __FreeBSD__
X         unsigned int m_seed;
X #else
X         drand48_data m_seed;
1b46e92c15a7528625a2af13c4c79f3b
echo x - hyperdex/files/patch-common_serialization.cc
sed 's/^X//' >hyperdex/files/patch-common_serialization.cc << 'a96e1bfc9dcc8a2e77f9b520bf7df84e'
X--- common/serialization.cc.orig	2013-05-14 12:33:50.140913585 +0000
X+++ common/serialization.cc	2013-05-14 12:34:19.696912124 +0000
X@@ -50,7 +50,7 @@
X         rhs.pack(&sa, 0);
X #ifdef _MSC_VER
X         memmove(data, &sa.sin6_addr.u.Byte, 16);
X-#elif defined __APPLE__
X+#elif defined __APPLE__ || defined __FreeBSD__
X         memmove(data, &sa.sin6_addr.__u6_addr.__u6_addr8, 16);
X #else
X         memmove(data, &sa.sin6_addr.__in6_u.__u6_addr8, 16);
X@@ -91,7 +91,7 @@
X         in6_addr ia;
X #ifdef _MSC_VER
X         memmove(ia.u.Byte, rem.data(), 16);
X-#elif defined __APPLE__
X+#elif defined __APPLE__ || defined __FreeBSD__
X         memmove(ia.__u6_addr.__u6_addr8, rem.data(), 16);
X #else
X         memmove(ia.__in6_u.__u6_addr8, rem.data(), 16);
a96e1bfc9dcc8a2e77f9b520bf7df84e
echo x - hyperdex/files/patch-daemon_index_encode.cc
sed 's/^X//' >hyperdex/files/patch-daemon_index_encode.cc << '7939e7a6a4f0e935cf94dfecd74926a9'
X--- daemon/index_encode.cc.orig	2013-05-14 13:34:51.139911307 +0000
X+++ daemon/index_encode.cc	2013-05-14 13:35:05.215911622 +0000
X@@ -33,7 +33,7 @@
X #include <cstdlib>
X 
X // Linux
X-#ifdef __APPLE__
X+#if defined __APPLE__ || __FreeBSD__
X #include <osx/ieee754.h>
X #else
X #include <ieee754.h>
7939e7a6a4f0e935cf94dfecd74926a9
echo x - hyperdex/files/patch-common_float_encode.cc
sed 's/^X//' >hyperdex/files/patch-common_float_encode.cc << 'c880c929b22a8c76342cf897977824cb'
X--- common/float_encode.cc.orig	2013-05-14 13:13:46.020911210 +0000
X+++ common/float_encode.cc	2013-05-14 13:14:14.184910633 +0000
X@@ -36,7 +36,7 @@
X #include <cstdlib>
X 
X // Linux
X-#ifdef __APPLE__
X+#if defined __APPLE__ || defined __FreeBSD__
X #include <osx/ieee754.h>
X #else
X #include <ieee754.h>
c880c929b22a8c76342cf897977824cb
echo x - hyperdex/files/patch-daemon_daemon.cc
sed 's/^X//' >hyperdex/files/patch-daemon_daemon.cc << '4b243d2e42b81a777c625ae64edac1bd'
X--- daemon/daemon.cc.orig	2013-05-14 13:22:58.881910010 +0000
X+++ daemon/daemon.cc	2013-05-14 13:32:31.434911933 +0000
X@@ -43,6 +43,13 @@
X #include "common/serialization.h"
X #include "daemon/daemon.h"
X 
X+#ifdef __FreeBSD__
X+#include <sys/param.h>
X+#include <sys/cpuset.h>
X+#include <pthread_np.h>
X+typedef cpuset_t cpu_set_t;
X+#endif
X+
X using hyperdex::daemon;
X 
X int s_interrupts = 0;
4b243d2e42b81a777c625ae64edac1bd
echo x - hyperdex/Makefile
sed 's/^X//' >hyperdex/Makefile << 'bd8cd84cb0326e7e6245e3e77e54ab24'
X# Created by: Gvozdikov Veniamin <g.veniamin@googlemail.com>
X# $FreeBSD$
X
XPORTNAME=	hyperdex
XPORTVERSION=	1.0
XCATEGORIES=	databases
XMASTER_SITES=	http://hyperdex.org/src/
XDISTNAME=	${PORTNAME}-${PORTVERSION}.rc4
X
XMAINTAINER=	g.veniamin@googlemail.com
XCOMMENT=	Searchable distributed key-value store
X
XLICENSE=	BSD
X
XBUILD_DEPENDS=	${LOCALBASE}/libdata/pkgconfig/libpo6.pc:${PORTSDIR}/devel/libpo6
XLIB_DEPENDS=	e:${PORTSDIR}/devel/libe \
X		cityhash:${PORTSDIR}/devel/cityhash \
X		glog:${PORTSDIR}/devel/glog \
X		popt:${PORTSDIR}/devel/popt \
X		replicant:${PORTSDIR}/sysutils/replicant
X
XONLY_FOR_ARCHS=	amd64
X
XGNU_CONFIGURE=	yes
XONLY_FOR_ARCHS=	amd64
XUSE_GCC=	4.6+
XUSE_LDCONFIG=	yes
XUSE_PYTHON=	yes
XUSES=		pathfix pkgconfig
XCONFIGURE_ARGS=	CXXFLAGS="-I${LOCALBASE}/include" \
X		LDFLAGS="-L${LOCALBASE}/lib"
X
XMAN1=	hyperdex.1
X
XOPTIONS_DEFINE=		ALL_LOG GTEST PY_BINDINGS WARNINGS
XALL_LOG_DESC=		Enable all messages in log
XPY_BINDINGS_DESC=	Enable Python bindings
XGTEST_DESC=		Enable tests using the Google C++
XWARNINGS_DESC=		Enable many warnings
X
X.include <bsd.port.options.mk>
X
X.if ${PORT_OPTIONS:MALL_LOG}
XCONFIGURE_ARGS+=	--enable-log-all-messages
X.endif
X
X.if ${PORT_OPTIONS:MGTEST}
XLIB_DEPENDS+=		gtest:${PORTSDIR}/devel/googletest
XCONFIGURE_ARGS+=	--enable-gtest
X.endif
X
X.if ${PORT_OPTIONS:MPY_BINDINGS}
X#RUN_DEPENDS+=		devel/py-parsing
XCONFIGURE_ARGS+=	--enable-python-bindings
XPLIST_SUB+=		PY_BINDINGS=""
X.else
XPLIST_SUB+=		PY_BINDINGS="@comment "
X.endif
X
X.if ${PORT_OPTIONS:MWARNINGS}
XCONFIGURE_ARGS+=	--enable-wanal-cxxflags
X.endif
X
X.include <bsd.port.mk>
bd8cd84cb0326e7e6245e3e77e54ab24
echo x - hyperdex/distinfo
sed 's/^X//' >hyperdex/distinfo << 'ea8919aaad9a02dafdb3c6b1439146a5'
XSHA256 (hyperdex-1.0.rc4.tar.gz) = cff1df7adedde3fb02696eab3cc9cf1644cb6abdb3719ec16d55e6d36eddd278
XSIZE (hyperdex-1.0.rc4.tar.gz) = 1185411
ea8919aaad9a02dafdb3c6b1439146a5
echo x - hyperdex/pkg-plist
sed 's/^X//' >hyperdex/pkg-plist << '45afc1ce089a5d716bd8f946104c7e1a'
Xbin/hyperdex
Xbin/hyperdex-replication-stress-test
Xbin/hyperdex-search-stress-test
Xbin/hyperdex-simple-consistency-stress-test
Xinclude/hyperclient.h
Xinclude/hyperdex.h
Xlib/libhyperclient.a
Xlib/libhyperclient.la
Xlib/libhyperclient.so
Xlib/libhyperclient.so.0
Xlibdata/pkgconfig/hyperclient.pc
Xlibexec/hyperdex-1.0.rc4/hyperdex-add-space
Xlibexec/hyperdex-1.0.rc4/hyperdex-async-benchmark
Xlibexec/hyperdex-1.0.rc4/hyperdex-benchmark
Xlibexec/hyperdex-1.0.rc4/hyperdex-coordinator
Xlibexec/hyperdex-1.0.rc4/hyperdex-daemon
Xlibexec/hyperdex-1.0.rc4/hyperdex-initialize-cluster
Xlibexec/hyperdex-1.0.rc4/hyperdex-initiate-transfer
Xlibexec/hyperdex-1.0.rc4/hyperdex-rm-space
Xlibexec/hyperdex-1.0.rc4/hyperdex-show-config
Xlibexec/hyperdex-1.0.rc4/libhypercoordinator.a
Xlibexec/hyperdex-1.0.rc4/libhypercoordinator.la
Xlibexec/hyperdex-1.0.rc4/libhypercoordinator.so
Xlibexec/hyperdex-1.0.rc4/libhypercoordinator.so.0
X%%PY_BINDINGS%%%%PYTHON_SITELIBDIR%%/hyperclient.a
X%%PY_BINDINGS%%%%PYTHON_SITELIBDIR%%/hyperclient.la
X%%PY_BINDINGS%%%%PYTHON_SITELIBDIR%%/hyperclient.so
X@dirrm libexec/hyperdex-1.0.rc4
X%%PY_BINDINGS%%@dirrmtry %%PYTHON_LIBDIR%%/site-packages
X%%PY_BINDINGS%%@dirrmtry %%PYTHON_LIBDIR%%
45afc1ce089a5d716bd8f946104c7e1a
exit


>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201305170942.r4H9gi6j097528>