From f4fdd3ee78ed7d810e8334b8431c9b05d52716b6 Mon Sep 17 00:00:00 2001 From: Jacob Heider Date: Fri, 28 Jun 2024 20:35:46 -0400 Subject: [PATCH] fix(grpc) (#6546) * fix(grpc) let 1.62.2 continue to build properly * hopefully fix 1.63+ --- projects/grpc.io/package.yml | 62 +++++++++++++++++++++++++++++------- 1 file changed, 50 insertions(+), 12 deletions(-) diff --git a/projects/grpc.io/package.yml b/projects/grpc.io/package.yml index 2580748d..43d23bbb 100644 --- a/projects/grpc.io/package.yml +++ b/projects/grpc.io/package.yml @@ -16,20 +16,22 @@ provides: - bin/grpc_cli dependencies: - abseil.io: '*' + abseil.io: ^20240116 c-ares.org: '*' openssl.org: ^1.1 - protobuf.dev: 25.2.0 # grpc links to specific versions, so we have to pick one. + protobuf.dev: 26.1.0 # grpc links to specific versions, so we have to pick one. github.com/google/re2: '*' zlib.net: '*' linux: - gnu.org/gcc: '*' # libstdc++ + gnu.org/gcc/libstdcxx: '*' build: dependencies: gnu.org/autoconf: '*' gnu.org/automake: '*' gnu.org/libtool: '*' + darwin: + gnu.org/patch: '*' cmake.org: ^3 freedesktop.org/pkg-config: ^0 git-scm.org: ^2 @@ -38,6 +40,34 @@ build: - run: git submodule update --init --recursive working-directory: ../.. + # darwin issues: + # https://github.com/grpc/grpc/issues/36654 + - run: | + if test "{{hw.platform}}" = "darwin"; then + patch -i $PROP || true + fi + if: '>=1.63' + working-directory: ../.. + prop: | + --- CMakeLists.txt.orig 2024-05-16 01:01:03.000000000 +0000 + +++ CMakeLists.txt + @@ -3682,6 +3682,7 @@ target_include_directories(upb_json_lib + ) + target_link_libraries(upb_json_lib + ${_gRPC_ALLTARGETS_LIBRARIES} + + grpc++_unsecure + utf8_range_lib + upb_message_lib + ) + @@ -3883,6 +3884,7 @@ target_include_directories(upb_textforma + ) + target_link_libraries(upb_textformat_lib + ${_gRPC_ALLTARGETS_LIBRARIES} + + grpc++_unsecure + utf8_range_lib + upb_message_lib + ) + - cmake $COMMON_ARGS $ARGS ../.. - make install @@ -52,7 +82,7 @@ build: # so we need to add @loader_path to the rpath - run: | for f in bin/* lib/libgrpc++_test_config.dylib; do - if test -f $f; then + if test -f $f && ! otool -l $f | grep @loader_path/../lib; then install_name_tool -add_rpath @loader_path/../lib $f fi done @@ -72,18 +102,23 @@ build: - -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::allocator>, 0>(std::__cxx11::basic_string, std::allocator>&&) - # LDFLAGS: $LDFLAGS -Wl,--allow-shlib-undefined - # ARGS: - # - -DCMAKE_EXE_LINKER_FLAGS=-Wl,-lstdc++ + darwin: + ARGS: + - -DgRPC_PROTOBUF_PROVIDER=module + linux: + CC: clang + CXX: clang++ + LD: clang + ARGS: + - -DgRPC_PROTOBUF_PROVIDER=package + CLI_ARGS: + # otherwise we get linker errors + - -DCMAKE_EXE_LINKER_FLAGS=-W,-labsl_log_internal_message test: dependencies: @@ -98,6 +133,9 @@ test: script: - cp $FIXTURE test.cpp - PKG_CONFIG=$(pkg-config --cflags --libs libcares protobuf re2 grpc++) - - clang++ $PKG_CONFIG test.cpp -o test -lstdc++ + - clang++ $PKG_CONFIG test.cpp -o test $LIBS - ./test - (grpc_cli ls localhost:58931 2>&1 || true) | grep -E "(failed to connect to all addresses|rpc failed)" + env: + linux: + LIBS: -lstdc++