Merge branch 'v1.3.x' into master-upmerge-v1.3.x

pull/10912/head
David Garcia Quintas 8 years ago
commit 81aae44858
  1. 4
      Makefile
  2. 2
      Rakefile
  3. 18
      binding.gyp
  4. 5
      build.yaml
  5. 2
      include/grpc/impl/codegen/port_platform.h
  6. 3
      package.json
  7. 6
      setup.py
  8. 1
      src/core/lib/iomgr/port.h
  9. 8
      src/core/lib/support/cpu_linux.c
  10. 4
      src/core/lib/support/wrap_memcpy.c
  11. 22
      templates/binding.gyp.template
  12. 3
      templates/package.json.template
  13. 10
      third_party/cares/ares_build.h
  14. 2
      tools/run_tests/artifacts/build_artifact_node.sh

@ -8272,8 +8272,8 @@ PUBLIC_HEADERS_C += \
LIBARES_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBARES_SRC)))) LIBARES_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBARES_SRC))))
$(LIBARES_OBJS): CPPFLAGS += -Ithird_party/cares -Ithird_party/cares/cares $(if $(subst Linux,,$(SYSTEM)),,-Ithird_party/cares/config_linux) $(if $(subst Darwin,,$(SYSTEM)),,-Ithird_party/cares/config_darwin) -fvisibility=hidden -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX -DHAVE_CONFIG_H $(LIBARES_OBJS): CPPFLAGS += -Ithird_party/cares -Ithird_party/cares/cares $(if $(subst Linux,,$(SYSTEM)),,-Ithird_party/cares/config_linux) $(if $(subst Darwin,,$(SYSTEM)),,-Ithird_party/cares/config_darwin) -fvisibility=hidden -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX $(if $(subst MINGW32,,$(SYSTEM)),-DHAVE_CONFIG_H,)
$(LIBARES_OBJS): CFLAGS += -Wno-sign-conversion -Wno-invalid-source-encoding $(LIBARES_OBJS): CFLAGS += -Wno-sign-conversion $(if $(subst MINGW32,,$(SYSTEM)),-Wno-invalid-source-encoding,)
$(LIBDIR)/$(CONFIG)/libares.a: $(ZLIB_DEP) $(LIBARES_OBJS) $(LIBDIR)/$(CONFIG)/libares.a: $(ZLIB_DEP) $(LIBARES_OBJS)
$(E) "[AR] Creating $@" $(E) "[AR] Creating $@"

@ -80,7 +80,7 @@ task 'dlls' do
grpc_config = ENV['GRPC_CONFIG'] || 'opt' grpc_config = ENV['GRPC_CONFIG'] || 'opt'
verbose = ENV['V'] || '0' verbose = ENV['V'] || '0'
env = 'CPPFLAGS="-D_WIN32_WINNT=0x600 -DUNICODE -D_UNICODE -Wno-unused-variable -Wno-unused-result" ' env = 'CPPFLAGS="-D_WIN32_WINNT=0x600 -DUNICODE -D_UNICODE -Wno-unused-variable -Wno-unused-result -DCARES_STATICLIB" '
env += 'LDFLAGS=-static ' env += 'LDFLAGS=-static '
env += 'SYSTEM=MINGW32 ' env += 'SYSTEM=MINGW32 '
env += 'EMBED_ZLIB=true ' env += 'EMBED_ZLIB=true '

