From 5dd89197ee45694d479b4b6f2b39c307cb4e3dc3 Mon Sep 17 00:00:00 2001 From: "Anselmo L. S. Melo" Date: Wed, 14 Aug 2019 13:17:03 -0700 Subject: [PATCH] grpcio: Fix build with glibc 2.30 Rename occurrences of gettid in grpc to avoid naming conflicts with glibc 2.30's gettid. https://github.com/grpc/grpc/commit/d1d017390b799c59d6fdf7b8afa6136d218bdd61.patch --- .gitignore | 5 +++ Rename-gettid-functions.patch | 78 +++++++++++++++++++++++++++++++++++ grpcio.spec | 22 ++++++---- options.conf | 2 +- release | 2 +- series | 1 + versions | 1 + whatrequires | 1 + 8 files changed, 101 insertions(+), 11 deletions(-) create mode 100644 Rename-gettid-functions.patch create mode 100644 series create mode 100644 versions diff --git a/.gitignore b/.gitignore index edbcfda..0039371 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ .*~ *~ +*.info +*.mod *.swp .repo-index *.log @@ -8,6 +10,9 @@ build.log.round* *.tgz !*.tar.*.* *.zip +*.jar +*.pom +*.xml commitmsg results/ rpms/ diff --git a/Rename-gettid-functions.patch b/Rename-gettid-functions.patch new file mode 100644 index 0000000..90bd911 --- /dev/null +++ b/Rename-gettid-functions.patch @@ -0,0 +1,78 @@ +From d1d017390b799c59d6fdf7b8afa6136d218bdd61 Mon Sep 17 00:00:00 2001 +From: Benjamin Peterson +Date: Fri, 3 May 2019 08:11:00 -0700 +Subject: [PATCH] Rename gettid() functions. + +glibc 2.30 will declare its own gettid; see https://sourceware.org/git/?p=glibc.git;a=commit;h=1d0fc213824eaa2a8f8c4385daaa698ee8fb7c92. Rename the grpc versions to avoid naming conflicts. +--- + src/core/lib/gpr/log_linux.cc | 4 ++-- + src/core/lib/gpr/log_posix.cc | 4 ++-- + src/core/lib/iomgr/ev_epollex_linux.cc | 4 ++-- + 3 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/src/core/lib/gpr/log_linux.cc b/src/core/lib/gpr/log_linux.cc +index 561276f0c20..8b597b4cf2f 100644 +--- a/src/core/lib/gpr/log_linux.cc ++++ b/src/core/lib/gpr/log_linux.cc +@@ -40,7 +40,7 @@ + #include + #include + +-static long gettid(void) { return syscall(__NR_gettid); } ++static long sys_gettid(void) { return syscall(__NR_gettid); } + + void gpr_log(const char* file, int line, gpr_log_severity severity, + const char* format, ...) { +@@ -70,7 +70,7 @@ void gpr_default_log(gpr_log_func_args* args) { + gpr_timespec now = gpr_now(GPR_CLOCK_REALTIME); + struct tm tm; + static __thread long tid = 0; +- if (tid == 0) tid = gettid(); ++ if (tid == 0) tid = sys_gettid(); + + timer = static_cast(now.tv_sec); + final_slash = strrchr(args->file, '/'); +diff --git a/src/core/lib/gpr/log_posix.cc b/src/core/lib/gpr/log_posix.cc +index b6edc14ab6b..2f7c6ce3760 100644 +--- a/src/core/lib/gpr/log_posix.cc ++++ b/src/core/lib/gpr/log_posix.cc +@@ -31,7 +31,7 @@ + #include + #include + +-static intptr_t gettid(void) { return (intptr_t)pthread_self(); } ++static intptr_t sys_gettid(void) { return (intptr_t)pthread_self(); } + + void gpr_log(const char* file, int line, gpr_log_severity severity, + const char* format, ...) { +@@ -86,7 +86,7 @@ void gpr_default_log(gpr_log_func_args* args) { + char* prefix; + gpr_asprintf(&prefix, "%s%s.%09d %7" PRIdPTR " %s:%d]", + gpr_log_severity_string(args->severity), time_buffer, +- (int)(now.tv_nsec), gettid(), display_file, args->line); ++ (int)(now.tv_nsec), sys_gettid(), display_file, args->line); + + fprintf(stderr, "%-70s %s\n", prefix, args->message); + gpr_free(prefix); +diff --git a/src/core/lib/iomgr/ev_epollex_linux.cc b/src/core/lib/iomgr/ev_epollex_linux.cc +index 08116b3ab53..76f59844312 100644 +--- a/src/core/lib/iomgr/ev_epollex_linux.cc ++++ b/src/core/lib/iomgr/ev_epollex_linux.cc +@@ -1102,7 +1102,7 @@ static void end_worker(grpc_pollset* pollset, grpc_pollset_worker* worker, + } + + #ifndef NDEBUG +-static long gettid(void) { return syscall(__NR_gettid); } ++static long sys_gettid(void) { return syscall(__NR_gettid); } + #endif + + /* pollset->mu lock must be held by the caller before calling this. +@@ -1122,7 +1122,7 @@ static grpc_error* pollset_work(grpc_pollset* pollset, + #define WORKER_PTR (&worker) + #endif + #ifndef NDEBUG +- WORKER_PTR->originator = gettid(); ++ WORKER_PTR->originator = sys_gettid(); + #endif + if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) { + gpr_log(GPR_INFO, diff --git a/grpcio.spec b/grpcio.spec index fe4e1ed..eb446cf 100644 --- a/grpcio.spec +++ b/grpcio.spec @@ -4,7 +4,7 @@ # Name : grpcio Version : 1.22.0 -Release : 28 +Release : 29 URL : https://files.pythonhosted.org/packages/19/c1/bee35b6efcace3c77cb275c6465ba9e574d01acf9abf785253fdeed526f3/grpcio-1.22.0.tar.gz Source0 : https://files.pythonhosted.org/packages/19/c1/bee35b6efcace3c77cb275c6465ba9e574d01acf9abf785253fdeed526f3/grpcio-1.22.0.tar.gz Summary : HTTP/2-based RPC framework @@ -27,11 +27,14 @@ BuildRequires : protobuf BuildRequires : python3-dev BuildRequires : six BuildRequires : wheel +Patch1: Rename-gettid-functions.patch %description -gRPC - An RPC library and framework -=================================== -gRPC is a modern, open source, high-performance remote procedure call (RPC) framework that can run anywhere. gRPC enables client and server applications to communicate transparently, and simplifies the building of connected systems. +=========== + + |compat_check_pypi| + + Package for gRPC Python. %package license Summary: license components for the grpcio package. @@ -61,18 +64,19 @@ python3 components for the grpcio package. %prep %setup -q -n grpcio-1.22.0 +%patch1 -p1 %build export http_proxy=http://127.0.0.1:9/ export https_proxy=http://127.0.0.1:9/ export no_proxy=localhost,127.0.0.1,0.0.0.0 export LANG=C.UTF-8 -export SOURCE_DATE_EPOCH=1562540106 +export SOURCE_DATE_EPOCH=1565813762 export GCC_IGNORE_WERROR=1 -export CFLAGS="$CFLAGS -fno-lto " -export FCFLAGS="$CFLAGS -fno-lto " -export FFLAGS="$CFLAGS -fno-lto " -export CXXFLAGS="$CXXFLAGS -fno-lto " +export CFLAGS="$CFLAGS -fno-lto -fstack-protector-strong -mzero-caller-saved-regs=used " +export FCFLAGS="$CFLAGS -fno-lto -fstack-protector-strong -mzero-caller-saved-regs=used " +export FFLAGS="$CFLAGS -fno-lto -fstack-protector-strong -mzero-caller-saved-regs=used " +export CXXFLAGS="$CXXFLAGS -fno-lto -fstack-protector-strong -mzero-caller-saved-regs=used " export MAKEFLAGS=%{?_smp_mflags} python3 setup.py build diff --git a/options.conf b/options.conf index dd22cc3..b0ab636 100644 --- a/options.conf +++ b/options.conf @@ -40,7 +40,7 @@ optimize_size = false # set profile for pgo pgo = false # set flags for security-sensitive builds -security_sensitive = false +security_sensitive = true # do not run test suite skip_tests = false # add .so files to the lib package instead of dev diff --git a/release b/release index 9902f17..f04c001 100644 --- a/release +++ b/release @@ -1 +1 @@ -28 +29 diff --git a/series b/series new file mode 100644 index 0000000..4612772 --- /dev/null +++ b/series @@ -0,0 +1 @@ +Rename-gettid-functions.patch diff --git a/versions b/versions new file mode 100644 index 0000000..57807d6 --- /dev/null +++ b/versions @@ -0,0 +1 @@ +1.22.0 diff --git a/whatrequires b/whatrequires index 7ee45fc..336b006 100644 --- a/whatrequires +++ b/whatrequires @@ -1,2 +1,3 @@ # This file contains recursive sources that require this package +ceph tooz