diff options
Diffstat (limited to 'community/grpc/APKBUILD')
-rw-r--r-- | community/grpc/APKBUILD | 251 |
1 files changed, 219 insertions, 32 deletions
diff --git a/community/grpc/APKBUILD b/community/grpc/APKBUILD index e6e0fe141d1..85996b285de 100644 --- a/community/grpc/APKBUILD +++ b/community/grpc/APKBUILD @@ -1,94 +1,281 @@ +# Contributor: Keith Maxwell <keith.maxwell@gmail.com> # Contributor: wener <wenermail@gmail.com> # Maintainer: wener <wenermail@gmail.com> pkgname=grpc -pkgver=1.42.0 +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 !s390x !mips64" # Fails to build on armhf/armv7/s390x/mips64 -license="Apache-2.0" -depends="protobuf" +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 - gtest-dev - libexecinfo-dev libstdc++ libtool linux-headers - openssl1.1-compat-dev + openssl-dev>3 protobuf-dev re2-dev + ruby-dev samurai yaml-dev + xxhash-dev zlib-dev + $_pythondepends + $_rubydepends " -subpackages="$pkgname-dev $pkgname-cli" -_googletest_rev=c9ccac7cb7345901884aabf5d1a786cfa6e2f397 -_benchmark_ver=1.5.1 +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 - benchmark-$_benchmark_ver.tar.gz::https://github.com/google/benchmark/archive/v$_benchmark_ver.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 - rm -r \ - third_party/googletest \ - third_party/benchmark + # 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 - mv "$srcdir"/googletest-$_googletest_rev third_party/googletest - mv "$srcdir"/benchmark-$_benchmark_ver third_party/benchmark + # 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 \ + 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_INSTALL_LIBDIR=lib \ - -DBUILD_SHARED_LIBS=TRUE \ + -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_BUILD_TESTS=ON - cmake --build build + -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() { - cd build - CTEST_OUTPUT_ON_FAILURE=TRUE ctest + # 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 + 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' "{}" \; +} - rm "$pkgdir"/usr/share/grpc/roots.pem +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 + 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=" -39f37a41d1df6015dc36344f1b5e634be7f0edbc99723de73de8b81cdab6aa3e09cef6b3c6c9ecb2c9c9db9b8454474b2ac7fbe49fe23d17a6c78f999b459ce5 grpc-v1.42.0.tar.gz -7dda1e090d5054896899a250433d78ba9fcc004a60c886c93098c726ff12f70bb8d222112f8845e98c1ceacdb060b96699bb90d8f4207496546996195ae90343 googletest-c9ccac7cb7345901884aabf5d1a786cfa6e2f397.tar.gz -1e8782ab6846b8b29c5eea41ed1ba19dd92a46a135cf74acdc588e2cd5ef05581c644d20fc0d6403456d65417538e1db80109ae87989601298b2fc56ae3c3161 benchmark-1.5.1.tar.gz +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 " |