pantry/projects/grpc.io/package.yml
Jacob Heider cc1e6e9de5
fix(grpc) (#5492)
* fix(grpc)

closes #5190

* Progress

* Last one

* grep -E
2024-03-30 17:24:58 -04:00

96 lines
2.7 KiB
YAML

distributable:
url: git+https://github.com/grpc/grpc
ref: v{{version}}
versions:
github: grpc/grpc
provides:
- bin/grpc_csharp_plugin
- bin/grpc_node_plugin
- bin/grpc_cpp_plugin
- bin/grpc_python_plugin
- bin/grpc_objective_c_plugin
- bin/grpc_ruby_plugin
- bin/grpc_php_plugin
- bin/grpc_cli
dependencies:
abseil.io: '*'
c-ares.org: '*'
openssl.org: ^1.1
protobuf.dev: 25.2.0 # grpc links to specific versions, so we have to pick one.
github.com/google/re2: '*'
zlib.net: '*'
linux:
gnu.org/gcc: '*' # libstdc++
build:
dependencies:
gnu.org/autoconf: '*'
gnu.org/automake: '*'
gnu.org/libtool: '*'
cmake.org: ^3
freedesktop.org/pkg-config: ^0
git-scm.org: ^2
working-directory: cmake/build
script:
- run: git submodule update --init --recursive
working-directory: ../..
- cmake $COMMON_ARGS $ARGS ../..
- make install
# Build the cli
- cmake $COMMON_ARGS $CLI_ARGS ../..
- make grpc_cli
- cp grpc_cli "{{prefix}}/bin"
- cp libgrpc++_test_config.* "{{prefix}}/lib"
- run: install_name_tool -add_rpath @loader_path libgrpc++_test_config.dylib
working-directory: '{{prefix}}/lib'
if: darwin
env:
COMMON_ARGS:
- -DCMAKE_BUILD_TYPE=Release
- -DCMAKE_INSTALL_PREFIX="{{prefix}}"
- -DCMAKE_INSTALL_RPATH={{prefix}}
- -DBUILD_SHARED_LIBS=ON
ARGS:
- -DCMAKE_CXX_STANDARD=17
- -DCMAKE_CXX_STANDARD_REQUIRED=TRUE
- -DgRPC_BUILD_TESTS=OFF
- -DgRPC_INSTALL=ON
- -DgRPC_ABSL_PROVIDER=package
- -DgRPC_CARES_PROVIDER=package
- -DgRPC_PROTOBUF_PROVIDER=package
- -DgRPC_SSL_PROVIDER=package
- -DgRPC_ZLIB_PROVIDER=package
- -DgRPC_RE2_PROVIDER=package
CLI_ARGS:
- -DgRPC_BUILD_TESTS=ON
# linux:
# # likely needs bumping to an unreleased abseil.io version
# # ld.lld: error: undefined reference due to --no-allow-shlib-undefined: absl::lts_20230802::Cord::Cord<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, 0>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&&)
# LDFLAGS: $LDFLAGS -Wl,--allow-shlib-undefined
# ARGS:
# - -DCMAKE_EXE_LINKER_FLAGS=-Wl,-lstdc++
test:
dependencies:
freedesktop.org/pkg-config: ^0
fixture: |
#include <grpc/grpc.h>
int main() {
grpc_init();
grpc_shutdown();
return GRPC_STATUS_OK;
}
script:
- cp $FIXTURE test.cpp
- PKG_CONFIG=$(pkg-config --cflags --libs libcares protobuf re2 grpc++)
- clang++ $PKG_CONFIG test.cpp -o test -lstdc++
- ./test
- (grpc_cli ls localhost:58931 2>&1 || true) | grep -E "(failed to connect to all addresses|rpc failed)"