# Maintainer: Massimiliano Torromeo # Contributor: Aleksey Filippov # Contributor: Victor Aurélio Santos # ALARM: Kevin Mihelich # - explicitly link v5/v6 with libatomic pkgbase='grpc' pkgname=('grpc' 'python-grpcio' 'php-grpc' 'grpc-cli') pkgver=1.33.2 _gtestver=c9ccac7cb7345901884aabf5d1a786cfa6e2f397 _abseilcppver=20200225.2 pkgrel=1 pkgdesc="High performance, open source, general RPC framework that puts mobile and HTTP/2 first." arch=('x86_64') url='https://grpc.io' license=('BSD') makedepends=('re2' 're2c' 'protobuf' 'php' 'c-ares' 'openssl' 'chrpath' 'gflags' 'cython' 'cmake' 'benchmark') source=("https://github.com/grpc/grpc/archive/v$pkgver/$pkgbase-$pkgver.tar.gz" "https://github.com/google/googletest/archive/$_gtestver/googletest-$_gtestver.tar.gz" "https://github.com/abseil/abseil-cpp/archive/$_abseilcppver/abseil-cpp-$_abseilcppver.tar.gz" "https://patch-diff.githubusercontent.com/raw/grpc/grpc/pull/24450/grpcio-system-re2.patch" "https://patch-diff.githubusercontent.com/raw/grpc/grpc/pull/24449/grpcio-no-boringssl-fix.patch" "atomic.patch") sha256sums=('2060769f2d4b0d3535ba594b2ab614d7f68a492f786ab94b4318788d45e3278a' '443d383db648ebb8e391382c0ab63263b7091d03197f304390baac10f178a468' 'f41868f7a938605c92936230081175d1eae87f6ea2c248f41077c8f88316f111' '21524e855406ad0c5f8f1af24fd8b25653298430adf11ea26b96b472b8f2073a' 'a105e796854fb726908a0b6f5501d50478f52afad6ed3e8aeffe5d30b855aead' '2f1285c8874cad70a7e1800f80b1673e8a1b7e2ff11f1f3e198063988cc5ab06') prepare() { cd "$srcdir/$pkgbase-$pkgver" patch -p1 -i ../grpcio-system-re2.patch patch -p1 -i ../grpcio-no-boringssl-fix.patch ln -sf "$srcdir/googletest-$_gtestver/"{googlemock,googletest} \ third_party/googletest rm -rf third_party/abseil-cpp ln -s "$srcdir/abseil-cpp-$_abseilcppver/" third_party/abseil-cpp sed '/TARGET gflags::gflags/i \ set(_gRPC_GFLAGS_LIBRARIES gflags)' -i cmake/gflags.cmake mkdir build if [[ $CARCH == "armv6h" || $CARCH == "arm" ]]; then sed -i -e "s/set(_gRPC_ALLTARGETS_LIBRARIES \${CMAKE_DL_LIBS} rt m pthread)/set(_gRPC_ALLTARGETS_LIBRARIES \${CMAKE_DL_LIBS} atomic rt m pthread)/g" CMakeLists.txt cd "$srcdir/abseil-cpp-$_abseilcppver" patch -p1 -i ../atomic.patch fi } build() { cd "$srcdir/$pkgbase-$pkgver/build" cmake \ -DCMAKE_BUILD_TYPE=None \ -DCMAKE_CXX_FLAGS="${CXXFLAGS} -DNDEBUG" \ -DgRPC_INSTALL=ON \ -DBUILD_SHARED_LIBS=ON \ -DgRPC_BUILD_TESTS=ON \ -DCMAKE_INSTALL_PREFIX=/usr \ -DgRPC_CARES_PROVIDER=package \ -DgRPC_PROTOBUF_PROVIDER=package \ -DgRPC_SSL_PROVIDER=package \ -DgRPC_ZLIB_PROVIDER=package \ -DgRPC_GFLAGS_PROVIDER=package \ -DgRPC_RE2_PROVIDER=package \ -DgRPC_BENCHMARK_PROVIDER=package \ .. make export LDFLAGS="$LDFLAGS -L$PWD" # PHP cd "$srcdir/$pkgbase-$pkgver/src/php/ext/$pkgbase" phpize ./configure --enable-grpc="$srcdir/$pkgbase-$pkgver" make # Python cd "$srcdir/$pkgbase-$pkgver" GRPC_PYTHON_BUILD_WITH_CYTHON=1 \ GRPC_PYTHON_BUILD_SYSTEM_OPENSSL=1 \ GRPC_PYTHON_BUILD_SYSTEM_ZLIB=1 \ GRPC_PYTHON_BUILD_SYSTEM_CARES=1 \ GRPC_PYTHON_BUILD_SYSTEM_RE2=1 \ GRPC_BUILD_WITH_BORING_SSL_ASM=0 \ python setup.py build } package_grpc() { depends=('c-ares' 'protobuf' 'openssl' 're2') cd "$srcdir/$pkgbase-$pkgver/build" make DESTDIR="$pkgdir" install install -Dm644 ../LICENSE "$pkgdir"/usr/share/licenses/$pkgname/LICENSE } package_python-grpcio() { pkgdesc='Python language bindings for grpc, remote procedure call (RPC) framework' depends=('c-ares' 'python' 're2') cd "$srcdir/$pkgbase-$pkgver" python setup.py install -O1 --skip-build --root="$pkgdir" install -Dm644 LICENSE "$pkgdir"/usr/share/licenses/$pkgname/LICENSE } package_php-grpc() { pkgdesc='gRPC module for PHP' depends=('grpc' 'php') backup=('etc/php/conf.d/grpc.ini') # Install PHP extension. cd "$srcdir/$pkgbase-$pkgver/src/php/ext/$pkgbase" make install "INSTALL_ROOT=$pkgdir" install -Dm644 LICENSE "$pkgdir"/usr/share/licenses/$pkgname/LICENSE # Remove RPATH chrpath -d "$pkgdir/usr/lib/php/modules/grpc.so" echo ';extension=grpc.so' >grpc.ini install -Dm644 grpc.ini "$pkgdir/etc/php/conf.d/grpc.ini" } package_grpc-cli() { pkgdesc='gRPC protocol buffers cli' depends=('grpc' 'gflags') cd "$srcdir/$pkgbase-$pkgver" install -dm0755 "$pkgdir/usr/lib" cp -a build/libgrpc++_test_config.so* "$pkgdir/usr/lib/" install -Dm0755 build/grpc_cli "$pkgdir/usr/bin/grpc_cli" install -Dm644 LICENSE "$pkgdir"/usr/share/licenses/$pkgname/LICENSE }