foundationdb5: build with gcc6

This commit is contained in:
Maximilian Bosch 2020-01-18 16:41:59 +01:00
parent 6a69a322b8
commit a064678390
No known key found for this signature in database
GPG key ID: 091DBF4D1FC46B8E
4 changed files with 125 additions and 13 deletions

View file

@ -1,4 +1,4 @@
{ stdenv, stdenv49, gccStdenv, llvmPackages
{ gcc6Stdenv, stdenv, gccStdenv, llvmPackages
, lib, fetchurl, fetchpatch, fetchFromGitHub
, cmake, ninja, which, findutils, m4, gawk
@ -37,6 +37,7 @@ in with builtins; {
patches = [
./patches/ldflags-5.1.patch
./patches/fix-scm-version.patch
./patches/gcc-fixes.patch
python3-six-patch
python3-print-patch
];
@ -50,6 +51,7 @@ in with builtins; {
patches = [
./patches/ldflags-5.2.patch
./patches/fix-scm-version.patch
./patches/gcc-fixes.patch
python3-six-patch
python3-print-patch
];

View file

@ -0,0 +1,117 @@
diff --git a/fdbrpc/ContinuousSample.h b/fdbrpc/ContinuousSample.h
index 54ff1b1..577c228 100644
--- a/fdbrpc/ContinuousSample.h
+++ b/fdbrpc/ContinuousSample.h
@@ -26,6 +26,7 @@
#include "flow/IRandom.h"
#include <vector>
#include <algorithm>
+#include <cmath>
template <class T>
class ContinuousSample {
diff --git a/fdbrpc/Smoother.h b/fdbrpc/Smoother.h
index 3ed8e6e..fb46947 100644
--- a/fdbrpc/Smoother.h
+++ b/fdbrpc/Smoother.h
@@ -23,6 +23,7 @@
#pragma once
#include "flow/flow.h"
+#include <cmath>
struct Smoother {
// Times (t) are expected to be nondecreasing
@@ -90,4 +91,4 @@ struct TimerSmoother {
double time, total, estimate;
};
-#endif
\ No newline at end of file
+#endif
diff --git a/fdbrpc/libcoroutine/Coro.c b/fdbrpc/libcoroutine/Coro.c
index cbfdc8f..9993cee 100644
--- a/fdbrpc/libcoroutine/Coro.c
+++ b/fdbrpc/libcoroutine/Coro.c
@@ -66,6 +66,8 @@ VALGRIND_STACK_DEREGISTER((coro)->valgrindStackId)
#define STACK_DEREGISTER(coro)
#endif
+#pragma GCC diagnostic ignored "-Wreturn-local-addr"
+
// Define outside
extern intptr_t g_stackYieldLimit;
diff --git a/fdbserver/Knobs.cpp b/fdbserver/Knobs.cpp
index 819c513..acfbfe7 100644
--- a/fdbserver/Knobs.cpp
+++ b/fdbserver/Knobs.cpp
@@ -20,6 +20,7 @@
#include "Knobs.h"
#include "fdbrpc/Locality.h"
+#include <cmath>
ServerKnobs const* SERVER_KNOBS = new ServerKnobs();
diff --git a/flow/Knobs.cpp b/flow/Knobs.cpp
index b485a84..82541d4 100644
--- a/flow/Knobs.cpp
+++ b/flow/Knobs.cpp
@@ -20,6 +20,7 @@
#include "Knobs.h"
#include "flow/flow.h"
+#include <cmath>
FlowKnobs const* FLOW_KNOBS = new FlowKnobs();
diff --git a/flow/Platform.cpp b/flow/Platform.cpp
index 69dac88..69b86d4 100644
--- a/flow/Platform.cpp
+++ b/flow/Platform.cpp
@@ -623,7 +623,7 @@ void getDiskStatistics(std::string const& directory, uint64_t& currentIOs, uint6
unsigned int minorId;
disk_stream >> majorId;
disk_stream >> minorId;
- if(majorId == (unsigned int) major(buf.st_dev) && minorId == (unsigned int) minor(buf.st_dev)) {
+ if(majorId == (unsigned int) gnu_dev_major(buf.st_dev) && minorId == (unsigned int) gnu_dev_minor(buf.st_dev)) {
std::string ignore;
uint64_t rd_ios; /* # of reads completed */
// This is the total number of reads completed successfully.
diff --git a/flow/TDMetric.actor.h b/flow/TDMetric.actor.h
index 5421b83..711a960 100755
--- a/flow/TDMetric.actor.h
+++ b/flow/TDMetric.actor.h
@@ -36,6 +36,7 @@
#include "CompressedInt.h"
#include <algorithm>
#include <functional>
+#include <cmath>
struct MetricNameRef {
MetricNameRef() {}
diff --git a/flow/flow.h b/flow/flow.h
index 0c220af..f685fbc 100644
--- a/flow/flow.h
+++ b/flow/flow.h
@@ -248,19 +248,6 @@ public:
}
}
- bool operator == (ErrorOr const& o) const {
- return error == o.error && (!present() || get() == o.get());
- }
- bool operator != (ErrorOr const& o) const {
- return !(*this == o);
- }
-
- bool operator < (ErrorOr const& o) const {
- if (error != o.error) return error < o.error;
- if (!present()) return false;
- return get() < o.get();
- }
-
bool isError() const { return error.code() != invalid_error_code; }
bool isError(int code) const { return error.code() == code; }
Error getError() const { ASSERT(isError()); return error; }

View file

@ -1,7 +1,7 @@
# This builder is for FoundationDB's original, somewhat strange visual studio +
# make build system. In FoundationDB 6.1 and later, there's a new CMake system
# (which will eventually become the default version.)
{ stdenv49, lib, fetchurl, fetchFromGitHub
{ gcc6Stdenv, lib, fetchurl, fetchFromGitHub
, which, findutils, m4, gawk
, python, openjdk, mono, libressl
@ -12,7 +12,7 @@ let
# hysterical raisins dictate a version of boost this old. however,
# we luckily do not need to build anything, we just need the header
# files.
boost152 = stdenv49.mkDerivation {
boost152 = gcc6Stdenv.mkDerivation {
name = "boost-headers-1.52.0";
src = fetchurl {
@ -33,10 +33,6 @@ let
# the revision can be inferred from the fdb tagging policy
, rev ? "refs/tags/${version}"
# in theory newer versions of fdb support newer compilers, but they
# don't :( maybe one day
, stdenv ? stdenv49
# in theory newer versions of fdb support newer boost versions, but they
# don't :( maybe one day
, boost ? boost152
@ -45,7 +41,7 @@ let
, officialRelease ? true
, patches ? []
}: stdenv.mkDerivation {
}: gcc6Stdenv.mkDerivation {
pname = "foundationdb";
inherit version;
@ -143,7 +139,7 @@ let
outputs = [ "out" "lib" "dev" "pythonsrc" ];
meta = with stdenv.lib; {
meta = with gcc6Stdenv.lib; {
description = "Open source, distributed, transactional key-value store";
homepage = https://www.foundationdb.org;
license = licenses.asl20;

View file

@ -3432,9 +3432,7 @@ in
fusuma = callPackage ../tools/inputmethods/fusuma {};
fdbPackages = dontRecurseIntoAttrs (callPackage ../servers/foundationdb {
stdenv49 = gcc49Stdenv;
});
fdbPackages = dontRecurseIntoAttrs (callPackage ../servers/foundationdb { });
inherit (fdbPackages)
foundationdb51
@ -7943,7 +7941,6 @@ in
extraBuildInputs = lib.optional stdenv.hostPlatform.isDarwin clang.cc;
};
gcc49Stdenv = overrideCC gccStdenv buildPackages.gcc49;
gcc6Stdenv = overrideCC gccStdenv buildPackages.gcc6;
gcc7Stdenv = overrideCC gccStdenv buildPackages.gcc7;
gcc8Stdenv = overrideCC gccStdenv buildPackages.gcc8;