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::allocator>, 0>(std::__cxx11::basic_string, std::allocator>&&) # LDFLAGS: $LDFLAGS -Wl,--allow-shlib-undefined # ARGS: # - -DCMAKE_EXE_LINKER_FLAGS=-Wl,-lstdc++ test: dependencies: freedesktop.org/pkg-config: ^0 fixture: | #include 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)"