@ -47,7 +47,11 @@
# will let users recompile gRPC to work without ALPN. # will let users recompile gRPC to work without ALPN.
'grpc_alpn%': 'true', 'grpc_alpn%': 'true',
# Indicates that the library should be built with gcov. # Indicates that the library should be built with gcov.
'grpc_gcov%': 'false' 'grpc_gcov%': 'false',
# Indicates that the library should be built with compatibility for musl
# libc, so that it can run on Alpine Linux. This is only necessary if not
# building on Alpine Linux
'grpc_alpine%': 'false'
}, },
'target_defaults': { 'target_defaults': {
'configurations': { 'configurations': {
@ -115,6 +119,11 @@
'-rdynamic', '-rdynamic',
], ],
}], }],
['grpc_alpine=="true"', {
'defines': [
'GPR_MUSL_LIBC_COMPAT'
]
}],
['OS!="win" and runtime=="electron"', { ['OS!="win" and runtime=="electron"', {
"defines": [ "defines": [
'OPENSSL_NO_THREADS' 'OPENSSL_NO_THREADS'
@ -535,6 +544,10 @@
} }
] ]
}, },
]
}],
['OS == "win"', {
'targets': [
# Only want to compile zlib under Windows # Only want to compile zlib under Windows
{ {
'cflags': [ 'cflags': [
@ -569,7 +582,6 @@
}] }]
], ],
'targets': [ 'targets': [
{ {
'cflags': [ 'cflags': [
'-std=c99', '-std=c99',
@ -648,7 +660,6 @@
'type': 'static_library', 'type': 'static_library',
'dependencies': [ 'dependencies': [
'gpr', 'gpr',
'node_modules/cares/deps/cares/cares.gyp:cares',
], ],
'sources': [ 'sources': [
'src/core/lib/surface/init.c', 'src/core/lib/surface/init.c',
@ -953,7 +964,6 @@
"dependencies": [ "dependencies": [
"grpc", "grpc",
"gpr", "gpr",
"node_modules/cares/deps/cares/cares.gyp:cares",
] ]
}, },
{ {

@ -4498,10 +4498,11 @@ configs:
UBSAN_OPTIONS: halt_on_error=1:print_stacktrace=1:suppressions=tools/ubsan_suppressions.txt UBSAN_OPTIONS: halt_on_error=1:print_stacktrace=1:suppressions=tools/ubsan_suppressions.txt
defaults: defaults:
ares: ares:
CFLAGS: -Wno-sign-conversion -Wno-invalid-source-encoding CFLAGS: -Wno-sign-conversion $(if $(subst MINGW32,,$(SYSTEM)),-Wno-invalid-source-encoding,)
CPPFLAGS: -Ithird_party/cares -Ithird_party/cares/cares $(if $(subst Linux,,$(SYSTEM)),,-Ithird_party/cares/config_linux) CPPFLAGS: -Ithird_party/cares -Ithird_party/cares/cares $(if $(subst Linux,,$(SYSTEM)),,-Ithird_party/cares/config_linux)
$(if $(subst Darwin,,$(SYSTEM)),,-Ithird_party/cares/config_darwin) -fvisibility=hidden $(if $(subst Darwin,,$(SYSTEM)),,-Ithird_party/cares/config_darwin) -fvisibility=hidden
-D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX -DHAVE_CONFIG_H -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX $(if $(subst
MINGW32,,$(SYSTEM)),-DHAVE_CONFIG_H,)
benchmark: benchmark:
CPPFLAGS: -Ithird_party/benchmark/include -DHAVE_POSIX_REGEX CPPFLAGS: -Ithird_party/benchmark/include -DHAVE_POSIX_REGEX
boringssl: boringssl:

@ -189,7 +189,7 @@
#ifdef __GLIBC__ #ifdef __GLIBC__
#define GPR_POSIX_CRASH_HANDLER 1 #define GPR_POSIX_CRASH_HANDLER 1
#else /* musl libc */ #else /* musl libc */
#define GRPC_MSG_IOVLEN_TYPE int #define GPR_MUSL_LIBC_COMPAT 1
#endif #endif
#elif defined(__APPLE__) #elif defined(__APPLE__)
#include <Availability.h> #include <Availability.h>

@ -34,8 +34,7 @@
"lodash": "^4.15.0", "lodash": "^4.15.0",
"nan": "^2.0.0", "nan": "^2.0.0",
"node-pre-gyp": "^0.6.0", "node-pre-gyp": "^0.6.0",
"protobufjs": "^6.7.0", "protobufjs": "^6.7.0"
"cares": "^1.1.5"
}, },
"devDependencies": { "devDependencies": {
"async": "^2.0.1", "async": "^2.0.1",

@ -144,6 +144,8 @@ CYTHON_EXTENSION_MODULE_NAMES = ('grpc._cython.cygrpc',)
CYTHON_HELPER_C_FILES = () CYTHON_HELPER_C_FILES = ()
CORE_C_FILES = tuple(grpc_core_dependencies.CORE_SOURCE_FILES) CORE_C_FILES = tuple(grpc_core_dependencies.CORE_SOURCE_FILES)
if "win32" in sys.platform and "64bit" in platform.architecture()[0]:
CORE_C_FILES = filter(lambda x: 'third_party/cares' not in x, CORE_C_FILES)
EXTENSION_INCLUDE_DIRECTORIES = ( EXTENSION_INCLUDE_DIRECTORIES = (
(PYTHON_STEM,) + CORE_INCLUDE + BORINGSSL_INCLUDE + ZLIB_INCLUDE + (PYTHON_STEM,) + CORE_INCLUDE + BORINGSSL_INCLUDE + ZLIB_INCLUDE +
@ -163,7 +165,9 @@ DEFINE_MACROS = (
if "win32" in sys.platform: if "win32" in sys.platform:
DEFINE_MACROS += (('WIN32_LEAN_AND_MEAN', 1), ('CARES_STATICLIB', 1),) DEFINE_MACROS += (('WIN32_LEAN_AND_MEAN', 1), ('CARES_STATICLIB', 1),)
if '64bit' in platform.architecture()[0]: if '64bit' in platform.architecture()[0]:
DEFINE_MACROS += (('MS_WIN64', 1),) # TODO(zyc): Re-enble c-ares on x64 windows after fixing the
# ares_library_init compilation issue
DEFINE_MACROS += (('MS_WIN64', 1), ('GRPC_ARES', 0),)
elif sys.version_info >= (3, 5): elif sys.version_info >= (3, 5):
# For some reason, this is needed to get access to inet_pton/inet_ntop # For some reason, this is needed to get access to inet_pton/inet_ntop
# on msvc, but only for 32 bits # on msvc, but only for 32 bits

@ -88,6 +88,7 @@
#ifndef __GLIBC__ #ifndef __GLIBC__
#define GRPC_LINUX_EPOLL 1 #define GRPC_LINUX_EPOLL 1
#define GRPC_LINUX_EVENTFD 1 #define GRPC_LINUX_EVENTFD 1
#define GRPC_MSG_IOVLEN_TYPE int
#endif #endif
#ifndef GRPC_LINUX_EVENTFD #ifndef GRPC_LINUX_EVENTFD
#define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1 #define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1

@ -67,16 +67,16 @@ unsigned gpr_cpu_num_cores(void) {
} }
unsigned gpr_cpu_current_cpu(void) { unsigned gpr_cpu_current_cpu(void) {
#ifdef __GLIBC__ #ifdef GPR_MUSL_LIBC_COMPAT
// sched_getcpu() is undefined on musl
return 0;
#else
int cpu = sched_getcpu(); int cpu = sched_getcpu();
if (cpu < 0) { if (cpu < 0) {
gpr_log(GPR_ERROR, "Error determining current CPU: %s\n", strerror(errno)); gpr_log(GPR_ERROR, "Error determining current CPU: %s\n", strerror(errno));
return 0; return 0;
} }
return (unsigned)cpu; return (unsigned)cpu;
#else
// sched_getcpu() is undefined on musl
return 0;
#endif #endif
} }

@ -31,6 +31,8 @@
* *
*/ */
#include <grpc/support/port_platform.h>
#include <string.h> #include <string.h>
/* Provide a wrapped memcpy for targets that need to be backwards /* Provide a wrapped memcpy for targets that need to be backwards
@ -40,7 +42,7 @@
*/ */
#ifdef __linux__ #ifdef __linux__
#if defined(__x86_64__) && defined(__GNU_LIBRARY__) #if defined(__x86_64__) && !defined(GPR_MUSL_LIBC_COMPAT)
__asm__(".symver memcpy,memcpy@GLIBC_2.2.5"); __asm__(".symver memcpy,memcpy@GLIBC_2.2.5");
void *__wrap_memcpy(void *destination, const void *source, size_t num) { void *__wrap_memcpy(void *destination, const void *source, size_t num) {
return memcpy(destination, source, num); return memcpy(destination, source, num);

@ -49,7 +49,11 @@
# will let users recompile gRPC to work without ALPN. # will let users recompile gRPC to work without ALPN.
'grpc_alpn%': 'true', 'grpc_alpn%': 'true',
# Indicates that the library should be built with gcov. # Indicates that the library should be built with gcov.
'grpc_gcov%': 'false' 'grpc_gcov%': 'false',
# Indicates that the library should be built with compatibility for musl
# libc, so that it can run on Alpine Linux. This is only necessary if not
# building on Alpine Linux
'grpc_alpine%': 'false'
}, },
'target_defaults': { 'target_defaults': {
'configurations': { 'configurations': {
@ -105,6 +109,11 @@
% endif % endif
% endfor % endfor
}], }],
['grpc_alpine=="true"', {
'defines': [
'GPR_MUSL_LIBC_COMPAT'
]
}],
['OS!="win" and runtime=="electron"', { ['OS!="win" and runtime=="electron"', {
"defines": [ "defines": [
'OPENSSL_NO_THREADS' 'OPENSSL_NO_THREADS'
@ -233,6 +242,10 @@
} }
] ]
}, },
]
}],
['OS == "win"', {
'targets': [
# Only want to compile zlib under Windows # Only want to compile zlib under Windows
% for module in node_modules: % for module in node_modules:
% for lib in libs: % for lib in libs:
@ -264,13 +277,6 @@
}] }]
], ],
'targets': [ 'targets': [
<%
for lib in libs:
if 'grpc' in lib.transitive_deps or lib.name == 'grpc':
lib.deps.append('node_modules/cares/deps/cares/cares.gyp:cares')
for module in node_modules:
module.deps.append('node_modules/cares/deps/cares/cares.gyp:cares')
%>
% for module in node_modules: % for module in node_modules:
% for lib in libs: % for lib in libs:
% if lib.name in module.transitive_deps and lib.name not in ('boringssl', 'z'): % if lib.name in module.transitive_deps and lib.name not in ('boringssl', 'z'):

@ -36,8 +36,7 @@
"lodash": "^4.15.0", "lodash": "^4.15.0",
"nan": "^2.0.0", "nan": "^2.0.0",
"node-pre-gyp": "^0.6.0", "node-pre-gyp": "^0.6.0",
"protobufjs": "^6.7.0", "protobufjs": "^6.7.0"
"cares": "^1.1.5"
}, },
"devDependencies": { "devDependencies": {
"async": "^2.0.1", "async": "^2.0.1",

@ -251,4 +251,14 @@
typedef CARES_TYPEOF_ARES_SOCKLEN_T ares_socklen_t; typedef CARES_TYPEOF_ARES_SOCKLEN_T ares_socklen_t;
#endif #endif
/* Undefine UNICODE, as c-ares does not use the ANSI version of functions */
/* explicitly. */
#ifdef UNICODE
# undef UNICODE
#endif
#ifdef _UNICODE
# undef _UNICODE
#endif
#endif /* __CARES_BUILD_H */ #endif /* __CARES_BUILD_H */

@ -48,7 +48,7 @@ electron_versions=( 1.0.0 1.1.0 1.2.0 1.3.0 1.4.0 1.5.0 1.6.0 )
for version in ${node_versions[@]} for version in ${node_versions[@]}
do do
./node_modules/.bin/node-pre-gyp configure rebuild package testpackage --target=$version --target_arch=$NODE_TARGET_ARCH ./node_modules/.bin/node-pre-gyp configure rebuild package testpackage --target=$version --target_arch=$NODE_TARGET_ARCH --grpc_alpine=true
cp -r build/stage/* artifacts/ cp -r build/stage/* artifacts/
done done

Loading…
Cancel
Save