aboutsummaryrefslogtreecommitdiff
path: root/databases/foundationdb
diff options
context:
space:
mode:
authorVanilla I. Shu <vanilla@FreeBSD.org>2019-04-12 13:04:58 +0000
committerVanilla I. Shu <vanilla@FreeBSD.org>2019-04-12 13:04:58 +0000
commit5f0593e970ce542847deaabd7179b6e816f83169 (patch)
tree9d3ec8187e366ecb394d9820dad5da0cc77204cf /databases/foundationdb
parentc1c546150714fa57efcb4284c8e25c8f8c0d2089 (diff)
downloadports-5f0593e970ce542847deaabd7179b6e816f83169.tar.gz
ports-5f0593e970ce542847deaabd7179b6e816f83169.zip
Notes
Diffstat (limited to 'databases/foundationdb')
-rw-r--r--databases/foundationdb/Makefile4
-rw-r--r--databases/foundationdb/distinfo6
-rw-r--r--databases/foundationdb/files/patch-FDBLibTLS_local.mk6
-rw-r--r--databases/foundationdb/files/patch-Makefile34
-rw-r--r--databases/foundationdb/files/patch-fdbbackup_local.mk4
-rw-r--r--databases/foundationdb/files/patch-fdbcli_local.mk19
-rw-r--r--databases/foundationdb/files/patch-fdbclient_BlobStore.h11
-rw-r--r--databases/foundationdb/files/patch-fdbmonitor_fdbmonitor.cpp38
-rw-r--r--databases/foundationdb/files/patch-fdbrpc_AsyncFileCached.actor.cpp11
-rw-r--r--databases/foundationdb/files/patch-fdbrpc_IAsyncFile.actor.cpp6
-rw-r--r--databases/foundationdb/files/patch-fdbrpc_local.mk6
-rw-r--r--databases/foundationdb/files/patch-fdbserver_fdbserver.actor.cpp22
-rw-r--r--databases/foundationdb/files/patch-fdbserver_local.mk4
-rw-r--r--databases/foundationdb/files/patch-fdbserver_worker.actor.cpp10
-rw-r--r--databases/foundationdb/files/patch-flow_Deque.h9
-rw-r--r--databases/foundationdb/files/patch-flow_FastAlloc.cpp4
-rw-r--r--databases/foundationdb/files/patch-flow_Net2.actor.cpp30
-rw-r--r--databases/foundationdb/files/patch-flow_Platform.cpp91
-rw-r--r--databases/foundationdb/files/patch-flow_Platform.h4
-rw-r--r--databases/foundationdb/files/patch-flow_ThreadPrimitives.h6
-rw-r--r--databases/foundationdb/files/patch-flow_libs_system_src_error__code.cpp15
-rw-r--r--databases/foundationdb/files/patch-flow_local.mk6
22 files changed, 161 insertions, 185 deletions
diff --git a/databases/foundationdb/Makefile b/databases/foundationdb/Makefile
index c63b3c33fe9e..7e4abcc34dfe 100644
--- a/databases/foundationdb/Makefile
+++ b/databases/foundationdb/Makefile
@@ -2,8 +2,7 @@
# $FreeBSD$
PORTNAME= foundationdb
-PORTVERSION= 6.0.18
-PORTREVISION= 1
+PORTVERSION= 6.1.1
CATEGORIES= databases
MAINTAINER= vanilla@FreeBSD.org
@@ -12,7 +11,6 @@ COMMENT= Distributed, transactional key-value store
LICENSE= APACHE20
LICENSE_FILE= ${WRKSRC}/LICENSE
-BROKEN= fails to build with boost 1.70, see bug 236586
ONLY_FOR_ARCHS= amd64
ONLY_FOR_ARCHS_REASON= not yet ported to anything other than amd64
diff --git a/databases/foundationdb/distinfo b/databases/foundationdb/distinfo
index fbab63a83196..19db601c5020 100644
--- a/databases/foundationdb/distinfo
+++ b/databases/foundationdb/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1547178154
-SHA256 (apple-foundationdb-6.0.18_GH0.tar.gz) = d8d0604ccd306e4d52b2a36def27e95504ee7f38a60e75ae16828bdc88ba54a8
-SIZE (apple-foundationdb-6.0.18_GH0.tar.gz) = 4615666
+TIMESTAMP = 1554904793
+SHA256 (apple-foundationdb-6.1.1_GH0.tar.gz) = 20c35b342138e16711d113beb21a32b507ca21ae36f5d701cfa043c82ed67b74
+SIZE (apple-foundationdb-6.1.1_GH0.tar.gz) = 4873842
diff --git a/databases/foundationdb/files/patch-FDBLibTLS_local.mk b/databases/foundationdb/files/patch-FDBLibTLS_local.mk
index 5ff1fbcd798a..7b122708c430 100644
--- a/databases/foundationdb/files/patch-FDBLibTLS_local.mk
+++ b/databases/foundationdb/files/patch-FDBLibTLS_local.mk
@@ -1,10 +1,10 @@
---- FDBLibTLS/local.mk.orig 2018-09-11 01:21:54 UTC
+--- FDBLibTLS/local.mk.orig 2019-04-09 00:11:05 UTC
+++ FDBLibTLS/local.mk
@@ -23,6 +23,6 @@
FDBLibTLS_BUILD_SOURCES +=
--FDBLibTLS_CFLAGS := -fPIC -I/usr/local/include -I$(BOOSTDIR) -Iflow -Ifdbrpc -DUSE_UCONTEXT
-+FDBLibTLS_CFLAGS := -fPIC -I$(BOOSTDIR)/include -Ifdbrpc -Iflow -DUSE_UCONTEXT
+-FDBLibTLS_CFLAGS := -fPIC -I/usr/local/include -I$(BOOSTDIR) -I. -DUSE_UCONTEXT
++FDBLibTLS_CFLAGS := -fPIC -I$(BOOSTDIR)/include -I. -DUSE_UCONTEXT
lib/libFDBLibTLS.a: bin/coverage.FDBLibTLS.xml
diff --git a/databases/foundationdb/files/patch-Makefile b/databases/foundationdb/files/patch-Makefile
index 1348bf944ad9..12c39d7ea2bf 100644
--- a/databases/foundationdb/files/patch-Makefile
+++ b/databases/foundationdb/files/patch-Makefile
@@ -1,6 +1,6 @@
---- Makefile.orig 2019-01-09 22:28:32 UTC
+--- Makefile.orig 2019-04-09 00:11:05 UTC
+++ Makefile
-@@ -6,6 +6,8 @@ TOPDIR := $(shell pwd)
+@@ -11,6 +11,8 @@ TOPDIR := $(shell pwd)
ifeq ($(ARCH),x86_64)
ARCH := x64
@@ -9,19 +9,7 @@
else
$(error Not prepared to compile on $(ARCH))
endif
-@@ -15,11 +17,7 @@ ifeq ($(MONO),)
- MONO := /usr/bin/mono
- endif
-
--DMCS := $(shell which dmcs)
- MCS := $(shell which mcs)
--ifneq ($(DMCS),)
-- MCS := $(DMCS)
--endif
- ifeq ($(MCS),)
- MCS := /usr/bin/dmcs
- endif
-@@ -45,6 +43,15 @@ ifeq ($(PLATFORM),Linux)
+@@ -50,6 +52,15 @@ ifeq ($(PLATFORM),Linux)
DLEXT := so
java_DLEXT := so
TARGET_LIBC_VERSION ?= 2.11
@@ -37,16 +25,16 @@
else ifeq ($(PLATFORM),Darwin)
PLATFORM := osx
-@@ -108,7 +115,7 @@ STATIC_LIBS :=
+@@ -120,7 +131,7 @@ STATIC_LIBS :=
VPATH += $(addprefix :,$(filter-out lib,$(patsubst -L%,%,$(filter -L%,$(LDFLAGS)))))
CS_PROJECTS := flow/actorcompiler flow/coveragetool fdbclient/vexillographer
--CPP_PROJECTS := flow fdbrpc fdbclient fdbbackup fdbserver fdbcli bindings/c bindings/java fdbmonitor bindings/flow/tester bindings/flow FDBLibTLS
+-CPP_PROJECTS := flow fdbrpc fdbclient fdbbackup fdbserver fdbcli bindings/c bindings/java fdbmonitor bindings/flow/tester bindings/flow
+CPP_PROJECTS := flow fdbrpc fdbclient fdbbackup fdbserver fdbcli bindings/c fdbmonitor bindings/flow/tester bindings/flow
- OTHER_PROJECTS := bindings/python bindings/ruby bindings/go
-
- CS_MK_GENERATED := $(CS_PROJECTS:=/generated.mk)
-@@ -117,7 +124,7 @@ CPP_MK_GENERATED := $(CPP_PROJECTS:=/generated.mk)
+ ifndef TLS_DISABLED
+ CPP_PROJECTS += FDBLibTLS
+ endif
+@@ -132,7 +143,7 @@ CPP_MK_GENERATED := $(CPP_PROJECTS:=/generated.mk)
MK_GENERATED := $(CS_MK_GENERATED) $(CPP_MK_GENERATED)
# build/valgrind.mk needs to be included before any _MK_GENERATED (which in turn includes local.mk)
@@ -55,7 +43,7 @@
ALL_MAKEFILES := Makefile $(MK_INCLUDE) $(patsubst %/generated.mk,%/local.mk,$(MK_GENERATED))
-@@ -127,7 +134,7 @@ TARGETS =
+@@ -142,7 +153,7 @@ TARGETS =
default: fdbserver fdbbackup fdbcli fdb_c fdb_python fdb_python_sdist
@@ -64,7 +52,7 @@
# These are always defined and ready to use. Any target that uses them and needs them up to date
# should depend on versions.target
-@@ -149,11 +156,11 @@ Makefiles: $(MK_GENERATED)
+@@ -164,11 +175,11 @@ Makefiles: $(MK_GENERATED)
$(CS_MK_GENERATED): build/csprojtom4.py build/csproj.mk Makefile
@echo "Creating $@"
diff --git a/databases/foundationdb/files/patch-fdbbackup_local.mk b/databases/foundationdb/files/patch-fdbbackup_local.mk
index 5c350aac8330..f6a883b4e3a6 100644
--- a/databases/foundationdb/files/patch-fdbbackup_local.mk
+++ b/databases/foundationdb/files/patch-fdbbackup_local.mk
@@ -1,6 +1,6 @@
---- fdbbackup/local.mk.orig 2018-09-11 01:21:54 UTC
+--- fdbbackup/local.mk.orig 2019-04-09 00:11:05 UTC
+++ fdbbackup/local.mk
-@@ -35,6 +35,8 @@ ifeq ($(PLATFORM),linux)
+@@ -34,6 +34,8 @@ ifeq ($(PLATFORM),linux)
# fdbbackup_STATIC_LIBS += -ltcmalloc -lunwind -lprofiler
else ifeq ($(PLATFORM),osx)
fdbbackup_LDFLAGS += -lc++
diff --git a/databases/foundationdb/files/patch-fdbcli_local.mk b/databases/foundationdb/files/patch-fdbcli_local.mk
index e8b78d1da51e..05de37f0bbc8 100644
--- a/databases/foundationdb/files/patch-fdbcli_local.mk
+++ b/databases/foundationdb/files/patch-fdbcli_local.mk
@@ -1,16 +1,7 @@
---- fdbcli/local.mk.orig 2018-09-11 01:21:54 UTC
+--- fdbcli/local.mk.orig 2019-04-09 00:11:05 UTC
+++ fdbcli/local.mk
-@@ -22,7 +22,7 @@
-
- fdbcli_CFLAGS := $(fdbclient_CFLAGS)
- fdbcli_LDFLAGS := $(fdbrpc_LDFLAGS)
--fdbcli_LIBS := lib/libfdbclient.a lib/libfdbrpc.a lib/libflow.a -ldl $(FDB_TLS_LIB)
-+fdbcli_LIBS := lib/libfdbclient.a lib/libfdbrpc.a lib/libflow.a $(FDB_TLS_LIB)
- fdbcli_STATIC_LIBS := $(TLS_LIBS)
-
- fdbcli_GENERATED_SOURCES += versions.h
-@@ -32,6 +32,8 @@ ifeq ($(PLATFORM),linux)
- fdbcli_LIBS += -lpthread -lrt
+@@ -31,9 +31,11 @@ ifeq ($(PLATFORM),linux)
+ fdbcli_LDFLAGS += -static-libstdc++ -static-libgcc -lpthread -lrt -ldl
else ifeq ($(PLATFORM),osx)
fdbcli_LDFLAGS += -lc++
+else ifeq ($(PLATFORM),freebsd)
@@ -18,3 +9,7 @@
endif
test_fdbcli_status: fdbcli
+- python scripts/test_status.py
++ $(PYTHON) scripts/test_status.py
+
+ bin/fdbcli.debug: bin/fdbcli
diff --git a/databases/foundationdb/files/patch-fdbclient_BlobStore.h b/databases/foundationdb/files/patch-fdbclient_BlobStore.h
deleted file mode 100644
index 887998667678..000000000000
--- a/databases/foundationdb/files/patch-fdbclient_BlobStore.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- fdbclient/BlobStore.h.orig 2019-02-23 13:23:11 UTC
-+++ fdbclient/BlobStore.h
-@@ -36,7 +36,7 @@ class BlobStoreEndpoint : public ReferenceCounted<Blob
- struct Stats {
- Stats() : requests_successful(0), requests_failed(0), bytes_sent(0) {}
- Stats operator-(const Stats &rhs);
-- void clear() { memset(this, sizeof(*this), 0); }
-+ void clear() { memset(this, 0, sizeof(*this)); }
- json_spirit::mObject getJSON();
-
- int64_t requests_successful;
diff --git a/databases/foundationdb/files/patch-fdbmonitor_fdbmonitor.cpp b/databases/foundationdb/files/patch-fdbmonitor_fdbmonitor.cpp
index 9619048abadc..69cc268496c4 100644
--- a/databases/foundationdb/files/patch-fdbmonitor_fdbmonitor.cpp
+++ b/databases/foundationdb/files/patch-fdbmonitor_fdbmonitor.cpp
@@ -1,6 +1,6 @@
---- fdbmonitor/fdbmonitor.cpp.orig 2019-01-09 22:28:32 UTC
+--- fdbmonitor/fdbmonitor.cpp.orig 2019-04-09 00:11:05 UTC
+++ fdbmonitor/fdbmonitor.cpp
-@@ -35,6 +35,10 @@
+@@ -37,6 +37,10 @@
#include <linux/limits.h>
#endif
@@ -11,7 +11,7 @@
#ifdef __APPLE__
#include <sys/event.h>
#include <mach/mach.h>
-@@ -72,7 +76,7 @@
+@@ -77,7 +81,7 @@
#ifdef __linux__
typedef fd_set* fdb_fd_set;
@@ -20,7 +20,7 @@
typedef int fdb_fd_set;
#endif
-@@ -83,7 +87,7 @@ void monitor_fd( fdb_fd_set list, int fd, int* maxfd,
+@@ -88,7 +92,7 @@ void monitor_fd( fdb_fd_set list, int fd, int* maxfd,
FD_SET( fd, list );
if ( fd > *maxfd )
*maxfd = fd;
@@ -29,7 +29,7 @@
/* ignore maxfd */
struct kevent ev;
EV_SET( &ev, fd, EVFILT_READ, EV_ADD, 0, 0, cmd );
-@@ -94,7 +98,7 @@ void monitor_fd( fdb_fd_set list, int fd, int* maxfd,
+@@ -99,7 +103,7 @@ void monitor_fd( fdb_fd_set list, int fd, int* maxfd,
void unmonitor_fd( fdb_fd_set list, int fd ) {
#ifdef __linux__
FD_CLR( fd, list );
@@ -38,7 +38,7 @@
struct kevent ev;
EV_SET( &ev, fd, EVFILT_READ, EV_DELETE, 0, 0, NULL );
kevent( list, &ev, 1, NULL, 0, NULL ); // FIXME: check?
-@@ -188,7 +192,7 @@ const char* get_value_multi(const CSimpleIni& ini, con
+@@ -193,7 +197,7 @@ const char* get_value_multi(const CSimpleIni& ini, con
}
double timer() {
@@ -47,7 +47,7 @@
struct timespec ts;
clock_gettime(CLOCK_MONOTONIC, &ts);
return double(ts.tv_sec) + (ts.tv_nsec * 1e-9);
-@@ -824,7 +828,7 @@ void read_child_output( Command* cmd, int pipe_idx, fd
+@@ -912,7 +916,7 @@ void read_child_output( Command* cmd, int pipe_idx, fd
}
}
@@ -56,16 +56,16 @@
void watch_conf_dir( int kq, int* confd_fd, std::string confdir ) {
struct kevent ev;
std::string original = confdir;
-@@ -841,7 +845,7 @@ void watch_conf_dir( int kq, int* confd_fd, std::strin
+@@ -929,7 +933,7 @@ void watch_conf_dir( int kq, int* confd_fd, std::strin
std::string child = confdir;
/* Find the nearest existing ancestor */
- while( (*confd_fd = open( confdir.c_str(), O_EVTONLY )) < 0 && errno == ENOENT ) {
+ while( (*confd_fd = open( confdir.c_str(), O_RDONLY )) < 0 && errno == ENOENT ) {
child = confdir;
- confdir = parentDirectory(confdir);
+ confdir = parentDirectory(confdir, false);
}
-@@ -878,7 +882,7 @@ void watch_conf_file( int kq, int* conff_fd, const cha
+@@ -966,7 +970,7 @@ void watch_conf_file( int kq, int* conff_fd, const cha
}
/* Open and watch */
@@ -74,16 +74,16 @@
if ( *conff_fd >= 0 ) {
EV_SET( &ev, *conff_fd, EVFILT_VNODE, EV_ADD | EV_CLEAR, NOTE_WRITE | NOTE_ATTRIB, 0, NULL );
kevent( kq, &ev, 1, NULL, 0, NULL );
-@@ -985,7 +989,7 @@ std::unordered_map<int, std::unordered_set<std::string
+@@ -1170,7 +1174,7 @@ int main(int argc, char** argv) {
+ // testPathOps(); return -1;
- int main(int argc, char** argv) {
std::string lockfile = "/var/run/fdbmonitor.pid";
- std::string _confpath = "/etc/foundationdb/foundationdb.conf";
+ std::string _confpath = std::string(PREFIX) + "/etc/foundationdb/foundationdb.conf";
std::vector<const char *> additional_watch_paths;
-@@ -1067,7 +1071,7 @@ int main(int argc, char** argv) {
+@@ -1252,7 +1256,7 @@ int main(int argc, char** argv) {
/* only linux needs this, but... */
int maxfd = 0;
@@ -92,7 +92,7 @@
fd_set rfds;
watched_fds = &rfds;
-@@ -1082,12 +1086,12 @@ int main(int argc, char** argv) {
+@@ -1267,12 +1271,12 @@ int main(int argc, char** argv) {
CSimpleIniA* ini = NULL;
if (daemonize) {
@@ -107,7 +107,7 @@
#pragma GCC diagnostic pop
#endif
log_err("daemon", errno, "Unable to daemonize");
-@@ -1140,12 +1144,12 @@ int main(int argc, char** argv) {
+@@ -1325,12 +1329,12 @@ int main(int argc, char** argv) {
snprintf(pid_buf, sizeof(pid_buf), "%d\n", getpid());
ssize_t ign = write(lockfile_fd, pid_buf, strlen(pid_buf));
@@ -122,7 +122,7 @@
int kq = kqueue();
if ( kq < 0 ) {
log_err( "kqueue", errno, "Unable to create kqueue" );
-@@ -1176,7 +1180,7 @@ int main(int argc, char** argv) {
+@@ -1361,7 +1365,7 @@ int main(int argc, char** argv) {
#endif
@@ -131,7 +131,7 @@
signal(SIGCHLD, child_handler);
#endif
-@@ -1190,11 +1194,11 @@ int main(int argc, char** argv) {
+@@ -1375,11 +1379,11 @@ int main(int argc, char** argv) {
/* normal will be restored in our main loop in the call to
pselect, but none blocks all signals while processing events */
sigprocmask(SIG_SETMASK, &full_mask, &normal_mask);
@@ -145,7 +145,7 @@
struct stat st_buf;
struct timespec mtimespec;
-@@ -1253,7 +1257,7 @@ int main(int argc, char** argv) {
+@@ -1438,7 +1442,7 @@ int main(int argc, char** argv) {
load_conf(confpath.c_str(), uid, gid, &normal_mask, &rfds, &maxfd);
reload_additional_watches = false;
@@ -154,7 +154,7 @@
load_conf( confpath.c_str(), uid, gid, &normal_mask, watched_fds, &maxfd );
watch_conf_file( kq, &conff_fd, confpath.c_str() );
watch_conf_dir( kq, &confd_fd, confdir );
-@@ -1291,7 +1295,7 @@ int main(int argc, char** argv) {
+@@ -1476,7 +1480,7 @@ int main(int argc, char** argv) {
if(nfds == 0) {
reload = true;
}
diff --git a/databases/foundationdb/files/patch-fdbrpc_AsyncFileCached.actor.cpp b/databases/foundationdb/files/patch-fdbrpc_AsyncFileCached.actor.cpp
index 4e726d93290a..2b553e174bb3 100644
--- a/databases/foundationdb/files/patch-fdbrpc_AsyncFileCached.actor.cpp
+++ b/databases/foundationdb/files/patch-fdbrpc_AsyncFileCached.actor.cpp
@@ -1,4 +1,4 @@
---- fdbrpc/AsyncFileCached.actor.cpp.orig 2018-05-30 22:33:28 UTC
+--- fdbrpc/AsyncFileCached.actor.cpp.orig 2019-04-09 00:11:05 UTC
+++ fdbrpc/AsyncFileCached.actor.cpp
@@ -31,7 +31,7 @@ EvictablePage::~EvictablePage() {
if (pageCache->pageSize == 4096)
@@ -9,3 +9,12 @@
}
if (index > -1) {
pageCache->pages[index] = pageCache->pages.back();
+@@ -155,7 +155,7 @@ void AsyncFileCached::releaseZeroCopy( void* data, int
+ if (length == 4096)
+ FastAllocator<4096>::release(data);
+ else
+- aligned_free(data);
++ free(data);
+ }
+ }
+ else {
diff --git a/databases/foundationdb/files/patch-fdbrpc_IAsyncFile.actor.cpp b/databases/foundationdb/files/patch-fdbrpc_IAsyncFile.actor.cpp
index 12f943787ec0..c7eb47031e31 100644
--- a/databases/foundationdb/files/patch-fdbrpc_IAsyncFile.actor.cpp
+++ b/databases/foundationdb/files/patch-fdbrpc_IAsyncFile.actor.cpp
@@ -1,7 +1,7 @@
---- fdbrpc/IAsyncFile.actor.cpp.orig 2019-01-09 22:28:32 UTC
+--- fdbrpc/IAsyncFile.actor.cpp.orig 2019-04-09 00:11:05 UTC
+++ fdbrpc/IAsyncFile.actor.cpp
-@@ -42,7 +42,7 @@ ACTOR static Future<Void> zeroRangeHelper( Reference<I
- Void _ = wait( yield() );
+@@ -43,7 +43,7 @@ ACTOR static Future<Void> zeroRangeHelper( Reference<I
+ wait( yield() );
}
- aligned_free(zeros);
diff --git a/databases/foundationdb/files/patch-fdbrpc_local.mk b/databases/foundationdb/files/patch-fdbrpc_local.mk
index 54fc22d33d0b..ac7edf336142 100644
--- a/databases/foundationdb/files/patch-fdbrpc_local.mk
+++ b/databases/foundationdb/files/patch-fdbrpc_local.mk
@@ -1,4 +1,4 @@
---- fdbrpc/local.mk.orig 2018-04-19 02:55:50 UTC
+--- fdbrpc/local.mk.orig 2019-04-09 00:11:05 UTC
+++ fdbrpc/local.mk
@@ -20,10 +20,11 @@
@@ -7,9 +7,9 @@
-fdbrpc_BUILD_SOURCES += fdbrpc/libeio/eio.c
+#fdbrpc_BUILD_SOURCES += fdbrpc/libeio/eio.c
--fdbrpc_CFLAGS := -I$(BOOSTDIR) -I. -Ifdbrpc -Ifdbrpc/libeio -DUSE_UCONTEXT
+-fdbrpc_CFLAGS := -I$(BOOSTDIR) -I. -Ifdbrpc/libeio -DUSE_UCONTEXT
-fdbrpc_LDFLAGS :=
-+fdbrpc_CFLAGS := -I$(BOOSTDIR)/include -I. -Ifdbrpc -Ifdbrpc/libeio -DUSE_UCONTEXT
++fdbrpc_CFLAGS := -I$(BOOSTDIR)/include -I. -DUSE_UCONTEXT
+fdbrpc_LDFLAGS := -L$(BOOSTDIR)/lib
+fdbrpc_LIBS := -lm -lc++ -lpthread -leio -lboost_system
diff --git a/databases/foundationdb/files/patch-fdbserver_fdbserver.actor.cpp b/databases/foundationdb/files/patch-fdbserver_fdbserver.actor.cpp
index 11799208b12e..079821f11340 100644
--- a/databases/foundationdb/files/patch-fdbserver_fdbserver.actor.cpp
+++ b/databases/foundationdb/files/patch-fdbserver_fdbserver.actor.cpp
@@ -1,37 +1,29 @@
---- fdbserver/fdbserver.actor.cpp.orig 2019-01-09 22:28:32 UTC
+--- fdbserver/fdbserver.actor.cpp.orig 2019-04-09 00:11:05 UTC
+++ fdbserver/fdbserver.actor.cpp
@@ -60,7 +60,7 @@
- #define BOOST_DATE_TIME_NO_LIB
- #include <boost/interprocess/managed_shared_memory.hpp>
+ #include "versions.h"
+ #endif
-#ifdef __linux__
+#if defined(__linux__) || defined(__FreeBSD__)
#include <execinfo.h>
#include <signal.h>
#ifdef ALLOC_INSTRUMENTATION
-@@ -73,6 +73,7 @@
- #endif
-
- #include "flow/SimpleOpt.h"
-+#include <fstream>
-
- enum {
- OPT_CONNFILE, OPT_SEEDCONNFILE, OPT_SEEDCONNSTRING, OPT_ROLE, OPT_LISTEN, OPT_PUBLICADDR, OPT_DATAFOLDER, OPT_LOGFOLDER, OPT_PARENTPID, OPT_NEWCONSOLE, OPT_NOBOX, OPT_TESTFILE, OPT_RESTARTING, OPT_RANDOMSEED, OPT_KEY, OPT_MEMLIMIT, OPT_STORAGEMEMLIMIT, OPT_MACHINEID, OPT_DCID, OPT_MACHINE_CLASS, OPT_BUGGIFY, OPT_VERSION, OPT_CRASHONERROR, OPT_HELP, OPT_NETWORKIMPL, OPT_NOBUFSTDOUT, OPT_BUFSTDOUTERR, OPT_TRACECLOCK, OPT_NUMTESTERS, OPT_DEVHELP, OPT_ROLLSIZE, OPT_MAXLOGS, OPT_MAXLOGSSIZE, OPT_KNOB, OPT_TESTSERVERS, OPT_TEST_ON_SERVERS, OPT_METRICSCONNFILE, OPT_METRICSPREFIX,
-@@ -353,7 +354,7 @@ class WorldReadablePermissions { (public)
+@@ -288,7 +288,7 @@ class WorldReadablePermissions { (public)
throw platform_error();
}
permission.set_permissions( &sa );
-#elif (defined(__linux__) || defined(__APPLE__))
-+#elif (defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__))
++#elif (defined(__linux__) || defined(__APPLE__)) || defined(__FreeBSD__)
// There is nothing to do here, since the default permissions are fine
#else
#error Port me!
-@@ -363,7 +364,7 @@ class WorldReadablePermissions { (public)
+@@ -298,7 +298,7 @@ class WorldReadablePermissions { (public)
virtual ~WorldReadablePermissions() {
#ifdef _WIN32
LocalFree( sa.lpSecurityDescriptor );
-#elif (defined(__linux__) || defined(__APPLE__))
-+#elif (defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__))
++#elif (defined(__linux__) || defined(__APPLE__)) || defined(__FreeBSD__)
// There is nothing to do here, since the default permissions are fine
#else
#error Port me!
diff --git a/databases/foundationdb/files/patch-fdbserver_local.mk b/databases/foundationdb/files/patch-fdbserver_local.mk
index 0bfe9eb2c189..e8e377ff7de4 100644
--- a/databases/foundationdb/files/patch-fdbserver_local.mk
+++ b/databases/foundationdb/files/patch-fdbserver_local.mk
@@ -1,6 +1,6 @@
---- fdbserver/local.mk.orig 2018-09-11 01:21:54 UTC
+--- fdbserver/local.mk.orig 2019-04-09 00:11:05 UTC
+++ fdbserver/local.mk
-@@ -35,6 +35,8 @@ ifeq ($(PLATFORM),linux)
+@@ -34,6 +34,8 @@ ifeq ($(PLATFORM),linux)
# fdbserver_STATIC_LIBS += -ltcmalloc -lunwind -lprofiler
else ifeq ($(PLATFORM),osx)
fdbserver_LDFLAGS += -lc++
diff --git a/databases/foundationdb/files/patch-fdbserver_worker.actor.cpp b/databases/foundationdb/files/patch-fdbserver_worker.actor.cpp
index 3530b30f7824..aa1d330917de 100644
--- a/databases/foundationdb/files/patch-fdbserver_worker.actor.cpp
+++ b/databases/foundationdb/files/patch-fdbserver_worker.actor.cpp
@@ -1,6 +1,6 @@
---- fdbserver/worker.actor.cpp.orig 2019-01-09 22:28:32 UTC
+--- fdbserver/worker.actor.cpp.orig 2019-04-09 00:11:05 UTC
+++ fdbserver/worker.actor.cpp
-@@ -39,7 +39,7 @@
+@@ -41,7 +41,7 @@
#include "fdbclient/ClientWorkerInterface.h"
#include "flow/Profiler.h"
@@ -9,7 +9,7 @@
#ifdef USE_GPERFTOOLS
#include "gperftools/profiler.h"
#endif
-@@ -272,7 +272,7 @@ ACTOR Future<Void> registrationClient( Reference<Async
+@@ -373,7 +373,7 @@ ACTOR Future<Void> registrationClient(
}
}
@@ -18,7 +18,7 @@
//A set of threads that should be profiled
std::set<std::thread::id> profiledThreads;
-@@ -284,7 +284,7 @@ int filter_in_thread(void *arg) {
+@@ -385,7 +385,7 @@ int filter_in_thread(void *arg) {
//Enables the calling thread to be profiled
void registerThreadForProfiling() {
@@ -27,7 +27,7 @@
//Not sure if this is actually needed, but a call to backtrace was advised here:
//http://groups.google.com/group/google-perftools/browse_thread/thread/0dfd74532e038eb8/2686d9f24ac4365f?pli=1
profiledThreads.insert(std::this_thread::get_id());
-@@ -298,7 +298,7 @@ void registerThreadForProfiling() {
+@@ -399,7 +399,7 @@ void registerThreadForProfiling() {
void updateCpuProfiler(ProfilerRequest req) {
switch (req.type) {
case ProfilerRequest::Type::GPROF:
diff --git a/databases/foundationdb/files/patch-flow_Deque.h b/databases/foundationdb/files/patch-flow_Deque.h
index 5e146f57b007..d8c44c2229d4 100644
--- a/databases/foundationdb/files/patch-flow_Deque.h
+++ b/databases/foundationdb/files/patch-flow_Deque.h
@@ -1,6 +1,6 @@
---- flow/Deque.h.orig 2019-01-09 22:28:32 UTC
+--- flow/Deque.h.orig 2019-04-09 00:11:05 UTC
+++ flow/Deque.h
-@@ -166,7 +166,7 @@ class Deque { (private)
+@@ -168,7 +168,7 @@ class Deque { (private)
new (&newArr[i - begin]) T(std::move(arr[i&mask]));
arr[i&mask].~T();
}
@@ -9,7 +9,7 @@
arr = newArr;
end -= begin;
begin = 0;
-@@ -177,8 +177,8 @@ class Deque { (private)
+@@ -179,7 +179,7 @@ class Deque { (private)
for (int i = begin; i != end; i++)
arr[i&mask].~T();
if(arr)
@@ -18,6 +18,3 @@
}
};
--#endif
-\ No newline at end of file
-+#endif
diff --git a/databases/foundationdb/files/patch-flow_FastAlloc.cpp b/databases/foundationdb/files/patch-flow_FastAlloc.cpp
index 7cffa1d152e0..098ec8621d09 100644
--- a/databases/foundationdb/files/patch-flow_FastAlloc.cpp
+++ b/databases/foundationdb/files/patch-flow_FastAlloc.cpp
@@ -1,6 +1,6 @@
---- flow/FastAlloc.cpp.orig 2018-04-22 14:45:22 UTC
+--- flow/FastAlloc.cpp.orig 2019-04-09 00:11:05 UTC
+++ flow/FastAlloc.cpp
-@@ -51,6 +51,9 @@
+@@ -53,6 +53,9 @@
#elif defined(__APPLE__)
#pragma message "init_priority is not supported on this platform; will this be a problem?"
#define INIT_SEG
diff --git a/databases/foundationdb/files/patch-flow_Net2.actor.cpp b/databases/foundationdb/files/patch-flow_Net2.actor.cpp
index fa8da1eb24a6..7c087a89c581 100644
--- a/databases/foundationdb/files/patch-flow_Net2.actor.cpp
+++ b/databases/foundationdb/files/patch-flow_Net2.actor.cpp
@@ -1,11 +1,33 @@
---- flow/Net2.actor.cpp.orig 2019-01-09 22:28:32 UTC
+--- flow/Net2.actor.cpp.orig 2019-04-09 00:11:05 UTC
+++ flow/Net2.actor.cpp
-@@ -56,7 +56,7 @@ uint64_t compatibleProtocolVersionMask = 0xfffffffffff
- uint64_t minValidProtocolVersion = 0x0FDB00A200060001LL;
-
+@@ -62,7 +62,7 @@ const uint64_t minValidProtocolVersion = 0x0FDB0
+ // This assert is intended to help prevent incrementing the leftmost digits accidentally. It will probably need to change when we reach version 10.
+ static_assert(currentProtocolVersion < 0x0FDB00B100000000LL, "Unexpected protocol version");
-#if defined(__linux__)
+#if defined(__linux__) || defined(__FreeBSD__)
#include <execinfo.h>
volatile double net2liveness = 0;
+@@ -437,6 +437,12 @@ class Connection : public IConnection, ReferenceCounte
+ }
+ };
+
++#if BOOST_VERSION >= 107000
++#define GET_IO_SERVICE(s) ((boost::asio::io_context&)(s).get_executor().context())
++#else
++#define GET_IO_SERVICE(s) ((s).get_io_service())
++#endif
++
+ class Listener : public IListener, ReferenceCounted<Listener> {
+ NetworkAddress listenAddress;
+ tcp::acceptor acceptor;
+@@ -459,7 +465,7 @@ class Listener : public IListener, ReferenceCounted<Li
+
+ private:
+ ACTOR static Future<Reference<IConnection>> doAccept( Listener* self ) {
+- state Reference<Connection> conn( new Connection( self->acceptor.get_io_service() ) );
++ state Reference<Connection> conn( new Connection( GET_IO_SERVICE(self->acceptor) ) );
+ state tcp::acceptor::endpoint_type peer_endpoint;
+ try {
+ BindPromise p("N2_AcceptError", UID());
diff --git a/databases/foundationdb/files/patch-flow_Platform.cpp b/databases/foundationdb/files/patch-flow_Platform.cpp
index 5d08110a2a21..4603a351860c 100644
--- a/databases/foundationdb/files/patch-flow_Platform.cpp
+++ b/databases/foundationdb/files/patch-flow_Platform.cpp
@@ -1,6 +1,6 @@
---- flow/Platform.cpp.orig 2019-01-09 22:28:32 UTC
+--- flow/Platform.cpp.orig 2019-04-09 00:11:05 UTC
+++ flow/Platform.cpp
-@@ -71,6 +71,7 @@
+@@ -72,6 +72,7 @@
#include <dirent.h>
#include <sys/time.h>
@@ -8,7 +8,7 @@
#include <sys/mman.h>
#include <unistd.h>
#include <ftw.h>
-@@ -119,7 +120,13 @@
+@@ -122,7 +123,13 @@
#include <IOKit/IOBSD.h>
#endif
@@ -22,7 +22,7 @@
std::string removeWhitespace(const std::string &t)
{
-@@ -198,7 +205,7 @@ double getProcessorTimeThread() {
+@@ -201,7 +208,7 @@ double getProcessorTimeThread() {
throw platform_error();
}
return FiletimeAsInt64(ftKernel) / double(1e7) + FiletimeAsInt64(ftUser) / double(1e7);
@@ -31,7 +31,7 @@
return getProcessorTimeGeneric(RUSAGE_THREAD);
#elif defined(__APPLE__)
/* No RUSAGE_THREAD so we use the lower level interface */
-@@ -266,6 +273,14 @@ uint64_t getResidentMemoryUsage() {
+@@ -269,6 +276,14 @@ uint64_t getResidentMemoryUsage() {
throw platform_error();
}
return info.resident_size;
@@ -41,12 +41,12 @@
+ if (getrusage(RUSAGE_SELF | RUSAGE_THREAD, &rusage) == 0) {
+ return rusage.ru_maxrss;
+ }
-+
++
+ return 0;
#else
#warning getMemoryUsage unimplemented on this platform
return 0;
-@@ -304,7 +319,7 @@ uint64_t getMemoryUsage() {
+@@ -307,7 +322,7 @@ uint64_t getMemoryUsage() {
}
return info.virtual_size;
#else
@@ -55,7 +55,7 @@
return 0;
#endif
}
-@@ -427,6 +442,24 @@ void getMachineRAMInfo(MachineRAMInfo& memInfo) {
+@@ -430,6 +445,24 @@ void getMachineRAMInfo(MachineRAMInfo& memInfo) {
memInfo.total = pagesize * (vm_stat.free_count + vm_stat.active_count + vm_stat.inactive_count + vm_stat.wire_count);
memInfo.available = pagesize * vm_stat.free_count;
memInfo.committed = memInfo.total - memInfo.available;
@@ -80,7 +80,7 @@
#else
#warning getMachineRAMInfo unimplemented on this platform
#endif
-@@ -451,7 +484,7 @@ Error systemErrorCodeToError() {
+@@ -454,7 +487,7 @@ Error systemErrorCodeToError() {
void getDiskBytes(std::string const& directory, int64_t& free, int64_t& total) {
INJECT_FAULT( platform_error, "getDiskBytes" );
#if defined(__unixish__)
@@ -89,29 +89,20 @@
struct statvfs buf;
if (statvfs(directory.c_str(), &buf)) {
Error e = systemErrorCodeToError();
-@@ -497,7 +530,7 @@ void getDiskBytes(std::string const& directory, int64_
- #endif
- }
-
--#ifdef __unixish__
-+#if defined(__linux__) || defined(__APPLE__)
- const char* getInterfaceName(uint32_t _ip) {
- INJECT_FAULT( platform_error, "getInterfaceName" );
- static char iname[20];
-@@ -744,6 +777,30 @@ dev_t getDeviceId(std::string path) {
+@@ -753,6 +786,30 @@ dev_t getDeviceId(std::string path) {
#endif
+#ifdef __FreeBSD__
-+void getNetworkTraffic(uint32_t ip, uint64_t& bytesSent, uint64_t& bytesReceived,
-+ uint64_t& outSegs, uint64_t& retransSegs) {
++void getNetworkTraffic(const IPAddress &ip, uint64_t& bytesSent, uint64_t& bytesReceived, uint64_t& outSegs,
++ uint64_t& retransSegs) {
+ bytesReceived = 0;
+ bytesSent = 0;
+ outSegs = 0;
+ retransSegs = 0;
+}
+
-+void getMachineLoad(uint64_t& idleTime, uint64_t& totalTime) {
++void getMachineLoad(uint64_t& idleTime, uint64_t& totalTime, bool logDetails) {
+ idleTime = 0;
+ totalTime = 0;
+}
@@ -127,9 +118,9 @@
+#endif
+
#ifdef __APPLE__
- void getNetworkTraffic(uint32_t ip, uint64_t& bytesSent, uint64_t& bytesReceived,
- uint64_t& outSegs, uint64_t& retransSegs) {
-@@ -1268,7 +1325,7 @@ struct OffsetTimer {
+ void getNetworkTraffic(const IPAddress& ip, uint64_t& bytesSent, uint64_t& bytesReceived, uint64_t& outSegs,
+ uint64_t& retransSegs) {
+@@ -1277,7 +1334,7 @@ struct OffsetTimer {
return offset + count * secondsPerCount;
}
};
@@ -138,7 +129,7 @@
#define DOUBLETIME(ts) (double(ts.tv_sec) + (ts.tv_nsec * 1e-9))
#ifndef CLOCK_MONOTONIC_RAW
#define CLOCK_MONOTONIC_RAW 4 // Confirmed safe to do with glibc >= 2.11 and kernel >= 2.6.28. No promises with older glibc. Older kernel definitely breaks it.
-@@ -1333,7 +1390,7 @@ double timer() {
+@@ -1342,7 +1399,7 @@ double timer() {
GetSystemTimeAsFileTime(&fileTime);
static_assert( sizeof(fileTime) == sizeof(uint64_t), "FILETIME size wrong" );
return (*(uint64_t*)&fileTime - FILETIME_C_EPOCH) * 100e-9;
@@ -147,7 +138,7 @@
struct timespec ts;
clock_gettime(CLOCK_REALTIME, &ts);
return double(ts.tv_sec) + (ts.tv_nsec * 1e-9);
-@@ -1353,7 +1410,7 @@ uint64_t timer_int() {
+@@ -1362,7 +1419,7 @@ uint64_t timer_int() {
GetSystemTimeAsFileTime(&fileTime);
static_assert( sizeof(fileTime) == sizeof(uint64_t), "FILETIME size wrong" );
return (*(uint64_t*)&fileTime - FILETIME_C_EPOCH);
@@ -156,16 +147,26 @@
struct timespec ts;
clock_gettime(CLOCK_REALTIME, &ts);
return uint64_t(ts.tv_sec) * 1e9 + ts.tv_nsec;
-@@ -1502,7 +1559,7 @@ static void *allocateInternal(size_t length, bool larg
+@@ -1412,7 +1469,7 @@ void setMemoryQuota( size_t limit ) {
+ }
+ if (!AssignProcessToJobObject( job, GetCurrentProcess() ))
+ TraceEvent(SevWarn, "FailedToSetMemoryLimit").GetLastError();
+-#elif defined(__linux__)
++#elif defined(__linux__) || defined(__FreeBSD__)
+ struct rlimit rlim;
+ if (getrlimit(RLIMIT_AS, &rlim)) {
+ TraceEvent(SevError, "GetMemoryLimit").GetLastError();
+@@ -1515,7 +1572,8 @@ static void *allocateInternal(size_t length, bool larg
flags |= MAP_HUGETLB;
return mmap(NULL, length, PROT_READ|PROT_WRITE, flags, -1, 0);
-#elif defined(__APPLE__)
+#elif defined(__APPLE__) || defined(__FreeBSD__)
++
int flags = MAP_PRIVATE|MAP_ANON;
return mmap(NULL, length, PROT_READ|PROT_WRITE, flags, -1, 0);
-@@ -1576,6 +1633,11 @@ void setAffinity(int proc) {
+@@ -1589,6 +1647,11 @@ void setAffinity(int proc) {
CPU_ZERO(&set);
CPU_SET(proc, &set);
sched_setaffinity(0, sizeof(cpu_set_t), &set);
@@ -177,7 +178,7 @@
#endif
}
-@@ -1636,7 +1698,7 @@ void renameFile( std::string const& fromPath, std::str
+@@ -1649,7 +1712,7 @@ void renameFile( std::string const& fromPath, std::str
//renamedFile();
return;
}
@@ -186,7 +187,7 @@
if (!rename( fromPath.c_str(), toPath.c_str() )) {
//FIXME: We cannot inject faults after renaming the file, because we could end up with two asyncFileNonDurable open for the same file
//renamedFile();
-@@ -1759,7 +1821,7 @@ bool createDirectory( std::string const& directory ) {
+@@ -1807,7 +1870,7 @@ bool createDirectory( std::string const& directory ) {
Error e = systemErrorCodeToError();
TraceEvent(SevError, "CreateDirectory").detail("Directory", directory).GetLastError().error(e);
throw e;
@@ -195,16 +196,16 @@
size_t sep = 0;
do {
sep = directory.find_first_of('/', sep + 1);
-@@ -1804,7 +1866,7 @@ std::string abspath( std::string const& filename ) {
+@@ -1959,7 +2022,7 @@ std::string abspath( std::string const& path, bool res
if (*x == '/')
*x = CANONICAL_PATH_SEPARATOR;
return nameBuffer;
-#elif (defined(__linux__) || defined(__APPLE__))
+#elif (defined(__linux__) || defined(__APPLE__)) || defined(__FreeBSD__)
+
char result[PATH_MAX];
- auto r = realpath( filename.c_str(), result );
- if (!r) {
-@@ -1870,7 +1932,7 @@ std::string getUserHomeDirectory() {
+ // Must resolve links, so first try realpath on the whole thing
+@@ -2023,7 +2086,7 @@ std::string getUserHomeDirectory() {
#ifdef _WIN32
#define FILE_ATTRIBUTE_DATA DWORD
@@ -213,7 +214,7 @@
#define FILE_ATTRIBUTE_DATA mode_t
#else
#error Port me!
-@@ -1879,7 +1941,7 @@ std::string getUserHomeDirectory() {
+@@ -2032,7 +2095,7 @@ std::string getUserHomeDirectory() {
bool acceptFile( FILE_ATTRIBUTE_DATA fileAttributes, std::string name, std::string extension ) {
#ifdef _WIN32
return !(fileAttributes & FILE_ATTRIBUTE_DIRECTORY) && StringRef(name).endsWith(extension);
@@ -222,7 +223,7 @@
return S_ISREG(fileAttributes) && StringRef(name).endsWith(extension);
#else
#error Port me!
-@@ -1889,7 +1951,7 @@ bool acceptFile( FILE_ATTRIBUTE_DATA fileAttributes, s
+@@ -2042,7 +2105,7 @@ bool acceptFile( FILE_ATTRIBUTE_DATA fileAttributes, s
bool acceptDirectory( FILE_ATTRIBUTE_DATA fileAttributes, std::string name, std::string extension ) {
#ifdef _WIN32
return (fileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0;
@@ -231,7 +232,7 @@
return S_ISDIR(fileAttributes);
#else
#error Port me!
-@@ -1925,7 +1987,7 @@ std::vector<std::string> findFiles( std::string const&
+@@ -2078,7 +2141,7 @@ std::vector<std::string> findFiles( std::string const&
}
FindClose(h);
}
@@ -240,7 +241,7 @@
DIR *dip;
if ((dip = opendir(directory.c_str())) != NULL) {
-@@ -1989,7 +2051,7 @@ void findFilesRecursively(std::string path, std::vecto
+@@ -2142,7 +2205,7 @@ void findFilesRecursively(std::string path, std::vecto
void threadSleep( double seconds ) {
#ifdef _WIN32
Sleep( (DWORD)(seconds * 1e3) );
@@ -249,7 +250,7 @@
struct timespec req, rem;
req.tv_sec = seconds;
-@@ -2027,7 +2089,7 @@ void makeTemporary( const char* filename ) {
+@@ -2180,7 +2243,7 @@ void makeTemporary( const char* filename ) {
THREAD_HANDLE startThread(void (*func) (void *), void *arg) {
return (void *)_beginthread(func, 0, arg);
}
@@ -258,7 +259,7 @@
THREAD_HANDLE startThread(void *(*func) (void *), void *arg) {
pthread_t t;
pthread_create(&t, NULL, func, arg);
-@@ -2040,7 +2102,7 @@ THREAD_HANDLE startThread(void *(*func) (void *), void
+@@ -2193,7 +2256,7 @@ THREAD_HANDLE startThread(void *(*func) (void *), void
void waitThread(THREAD_HANDLE thread) {
#ifdef _WIN32
WaitForSingleObject(thread, INFINITE);
@@ -267,7 +268,7 @@
pthread_join(thread, NULL);
#else
#error Port me!
-@@ -2082,7 +2144,7 @@ int64_t fileSize(std::string const& filename) {
+@@ -2235,7 +2298,7 @@ int64_t fileSize(std::string const& filename) {
return 0;
else
return file_status.st_size;
@@ -276,7 +277,7 @@
struct stat file_status;
if(stat(filename.c_str(), &file_status) != 0)
return 0;
-@@ -2225,6 +2287,8 @@ std::string getDefaultPluginPath( const char* plugin_n
+@@ -2378,6 +2441,8 @@ std::string getDefaultPluginPath( const char* plugin_n
return format( "/usr/lib/foundationdb/plugins/%s.so", plugin_name );
#elif defined(__APPLE__)
return format( "/usr/local/foundationdb/plugins/%s.dylib", plugin_name );
@@ -285,7 +286,7 @@
#else
#error Port me!
#endif
-@@ -2475,7 +2539,7 @@ void* getImageOffset() { return NULL; }
+@@ -2629,7 +2694,7 @@ void* getImageOffset() { return NULL; }
#endif
bool isLibraryLoaded(const char* lib_path) {
@@ -294,7 +295,7 @@
#error Port me!
#endif
-@@ -2491,7 +2555,7 @@ bool isLibraryLoaded(const char* lib_path) {
+@@ -2645,7 +2710,7 @@ bool isLibraryLoaded(const char* lib_path) {
}
void* loadLibrary(const char* lib_path) {
diff --git a/databases/foundationdb/files/patch-flow_Platform.h b/databases/foundationdb/files/patch-flow_Platform.h
index 13cc2100c966..ee36e47b6445 100644
--- a/databases/foundationdb/files/patch-flow_Platform.h
+++ b/databases/foundationdb/files/patch-flow_Platform.h
@@ -1,4 +1,4 @@
---- flow/Platform.h.orig 2019-01-09 22:28:32 UTC
+--- flow/Platform.h.orig 2019-04-09 00:11:05 UTC
+++ flow/Platform.h
@@ -22,7 +22,7 @@
#define FLOW_PLATFORM_H
@@ -9,7 +9,7 @@
#define __unixish__ 1
#endif
-@@ -182,6 +182,8 @@ THREAD_HANDLE startThread(void *(func) (void *), void
+@@ -188,6 +188,8 @@ THREAD_HANDLE startThread(void *(func) (void *), void
#if defined(_WIN32)
#define DYNAMIC_LIB_EXT ".dll"
#elif defined(__linux)
diff --git a/databases/foundationdb/files/patch-flow_ThreadPrimitives.h b/databases/foundationdb/files/patch-flow_ThreadPrimitives.h
index c92f4c3e501b..d8e6af437b9c 100644
--- a/databases/foundationdb/files/patch-flow_ThreadPrimitives.h
+++ b/databases/foundationdb/files/patch-flow_ThreadPrimitives.h
@@ -1,8 +1,8 @@
---- flow/ThreadPrimitives.h.orig 2019-01-09 22:28:32 UTC
+--- flow/ThreadPrimitives.h.orig 2019-04-09 00:11:05 UTC
+++ flow/ThreadPrimitives.h
@@ -25,7 +25,7 @@
- #include "Error.h"
- #include "Trace.h"
+ #include "flow/Error.h"
+ #include "flow/Trace.h"
-#ifdef __linux__
+#if defined(__linux__) || defined(__FreeBSD__)
diff --git a/databases/foundationdb/files/patch-flow_libs_system_src_error__code.cpp b/databases/foundationdb/files/patch-flow_libs_system_src_error__code.cpp
deleted file mode 100644
index fc1f1f5c35bf..000000000000
--- a/databases/foundationdb/files/patch-flow_libs_system_src_error__code.cpp
+++ /dev/null
@@ -1,15 +0,0 @@
---- flow/libs/system/src/error_code.cpp.orig 2018-09-11 01:21:54 UTC
-+++ flow/libs/system/src/error_code.cpp
-@@ -43,6 +43,7 @@ using namespace boost::system::errc;
- #endif
- //----------------------------------------------------------------------------//
-
-+#if BOOST_VERSION < 106800
- namespace
- {
- #if defined(__PGI)
-@@ -434,3 +435,4 @@ namespace boost
-
- } // namespace system
- } // namespace boost
-+#endif
diff --git a/databases/foundationdb/files/patch-flow_local.mk b/databases/foundationdb/files/patch-flow_local.mk
index 8e2a3df8c0f9..e9c1b147da27 100644
--- a/databases/foundationdb/files/patch-flow_local.mk
+++ b/databases/foundationdb/files/patch-flow_local.mk
@@ -1,12 +1,12 @@
---- flow/local.mk.orig 2018-04-19 02:55:50 UTC
+--- flow/local.mk.orig 2019-04-09 00:11:05 UTC
+++ flow/local.mk
@@ -20,8 +20,9 @@
# -*- mode: makefile; -*-
--flow_CFLAGS := -I$(BOOSTDIR) -I. -Iflow -DUSE_UCONTEXT
+-flow_CFLAGS := -I$(BOOSTDIR) -I. -DUSE_UCONTEXT
-flow_LDFLAGS :=
-+flow_CFLAGS := -I$(BOOSTDIR)/include -I. -Iflow -DUSE_UCONTEXT
++flow_CFLAGS := -I$(BOOSTDIR)/include -I. -DUSE_UCONTEXT
+flow_LDFLAGS := -L$(BOOSTDIR)/lib
+flow_LIBS := -lm -lc++ -lpthread -leio -lexecinfo -lboost_system