aboutsummaryrefslogtreecommitdiffhomepage
path: root/third_party/grpc/grpc.patch
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/grpc/grpc.patch')
-rw-r--r--third_party/grpc/grpc.patch224
1 files changed, 224 insertions, 0 deletions
diff --git a/third_party/grpc/grpc.patch b/third_party/grpc/grpc.patch
new file mode 100644
index 0000000000..448776a2d0
--- /dev/null
+++ b/third_party/grpc/grpc.patch
@@ -0,0 +1,224 @@
+diff --git a/third_party/grpc/BUILD b/third_party/grpc/BUILD
+index 51e861f..a635ebc 100644
+--- a/third_party/grpc/BUILD
++++ b/third_party/grpc/BUILD
+@@ -438,7 +438,7 @@ cc_library(
+ ],
+ copts = [
+ "-std=gnu99",
+- "-Wno-implicit-function-declaration",
++ "-w",
+ ],
+ includes = [
+ ".",
+@@ -570,6 +570,7 @@ cc_library(
+ "include/grpc++/support/sync_stream.h",
+ "include/grpc++/support/time.h",
+ ],
++ copts = ["-w"],
+ includes = [
+ ".",
+ "include",
+diff --git a/third_party/grpc/include/grpc/impl/codegen/port_platform.h b/third_party/grpc/include/grpc/impl/codegen/port_platform.h
+index d265e9b..d22bffb 100644
+--- a/third_party/grpc/include/grpc/impl/codegen/port_platform.h
++++ b/third_party/grpc/include/grpc/impl/codegen/port_platform.h
+@@ -74,7 +74,45 @@
+ things. */
+
+ #if !defined(GPR_NO_AUTODETECT_PLATFORM)
+-#if defined(_WIN64) || defined(WIN64)
++
++#if defined(__MSYS__)
++#define GPR_PLATFORM_STRING "msys2"
++#define GPR_POSIX_CRASH_HANDLER 1
++#ifndef _BSD_SOURCE
++#define _BSD_SOURCE
++#endif
++#ifndef _DEFAULT_SOURCE
++#define _DEFAULT_SOURCE
++#endif
++#ifndef _GNU_SOURCE
++#define _GNU_SOURCE
++#endif
++#include <features.h>
++#define GPR_CPU_POSIX 1
++#define GPR_GCC_ATOMIC 1
++#define GPR_GCC_TLS 1
++#define GPR_POSIX_MULTIPOLL_WITH_POLL
++#define GPR_POSIX_WAKEUP_FD 1
++#define GPR_POSIX_SOCKET 1
++#define GPR_POSIX_SOCKETADDR 1
++#define GPR_POSIX_ENV 1
++#define GPR_POSIX_NO_SPECIAL_WAKEUP_FD 1
++#define GPR_POSIX_SOCKETUTILS
++#define GPR_POSIX_FILE 1
++#define GPR_POSIX_STRING 1
++#define GPR_POSIX_SUBPROCESS 1
++#define GPR_POSIX_SYNC 1
++#define GPR_POSIX_TIME 1
++#define GPR_POSIX_LOG 1
++#define GPR_GETPID_IN_UNISTD_H 1
++#define GPR_HAVE_MSG_NOSIGNAL 1
++#ifdef _LP64
++#define GPR_ARCH_64 1
++#else /* _LP64 */
++#define GPR_ARCH_32 1
++#endif /* _LP64 */
++
++#elif defined(_WIN64) || defined(WIN64)
+ #define GPR_PLATFORM_STRING "windows"
+ #define GPR_WIN32 1
+ #define GPR_ARCH_64 1
+diff --git a/third_party/grpc/src/core/iomgr/tcp_server_posix.c b/third_party/grpc/src/core/iomgr/tcp_server_posix.c
+index 5e07f82..44b970d 100644
+--- a/third_party/grpc/src/core/iomgr/tcp_server_posix.c
++++ b/third_party/grpc/src/core/iomgr/tcp_server_posix.c
+@@ -280,13 +280,38 @@ static int prepare_socket(int fd, const struct sockaddr *addr,
+ goto error;
+ }
+
+- if (!grpc_set_socket_nonblocking(fd, 1) || !grpc_set_socket_cloexec(fd, 1) ||
+- (addr->sa_family != AF_UNIX && (!grpc_set_socket_low_latency(fd, 1) ||
+- !grpc_set_socket_reuse_addr(fd, 1))) ||
+- !grpc_set_socket_no_sigpipe_if_possible(fd)) {
+- gpr_log(GPR_ERROR, "Unable to configure socket %d: %s", fd,
+- strerror(errno));
+- goto error;
++
++ if (!grpc_set_socket_nonblocking(fd, 1)) {
++ gpr_log(GPR_ERROR, "Unable to set socket %d to nonblocking mode: %s", fd,
++ strerror(errno));
++ goto error;
++ }
++ if (!grpc_set_socket_cloexec(fd, 1)) {
++ gpr_log(GPR_ERROR, "Unable to set socket %d to close-on-exec: %s", fd,
++ strerror(errno));
++ goto error;
++ }
++
++ if (addr->sa_family != AF_UNIX) {
++ if (!grpc_set_socket_low_latency(fd, 1)) {
++ gpr_log(GPR_ERROR, "Unable to set socket %d to low-latency mode: %s", fd,
++ strerror(errno));
++ goto error;
++ }
++
++#if !defined(__MSYS__)
++ if (!grpc_set_socket_reuse_addr(fd, 1)) {
++ gpr_log(GPR_ERROR, "Unable to set SO_REUSEADDR on socket %d: %s", fd,
++ strerror(errno));
++ goto error;
++ }
++#endif
++
++ if (!grpc_set_socket_no_sigpipe_if_possible(fd)) {
++ gpr_log(GPR_ERROR, "Unable to set SO_NOSIGPIPE on socket %d: %s", fd,
++ strerror(errno));
++ goto error;
++ }
+ }
+
+ GPR_ASSERT(addr_len < ~(socklen_t)0);
+diff --git a/tools/build_rules/genproto.bzl b/tools/build_rules/genproto.bzl
+index 62284a3..bc76cd1 100644
+--- a/tools/build_rules/genproto.bzl
++++ b/tools/build_rules/genproto.bzl
+@@ -25,6 +25,8 @@ def gensrcjar_impl(ctx):
+ "JAR='%s'" % ctx.executable._jar.path,
+ "OUTPUT='%s'" % out.path,
+ "PROTO_COMPILER='%s'" % ctx.executable._proto_compiler.path,
++ "GRPC_JAVA_PLUGIN='%s'" % ctx.executable.grpc_java_plugin.path if \
++ ctx.executable.grpc_java_plugin else "",
+ "SOURCE='%s'" % ctx.file.src.path,
+ ctx.executable._gensrcjar.path,
+ ]),
+@@ -43,14 +45,19 @@ gensrcjar = rule(
+ allow_files = proto_filetype,
+ single_file = True,
+ ),
++ "grpc_java_plugin": attr.label(
++ cfg = HOST_CFG,
++ executable = True,
++ single_file = True,
++ ),
+ "_gensrcjar": attr.label(
+- default = Label("@bazel_tools//tools/build_rules:gensrcjar"),
++ default = Label("//tools/build_rules:gensrcjar"),
+ executable = True,
+ ),
+ # TODO(bazel-team): this should be a hidden attribute with a default
+ # value, but Skylark needs to support select first.
+ "_proto_compiler": attr.label(
+- default = Label("@bazel_tools//third_party/protobuf:protoc"),
++ default = Label("//third_party/protobuf:protoc"),
+ allow_files = True,
+ executable = True,
+ single_file = True,
+@@ -73,13 +80,42 @@ gensrcjar = rule(
+ outputs = {"srcjar": "lib%{name}.srcjar"},
+ )
+
++def cc_grpc_library(name, src):
++ basename = src[:-len(".proto")]
++
++ native.genrule(
++ name = name + "_codegen",
++ srcs = [src],
++ tools = ["//third_party/protobuf:protoc", "//third_party/grpc:cpp_plugin"],
++ cmd = "\\\n".join([
++ "$(location //third_party/protobuf:protoc)",
++ " --plugin=protoc-gen-grpc=$(location //third_party/grpc:cpp_plugin)",
++ " --cpp_out=$(GENDIR)",
++ " --grpc_out=$(GENDIR)",
++ " $(location " + src + ")"]),
++ outs = [basename + ".grpc.pb.h", basename + ".grpc.pb.cc", basename + ".pb.cc", basename + ".pb.h"])
++
++ native.cc_library(
++ name = name,
++ srcs = [basename + ".grpc.pb.cc", basename + ".pb.cc"],
++ hdrs = [basename + ".grpc.pb.h", basename + ".pb.h"],
++ deps = ["//third_party/grpc:grpc++"],
++ includes = ["."])
++
+ # TODO(bazel-team): support proto => proto dependencies too
+-def java_proto_library(name, src):
+- gensrcjar(name=name + "_srcjar", src=src)
++def java_proto_library(name, src, use_grpc_plugin=False):
++ grpc_java_plugin = None
++ if use_grpc_plugin:
++ grpc_java_plugin = "//third_party/grpc:grpc-java-plugin"
++
++ gensrcjar(name=name + "_srcjar", src=src, grpc_java_plugin=grpc_java_plugin)
++ deps = ["//third_party/protobuf"]
++ if use_grpc_plugin:
++ deps += ["//third_party/grpc:grpc-jar", "//third_party:guava"]
+ native.java_library(
+ name=name,
+ srcs=[name + "_srcjar"],
+- deps=["@bazel_tools//third_party/protobuf"],
++ deps=deps,
+ # The generated code has lots of 'rawtypes' warnings.
+ javacopts=["-Xlint:-rawtypes"],
+ )
+diff --git a/tools/build_rules/gensrcjar.sh b/tools/build_rules/gensrcjar.sh
+index b94408a..c1674a3 100755
+--- a/tools/build_rules/gensrcjar.sh
++++ b/tools/build_rules/gensrcjar.sh
+@@ -65,8 +65,14 @@ main() {
+ "${PREPROCESSOR}" <"${SOURCE}" >"${processed_source}" \
+ || err "Preprocessor ${PREPROCESSOR} failed"
+
+- "${PROTO_COMPILER}" --java_out="${proto_output}" "${processed_source}" \
+- || err "proto_compiler failed"
++ if [ -n "${GRPC_JAVA_PLUGIN}" ]; then
++ "${PROTO_COMPILER}" --plugin=protoc-gen-grpc="${GRPC_JAVA_PLUGIN}" \
++ --grpc_out="${proto_output}" --java_out="${proto_output}" "${processed_source}" \
++ || err "proto_compiler failed"
++ else
++ "${PROTO_COMPILER}" --java_out="${proto_output}" "${processed_source}" \
++ || err "proto_compiler failed"
++ fi
+ find "${proto_output}" -exec touch -t "${TIMESTAMP}" '{}' \; \
+ || err "Failed to reset timestamps"
+ "${JAR}" cMf "${OUTPUT}.tmp" -C "${proto_output}" . \