python3-grpcio: Upgrade to 1.27.1

Merge inc file into bb, there are no other users of it
Delete gettid patch, fixed differenty upstream
Add code to use cross compiler in setup.py

Define GRPC_PYTHON_DISABLE_LIBC_COMPATIBILITY so it does not use
SYS_clock_gettime syscalls since it does not work when 64bit time_t is
used on 32bit arches

Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
Khem Raj
2020-02-12 18:12:28 -08:00
parent 0b7e50f7be
commit 115144fce9
7 changed files with 73 additions and 79 deletions
@@ -1,40 +0,0 @@
From b02be74a2eff8abc612ef84f30e0fbce6a7f65f5 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 4 Aug 2017 09:04:07 -0700
Subject: [PATCH] setup.py: Do not mix C and C++ compiler options
EXTRA_ENV_COMPILE_ARGS is used both with CC and CXX
so using -std=c++11 or -std=gnu99 together will cause
build time errors espcially with clang
error: invalid argument '-std=gnu99' not allowed with 'C++'
gcc7 ( defaults are -std=gnu11 and -std=gnu++14 )
as well clang default to these standards mode or newer
anyway
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
setup.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/setup.py
+++ b/setup.py
@@ -145,7 +145,7 @@ ENABLE_DOCUMENTATION_BUILD = os.environ.
EXTRA_ENV_COMPILE_ARGS = os.environ.get('GRPC_PYTHON_CFLAGS', None)
EXTRA_ENV_LINK_ARGS = os.environ.get('GRPC_PYTHON_LDFLAGS', None)
if EXTRA_ENV_COMPILE_ARGS is None:
- EXTRA_ENV_COMPILE_ARGS = ' -std=c++11'
+ EXTRA_ENV_COMPILE_ARGS = ""
if 'win32' in sys.platform and sys.version_info < (3, 5):
EXTRA_ENV_COMPILE_ARGS += ' -D_hypot=hypot'
# We use define flags here and don't directly add to DEFINE_MACROS below to
@@ -157,7 +157,7 @@ if EXTRA_ENV_COMPILE_ARGS is None:
else:
EXTRA_ENV_COMPILE_ARGS += ' -D_ftime=_ftime64 -D_timeb=__timeb64'
elif "linux" in sys.platform:
- EXTRA_ENV_COMPILE_ARGS += ' -std=gnu99 -fvisibility=hidden -fno-wrapv -fno-exceptions'
+ EXTRA_ENV_COMPILE_ARGS += ' -fvisibility=hidden -fno-wrapv -fno-exceptions'
elif "darwin" in sys.platform:
EXTRA_ENV_COMPILE_ARGS += ' -fvisibility=hidden -fno-wrapv -fno-exceptions'
EXTRA_ENV_COMPILE_ARGS += ' -DPB_FIELD_32BIT'
@@ -1,26 +0,0 @@
use glibc provided gettid API for glibc 2.30+
glibc 2.30 introduced this function see [1]
so it's best to detect it
and provide fallback only if it's not present
[1] https://sourceware.org/bugzilla/show_bug.cgi?id=6399
Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
--- a/src/core/lib/gpr/log_linux.cc
+++ b/src/core/lib/gpr/log_linux.cc
@@ -40,7 +40,13 @@
#include <time.h>
#include <unistd.h>
+#if defined(__GLIBC__)
+#if !__GLIBC_PREREQ(2,29)
static long gettid(void) { return syscall(__NR_gettid); }
+#endif
+#else
+static long gettid(void) { return syscall(__NR_gettid); }
+#endif
void gpr_log(const char* file, int line, gpr_log_severity severity,
const char* format, ...) {
@@ -0,0 +1,64 @@
From b02be74a2eff8abc612ef84f30e0fbce6a7f65f5 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 4 Aug 2017 09:04:07 -0700
Subject: [PATCH] setup.py: Do not mix C and C++ compiler options
EXTRA_ENV_COMPILE_ARGS is used both with CC and CXX
so using -std=c++11 or -std=gnu99 together will cause
build time errors espcially with clang
error: invalid argument '-std=gnu99' not allowed with 'C++'
gcc7 ( defaults are -std=gnu11 and -std=gnu++14 )
as well clang default to these standards mode or newer
anyway
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
setup.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/setup.py
+++ b/setup.py
@@ -144,9 +144,10 @@ ENABLE_DOCUMENTATION_BUILD = os.environ.
def check_linker_need_libatomic():
"""Test if linker on system needs libatomic."""
+ compiler, cc_args = os.environ.get('CC').split(' ', 1) or 'cc'
code_test = (b'#include <atomic>\n' +
b'int main() { return std::atomic<int64_t>{}; }')
- cc_test = subprocess.Popen(['cc', '-x', 'c++', '-std=c++11', '-'],
+ cc_test = subprocess.Popen([compiler, cc_args, '-x', 'c++', '-std=c++11', '-'],
stdin=PIPE,
stdout=PIPE,
stderr=PIPE)
@@ -163,7 +164,7 @@ def check_linker_need_libatomic():
EXTRA_ENV_COMPILE_ARGS = os.environ.get('GRPC_PYTHON_CFLAGS', None)
EXTRA_ENV_LINK_ARGS = os.environ.get('GRPC_PYTHON_LDFLAGS', None)
if EXTRA_ENV_COMPILE_ARGS is None:
- EXTRA_ENV_COMPILE_ARGS = ' -std=c++11'
+ EXTRA_ENV_COMPILE_ARGS = ' '
if 'win32' in sys.platform:
if sys.version_info < (3, 5):
EXTRA_ENV_COMPILE_ARGS += ' -D_hypot=hypot'
@@ -180,7 +181,7 @@ if EXTRA_ENV_COMPILE_ARGS is None:
# available dynamically
EXTRA_ENV_COMPILE_ARGS += ' /MT'
elif "linux" in sys.platform:
- EXTRA_ENV_COMPILE_ARGS += ' -std=gnu99 -fvisibility=hidden -fno-wrapv -fno-exceptions'
+ EXTRA_ENV_COMPILE_ARGS += ' -fvisibility=hidden -fno-wrapv -fno-exceptions'
elif "darwin" in sys.platform:
EXTRA_ENV_COMPILE_ARGS += ' -stdlib=libc++ -fvisibility=hidden -fno-wrapv -fno-exceptions'
--- a/src/python/grpcio/commands.py
+++ b/src/python/grpcio/commands.py
@@ -216,7 +216,8 @@ class BuildExt(build_ext.build_ext):
when invoked in C mode. GCC is okay with this, while clang is not.
"""
# TODO(lidiz) Remove the generated a.out for success tests.
- cc_test = subprocess.Popen(['cc', '-x', 'c', '-std=c++11', '-'],
+ compiler, cc_args = os.environ.get('CC').split(' ', 1) or 'cc'
+ cc_test = subprocess.Popen([compiler, cc_args, '-x', 'c', '-std=c++11', '-'],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
@@ -5,7 +5,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
--- a/third_party/boringssl/include/openssl/base.h
+++ b/third_party/boringssl/include/openssl/base.h
@@ -95,6 +95,9 @@ extern "C" {
@@ -99,6 +99,9 @@ extern "C" {
#elif (defined(__PPC64__) || defined(__powerpc64__)) && defined(_LITTLE_ENDIAN)
#define OPENSSL_64_BIT
#define OPENSSL_PPC64LE
@@ -4,7 +4,7 @@ Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
--- a/third_party/boringssl/include/openssl/base.h
+++ b/third_party/boringssl/include/openssl/base.h
@@ -104,6 +104,9 @@ extern "C" {
@@ -108,6 +108,9 @@ extern "C" {
#elif defined(__mips__) && defined(__LP64__)
#define OPENSSL_64_BIT
#define OPENSSL_MIPS64
@@ -1,2 +0,0 @@
inherit setuptools3
require python-grpcio.inc
@@ -1,29 +1,27 @@
DESCRIPTION = "Google gRPC"
HOMEPAGE = "http://www.grpc.io/"
SECTION = "devel/python"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
DEPENDS_append = "${PYTHON_PN}-protobuf"
FILESEXTRAPATHS_prepend := "${THISDIR}/python-grpcio:"
DEPENDS += "${PYTHON_PN}-protobuf"
SRC_URI_append_class-target = " file://0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch \
file://ppc-boringssl-support.patch \
file://riscv64_support.patch \
file://gettid.patch \
"
SRC_URI[md5sum] = "ccaf4e7eb4f031d926fb80035d193b98"
SRC_URI[sha256sum] = "a899725d34769a498ecd3be154021c4368dd22bdc69473f6ec46779696f626c4"
RDEPENDS_${PN} = "${PYTHON_PN}-protobuf \
${PYTHON_PN}-setuptools \
${PYTHON_PN}-six \
"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
inherit setuptools3
inherit pypi
SRC_URI[md5sum] = "188565f150f34d1927b87e014f0f4b73"
SRC_URI[sha256sum] = "2ddbca16c2e7b3f2ffc6e34c7cfa6886fb01de9f156ad3f77b72ad652d632097"
export GRPC_PYTHON_DISABLE_LIBC_COMPATIBILITY = "1"
CLEANBROKEN = "1"