1: Update to 6.1.1.

2: fix building with boost 1.70.
3: remove BROKEN.
This commit is contained in:
Vanilla I. Shu 2019-04-12 13:04:58 +00:00
parent c1c5461507
commit 5f0593e970
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=498716
22 changed files with 161 additions and 185 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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 $@"

View file

@ -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++

View file

@ -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

View file

@ -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;

View file

@ -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;
}

View file

@ -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 {

View file

@ -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);

View file

@ -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

View file

@ -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!

View file

@ -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++

View file

@ -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:

View file

@ -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

View file

@ -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

View file

@ -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());

View file

@ -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) {

View file

@ -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)

View file

@ -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__)

View file

@ -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

View file

@ -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