diff --git a/meta-python/recipes-devtools/python/python-grpcio-tools.inc b/meta-python/recipes-devtools/python/python-grpcio-tools.inc new file mode 100644 index 00000000000..6675f904c1f --- /dev/null +++ b/meta-python/recipes-devtools/python/python-grpcio-tools.inc @@ -0,0 +1,16 @@ +DESCRIPTION = "Google gRPC tools" +HOMEPAGE = "http://www.grpc.io/" +SECTION = "devel/python" + +DEPENDS_append = " ${PYTHON_PN}-grpcio" +RDEPENDS_${PN} = "${PYTHON_PN}-grpcio" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=7145f7cdd263359b62d342a02f005515" + +inherit pypi + +SRC_URI[md5sum] = "b2fabfb54c7824c1e49a02de2aa6628e" +SRC_URI[sha256sum] = "4ce5aa660d7884f23aac1eafa93b97a4c3e2b512edff871e91fdb6ee86ebd5ea" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta-python/recipes-devtools/python/python-grpcio-tools_1.8.4.bb b/meta-python/recipes-devtools/python/python-grpcio-tools_1.8.4.bb deleted file mode 100644 index 45e0cc1b1e3..00000000000 --- a/meta-python/recipes-devtools/python/python-grpcio-tools_1.8.4.bb +++ /dev/null @@ -1,17 +0,0 @@ -DESCRIPTION = "Google gRPC tools" -HOMEPAGE = "http://www.grpc.io/" -SECTION = "devel/python" - -DEPENDS = "python-grpcio" -RDEPENDS_${PN} = "python-grpcio" - -LICENSE = "BSD-3-Clause" -LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/BSD-3-Clause;md5=550794465ba0ec5312d6919e203a55f9" - -inherit pypi setuptools - -SRC_URI[md5sum] = "e04e65afe60410cf178ff2698f052a7c" -SRC_URI[sha256sum] = "edc84c09039d3a01012ccd97450abd06ee6b980710f6d9f191b50deb6774a75c" - -# For usage in other recipies when compiling protobuf files (e.g. by grpcio-tools) -BBCLASSEXTEND = "native" diff --git a/meta-python/recipes-devtools/python/python-grpcio/0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch b/meta-python/recipes-devtools/python/python-grpcio/0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch deleted file mode 100644 index 0c1d964a614..00000000000 --- a/meta-python/recipes-devtools/python/python-grpcio/0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch +++ /dev/null @@ -1,33 +0,0 @@ -From b02be74a2eff8abc612ef84f30e0fbce6a7f65f5 Mon Sep 17 00:00:00 2001 -From: Khem Raj -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 ---- - setup.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -Index: grpcio-1.8.4/setup.py -=================================================================== ---- grpcio-1.8.4.orig/setup.py -+++ grpcio-1.8.4/setup.py -@@ -115,7 +115,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=c++11 -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' - diff --git a/meta-python/recipes-devtools/python/python-grpcio_1.8.4.bb b/meta-python/recipes-devtools/python/python-grpcio_1.8.4.bb deleted file mode 100644 index bec9d846b56..00000000000 --- a/meta-python/recipes-devtools/python/python-grpcio_1.8.4.bb +++ /dev/null @@ -1,25 +0,0 @@ -DESCRIPTION = "Google gRPC" -HOMEPAGE = "http://www.grpc.io/" -SECTION = "devel/python" - -DEPENDS = "python-protobuf" - -SRC_URI_append_class-target = " file://0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch " - -RDEPENDS_${PN} = "python-enum34 \ - python-futures \ - python-protobuf \ - python-setuptools \ - python-six \ -" - -LICENSE = "BSD-3-Clause" -LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/BSD-3-Clause;md5=550794465ba0ec5312d6919e203a55f9" - -inherit pypi setuptools - -SRC_URI[md5sum] = "7860f7c61de3890323670b7b1ff63e56" -SRC_URI[sha256sum] = "88d87aab9c7889b3ab29dd74aac1a5493ed78b9bf5afba1c069c9dd5531f951d" - -# For usage in other recipes when compiling protobuf files (e.g. by grpcio-tools) -BBCLASSEXTEND = "native" diff --git a/meta-python/recipes-devtools/python/python3-grpcio-tools_1.14.1.bb b/meta-python/recipes-devtools/python/python3-grpcio-tools_1.14.1.bb new file mode 100644 index 00000000000..2da1a4df037 --- /dev/null +++ b/meta-python/recipes-devtools/python/python3-grpcio-tools_1.14.1.bb @@ -0,0 +1,2 @@ +inherit setuptools3 +require python-grpcio-tools.inc diff --git a/meta-python/recipes-devtools/python/python3-grpcio/0001-Fix-build-on-riscv32.patch b/meta-python/recipes-devtools/python/python3-grpcio/0001-Fix-build-on-riscv32.patch new file mode 100644 index 00000000000..920fc1169d9 --- /dev/null +++ b/meta-python/recipes-devtools/python/python3-grpcio/0001-Fix-build-on-riscv32.patch @@ -0,0 +1,65 @@ +From 04e28fdda03b545a0f7b446a784ec2fa7249cbb8 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Wed, 29 Apr 2020 15:37:40 -0700 +Subject: [PATCH] Fix build on riscv32 + +Define __NR_mmap in terms of __NR_mmap2 and __NR_futex interms of +__NR_futex_time64 for rv32, since there calls dont exist for rv32 + +Also recognise rv32 as a new 32bit platform + +Upstream-Status: Submitted [https://github.com/abseil/abseil-cpp/pull/675] +Signed-off-by: Khem Raj +--- + absl/base/internal/direct_mmap.h | 5 +++++ + absl/base/internal/spinlock_linux.inc | 4 ++++ + absl/synchronization/internal/waiter.cc | 4 ++++ + 3 files changed, 13 insertions(+) + +--- a/third_party/abseil-cpp/absl/base/internal/direct_mmap.h ++++ b/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +@@ -26,6 +26,10 @@ + + #ifdef __linux__ + ++#if !defined(__NR_mmap) && defined(__riscv) && __riscv_xlen == 32 ++# define __NR_mmap __NR_mmap2 ++#endif ++ + #include + #ifdef __BIONIC__ + #include +@@ -72,6 +76,7 @@ inline void* DirectMmap(void* start, siz + #if defined(__i386__) || defined(__ARM_ARCH_3__) || defined(__ARM_EABI__) || \ + (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI32) || \ + (defined(__PPC__) && !defined(__PPC64__)) || \ ++ (defined(__riscv) && __riscv_xlen == 32) || \ + (defined(__s390__) && !defined(__s390x__)) + // On these architectures, implement mmap with mmap2. + static int pagesize = 0; +--- a/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc ++++ b/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +@@ -14,6 +14,10 @@ + // + // This file is a Linux-specific part of spinlock_wait.cc + ++#if !defined(__NR_futex) && defined(__riscv) && __riscv_xlen == 32 ++# define __NR_futex __NR_futex_time64 ++#endif ++ + #include + #include + #include +--- a/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc ++++ b/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +@@ -24,6 +24,10 @@ + #include + #endif + ++#if !defined(__NR_futex) && defined(__riscv) && __riscv_xlen == 32 ++# define __NR_futex __NR_futex_time64 ++#endif ++ + #ifdef __linux__ + #include + #include diff --git a/meta-python/recipes-devtools/python/python3-grpcio/0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch b/meta-python/recipes-devtools/python/python3-grpcio/0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch new file mode 100644 index 00000000000..bff50a0a112 --- /dev/null +++ b/meta-python/recipes-devtools/python/python3-grpcio/0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch @@ -0,0 +1,74 @@ +From 2ef8a85933f3ac36b289979ff9edd49dd12d0d16 Mon Sep 17 00:00:00 2001 +From: Khem Raj +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 + +1. Keep '-std=c++11' and '-std=gnu99' to fix native build error +with old gcc (such as gcc 5.4.0 on ubuntu 16.04), for clang +we will remove them through GRPC_PYTHON_CFLAGS at do_compile +in bb recipe. + +2. While export CC="gcc ", cc_args is None, it will +cause subprocess.Popen always return 1. On centos 8, if you don't +install package libatomic, there will be a native build error +`cannot find /usr/lib64/libatomic.so.1.2.0'. + +Add no harm '-g' to cc_args if cc_args is empty. + +Upstream-Status: Inappropriate [oe specific] +Signed-off-by: Hongxu Jia +--- + setup.py | 6 +++++- + src/python/grpcio/commands.py | 5 ++++- + 2 files changed, 9 insertions(+), 2 deletions(-) + +diff --git a/setup.py b/setup.py +index e950057..1b68221 100644 +--- a/setup.py ++++ b/setup.py +@@ -144,9 +144,13 @@ ENABLE_DOCUMENTATION_BUILD = os.environ.get( + + def check_linker_need_libatomic(): + """Test if linker on system needs libatomic.""" ++ compiler, cc_args = os.environ.get('CC').split(' ', 1) or 'gcc' ++ if not cc_args: ++ cc_args = "-g" ++ + code_test = (b'#include \n' + + b'int main() { return std::atomic{}; }') +- 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) +diff --git a/src/python/grpcio/commands.py b/src/python/grpcio/commands.py +index 064dda9..a75d8b9 100644 +--- a/src/python/grpcio/commands.py ++++ b/src/python/grpcio/commands.py +@@ -216,7 +216,10 @@ 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 'gcc' ++ if not cc_args: ++ cc_args = "-g" ++ cc_test = subprocess.Popen([compiler, cc_args, '-x', 'c', '-std=c++11', '-'], + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE) +-- +2.7.4 + diff --git a/meta-python/recipes-devtools/python/python3-grpcio/ppc-boringssl-support.patch b/meta-python/recipes-devtools/python/python3-grpcio/ppc-boringssl-support.patch new file mode 100644 index 00000000000..8ac2aef8c42 --- /dev/null +++ b/meta-python/recipes-devtools/python/python3-grpcio/ppc-boringssl-support.patch @@ -0,0 +1,17 @@ +Let boringSSL compile on ppc32 bit + +Upstream-Status: Pending +Signed-off-by: Khem Raj + +--- a/third_party/boringssl/include/openssl/base.h ++++ b/third_party/boringssl/include/openssl/base.h +@@ -99,6 +99,9 @@ extern "C" { + #elif (defined(__PPC64__) || defined(__powerpc64__)) && defined(_LITTLE_ENDIAN) + #define OPENSSL_64_BIT + #define OPENSSL_PPC64LE ++#elif (defined(__PPC__) || defined(__powerpc__)) ++#define OPENSSL_32_BIT ++#define OPENSSL_PPC + #elif defined(__mips__) && !defined(__LP64__) + #define OPENSSL_32_BIT + #define OPENSSL_MIPS diff --git a/meta-python/recipes-devtools/python/python3-grpcio/riscv64_support.patch b/meta-python/recipes-devtools/python/python3-grpcio/riscv64_support.patch new file mode 100644 index 00000000000..8c9ffa21b77 --- /dev/null +++ b/meta-python/recipes-devtools/python/python3-grpcio/riscv64_support.patch @@ -0,0 +1,21 @@ +Add RISC-V 64bit support + +Upstream-Status: Pending +Signed-off-by: Khem Raj +--- a/third_party/boringssl/include/openssl/base.h ++++ b/third_party/boringssl/include/openssl/base.h +@@ -108,6 +108,14 @@ extern "C" { + #elif defined(__mips__) && defined(__LP64__) + #define OPENSSL_64_BIT + #define OPENSSL_MIPS64 ++#elif defined(__riscv) ++# if (__riscv_xlen == 64) ++# define OPENSSL_64_BIT ++# define OPENSSL_RISCV64 ++# elif(__riscv_xlen == 32) ++# define OPENSSL_32_BIT ++# define OPENSSL_RISCV32 ++# endif + #elif defined(__pnacl__) + #define OPENSSL_32_BIT + #define OPENSSL_PNACL diff --git a/meta-python/recipes-devtools/python/python3-grpcio_1.27.1.bb b/meta-python/recipes-devtools/python/python3-grpcio_1.27.1.bb new file mode 100644 index 00000000000..129bb35bcc9 --- /dev/null +++ b/meta-python/recipes-devtools/python/python3-grpcio_1.27.1.bb @@ -0,0 +1,35 @@ +DESCRIPTION = "Google gRPC" +HOMEPAGE = "http://www.grpc.io/" +SECTION = "devel/python" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57" + +DEPENDS += "${PYTHON_PN}-protobuf" + +SRC_URI += "file://0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch" +SRC_URI_append_class-target = " file://ppc-boringssl-support.patch \ + file://riscv64_support.patch \ + file://0001-Fix-build-on-riscv32.patch \ +" +SRC_URI[md5sum] = "ccaf4e7eb4f031d926fb80035d193b98" +SRC_URI[sha256sum] = "a899725d34769a498ecd3be154021c4368dd22bdc69473f6ec46779696f626c4" + +RDEPENDS_${PN} = "${PYTHON_PN}-protobuf \ + ${PYTHON_PN}-setuptools \ + ${PYTHON_PN}-six \ +" + +inherit setuptools3 +inherit pypi + +export GRPC_PYTHON_DISABLE_LIBC_COMPATIBILITY = "1" + +do_compile_prepend_toolchain-clang() { + export GRPC_PYTHON_CFLAGS='-fvisibility=hidden -fno-wrapv -fno-exceptions' +} + +CLEANBROKEN = "1" + +BBCLASSEXTEND = "native nativesdk" + +CCACHE_DISABLE = "1"