mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2024-11-18 22:54:00 +00:00
187 lines
6 KiB
Bash
187 lines
6 KiB
Bash
# Maintainer: Massimiliano Torromeo <massimiliano.torromeo@gmail.com>
|
|
# Contributor: Aleksey Filippov <sarum9in@gmail.com>
|
|
# Contributor: Victor Aurélio Santos <victoraur.santos@gmail.com>
|
|
|
|
# ALARM: Kevin Mihelich <kevin@archlinuxarm.org>
|
|
# - explicitly link v5/v6 with libatomic
|
|
# - upstream PR to fix FTBFS
|
|
|
|
pkgbase='grpc'
|
|
pkgname=('grpc' 'python-grpcio' 'php-grpc' 'php7-grpc' 'grpc-cli')
|
|
pkgver=1.42.0
|
|
_gtestver=c9ccac7cb7345901884aabf5d1a786cfa6e2f397
|
|
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' 'php7' 'c-ares' 'openssl' 'chrpath' 'cython'
|
|
'cmake' 'benchmark' 'python-setuptools' 'abseil-cpp' 'ninja')
|
|
source=("https://github.com/grpc/grpc/archive/v$pkgver/$pkgbase-$pkgver.tar.gz"
|
|
"https://github.com/google/googletest/archive/$_gtestver/googletest-$_gtestver.tar.gz"
|
|
"python-grpcio-use-system-abseil.patch"
|
|
"https://patch-diff.githubusercontent.com/raw/grpc/grpc/pull/28196.patch")
|
|
sha256sums=('b2f2620c762427bfeeef96a68c1924319f384e877bc0e084487601e4cc6e434c'
|
|
'443d383db648ebb8e391382c0ab63263b7091d03197f304390baac10f178a468'
|
|
'3cfb289266f9d2697b917e4400f18a6592f95a99e658e401c1332870b219358b'
|
|
'24e23817d5848413add68f1bd60e840c321a5a6ca48b0e9a8f70aaaca83f00bd')
|
|
|
|
prepare() {
|
|
cd "$srcdir/$pkgbase-$pkgver"
|
|
patch -Np1 -i ../python-grpcio-use-system-abseil.patch
|
|
|
|
ln -sf "$srcdir/googletest-$_gtestver/"{googlemock,googletest} \
|
|
third_party/googletest
|
|
|
|
cp -a src/php{,7}
|
|
|
|
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
|
|
fi
|
|
patch -p1 -i ../28196.patch
|
|
|
|
cmake -Bbuild \
|
|
-DCMAKE_BUILD_TYPE=None \
|
|
-DCMAKE_CXX_FLAGS="${CXXFLAGS} -DNDEBUG" \
|
|
-DgRPC_INSTALL=ON \
|
|
-DBUILD_SHARED_LIBS=ON \
|
|
-DCMAKE_CXX_STANDARD=17 \
|
|
-DCMAKE_SKIP_INSTALL_RPATH=ON \
|
|
-DCMAKE_INSTALL_PREFIX=/usr \
|
|
-DgRPC_BUILD_TESTS=ON \
|
|
-DgRPC_BUILD_CODEGEN=ON \
|
|
-DgRPC_BUILD_CSHARP_EXT=ON \
|
|
-DgRPC_BACKWARDS_COMPATIBILITY_MODE=OFF \
|
|
-DgRPC_ZLIB_PROVIDER='package' \
|
|
-DgRPC_CARES_PROVIDER='package' \
|
|
-DgRPC_RE2_PROVIDER='package' \
|
|
-DgRPC_SSL_PROVIDER='package' \
|
|
-DgRPC_PROTOBUF_PROVIDER='package' \
|
|
-DgRPC_PROTOBUF_PACKAGE_TYPE='MODULE' \
|
|
-DgRPC_BENCHMARK_PROVIDER:STRING='package' \
|
|
-DgRPC_ABSL_PROVIDER:STRING='package' \
|
|
-DgRPC_USE_PROTO_LITE=OFF \
|
|
-DgRPC_BUILD_GRPC_CPP_PLUGIN=ON \
|
|
-DgRPC_BUILD_GRPC_CSHARP_PLUGIN=ON \
|
|
-DgRPC_BUILD_GRPC_NODE_PLUGIN=ON \
|
|
-DgRPC_BUILD_GRPC_OBJECTIVE_C_PLUGIN=ON \
|
|
-DgRPC_BUILD_GRPC_PHP_PLUGIN=ON \
|
|
-DgRPC_BUILD_GRPC_PYTHON_PLUGIN=ON \
|
|
-DgRPC_BUILD_GRPC_RUBY_PLUGIN=ON \
|
|
-GNinja
|
|
}
|
|
|
|
build() {
|
|
cd "$srcdir/$pkgbase-$pkgver/build"
|
|
|
|
cmake --build .
|
|
export LDFLAGS="$LDFLAGS -L$PWD"
|
|
|
|
# PHP
|
|
cd "$srcdir/$pkgbase-$pkgver/src/php/ext/$pkgbase"
|
|
phpize
|
|
./configure --enable-grpc="$srcdir/$pkgbase-$pkgver"
|
|
make
|
|
|
|
# PHP7
|
|
cd "$srcdir/$pkgbase-$pkgver/src/php7/ext/$pkgbase"
|
|
phpize7
|
|
./configure --enable-grpc="$srcdir/$pkgbase-$pkgver"
|
|
make
|
|
|
|
# Python
|
|
cd "$srcdir/$pkgbase-$pkgver"
|
|
GRPC_PYTHON_CFLAGS="-fvisibility=hidden -fno-wrapv -fno-exceptions $(pkg-config --cflags protobuf) -std=c++17" \
|
|
GRPC_PYTHON_LDFLAGS="$(pkg-config --libs protobuf)" \
|
|
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_PYTHON_BUILD_SYSTEM_ABSL=1 \
|
|
GRPC_BUILD_WITH_BORING_SSL_ASM=0 \
|
|
python setup.py build
|
|
}
|
|
|
|
check() {
|
|
cd "$srcdir/$pkgbase-$pkgver"
|
|
local _pyver=$(python -c "import sys; print('{0}.{1}'.format(*sys.version_info[:2]))")
|
|
PYTHONPATH="python_build/lib.linux-$CARCH-$_pyver" python -c 'import grpc'
|
|
}
|
|
|
|
package_grpc() {
|
|
depends=('c-ares' 'protobuf' 'openssl' 're2' 'abseil-cpp')
|
|
provides=(
|
|
'libupb.so'
|
|
'libgrpcpp_channelz.so'
|
|
'libgrpc_unsecure.so'
|
|
'libgrpc_plugin_support.so'
|
|
'libgrpc.so'
|
|
'libgrpc++_unsecure.so'
|
|
'libgrpc++_reflection.so'
|
|
'libgrpc++_error_details.so'
|
|
'libgrpc++_alts.so'
|
|
'libgrpc++.so'
|
|
'libgpr.so'
|
|
'libaddress_sorting.so'
|
|
)
|
|
|
|
cd "$srcdir/$pkgbase-$pkgver/build"
|
|
DESTDIR="$pkgdir" cmake --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' 'abseil-cpp')
|
|
|
|
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_php7-grpc() {
|
|
pkgdesc='gRPC module for PHP'
|
|
depends=('grpc' 'php7')
|
|
backup=('etc/php7/conf.d/grpc.ini')
|
|
|
|
# Install PHP extension.
|
|
cd "$srcdir/$pkgbase-$pkgver/src/php7/ext/$pkgbase"
|
|
make install "INSTALL_ROOT=$pkgdir"
|
|
install -Dm644 LICENSE "$pkgdir"/usr/share/licenses/$pkgname/LICENSE
|
|
|
|
# Remove RPATH
|
|
chrpath -d "$pkgdir/usr/lib/php7/modules/grpc.so"
|
|
|
|
echo ';extension=grpc.so' >grpc.ini
|
|
install -Dm644 grpc.ini "$pkgdir/etc/php7/conf.d/grpc.ini"
|
|
}
|
|
|
|
package_grpc-cli() {
|
|
pkgdesc='gRPC protocol buffers cli'
|
|
depends=('grpc')
|
|
|
|
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
|
|
}
|