aboutsummaryrefslogtreecommitdiffstats
path: root/community/grpc/APKBUILD
diff options
context:
space:
mode:
Diffstat (limited to 'community/grpc/APKBUILD')
-rw-r--r--community/grpc/APKBUILD331
1 files changed, 264 insertions, 67 deletions
diff --git a/community/grpc/APKBUILD b/community/grpc/APKBUILD
index e474fa497d9..85996b285de 100644
--- a/community/grpc/APKBUILD
+++ b/community/grpc/APKBUILD
@@ -1,84 +1,281 @@
+# Contributor: Keith Maxwell <keith.maxwell@gmail.com>
# Contributor: wener <wenermail@gmail.com>
# Maintainer: wener <wenermail@gmail.com>
pkgname=grpc
-pkgver=1.33.2
+pkgver=1.62.1
pkgrel=0
-pkgdesc="The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#)"
+pkgdesc="The C based gRPC"
url="https://grpc.io/"
-arch="all !ppc64le !armv7 !armhf" # Fails to build on armhf/armv7
-license="Apache-2.0"
-depends="protobuf"
-makedepends="autoconf automake libtool libstdc++ protobuf-dev c-ares-dev
- openssl-dev gtest-dev zlib-dev yaml-dev linux-headers cmake libexecinfo-dev"
-subpackages="$pkgname-dev $pkgname-cli"
-_googletest_rev=c9ccac7cb7345901884aabf5d1a786cfa6e2f397
-_abseil_cpp_rev=df3ea785d8c30a9503321a3d35ee7d35808f190d
-_re2_rev=aecba11114cf1fac5497aeb844b6966106de3eb6
-_gflags_rev=28f50e0fed19872e0fd50dd23ce2ee8cd759338e
-_benchmark_ver=1.5.1
-source="$pkgname-$pkgver.tar.gz::https://github.com/grpc/grpc/archive/v$pkgver.tar.gz
- googletest-$_googletest_rev.tar.gz::https://github.com/google/googletest/archive/$_googletest_rev.tar.gz
- abseil-cpp-$_abseil_cpp_rev.tar.gz::https://github.com/abseil/abseil-cpp/archive/$_abseil_cpp_rev.tar.gz
- benchmark-$_benchmark_ver.tar.gz::https://github.com/google/benchmark/archive/v$_benchmark_ver.tar.gz
- re2-$_re2_rev.tar.gz::https://github.com/google/re2/archive/$_re2_rev.tar.gz
- gflags-$_gflags_rev.tar.gz::https://github.com/gflags/gflags/archive/$_gflags_rev.tar.gz
- 01-chttp2-maybe-uninitialized.patch
- "
-options="!check"
-
-unpack() {
- default_unpack
- cd "$srcdir"
- rm -rf $pkgname-$pkgver/third_party/googletest
- ln -sfn $PWD/googletest-$_googletest_rev/ $pkgname-$pkgver/third_party/googletest
-
- rm -rf $pkgname-$pkgver/third_party/abseil-cpp
- ln -sfn $PWD/abseil-cpp-$_abseil_cpp_rev/ $pkgname-$pkgver/third_party/abseil-cpp
-
- rm -rf $pkgname-$pkgver/third_party/benchmark
- ln -sfn $PWD/benchmark-$_benchmark_ver/ $pkgname-$pkgver/third_party/benchmark
-
- rm -rf $pkgname-$pkgver/third_party/re2
- ln -sfn $PWD/re2-$_re2_rev/ $pkgname-$pkgver/third_party/re2
-
- rm -rf $pkgname-$pkgver/third_party/gflags
- ln -sfn $PWD/gflags-$_gflags_rev/ $pkgname-$pkgver/third_party/gflags
+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
+ "
+_rubydepends="
+ $pkgname=$pkgver-r$pkgrel
+ ruby-google-protobuf>=3.19
+ "
+makedepends="
+ abseil-cpp-dev
+ autoconf
+ automake
+ benchmark-dev
+ c-ares-dev
+ chrpath
+ cmake
+ libstdc++
+ libtool
+ linux-headers
+ openssl-dev>3
+ protobuf-dev
+ re2-dev
+ ruby-dev
+ samurai
+ yaml-dev
+ xxhash-dev
+ zlib-dev
+ $_pythondepends
+ $_rubydepends
+ "
+checkdepends="coreutils python3 py3-six"
+subpackages="
+ $pkgname-dev
+ $pkgname-cpp
+ $pkgname-plugins
+ $pkgname-doc
+ py3-grpcio-pyc
+ py3-grpcio:grpcio
+ ruby-grpc:_ruby
+ libaddress_sorting:lib
+ libgpr:lib
+ libgrpc:lib
+ libgrpc_authorization_provider:lib
+ libgrpc_unsecure:lib
+ libupb_base_lib:lib
+ libupb_json_lib:lib
+ libupb_mem_lib:lib
+ libupb_message_lib:lib
+ libupb_textformat_lib:lib
+ "
+_googletest_rev=0e402173c97aea7a00749e825b194bfede4f2e45
+
+# ruby-dont-strip-library.patch: abuild will dot the strip
+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
+ 01-chttp2-maybe-uninitialized.patch
+ find-dependency.patch
+ ruby-fix-protoc-path.patch
+ ruby-use-shared-libs.patch
+ ruby-use-system-certs.patch
+ makefile-use-system-abseil.patch
+ cython3.patch
+ "
+options="net !check" # sometimes hang indefinitely on builders
+
+# secfixes:
+# 1.59.3-r0:
+# - CVE-2023-44487
+
+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() {
- mkdir -p cmake/build
- cd cmake/build
- # gRPC_BUILD_TESTS for grpc_cli - very slow
- cmake ../.. \
- -DgRPC_INSTALL=ON \
- -DgRPC_CARES_PROVIDER=package \
- -DgRPC_PROTOBUF_PROVIDER=package \
- -DgRPC_SSL_PROVIDER=package \
- -DgRPC_ZLIB_PROVIDER=package \
- -DBUILD_TESTING=OFF \
- -DgRPC_BUILD_TESTS=ON \
- -DCMAKE_INSTALL_PREFIX="/usr"
- make
- make grpc_cli
+ export CFLAGS="$CFLAGS -flto=auto -DNDEBUG -O2"
+ export CXXFLAGS="$CXXFLAGS -flto=auto -DNDEBUG -O2"
+ cmake -B _build -G Ninja \
+ -DCMAKE_BUILD_TYPE=None \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -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_BENCHMARK_PROVIDER=package \
+ -DgRPC_RE2_PROVIDER=package \
+ -DgRPC_BACKWARDS_COMPATIBILITY_MODE=OFF \
+ -DgRPC_BUILD_TESTS="$(want_check && echo ON || echo OFF)"
+ cmake --build _build
+
+ 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() {
- cd cmake/build
- make DESTDIR="$pkgdir" install
- cp grpc_cli $pkgdir/usr/bin/
- rm -f "$pkgdir/usr/share/grpc/roots.pem"
+ DESTDIR="$pkgdir" cmake --install _build
+ python3 setup.py install --skip-build --root="$pkgdir"
+
+ 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"
- mkdir -p "$subpkgdir"/usr/bin
- mv "$pkgdir"/usr/bin/grpc_cli "$subpkgdir"/usr/bin/
+
+ 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"
+
+ amove usr/lib/python3*
+}
+
+_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/
+}
+
+lib() {
+ pkgdesc="$pkgdesc ($subpkgname library)"
+ depends="$pkgname=$pkgver-r$pkgrel"
+
+ amove usr/lib/$subpkgname.so.*
}
-sha512sums="9406cb17294aaa979ca2c06f4a9d07f5fa7557f13d33744658def94320688b8cbd0861d066fcbecc2f8a972a2dfd4ee7e501f9dde15483e63c238cca6f49c90a grpc-1.33.2.tar.gz
-7dda1e090d5054896899a250433d78ba9fcc004a60c886c93098c726ff12f70bb8d222112f8845e98c1ceacdb060b96699bb90d8f4207496546996195ae90343 googletest-c9ccac7cb7345901884aabf5d1a786cfa6e2f397.tar.gz
-b429758c37749d3d5c5c220fe0dc00fa0e193b406545484095339b25674c4a3bb7850b76dd1a370ed2006729bcbbbb1b438995b614e149c2290bdb10038c49d1 abseil-cpp-df3ea785d8c30a9503321a3d35ee7d35808f190d.tar.gz
-1e8782ab6846b8b29c5eea41ed1ba19dd92a46a135cf74acdc588e2cd5ef05581c644d20fc0d6403456d65417538e1db80109ae87989601298b2fc56ae3c3161 benchmark-1.5.1.tar.gz
-bbe972e3fd65da69e0d7ac0e0b025fb09ad894315cb6c0e1268fa296599274f9f7c2e771aa577b340c8fa9412d8539fe3db2171d0e9ab9714f3f10910a1d5529 re2-aecba11114cf1fac5497aeb844b6966106de3eb6.tar.gz
-f43f3ae6ad172999f3cc2943a81563ad94598b896f29efeebb26948d559bbe78fc2c6ad6719385473387885240ccee68769fd7ceacf7b6a79057b6c8622e2079 gflags-28f50e0fed19872e0fd50dd23ce2ee8cd759338e.tar.gz
-7fa146ce86ddd4f160bb1ca9ff01cb7aca6b2b8c9aa50e4fa6b84504b9117b104be0d1e31ccb452d846549dfe1e9012ceccfcdc1f2357ed567621d71fb8b08c5 01-chttp2-maybe-uninitialized.patch"
+sha512sums="
+3224ad2617c18156f90c54c1ebf1f2015e405a6f12546e8709e0c905f52508c9f1a13b4d5a6cc7a35abf58b429985b5b504c9062f50c0d3d6aa163180a61047a grpc-v1.62.1.tar.gz
+5c5eaf6ff9f3c1bca025b7ef0234ba97232ba85b43e6354a92f49b7208f5c47581ebaf18bf58618498e5d264f2620c2b6676e81bb0f7df77112b96ba271ececf googletest-0e402173c97aea7a00749e825b194bfede4f2e45.tar.gz
+7fa146ce86ddd4f160bb1ca9ff01cb7aca6b2b8c9aa50e4fa6b84504b9117b104be0d1e31ccb452d846549dfe1e9012ceccfcdc1f2357ed567621d71fb8b08c5 01-chttp2-maybe-uninitialized.patch
+6702e39c6a3c065fe4ff5ae48898057135c09bf6851e35fc958cf95ee5d77e9dd34e8c34d978efe60682384e46c4c4b2e51156d546b06a0eb1feed89adcc024b find-dependency.patch
+4ea72d2acd8bee9c9022a4412aa0af0477faca7b0810d14decb3ad5d4da044247f51189512323bfee855b9b260a7f82b812310391451e5d8ee718297800d7a73 ruby-fix-protoc-path.patch
+68af4751ff99e98f9e794ba01e2ec64b2f91c326a8db785be1126472cd1f1771908e38615c7ddd16d1d475ac399e07dab8962c6e921b27cd4c4257ee9236ad74 ruby-use-shared-libs.patch
+631af4b9ac29c1ebabb2c88394ea2993e36cec1beda38195e1587dbd9d3c8c9eef75a17d2326d3cd2e682de551401216075ba08fdc501c098b8092d718ded381 ruby-use-system-certs.patch
+89e260934da83eb45fa6b73884cba1b1c30f99c0eb883a726e2d36ee4788246f4c6fa1b201077038af956bcb58e625f83bedba4f186c711785ec240373ce4fc5 makefile-use-system-abseil.patch
+896d2771fbb726db97efc7a76687a8fddfae18b0492977fc1f7cec4002803f7aed29e8276c94c6b60a06ecfe3ee7795d4ec3f8f90031dd3eda32d3e23dc9c98c cython3.patch
+"