user/grpc: new aport
This commit is contained in:
parent
ea7dc34a4d
commit
4f3bd26171
9 changed files with 487 additions and 0 deletions
10
user/grpc/01-chttp2-maybe-uninitialized.patch
Normal file
10
user/grpc/01-chttp2-maybe-uninitialized.patch
Normal file
|
@ -0,0 +1,10 @@
|
|||
--- a/src/core/ext/transport/chttp2/transport/chttp2_transport.cc
|
||||
+++ b/src/core/ext/transport/chttp2/transport/chttp2_transport.cc
|
||||
@@ -978,6 +978,7 @@
|
||||
} else {
|
||||
r = grpc_chttp2_begin_write(t);
|
||||
}
|
||||
+ #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
||||
if (r.writing) {
|
||||
if (r.partial) {
|
||||
GRPC_STATS_INC_HTTP2_PARTIAL_WRITES();
|
260
user/grpc/APKBUILD
Normal file
260
user/grpc/APKBUILD
Normal file
|
@ -0,0 +1,260 @@
|
|||
# Contributor: Keith Maxwell <keith.maxwell@gmail.com>
|
||||
# Contributor: wener <wenermail@gmail.com>
|
||||
# Maintainer: wener <wenermail@gmail.com>
|
||||
pkgname=grpc
|
||||
# This version is used in gitlab-foss 15.2.2.
|
||||
pkgver=1.42.0
|
||||
pkgrel=0
|
||||
pkgdesc="The C based gRPC"
|
||||
url="https://grpc.io/"
|
||||
arch="all"
|
||||
# BSD-3-Clause: third_party/upb, third_party/address_sorting
|
||||
# MIT: third_party/upb/third_party/utf8_range
|
||||
license="Apache-2.0 AND BSD-3-Clause AND MIT"
|
||||
depends="ca-certificates"
|
||||
depends_dev="
|
||||
$pkgname-cpp=$pkgver-r$pkgrel
|
||||
$pkgname-plugins=$pkgver-r$pkgrel
|
||||
"
|
||||
_pythondepends="
|
||||
cython
|
||||
python3-dev
|
||||
py3-setuptools
|
||||
"
|
||||
# XXX: should also depend on ruby-google-protobuf=3.18
|
||||
_rubydepends="
|
||||
$pkgname=$pkgver-r$pkgrel
|
||||
ruby2.7-etc
|
||||
"
|
||||
makedepends="
|
||||
abseil-cpp
|
||||
abseil-cpp-dev
|
||||
autoconf
|
||||
automake
|
||||
c-ares-dev
|
||||
chrpath
|
||||
cmake
|
||||
libstdc++
|
||||
libtool
|
||||
linux-headers
|
||||
openssl-dev
|
||||
protobuf-dev
|
||||
re2-dev
|
||||
ruby2.7-dev
|
||||
samurai
|
||||
yaml-dev
|
||||
xxhash-dev
|
||||
zlib-dev
|
||||
$_pythondepends
|
||||
$_rubydepends
|
||||
"
|
||||
checkdepends="coreutils python3 py3-six"
|
||||
subpackages="
|
||||
$pkgname-dev
|
||||
$pkgname-cpp
|
||||
$pkgname-plugins
|
||||
$pkgname-doc
|
||||
ruby2.7-grpc:_ruby
|
||||
"
|
||||
_googletest_rev=0e402173c97aea7a00749e825b194bfede4f2e45
|
||||
source="https://github.com/grpc/grpc/archive/v$pkgver/grpc-v$pkgver.tar.gz
|
||||
googletest-$_googletest_rev.tar.gz::https://github.com/google/googletest/archive/$_googletest_rev.tar.gz
|
||||
fix-compiler-error.patch
|
||||
minimal-fix-for-invalid-implicit-absl-string_view-nu.patch
|
||||
01-chttp2-maybe-uninitialized.patch
|
||||
ruby-use-shared-libs.patch
|
||||
ruby-dont-strip-library.patch
|
||||
ruby-fix-protoc-path.patch
|
||||
ruby-use-system-certs.patch
|
||||
makefile-use-system-abseil.patch
|
||||
"
|
||||
options="!check" # sometimes hang indefinitely on builders
|
||||
|
||||
prepare() {
|
||||
rm -r third_party/googletest
|
||||
mv "$srcdir"/googletest-$_googletest_rev third_party/googletest
|
||||
|
||||
# Remove bundled xxhash.
|
||||
# Since grpc sets XXH_INCLUDE_ALL wherever it uses xxhash, it is using xxhash
|
||||
# as a header-only library. This means we can replace it with the system copy
|
||||
# by doing nothing further; xxhash.h is in the system include path and will be
|
||||
# found instead, and there are no linker flags to add. See also
|
||||
# https://github.com/grpc/grpc/issues/25945.
|
||||
rm -rvf third_party/xxhash/*
|
||||
|
||||
# This will be replaced with a symlink to system certs.
|
||||
echo '' > etc/roots.pem
|
||||
|
||||
default_prepare
|
||||
|
||||
# Remove some bundled dependencies from the gem's files list.
|
||||
sed -i \
|
||||
-e '/etc\/roots.pem/d' \
|
||||
-e '/third_party\/abseil/d' \
|
||||
-e '/third_party\/boringssl/d' \
|
||||
-e '/third_party\/cares/d' \
|
||||
-e '/third_party\/re2/d' \
|
||||
-e '/third_party\/xxhash/d' \
|
||||
-e '/third_party\/zlib/d' \
|
||||
grpc.gemspec
|
||||
|
||||
# Remove unused dependency from gemspec - it's not required anyhwere,
|
||||
# it's just Google pushing their crap everywhere...
|
||||
sed -i '/add_dependency.*googleapis-common-protos-types/d' \
|
||||
grpc.gemspec
|
||||
}
|
||||
|
||||
build() {
|
||||
cmake -B _build \
|
||||
-DCMAKE_BUILD_TYPE=MinSizeRel \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr \
|
||||
-DCMAKE_CXX_FLAGS="$CXXFLAGS -w" \
|
||||
-DCMAKE_C_FLAGS="$CFLAGS -w" \
|
||||
-DCMAKE_CXX_STANDARD=17 \
|
||||
-DBUILD_SHARED_LIBS=True \
|
||||
-DgRPC_INSTALL=ON \
|
||||
-DgRPC_CARES_PROVIDER=package \
|
||||
-DgRPC_PROTOBUF_PROVIDER=package \
|
||||
-DgRPC_SSL_PROVIDER=package \
|
||||
-DgRPC_ZLIB_PROVIDER=package \
|
||||
-DgRPC_ABSL_PROVIDER=package \
|
||||
-DgRPC_RE2_PROVIDER=package \
|
||||
-DgRPC_BACKWARDS_COMPATIBILITY_MODE=OFF \
|
||||
-DgRPC_BUILD_TESTS="$(want_check && echo ON || echo OFF)" \
|
||||
-G Ninja
|
||||
cmake --build _build
|
||||
|
||||
# XXX: Fails to build and I don't need it here, so screw it.
|
||||
#GRPC_PYTHON_CFLAGS="-std=c++17" \
|
||||
#GRPC_PYTHON_DISABLE_LIBC_COMPATIBILITY=1 \
|
||||
#GRPC_PYTHON_BUILD_SYSTEM_CARES=1 \
|
||||
#GRPC_PYTHON_BUILD_SYSTEM_OPENSSL=1 \
|
||||
#GRPC_PYTHON_BUILD_SYSTEM_ZLIB=1 \
|
||||
#GRPC_PYTHON_BUILD_SYSTEM_RE2=1 \
|
||||
#GRPC_PYTHON_BUILD_SYSTEM_ABSL=1 \
|
||||
#python3 setup.py build
|
||||
|
||||
# grpcio-tools
|
||||
#cd tools/distrib/python
|
||||
#python3 make_grpcio_tools.py
|
||||
|
||||
cd "$builddir"
|
||||
gem build grpc.gemspec
|
||||
TOPDIR="$PWD/_build" gem install \
|
||||
--local \
|
||||
--install-dir _build/ruby \
|
||||
--ignore-dependencies \
|
||||
--no-document \
|
||||
--verbose \
|
||||
grpc-$pkgver.gem
|
||||
}
|
||||
|
||||
check() {
|
||||
# delete times out in ci or broken for ci tests
|
||||
rm -f _build/spinlock_test _build/resolve_address_using_ares_resolver_posix_test build/resolve_address_using_native_resolver_posix_test
|
||||
rm -f _build/flaky_network_test _build/unknown_frame_bad_client_test _build/ssl_transport_security_test _build/httpscli_test
|
||||
rm -f _build/headers_bad_client_test _build/httpcli_test
|
||||
case $CARCH in
|
||||
aarch64|ppc64le) rm -f _build/server_test _build/grpc_tool_test ;;
|
||||
s390x) rm -f _build/client_lb_end2end_test _build/alts_frame_protector_test _build/alts_iovec_record_protocol_test ;;
|
||||
armv7) rm -f _build/initial_settings_frame_bad_client_test ;;
|
||||
x86) rm -f _build/time_jump_test _build/connection_prefix_bad_client_test ;;
|
||||
esac
|
||||
|
||||
# start helper
|
||||
./tools/run_tests/start_port_server.py &
|
||||
find build/ -maxdepth 1 -type f -executable -name "*_test" -exec {} \;
|
||||
# kill helper
|
||||
pkill -9 python3
|
||||
}
|
||||
|
||||
package() {
|
||||
DESTDIR="$pkgdir" cmake --install _build
|
||||
|
||||
cd doc
|
||||
find ./ -type f -print -exec install -Dm644 {} "$pkgdir"/usr/share/doc/grpc/{} \;
|
||||
rm "$pkgdir"/usr/share/doc/grpc/.gitignore
|
||||
|
||||
find "$pkgdir" -type f -name roots.pem -exec \
|
||||
sh -c 'rm $0 && ln -s /etc/ssl/certs/ca-certificates.crt $0' "{}" \;
|
||||
}
|
||||
|
||||
cpp() {
|
||||
pkgdesc="C++ language bindings for gRPC"
|
||||
depends="$pkgname=$pkgver-r$pkgrel"
|
||||
|
||||
amove usr/lib/libgrpc++*.so.*
|
||||
amove usr/lib/libgrpc_plugin_support.so.*
|
||||
amove usr/lib/libgrpcpp*.so.*
|
||||
}
|
||||
|
||||
plugins() {
|
||||
pkgdesc="Protocol buffers compiler plugins for gRPC"
|
||||
depends="$pkgname-cpp=$pkgver-r$pkgrel protobuf"
|
||||
|
||||
amove usr/bin/grpc_*_plugin
|
||||
}
|
||||
|
||||
cli() {
|
||||
pkgdesc="gRPC command line tool"
|
||||
|
||||
install -Dm644 -t "$subpkgdir"/usr/lib "$builddir"/_build/libgrpc++_test_config.so.$pkgver
|
||||
install -Dm755 -t "$subpkgdir"/usr/bin "$builddir"/_build/grpc_cli
|
||||
|
||||
# Fix "Has /home/... in rpath"
|
||||
chrpath -d "$subpkgdir"/usr/lib/libgrpc++_test_config.so.$pkgver
|
||||
chrpath -d "$subpkgdir"/usr/bin/grpc_cli
|
||||
}
|
||||
|
||||
grpcio() {
|
||||
pkgdesc="gRPC Python HTTP/2-based RPC framework"
|
||||
depends="py3-six"
|
||||
cd "$builddir"
|
||||
python3 setup.py install --skip-build --prefix=/usr --root="$subpkgdir"
|
||||
}
|
||||
|
||||
_ruby() {
|
||||
pkgdesc="Send RPCs from Ruby using GRPC"
|
||||
depends="$_rubydepends"
|
||||
|
||||
local gemdir="$subpkgdir/$(ruby -e 'puts Gem.default_dir')"
|
||||
|
||||
cd "$builddir"/_build/ruby
|
||||
|
||||
mkdir -p "$gemdir"
|
||||
cp -r extensions gems specifications "$gemdir"/
|
||||
|
||||
# Remove unnecessary files and rubbish...
|
||||
cd "$gemdir"/extensions/*/*/grpc-$pkgver
|
||||
rm gem_make.out mkmf.log || true
|
||||
|
||||
cd "$gemdir"/gems/grpc-$pkgver
|
||||
rm -rf .yardopts \
|
||||
Makefile \
|
||||
include/ \
|
||||
src/core/ \
|
||||
third_party/
|
||||
|
||||
cd src/ruby
|
||||
rm -rf bin/ \
|
||||
ext/ \
|
||||
lib/grpc/*.so \
|
||||
pb/generate_proto_ruby.sh \
|
||||
pb/README.md \
|
||||
pb/src/ \
|
||||
pb/test/ \
|
||||
spec/
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
39f37a41d1df6015dc36344f1b5e634be7f0edbc99723de73de8b81cdab6aa3e09cef6b3c6c9ecb2c9c9db9b8454474b2ac7fbe49fe23d17a6c78f999b459ce5 grpc-v1.42.0.tar.gz
|
||||
5c5eaf6ff9f3c1bca025b7ef0234ba97232ba85b43e6354a92f49b7208f5c47581ebaf18bf58618498e5d264f2620c2b6676e81bb0f7df77112b96ba271ececf googletest-0e402173c97aea7a00749e825b194bfede4f2e45.tar.gz
|
||||
ce7b72169b22e6e92f31b74cacf6edf6395aeb7c70fd42d7e9eaa188395b4e6e4b3acad5edfbe75c8304b049049cee76ce5ceaaeed824bffb7defc103ef23580 fix-compiler-error.patch
|
||||
95a88beb681616a9d793c3118c8e25473d9a8cb29733db38edc8b7af205ffea964dc27dc48d268f735f27fee84782be3eda0b7f398c2e568116e679febe563b7 minimal-fix-for-invalid-implicit-absl-string_view-nu.patch
|
||||
7fa146ce86ddd4f160bb1ca9ff01cb7aca6b2b8c9aa50e4fa6b84504b9117b104be0d1e31ccb452d846549dfe1e9012ceccfcdc1f2357ed567621d71fb8b08c5 01-chttp2-maybe-uninitialized.patch
|
||||
0bf65cca05b6d41c8259a5a59573e16a3f40913aa1c1a185b7dcd295d4ae7f1cedbbd465fcff33d6f8d8ee8735a77f744708a097a32a4598b9bfc4ecaf9414df ruby-use-shared-libs.patch
|
||||
0a2560d22df71abbeea33a37f0cb42a811b244af25284d7fb564cb8ea0b944d23acf6601413bdb2613bcb87011340334489f1b40ab2f9024db013adde0d094e8 ruby-dont-strip-library.patch
|
||||
4ea72d2acd8bee9c9022a4412aa0af0477faca7b0810d14decb3ad5d4da044247f51189512323bfee855b9b260a7f82b812310391451e5d8ee718297800d7a73 ruby-fix-protoc-path.patch
|
||||
631af4b9ac29c1ebabb2c88394ea2993e36cec1beda38195e1587dbd9d3c8c9eef75a17d2326d3cd2e682de551401216075ba08fdc501c098b8092d718ded381 ruby-use-system-certs.patch
|
||||
3c7e8e9a6c6009278569dccdf3e79fabdb266336b894a7fe65f2a57d3cfbef72364c331ec46d9e3a05bb0deaeb841194a39d6f77d98f9e9ce609de0636f675bd makefile-use-system-abseil.patch
|
||||
"
|
23
user/grpc/fix-compiler-error.patch
Normal file
23
user/grpc/fix-compiler-error.patch
Normal file
|
@ -0,0 +1,23 @@
|
|||
Patch-Source: https://github.com/grpc/grpc/pull/28196
|
||||
--
|
||||
From 3991a4c0bcf57e5058a93c4c8255cc80cd0482ca Mon Sep 17 00:00:00 2001
|
||||
From: Runming Wu <runmingwu@gmail.com>
|
||||
Date: Tue, 23 Nov 2021 12:10:43 -0800
|
||||
Subject: [PATCH] Fix compiler error for certain gcc version.
|
||||
|
||||
---
|
||||
src/core/ext/xds/xds_api.h | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/src/core/ext/xds/xds_api.h b/src/core/ext/xds/xds_api.h
|
||||
index 643febdf2203..f25a21f8f831 100644
|
||||
--- a/src/core/ext/xds/xds_api.h
|
||||
+++ b/src/core/ext/xds/xds_api.h
|
||||
@@ -55,6 +55,7 @@ class XdsApi {
|
||||
static const char* kEdsTypeUrl;
|
||||
|
||||
struct Duration {
|
||||
+ Duration() {}
|
||||
int64_t seconds = 0;
|
||||
int32_t nanos = 0;
|
||||
bool operator==(const Duration& other) const {
|
22
user/grpc/makefile-use-system-abseil.patch
Normal file
22
user/grpc/makefile-use-system-abseil.patch
Normal file
|
@ -0,0 +1,22 @@
|
|||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -576,8 +576,8 @@
|
||||
|
||||
# Setup abseil dependency
|
||||
|
||||
-GRPC_ABSEIL_DEP = $(LIBDIR)/$(CONFIG)/libgrpc_abseil.a
|
||||
-GRPC_ABSEIL_MERGE_LIBS = $(LIBDIR)/$(CONFIG)/libgrpc_abseil.a
|
||||
+GRPC_ABSEIL_DEP = -labsl_base -labsl_int128 -labsl_strings -labsl_time -labsl_bad_optional_access -labsl_throw_delegate -labsl_str_format_internal
|
||||
+GRPC_ABSEIL_MERGE_LIBS = -labsl_base -labsl_int128 -labsl_strings -labsl_time -labsl_bad_optional_access -labsl_throw_delegate -labsl_str_format_internal
|
||||
ifeq ($(HOST_IS_X86_64),true)
|
||||
ABSL_RANDOM_HWAES_FLAGS = -maes
|
||||
else
|
||||
@@ -2675,7 +2675,7 @@
|
||||
third_party/abseil-cpp/absl/types/bad_variant_access.cc \
|
||||
|
||||
|
||||
-LIBGRPC_ABSEIL_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBGRPC_ABSEIL_SRC))))
|
||||
+LIBGRPC_ABSEIL_OBJS =
|
||||
|
||||
$(LIBGRPC_ABSEIL_OBJS): CPPFLAGS += -g $(ABSL_RANDOM_HWAES_FLAGS) -Ithird_party/abseil-cpp
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
Patch-Source: https://src.fedoraproject.org/rpms/grpc/blob/f36/f/0001-Minimal-fix-for-invalid-implicit-absl-string_view-nu.patch
|
||||
--
|
||||
From 39d8f1440941ab56fe4bfa45ce4bd6177165f919 Mon Sep 17 00:00:00 2001
|
||||
From: "Benjamin A. Beasley" <code@musicinmybrain.net>
|
||||
Date: Sun, 16 Jan 2022 09:47:21 -0500
|
||||
Subject: [PATCH] Minimal fix for invalid implicit absl::string_view(nullptr_t)
|
||||
|
||||
---
|
||||
.../client_channel/lb_policy/xds/xds_cluster_resolver.cc | 2 +-
|
||||
test/core/security/evaluate_args_test.cc | 6 +++---
|
||||
2 files changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc b/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc
|
||||
index ff936b9100..a55d811527 100644
|
||||
--- a/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc
|
||||
+++ b/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc
|
||||
@@ -139,7 +139,7 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
||||
// to use for LRS load reporting. Caller must ensure that config_ is set
|
||||
// before calling.
|
||||
std::pair<absl::string_view, absl::string_view> GetLrsClusterKey() const {
|
||||
- if (!parent_->is_xds_uri_) return {parent_->server_name_, nullptr};
|
||||
+ if (!parent_->is_xds_uri_) return {parent_->server_name_, absl::string_view()};
|
||||
return {
|
||||
parent_->config_->discovery_mechanisms()[index_].cluster_name,
|
||||
parent_->config_->discovery_mechanisms()[index_].eds_service_name};
|
||||
diff --git a/test/core/security/evaluate_args_test.cc b/test/core/security/evaluate_args_test.cc
|
||||
index a8df9b3003..82fc26cd9d 100644
|
||||
--- a/test/core/security/evaluate_args_test.cc
|
||||
+++ b/test/core/security/evaluate_args_test.cc
|
||||
@@ -32,9 +32,9 @@ class EvaluateArgsTest : public ::testing::Test {
|
||||
|
||||
TEST_F(EvaluateArgsTest, EmptyMetadata) {
|
||||
EvaluateArgs args = util_.MakeEvaluateArgs();
|
||||
- EXPECT_EQ(args.GetPath(), nullptr);
|
||||
- EXPECT_EQ(args.GetMethod(), nullptr);
|
||||
- EXPECT_EQ(args.GetHost(), nullptr);
|
||||
+ EXPECT_EQ(args.GetPath(), std::string_view());
|
||||
+ EXPECT_EQ(args.GetMethod(), std::string_view());
|
||||
+ EXPECT_EQ(args.GetHost(), std::string_view());
|
||||
EXPECT_THAT(args.GetHeaders(), ::testing::ElementsAre());
|
||||
EXPECT_EQ(args.GetHeaderValue("some_key", nullptr), absl::nullopt);
|
||||
}
|
||||
--
|
||||
2.33.1
|
||||
|
30
user/grpc/ruby-dont-strip-library.patch
Normal file
30
user/grpc/ruby-dont-strip-library.patch
Normal file
|
@ -0,0 +1,30 @@
|
|||
From: Jakub Jirutka <jakub@jirutka.cz>
|
||||
Date: Wed, 24 Aug 2022 21:20:22 +0200
|
||||
Subject: [PATCH] Don't strip the built library
|
||||
|
||||
abuild does it.
|
||||
|
||||
--- a/src/ruby/ext/grpc/extconf.rb
|
||||
+++ b/src/ruby/ext/grpc/extconf.rb
|
||||
@@ -94,21 +94,3 @@
|
||||
output = File.join('grpc', 'grpc_c')
|
||||
puts 'Generating Makefile for ' + output
|
||||
create_makefile(output)
|
||||
-
|
||||
-strip_tool = RbConfig::CONFIG['STRIP']
|
||||
-strip_tool += ' -x' if darwin
|
||||
-
|
||||
-if grpc_config == 'opt'
|
||||
- File.open('Makefile.new', 'w') do |o|
|
||||
- o.puts 'hijack: all strip'
|
||||
- o.puts
|
||||
- File.foreach('Makefile') do |i|
|
||||
- o.puts i
|
||||
- end
|
||||
- o.puts
|
||||
- o.puts 'strip: $(DLLIB)'
|
||||
- o.puts "\t$(ECHO) Stripping $(DLLIB)"
|
||||
- o.puts "\t$(Q) #{strip_tool} $(DLLIB)"
|
||||
- end
|
||||
- File.rename('Makefile.new', 'Makefile')
|
||||
-end
|
25
user/grpc/ruby-fix-protoc-path.patch
Normal file
25
user/grpc/ruby-fix-protoc-path.patch
Normal file
|
@ -0,0 +1,25 @@
|
|||
Patch-Source: https://sources.debian.org/src/grpc/1.44.0-3/debian/patches/fix-protoc-path.patch (modified)
|
||||
|
||||
--- a/src/ruby/end2end/package_with_underscore_test.rb
|
||||
+++ b/src/ruby/end2end/package_with_underscore_test.rb
|
||||
@@ -20,8 +20,8 @@ def main
|
||||
pb_dir = File.join(root_dir, 'src', 'ruby', 'end2end', 'protos')
|
||||
|
||||
- bins_dir = File.join(root_dir, 'cmake', 'build')
|
||||
+ bins_dir = '/usr/bin'
|
||||
plugin = File.join(bins_dir, 'grpc_ruby_plugin')
|
||||
- protoc = File.join(bins_dir, 'third_party', 'protobuf', 'protoc')
|
||||
+ protoc = File.join(bins_dir, 'protoc')
|
||||
|
||||
got = nil
|
||||
|
||||
--- a/src/ruby/tools/bin/grpc_tools_ruby_protoc
|
||||
+++ b/src/ruby/tools/bin/grpc_tools_ruby_protoc
|
||||
@@ -25,6 +25,5 @@ plugin_name = 'grpc_ruby_plugin' + ext
|
||||
|
||||
-protoc_dir = File.join(File.dirname(__FILE__),
|
||||
- PLATFORM.architecture + '-' + PLATFORM.os_name)
|
||||
+protoc_dir = '/usr/bin'
|
||||
|
||||
protoc_path = File.join(protoc_dir, protoc_name)
|
||||
|
57
user/grpc/ruby-use-shared-libs.patch
Normal file
57
user/grpc/ruby-use-shared-libs.patch
Normal file
|
@ -0,0 +1,57 @@
|
|||
From: Jakub Jirutka <jakub@jirutka.cz>
|
||||
Date: Wed, 24 Aug 2022 21:20:22 +0200
|
||||
Subject: [PATCH] Link with shared libraries, don't embed anything
|
||||
|
||||
- Don't statically link openssl, zlib and cares.
|
||||
- Don't build and statically link libgrpc, link shared libgrpc.
|
||||
- Don't statically link libgcc and libstdc++.
|
||||
|
||||
--- a/src/ruby/ext/grpc/extconf.rb
|
||||
+++ b/src/ruby/ext/grpc/extconf.rb
|
||||
@@ -45,9 +45,9 @@
|
||||
ENV['ARFLAGS'] = '-o'
|
||||
end
|
||||
|
||||
-ENV['EMBED_OPENSSL'] = 'true'
|
||||
-ENV['EMBED_ZLIB'] = 'true'
|
||||
-ENV['EMBED_CARES'] = 'true'
|
||||
+ENV['EMBED_OPENSSL'] = 'false'
|
||||
+ENV['EMBED_ZLIB'] = 'false'
|
||||
+ENV['EMBED_CARES'] = 'false'
|
||||
|
||||
ENV['ARCH_FLAGS'] = RbConfig::CONFIG['ARCH_FLAG']
|
||||
if darwin && !cross_compiling
|
||||
@@ -65,23 +65,15 @@
|
||||
output_dir = File.expand_path(RbConfig::CONFIG['topdir'])
|
||||
grpc_lib_dir = File.join(output_dir, 'libs', grpc_config)
|
||||
ENV['BUILDDIR'] = output_dir
|
||||
+$LDFLAGS << ' -L' + ENV.fetch('TOPDIR', '.')
|
||||
|
||||
-unless windows
|
||||
- puts 'Building internal gRPC into ' + grpc_lib_dir
|
||||
- nproc = 4
|
||||
- nproc = Etc.nprocessors * 2 if Etc.respond_to? :nprocessors
|
||||
- make = bsd ? 'gmake' : 'make'
|
||||
- system("#{make} -j#{nproc} -C #{grpc_root} #{grpc_lib_dir}/libgrpc.a CONFIG=#{grpc_config} Q=")
|
||||
- exit 1 unless $? == 0
|
||||
-end
|
||||
-
|
||||
$CFLAGS << ' -I' + File.join(grpc_root, 'include')
|
||||
|
||||
ext_export_file = File.join(grpc_root, 'src', 'ruby', 'ext', 'grpc', 'ext-export')
|
||||
$LDFLAGS << ' -Wl,--version-script="' + ext_export_file + '.gcc"' if linux
|
||||
$LDFLAGS << ' -Wl,-exported_symbols_list,"' + ext_export_file + '.clang"' if darwin
|
||||
|
||||
-$LDFLAGS << ' ' + File.join(grpc_lib_dir, 'libgrpc.a') unless windows
|
||||
+$LDFLAGS << ' -Wl,-wrap,memcpy -lgrpc' unless windows
|
||||
if grpc_config == 'gcov'
|
||||
$CFLAGS << ' -O0 -fprofile-arcs -ftest-coverage'
|
||||
$LDFLAGS << ' -fprofile-arcs -ftest-coverage -rdynamic'
|
||||
@@ -92,7 +84,6 @@
|
||||
end
|
||||
|
||||
$LDFLAGS << ' -Wl,-wrap,memcpy' if linux
|
||||
-$LDFLAGS << ' -static-libgcc -static-libstdc++' if linux
|
||||
$LDFLAGS << ' -static' if windows
|
||||
|
||||
$CFLAGS << ' -std=c99 '
|
15
user/grpc/ruby-use-system-certs.patch
Normal file
15
user/grpc/ruby-use-system-certs.patch
Normal file
|
@ -0,0 +1,15 @@
|
|||
From: Jakub Jirutka <jakub@jirutka.cz>
|
||||
Date: Fri, 20 May 2017 01:35:00 +0200
|
||||
Subject: [PATCH] Use system CA certificates
|
||||
|
||||
--- a/src/ruby/lib/grpc.rb
|
||||
+++ b/src/ruby/lib/grpc.rb
|
||||
@@ -12,7 +12,7 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
-ssl_roots_path = File.expand_path('../../../../etc/roots.pem', __FILE__)
|
||||
+ssl_roots_path = '/etc/ssl/certs/ca-certificates.crt'
|
||||
|
||||
require_relative 'grpc/errors'
|
||||
require_relative 'grpc/structs'
|
Loading…
Reference in a new issue