264 lines
8.4 KiB
Text
264 lines
8.4 KiB
Text
# Maintainer: Antoine Martin (ayakael) <dev@ayakael.net>
|
|
# Contributor: Antoine Martin (ayakael) <dev@ayakael.net>
|
|
# Contributor: Keith Maxwell <keith.maxwell@gmail.com>
|
|
# Contributor: wener <wenermail@gmail.com>
|
|
|
|
pkgname=grpc
|
|
# This version is used in gitlab-foss 15.2.2.
|
|
pkgver=1.42.0
|
|
pkgrel=3
|
|
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
|
|
ruby3.0-etc
|
|
"
|
|
makedepends="
|
|
abseil-cpp
|
|
abseil-cpp-dev
|
|
autoconf
|
|
automake
|
|
c-ares-dev
|
|
chrpath
|
|
cmake
|
|
libstdc++
|
|
libtool
|
|
linux-headers
|
|
openssl-dev
|
|
protobuf-dev
|
|
re2-dev
|
|
ruby3.0-dev
|
|
samurai
|
|
yaml-dev
|
|
xxhash-dev
|
|
zlib-dev
|
|
$_pythondepends
|
|
$_rubydepends
|
|
"
|
|
checkdepends="coreutils python3 py3-six"
|
|
subpackages="
|
|
$pkgname-dev
|
|
$pkgname-cpp
|
|
$pkgname-plugins
|
|
$pkgname-doc
|
|
ruby3.0-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
|
|
makefile-add-wrap-memcpy-flags.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
|
|
66b709cd1fb291ab140ec87e584db13d15c308c0ea9f2ee0fa10ddb00cf33641f559235b1445137ff071dfbda9d7279bd482411fbf2f33dacbc5b14cd7f9ffa5 makefile-add-wrap-memcpy-flags.patch
|
|
"
|