Skip to content
This repository has been archived by the owner on Oct 27, 2022. It is now read-only.

Commit

Permalink
grpcio: Fix build with glibc 2.30
Browse files Browse the repository at this point in the history
Rename occurrences of gettid in grpc to avoid naming conflicts with
glibc 2.30's gettid.

https://github.com/grpc/grpc/commit/d1d017390b799c59d6fdf7b8afa6136d218bdd61.patch
  • Loading branch information
anselmolsm committed Aug 14, 2019
1 parent 4b39c4d commit 5dd8919
Show file tree
Hide file tree
Showing 8 changed files with 101 additions and 11 deletions.
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
.*~
*~
*.info
*.mod
*.swp
.repo-index
*.log
Expand All @@ -8,6 +10,9 @@ build.log.round*
*.tgz
!*.tar.*.*
*.zip
*.jar
*.pom
*.xml
commitmsg
results/
rpms/
Expand Down
78 changes: 78 additions & 0 deletions Rename-gettid-functions.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
From d1d017390b799c59d6fdf7b8afa6136d218bdd61 Mon Sep 17 00:00:00 2001
From: Benjamin Peterson <[email protected]>
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 <time.h>
#include <unistd.h>

-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<time_t>(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 <string.h>
#include <time.h>

-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,
22 changes: 13 additions & 9 deletions grpcio.spec
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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.
Expand Down Expand Up @@ -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

Expand Down
2 changes: 1 addition & 1 deletion options.conf
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion release
Original file line number Diff line number Diff line change
@@ -1 +1 @@
28
29
1 change: 1 addition & 0 deletions series
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Rename-gettid-functions.patch
1 change: 1 addition & 0 deletions versions
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
1.22.0
1 change: 1 addition & 0 deletions whatrequires
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
# This file contains recursive sources that require this package
ceph
tooz

0 comments on commit 5dd8919

Please sign in to comment.