diff --git a/0001-Use-GNUInstallDirs-for-platform-specific-libra.patch b/0001-Use-GNUInstallDirs-for-platform-specific-libra.patch new file mode 100644 index 0000000000000000000000000000000000000000..505a4fa5490b1ad00ad404e40b98fbbc05a0ef82 --- /dev/null +++ b/0001-Use-GNUInstallDirs-for-platform-specific-libra.patch @@ -0,0 +1,36 @@ +From 4c8f4c83d0992e91c4adb5b0c611c6ac26d1a1d8 Mon Sep 17 00:00:00 2001 +From: tomcruiseqi <10762123+tomcruiseqi@inspur.com> +Date: Thu, 14 Aug 2025 15:48:19 +0800 +Subject: [PATCH] Use GNUInstallDirs for platform-specific library paths + +Description: +Update gRPC's CMake configuration to respect architecture-specific +installation directories by including GNUInstallDirs. This replaces +hardcoded lib with GNUInstallDirs, ensuring that on platforms +such as x86_64 the libraries install to lib64 as per system +conventions. The change also applies to include and CMake configuration +directories to improve portability and multi-architecture compatibility. +--- + CMakeLists.txt | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index ded1f31..ff84de6 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -40,9 +40,9 @@ if(BUILD_SHARED_LIBS AND MSVC) + endif() + + set(gRPC_INSTALL_BINDIR "bin" CACHE STRING "Installation directory for executables") +-set(gRPC_INSTALL_LIBDIR "lib" CACHE STRING "Installation directory for libraries") +-set(gRPC_INSTALL_INCLUDEDIR "include" CACHE STRING "Installation directory for headers") +-set(gRPC_INSTALL_CMAKEDIR "lib/cmake/${PACKAGE_NAME}" CACHE STRING "Installation directory for cmake config files") ++set(gRPC_INSTALL_LIBDIR "${CMAKE_INSTALL_LIBDIR}" CACHE STRING "Installation directory for libraries") ++set(gRPC_INSTALL_INCLUDEDIR "include" CACHE STRING "Installation directory for headers") ++set(gRPC_INSTALL_CMAKEDIR "${CMAKE_INSTALL_LIBDIR}/cmake/${PACKAGE_NAME}" CACHE STRING "Installation directory for cmake config files") + set(gRPC_INSTALL_SHAREDIR "share/grpc" CACHE STRING "Installation directory for root certificates") + set(gRPC_BUILD_MSVC_MP_COUNT 0 CACHE STRING "The maximum number of processes for MSVC /MP option") + +-- +2.47.3 + diff --git a/0001-http2-Dont-drop-connections-on-metadata-limit-exceed.patch b/0001-http2-Dont-drop-connections-on-metadata-limit-exceed.patch deleted file mode 100644 index b1e5cc1e093de4bc331ecf39a6fef437488e0f8c..0000000000000000000000000000000000000000 --- a/0001-http2-Dont-drop-connections-on-metadata-limit-exceed.patch +++ /dev/null @@ -1,695 +0,0 @@ -From 9f01fd62c356c05d14abbaebfcedf0b387d1cb96 Mon Sep 17 00:00:00 2001 -From: Craig Tiller -Date: Tue, 7 Feb 2023 08:27:04 -0800 -Subject: [PATCH] [http2] Dont drop connections on metadata limit exceeded - (#32309) - -* [http] Dont drop connections on metadata limit exceeded - -* remove bad test - -* Automated change: Fix sanity tests - ---------- - -Co-authored-by: ctiller ---- - CMakeLists.txt | 38 --- - build_autogenerated.yaml | 13 - - .../chttp2/transport/hpack_parser.cc | 11 +- - .../ext/transport/chttp2/transport/internal.h | 2 - - .../ext/transport/chttp2/transport/parsing.cc | 6 +- - test/core/bad_client/generate_tests.bzl | 1 - - test/core/bad_client/tests/large_metadata.cc | 108 --------- - .../bad_client/tests/large_metadata.headers | 106 -------- - test/core/end2end/tests/large_metadata.cc | 226 +++++++++--------- - tools/run_tests/generated/tests.json | 24 -- - 10 files changed, 126 insertions(+), 409 deletions(-) - delete mode 100644 test/core/bad_client/tests/large_metadata.cc - delete mode 100644 test/core/bad_client/tests/large_metadata.headers - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 1ecaea8eb7..661ce2c511 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -1078,7 +1078,6 @@ if(gRPC_BUILD_TESTS) - add_dependencies(buildtests_cxx istio_echo_server_test) - add_dependencies(buildtests_cxx join_test) - add_dependencies(buildtests_cxx json_test) -- add_dependencies(buildtests_cxx large_metadata_bad_client_test) - add_dependencies(buildtests_cxx latch_test) - add_dependencies(buildtests_cxx lb_get_cpu_stats_test) - add_dependencies(buildtests_cxx lb_load_data_store_test) -@@ -12796,43 +12795,6 @@ target_link_libraries(json_test - ) - - --endif() --if(gRPC_BUILD_TESTS) -- --add_executable(large_metadata_bad_client_test -- test/core/bad_client/bad_client.cc -- test/core/bad_client/tests/large_metadata.cc -- test/core/end2end/cq_verifier.cc -- third_party/googletest/googletest/src/gtest-all.cc -- third_party/googletest/googlemock/src/gmock-all.cc --) -- --target_include_directories(large_metadata_bad_client_test -- PRIVATE -- ${CMAKE_CURRENT_SOURCE_DIR} -- ${CMAKE_CURRENT_SOURCE_DIR}/include -- ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR} -- ${_gRPC_RE2_INCLUDE_DIR} -- ${_gRPC_SSL_INCLUDE_DIR} -- ${_gRPC_UPB_GENERATED_DIR} -- ${_gRPC_UPB_GRPC_GENERATED_DIR} -- ${_gRPC_UPB_INCLUDE_DIR} -- ${_gRPC_XXHASH_INCLUDE_DIR} -- ${_gRPC_ZLIB_INCLUDE_DIR} -- third_party/googletest/googletest/include -- third_party/googletest/googletest -- third_party/googletest/googlemock/include -- third_party/googletest/googlemock -- ${_gRPC_PROTO_GENS_DIR} --) -- --target_link_libraries(large_metadata_bad_client_test -- ${_gRPC_PROTOBUF_LIBRARIES} -- ${_gRPC_ALLTARGETS_LIBRARIES} -- grpc_test_util --) -- -- - endif() - if(gRPC_BUILD_TESTS) - -diff --git a/build_autogenerated.yaml b/build_autogenerated.yaml -index 941a095cd1..9c2fbaf2b8 100644 ---- a/build_autogenerated.yaml -+++ b/build_autogenerated.yaml -@@ -6683,19 +6683,6 @@ targets: - deps: - - grpc_test_util - uses_polling: false --- name: large_metadata_bad_client_test -- gtest: true -- build: test -- language: c++ -- headers: -- - test/core/bad_client/bad_client.h -- - test/core/end2end/cq_verifier.h -- src: -- - test/core/bad_client/bad_client.cc -- - test/core/bad_client/tests/large_metadata.cc -- - test/core/end2end/cq_verifier.cc -- deps: -- - grpc_test_util - - name: latch_test - gtest: true - build: test -diff --git a/src/core/ext/transport/chttp2/transport/hpack_parser.cc b/src/core/ext/transport/chttp2/transport/hpack_parser.cc -index 5354338cba..314707b59e 100644 ---- a/src/core/ext/transport/chttp2/transport/hpack_parser.cc -+++ b/src/core/ext/transport/chttp2/transport/hpack_parser.cc -@@ -1218,12 +1218,17 @@ class HPackParser::Parser { - "). GRPC_ARG_MAX_METADATA_SIZE can be set to increase this limit.", - *frame_length_, metadata_size_limit_); - if (metadata_buffer_ != nullptr) metadata_buffer_->Clear(); -+ // StreamId is used as a signal to skip this stream but keep the connection -+ // alive - return input_->MaybeSetErrorAndReturn( - [] { - return grpc_error_set_int( -- GRPC_ERROR_CREATE_FROM_STATIC_STRING( -- "received initial metadata size exceeds limit"), -- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_RESOURCE_EXHAUSTED); -+ grpc_error_set_int( -+ GRPC_ERROR_CREATE_FROM_STATIC_STRING( -+ "received initial metadata size exceeds limit"), -+ GRPC_ERROR_INT_GRPC_STATUS, -+ GRPC_STATUS_RESOURCE_EXHAUSTED), -+ GRPC_ERROR_INT_STREAM_ID, 0); - }, - false); - } -diff --git a/src/core/ext/transport/chttp2/transport/internal.h b/src/core/ext/transport/chttp2/transport/internal.h -index 4af3c4ec9d..e01cff72c1 100644 ---- a/src/core/ext/transport/chttp2/transport/internal.h -+++ b/src/core/ext/transport/chttp2/transport/internal.h -@@ -541,8 +541,6 @@ struct grpc_chttp2_stream { - - grpc_core::Timestamp deadline = grpc_core::Timestamp::InfFuture(); - -- /** saw some stream level error */ -- grpc_error_handle forced_close_error = GRPC_ERROR_NONE; - /** how many header frames have we received? */ - uint8_t header_frames_received = 0; - /** number of bytes received - reset at end of parse thread execution */ -diff --git a/src/core/ext/transport/chttp2/transport/parsing.cc b/src/core/ext/transport/chttp2/transport/parsing.cc -index 6a45381e54..48dddc9313 100644 ---- a/src/core/ext/transport/chttp2/transport/parsing.cc -+++ b/src/core/ext/transport/chttp2/transport/parsing.cc -@@ -22,6 +22,7 @@ - #include - - #include -+#include - - #include "absl/base/attributes.h" - #include "absl/status/status.h" -@@ -675,10 +676,7 @@ static grpc_error_handle parse_frame_slice(grpc_chttp2_transport* t, - } - grpc_chttp2_parsing_become_skip_parser(t); - if (s) { -- s->forced_close_error = err; -- grpc_chttp2_add_rst_stream_to_next_write(t, t->incoming_stream_id, -- GRPC_HTTP2_PROTOCOL_ERROR, -- &s->stats.outgoing); -+ grpc_chttp2_cancel_stream(t, s, std::exchange(err, absl::OkStatus())); - } else { - GRPC_ERROR_UNREF(err); - } -diff --git a/test/core/bad_client/generate_tests.bzl b/test/core/bad_client/generate_tests.bzl -index 85aafed655..6100d142d6 100755 ---- a/test/core/bad_client/generate_tests.bzl -+++ b/test/core/bad_client/generate_tests.bzl -@@ -29,7 +29,6 @@ BAD_CLIENT_TESTS = { - "headers": test_options(), - "initial_settings_frame": test_options(), - "head_of_line_blocking": test_options(), -- "large_metadata": test_options(), - "out_of_bounds": test_options(), - "server_registered_method": test_options(), - "simple_request": test_options(), -diff --git a/test/core/bad_client/tests/large_metadata.cc b/test/core/bad_client/tests/large_metadata.cc -deleted file mode 100644 -index 9423dc3f6d..0000000000 ---- a/test/core/bad_client/tests/large_metadata.cc -+++ /dev/null -@@ -1,108 +0,0 @@ --/* -- * -- * Copyright 2015 gRPC authors. -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- * -- */ -- --#include -- --#include "absl/strings/str_format.h" --#include "absl/strings/str_join.h" -- --#include --#include -- --#include "src/core/lib/gpr/string.h" --#include "src/core/lib/surface/server.h" --#include "test/core/bad_client/bad_client.h" --#include "test/core/end2end/cq_verifier.h" -- --// The large-metadata headers that we're adding for this test are not --// actually appended to this in a single string, since the string would --// be longer than the C99 string literal limit. Instead, we dynamically --// construct it by adding the large headers one at a time. -- --/* headers: generated from large_metadata.headers in this directory */ --#define PFX_TOO_MUCH_METADATA_FROM_CLIENT_REQUEST \ -- "\x00\x00\x00\x04\x01\x00\x00\x00\x00" \ -- "\x00" \ -- "5{\x01\x05\x00\x00\x00\x01" \ -- "\x10\x05:path\x08/foo/bar" \ -- "\x10\x07:scheme\x04http" \ -- "\x10\x07:method\x04POST" \ -- "\x10\x0a:authority\x09localhost" \ -- "\x10\x0c" \ -- "content-type\x10" \ -- "application/grpc" \ -- "\x10\x14grpc-accept-encoding\x15identity,deflate,gzip" \ -- "\x10\x02te\x08trailers" \ -- "\x10\x0auser-agent\"bad-client grpc-c/0.12.0.0 (linux)" -- --// Each large-metadata header is constructed from these start and end --// strings, with a two-digit number in between. --#define PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_START_STR "\x10\x0duser-header" --#define PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_END_STR \ -- "~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \ -- "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" -- --// The size of each large-metadata header string. --#define PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_SIZE \ -- ((sizeof(PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_START_STR) - 1) + 2 + \ -- (sizeof(PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_END_STR) - 1)) -- --// The number of headers we're adding and the total size of the client --// payload. --#define NUM_HEADERS 46 --#define TOO_MUCH_METADATA_FROM_CLIENT_REQUEST_SIZE \ -- ((sizeof(PFX_TOO_MUCH_METADATA_FROM_CLIENT_REQUEST) - 1) + \ -- (NUM_HEADERS * PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_SIZE) + 1) -- --static void verifier_fails(grpc_server* server, grpc_completion_queue* cq, -- void* /*registered_method*/) { -- while (grpc_core::Server::FromC(server)->HasOpenConnections()) { -- GPR_ASSERT(grpc_completion_queue_next( -- cq, grpc_timeout_milliseconds_to_deadline(20), nullptr) -- .type == GRPC_QUEUE_TIMEOUT); -- } --} -- --int main(int argc, char** argv) { -- int i; -- grpc_init(); -- grpc::testing::TestEnvironment env(&argc, argv); -- -- // Test sending more metadata than the server will accept. -- std::vector headers; -- for (i = 0; i < NUM_HEADERS; ++i) { -- headers.push_back(absl::StrFormat( -- "%s%02d%s", PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_START_STR, i, -- PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_END_STR)); -- } -- std::string client_headers = absl::StrJoin(headers, ""); -- char client_payload[TOO_MUCH_METADATA_FROM_CLIENT_REQUEST_SIZE] = -- PFX_TOO_MUCH_METADATA_FROM_CLIENT_REQUEST; -- memcpy(client_payload + sizeof(PFX_TOO_MUCH_METADATA_FROM_CLIENT_REQUEST) - 1, -- client_headers.data(), client_headers.size()); -- grpc_bad_client_arg args[2]; -- args[0] = connection_preface_arg; -- args[1].client_validator = rst_stream_client_validator; -- args[1].client_payload = client_payload; -- args[1].client_payload_length = sizeof(client_payload) - 1; -- -- grpc_run_bad_client_test(verifier_fails, args, 2, 0); -- -- grpc_shutdown(); -- return 0; --} -diff --git a/test/core/bad_client/tests/large_metadata.headers b/test/core/bad_client/tests/large_metadata.headers -deleted file mode 100644 -index 75de3ef100..0000000000 ---- a/test/core/bad_client/tests/large_metadata.headers -+++ /dev/null -@@ -1,106 +0,0 @@ --# headers used in simple_request.c --# use tools/codegen/core/gen_header_frame.py --set_end_stream to generate --# the binary strings contained in the source code --:path: /foo/bar --:scheme: http --:method: POST --:authority: localhost --content-type: application/grpc --grpc-accept-encoding: identity,deflate,gzip --te: trailers --user-agent: bad-client grpc-c/0.12.0.0 (linux) --user-header00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header01: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header02: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header03: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header04: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header05: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header06: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header07: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header08: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header09: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header10: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header11: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header12: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header13: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header14: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header15: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header16: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header17: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header18: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header19: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header20: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header21: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header22: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header23: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header24: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header25: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header26: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header27: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header28: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header29: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header30: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header31: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header32: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header33: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header34: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header35: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header36: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header37: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header39: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header41: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header42: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header43: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header44: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header45: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header46: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header47: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header48: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header49: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header50: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header51: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header52: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header53: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header54: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header55: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header56: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header57: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header58: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header59: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header60: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header61: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header62: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header63: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header64: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header65: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header66: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header67: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header68: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header69: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header70: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header71: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header72: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header73: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header74: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header75: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header76: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header77: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header79: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header81: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header82: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header83: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header84: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header85: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header86: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header87: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header88: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header89: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header90: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header91: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header92: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header93: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --user-header94: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -diff --git a/test/core/end2end/tests/large_metadata.cc b/test/core/end2end/tests/large_metadata.cc -index 72cf519899..08cd20cb4f 100644 ---- a/test/core/end2end/tests/large_metadata.cc -+++ b/test/core/end2end/tests/large_metadata.cc -@@ -247,10 +247,6 @@ static void test_request_with_large_metadata(grpc_end2end_test_config config) { - // Server responds with metadata larger than what the client accepts. - static void test_request_with_bad_large_metadata_response( - grpc_end2end_test_config config) { -- grpc_call* c; -- grpc_call* s; -- grpc_metadata meta; -- const size_t large_size = 64 * 1024; - grpc_arg arg; - arg.type = GRPC_ARG_INTEGER; - arg.key = const_cast(GRPC_ARG_MAX_METADATA_SIZE); -@@ -259,115 +255,125 @@ static void test_request_with_bad_large_metadata_response( - grpc_end2end_test_fixture f = begin_test( - config, "test_request_with_bad_large_metadata_response", &args, &args); - cq_verifier* cqv = cq_verifier_create(f.cq); -- grpc_op ops[6]; -- grpc_op* op; -- grpc_metadata_array initial_metadata_recv; -- grpc_metadata_array trailing_metadata_recv; -- grpc_metadata_array request_metadata_recv; -- grpc_call_details call_details; -- grpc_status_code status; -- grpc_call_error error; -- grpc_slice details; -- int was_cancelled = 2; -- -- gpr_timespec deadline = five_seconds_from_now(); -- c = grpc_channel_create_call(f.client, nullptr, GRPC_PROPAGATE_DEFAULTS, f.cq, -- grpc_slice_from_static_string("/foo"), nullptr, -- deadline, nullptr); -- GPR_ASSERT(c); -- -- meta.key = grpc_slice_from_static_string("key"); -- meta.value = grpc_slice_malloc(large_size); -- memset(GRPC_SLICE_START_PTR(meta.value), 'a', large_size); -- -- grpc_metadata_array_init(&initial_metadata_recv); -- grpc_metadata_array_init(&trailing_metadata_recv); -- grpc_metadata_array_init(&request_metadata_recv); -- grpc_call_details_init(&call_details); -- -- memset(ops, 0, sizeof(ops)); -- // Client: send request. -- op = ops; -- op->op = GRPC_OP_SEND_INITIAL_METADATA; -- op->data.send_initial_metadata.count = 0; -- op->flags = 0; -- op->reserved = nullptr; -- op++; -- op->op = GRPC_OP_SEND_CLOSE_FROM_CLIENT; -- op->flags = 0; -- op->reserved = nullptr; -- op++; -- op->op = GRPC_OP_RECV_INITIAL_METADATA; -- op->data.recv_initial_metadata.recv_initial_metadata = &initial_metadata_recv; -- op->flags = 0; -- op->reserved = nullptr; -- op++; -- op->op = GRPC_OP_RECV_STATUS_ON_CLIENT; -- op->data.recv_status_on_client.trailing_metadata = &trailing_metadata_recv; -- op->data.recv_status_on_client.status = &status; -- op->data.recv_status_on_client.status_details = &details; -- op->flags = 0; -- op->reserved = nullptr; -- op++; -- error = grpc_call_start_batch(c, ops, static_cast(op - ops), tag(1), -- nullptr); -- GPR_ASSERT(GRPC_CALL_OK == error); -- -- error = -- grpc_server_request_call(f.server, &s, &call_details, -- &request_metadata_recv, f.cq, f.cq, tag(101)); -- GPR_ASSERT(GRPC_CALL_OK == error); -- -- CQ_EXPECT_COMPLETION(cqv, tag(101), 1); -- cq_verify(cqv); -- -- memset(ops, 0, sizeof(ops)); -- // Server: send large initial metadata -- op = ops; -- op->op = GRPC_OP_SEND_INITIAL_METADATA; -- op->data.send_initial_metadata.count = 1; -- op->data.send_initial_metadata.metadata = &meta; -- op->flags = 0; -- op->reserved = nullptr; -- op++; -- op->op = GRPC_OP_RECV_CLOSE_ON_SERVER; -- op->data.recv_close_on_server.cancelled = &was_cancelled; -- op->flags = 0; -- op->reserved = nullptr; -- op++; -- op->op = GRPC_OP_SEND_STATUS_FROM_SERVER; -- op->data.send_status_from_server.trailing_metadata_count = 0; -- op->data.send_status_from_server.status = GRPC_STATUS_OK; -- grpc_slice status_details = grpc_slice_from_static_string("xyz"); -- op->data.send_status_from_server.status_details = &status_details; -- op->flags = 0; -- op->reserved = nullptr; -- op++; -- error = grpc_call_start_batch(s, ops, static_cast(op - ops), tag(102), -- nullptr); -- GPR_ASSERT(GRPC_CALL_OK == error); -- CQ_EXPECT_COMPLETION(cqv, tag(102), 1); -- CQ_EXPECT_COMPLETION(cqv, tag(1), 1); -- cq_verify(cqv); -- -- GPR_ASSERT(status == GRPC_STATUS_RESOURCE_EXHAUSTED); -- GPR_ASSERT(0 == grpc_slice_str_cmp( -- details, "received initial metadata size exceeds limit")); -- GPR_ASSERT(0 == grpc_slice_str_cmp(call_details.method, "/foo")); -- -- grpc_slice_unref(details); -- grpc_metadata_array_destroy(&initial_metadata_recv); -- grpc_metadata_array_destroy(&trailing_metadata_recv); -- grpc_metadata_array_destroy(&request_metadata_recv); -- grpc_call_details_destroy(&call_details); -- -- grpc_call_unref(c); -- grpc_call_unref(s); - -+ for (int i = 0; i < 10; i++) { -+ grpc_call* c; -+ grpc_call* s; -+ grpc_metadata meta; -+ const size_t large_size = 64 * 1024; -+ grpc_op ops[6]; -+ grpc_op* op; -+ grpc_metadata_array initial_metadata_recv; -+ grpc_metadata_array trailing_metadata_recv; -+ grpc_metadata_array request_metadata_recv; -+ grpc_call_details call_details; -+ grpc_status_code status; -+ grpc_call_error error; -+ grpc_slice details; -+ int was_cancelled = 2; -+ -+ gpr_timespec deadline = five_seconds_from_now(); -+ c = grpc_channel_create_call(f.client, nullptr, GRPC_PROPAGATE_DEFAULTS, -+ f.cq, grpc_slice_from_static_string("/foo"), -+ nullptr, deadline, nullptr); -+ GPR_ASSERT(c); -+ -+ meta.key = grpc_slice_from_static_string("key"); -+ meta.value = grpc_slice_malloc(large_size); -+ memset(GRPC_SLICE_START_PTR(meta.value), 'a', large_size); -+ -+ grpc_metadata_array_init(&initial_metadata_recv); -+ grpc_metadata_array_init(&trailing_metadata_recv); -+ grpc_metadata_array_init(&request_metadata_recv); -+ grpc_call_details_init(&call_details); -+ -+ memset(ops, 0, sizeof(ops)); -+ // Client: send request. -+ op = ops; -+ op->op = GRPC_OP_SEND_INITIAL_METADATA; -+ op->data.send_initial_metadata.count = 0; -+ op->flags = 0; -+ op->reserved = nullptr; -+ op++; -+ op->op = GRPC_OP_SEND_CLOSE_FROM_CLIENT; -+ op->flags = 0; -+ op->reserved = nullptr; -+ op++; -+ op->op = GRPC_OP_RECV_INITIAL_METADATA; -+ op->data.recv_initial_metadata.recv_initial_metadata = -+ &initial_metadata_recv; -+ op->flags = 0; -+ op->reserved = nullptr; -+ op++; -+ op->op = GRPC_OP_RECV_STATUS_ON_CLIENT; -+ op->data.recv_status_on_client.trailing_metadata = &trailing_metadata_recv; -+ op->data.recv_status_on_client.status = &status; -+ op->data.recv_status_on_client.status_details = &details; -+ op->flags = 0; -+ op->reserved = nullptr; -+ op++; -+ error = grpc_call_start_batch(c, ops, static_cast(op - ops), tag(1), -+ nullptr); -+ GPR_ASSERT(GRPC_CALL_OK == error); -+ -+ error = -+ grpc_server_request_call(f.server, &s, &call_details, -+ &request_metadata_recv, f.cq, f.cq, tag(101)); -+ GPR_ASSERT(GRPC_CALL_OK == error); -+ -+ CQ_EXPECT_COMPLETION(cqv, tag(101), 1); -+ cq_verify(cqv); -+ -+ memset(ops, 0, sizeof(ops)); -+ // Server: send large initial metadata -+ op = ops; -+ op->op = GRPC_OP_SEND_INITIAL_METADATA; -+ op->data.send_initial_metadata.count = 1; -+ op->data.send_initial_metadata.metadata = &meta; -+ op->flags = 0; -+ op->reserved = nullptr; -+ op++; -+ op->op = GRPC_OP_RECV_CLOSE_ON_SERVER; -+ op->data.recv_close_on_server.cancelled = &was_cancelled; -+ op->flags = 0; -+ op->reserved = nullptr; -+ op++; -+ op->op = GRPC_OP_SEND_STATUS_FROM_SERVER; -+ op->data.send_status_from_server.trailing_metadata_count = 0; -+ op->data.send_status_from_server.status = GRPC_STATUS_OK; -+ grpc_slice status_details = grpc_slice_from_static_string("xyz"); -+ op->data.send_status_from_server.status_details = &status_details; -+ op->flags = 0; -+ op->reserved = nullptr; -+ op++; -+ error = grpc_call_start_batch(s, ops, static_cast(op - ops), -+ tag(102), nullptr); -+ GPR_ASSERT(GRPC_CALL_OK == error); -+ CQ_EXPECT_COMPLETION(cqv, tag(102), 1); -+ CQ_EXPECT_COMPLETION(cqv, tag(1), 1); -+ cq_verify(cqv); -+ -+ GPR_ASSERT(status == GRPC_STATUS_RESOURCE_EXHAUSTED); -+ const char* expected_error = "received initial metadata size exceeds limit"; -+ grpc_slice actual_error = -+ grpc_slice_split_head(&details, strlen(expected_error)); -+ GPR_ASSERT(0 == grpc_slice_str_cmp(actual_error, expected_error)); -+ GPR_ASSERT(0 == grpc_slice_str_cmp(call_details.method, "/foo")); -+ -+ grpc_slice_unref(actual_error); -+ grpc_slice_unref(details); -+ grpc_metadata_array_destroy(&initial_metadata_recv); -+ grpc_metadata_array_destroy(&trailing_metadata_recv); -+ grpc_metadata_array_destroy(&request_metadata_recv); -+ grpc_call_details_destroy(&call_details); -+ -+ grpc_call_unref(c); -+ grpc_call_unref(s); -+ -+ grpc_slice_unref(meta.value); -+ } - cq_verifier_destroy(cqv); - -- grpc_slice_unref(meta.value); -- - end_test(&f); - config.tear_down_data(&f); - } -diff --git a/tools/run_tests/generated/tests.json b/tools/run_tests/generated/tests.json -index 9f21710575..0cf8b37e76 100644 ---- a/tools/run_tests/generated/tests.json -+++ b/tools/run_tests/generated/tests.json -@@ -5087,30 +5087,6 @@ - ], - "uses_polling": false - }, -- { -- "args": [], -- "benchmark": false, -- "ci_platforms": [ -- "linux", -- "mac", -- "posix", -- "windows" -- ], -- "cpu_cost": 1.0, -- "exclude_configs": [], -- "exclude_iomgrs": [], -- "flaky": false, -- "gtest": true, -- "language": "c++", -- "name": "large_metadata_bad_client_test", -- "platforms": [ -- "linux", -- "mac", -- "posix", -- "windows" -- ], -- "uses_polling": true -- }, - { - "args": [], - "benchmark": false, --- -2.41.0 - diff --git a/1000-backport-iomgr-EventEngine-Improve-server-handling-o.patch b/1000-backport-iomgr-EventEngine-Improve-server-handling-o.patch deleted file mode 100644 index fce9f194e68116cfe63fbbaa740f5aaea164b6b9..0000000000000000000000000000000000000000 --- a/1000-backport-iomgr-EventEngine-Improve-server-handling-o.patch +++ /dev/null @@ -1,232 +0,0 @@ -From cf1fdec53afb3bebb50b8239f1b912ff9586a468 Mon Sep 17 00:00:00 2001 -From: Chunmei Xu -Date: Mon, 6 May 2024 20:01:02 +0800 -Subject: [PATCH] [backport][iomgr][EventEngine] Improve server handling of - file descriptor exhaustion (#33672) - -Backport of #33656 - -format from https://github.com/grpc/grpc/commit/1d85b01fc1930b8ce0d991a8ab55f6863efa2211 -fix CVE-2023-4785 - -Signed-off-by: Chunmei Xu ---- - src/core/lib/gprpp/time.h | 12 ++++ - src/core/lib/iomgr/tcp_server_posix.cc | 56 ++++++++++++++----- - src/core/lib/iomgr/tcp_server_utils_posix.h | 14 ++++- - .../iomgr/tcp_server_utils_posix_common.cc | 21 +++++++ - 4 files changed, 88 insertions(+), 15 deletions(-) - -diff --git a/src/core/lib/gprpp/time.h b/src/core/lib/gprpp/time.h -index 2c5cb42060..02097628b8 100644 ---- a/src/core/lib/gprpp/time.h -+++ b/src/core/lib/gprpp/time.h -@@ -30,6 +30,18 @@ - #include "src/core/lib/gpr/time_precise.h" - #include "src/core/lib/gpr/useful.h" - -+#define GRPC_LOG_EVERY_N_SEC(n, severity, format, ...) \ -+ do { \ -+ static std::atomic prev{0}; \ -+ uint64_t now = grpc_core::Timestamp::FromTimespecRoundDown( \ -+ gpr_now(GPR_CLOCK_MONOTONIC)) \ -+ .milliseconds_after_process_epoch(); \ -+ if (prev == 0 || now - prev > (n)*1000) { \ -+ prev = now; \ -+ gpr_log(severity, format, __VA_ARGS__); \ -+ } \ -+ } while (0) -+ - namespace grpc_core { - - namespace time_detail { -diff --git a/src/core/lib/iomgr/tcp_server_posix.cc b/src/core/lib/iomgr/tcp_server_posix.cc -index 7ea6b3f4e9..48f712fd0e 100644 ---- a/src/core/lib/iomgr/tcp_server_posix.cc -+++ b/src/core/lib/iomgr/tcp_server_posix.cc -@@ -16,13 +16,17 @@ - * - */ - --/* FIXME: "posix" files shouldn't be depending on _GNU_SOURCE */ -+#include -+ -+#include -+ -+#include -+ -+// FIXME: "posix" files shouldn't be depending on _GNU_SOURCE - #ifndef _GNU_SOURCE - #define _GNU_SOURCE - #endif - --#include -- - #include "src/core/lib/iomgr/port.h" - - #ifdef GRPC_POSIX_SOCKET_TCP_SERVER -@@ -43,6 +47,9 @@ - #include "absl/strings/str_cat.h" - #include "absl/strings/str_format.h" - -+#include -+#include -+#include - #include - #include - #include -@@ -61,8 +68,11 @@ - #include "src/core/lib/iomgr/tcp_server_utils_posix.h" - #include "src/core/lib/iomgr/unix_sockets_posix.h" - #include "src/core/lib/resource_quota/api.h" -+#include "src/core/lib/transport/error_utils.h" - - static std::atomic num_dropped_connections{0}; -+static constexpr grpc_core::Duration kRetryAcceptWaitTime{ -+ grpc_core::Duration::Seconds(1)}; - - static grpc_error_handle tcp_server_create(grpc_closure* shutdown_complete, - const grpc_channel_args* args, -@@ -206,21 +216,37 @@ static void on_read(void* arg, grpc_error_handle err) { - if (fd < 0) { - if (errno == EINTR) { - continue; -- } else if (errno == EAGAIN || errno == ECONNABORTED || -- errno == EWOULDBLOCK) { -+ } -+ // When the process runs out of fds, accept4() returns EMFILE. When this -+ // happens, the connection is left in the accept queue until either a -+ // read event triggers the on_read callback, or time has passed and the -+ // accept should be re-tried regardless. This callback is not cancelled, -+ // so a spurious wakeup may occur even when there's nothing to accept. -+ // This is not a performant code path, but if an fd limit has been -+ // reached, the system is likely in an unhappy state regardless. -+ if (errno == EMFILE) { -+ GRPC_LOG_EVERY_N_SEC(1, GPR_ERROR, "%s", -+ "File descriptor limit reached. Retrying."); - grpc_fd_notify_on_read(sp->emfd, &sp->read_closure); -+ if (gpr_atm_full_xchg(&sp->retry_timer_armed, true)) return; -+ grpc_timer_init(&sp->retry_timer, -+ grpc_core::ExecCtx::Get()->Now() + kRetryAcceptWaitTime, -+ &sp->retry_closure); - return; -+ } -+ if (errno == EAGAIN || errno == ECONNABORTED || errno == EWOULDBLOCK) { -+ grpc_fd_notify_on_read(sp->emfd, &sp->read_closure); -+ return; -+ } -+ gpr_mu_lock(&sp->server->mu); -+ if (!sp->server->shutdown_listeners) { -+ gpr_log(GPR_ERROR, "Failed accept4: %s", strerror(errno)); - } else { -- gpr_mu_lock(&sp->server->mu); -- if (!sp->server->shutdown_listeners) { -- gpr_log(GPR_ERROR, "Failed accept4: %s", strerror(errno)); -- } else { -- /* if we have shutdown listeners, accept4 could fail, and we -- needn't notify users */ -- } -- gpr_mu_unlock(&sp->server->mu); -- goto error; -+ // if we have shutdown listeners, accept4 could fail, and we -+ // needn't notify users - } -+ gpr_mu_unlock(&sp->server->mu); -+ goto error; - } - - if (sp->server->memory_quota->IsMemoryPressureHigh()) { -@@ -414,6 +440,7 @@ static grpc_error_handle clone_port(grpc_tcp_listener* listener, - sp->port_index = listener->port_index; - sp->fd_index = listener->fd_index + count - i; - GPR_ASSERT(sp->emfd); -+ grpc_tcp_server_listener_initialize_retry_timer(sp); - while (listener->server->tail->next != nullptr) { - listener->server->tail = listener->server->tail->next; - } -@@ -586,6 +613,7 @@ static void tcp_server_shutdown_listeners(grpc_tcp_server* s) { - if (s->active_ports) { - grpc_tcp_listener* sp; - for (sp = s->head; sp; sp = sp->next) { -+ grpc_timer_cancel(&sp->retry_timer); - grpc_fd_shutdown(sp->emfd, - GRPC_ERROR_CREATE_FROM_STATIC_STRING("Server shutdown")); - } -diff --git a/src/core/lib/iomgr/tcp_server_utils_posix.h b/src/core/lib/iomgr/tcp_server_utils_posix.h -index 79527c2461..aaa9a1ae28 100644 ---- a/src/core/lib/iomgr/tcp_server_utils_posix.h -+++ b/src/core/lib/iomgr/tcp_server_utils_posix.h -@@ -25,6 +25,7 @@ - #include "src/core/lib/iomgr/resolve_address.h" - #include "src/core/lib/iomgr/socket_utils_posix.h" - #include "src/core/lib/iomgr/tcp_server.h" -+#include "src/core/lib/iomgr/timer.h" - #include "src/core/lib/resource_quota/memory_quota.h" - - /* one listening port */ -@@ -47,6 +48,11 @@ typedef struct grpc_tcp_listener { - identified while iterating through 'next'. */ - struct grpc_tcp_listener* sibling; - int is_sibling; -+ // If an accept4() call fails, a timer is started to drain the accept queue in -+ // case no further connection attempts reach the gRPC server. -+ grpc_closure retry_closure; -+ grpc_timer retry_timer; -+ gpr_atm retry_timer_armed; - } grpc_tcp_listener; - - /* the overall server */ -@@ -126,4 +132,10 @@ grpc_error_handle grpc_tcp_server_prepare_socket( - /* Ruturn true if the platform supports ifaddrs */ - bool grpc_tcp_server_have_ifaddrs(void); - --#endif /* GRPC_CORE_LIB_IOMGR_TCP_SERVER_UTILS_POSIX_H */ -+/* Initialize (but don't start) the timer and callback to retry accept4() on a -+ listening socket after file descriptors have been exhausted. This must be -+ called when creating a new listener. */ -+void grpc_tcp_server_listener_initialize_retry_timer( -+ grpc_tcp_listener* listener); -+ -+#endif /* GRPC_SRC_CORE_LIB_IOMGR_TCP_SERVER_UTILS_POSIX_H */ -diff --git a/src/core/lib/iomgr/tcp_server_utils_posix_common.cc b/src/core/lib/iomgr/tcp_server_utils_posix_common.cc -index 549d01bff3..2dae238a76 100644 ---- a/src/core/lib/iomgr/tcp_server_utils_posix_common.cc -+++ b/src/core/lib/iomgr/tcp_server_utils_posix_common.cc -@@ -18,6 +18,8 @@ - - #include - -+#include -+ - #include "src/core/lib/iomgr/port.h" - - #ifdef GRPC_POSIX_SOCKET_TCP_SERVER_UTILS_COMMON -@@ -80,6 +82,25 @@ static int get_max_accept_queue_size(void) { - return s_max_accept_queue_size; - } - -+static void listener_retry_timer_cb(void* arg, grpc_error_handle err) { -+ // Do nothing if cancelled. -+ if (err != GRPC_ERROR_NONE) return; -+ grpc_tcp_listener* listener = static_cast(arg); -+ gpr_atm_no_barrier_store(&listener->retry_timer_armed, false); -+ if (!grpc_fd_is_shutdown(listener->emfd)) { -+ grpc_fd_set_readable(listener->emfd); -+ } -+} -+ -+void grpc_tcp_server_listener_initialize_retry_timer( -+ grpc_tcp_listener* listener) { -+ gpr_atm_no_barrier_store(&listener->retry_timer_armed, false); -+ grpc_timer_init_unset(&listener->retry_timer); -+ GRPC_CLOSURE_INIT(&listener->retry_closure, listener_retry_timer_cb, listener, -+ grpc_schedule_on_exec_ctx); -+} -+ -+ - static grpc_error_handle add_socket_to_server(grpc_tcp_server* s, int fd, - const grpc_resolved_address* addr, - unsigned port_index, --- -2.32.0.3.g01195cf9f - diff --git a/31671.patch b/31671.patch deleted file mode 100644 index 1d85e39e969de2c303e721f71291881b0520fa36..0000000000000000000000000000000000000000 --- a/31671.patch +++ /dev/null @@ -1,28 +0,0 @@ -From beb3d7c392c22517c5a91e2f13558bee379abb2a Mon Sep 17 00:00:00 2001 -From: "Benjamin A. Beasley" -Date: Wed, 16 Nov 2022 09:00:21 -0500 -Subject: [PATCH] Use CMake variables for paths in pkg-config files - -Use @gRPC_INSTALL_LIBDIR@ for libdir; this fixes an incorrect --L/usr/lib on multilib Linux systems where that is the 32-bit library -path and the correct path is /usr/lib64. - -Use @gRPC_INSTALL_INCLUDEDIR@ for consistency. ---- - cmake/pkg-config-template.pc.in | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/cmake/pkg-config-template.pc.in b/cmake/pkg-config-template.pc.in -index d56154bb3a53..5a56b4f88530 100644 ---- a/cmake/pkg-config-template.pc.in -+++ b/cmake/pkg-config-template.pc.in -@@ -1,7 +1,7 @@ - prefix=@CMAKE_INSTALL_PREFIX@ - exec_prefix=${prefix} --includedir=${prefix}/include --libdir=${exec_prefix}/lib -+includedir=${prefix}/@gRPC_INSTALL_INCLUDEDIR@ -+libdir=${exec_prefix}/@gRPC_INSTALL_LIBDIR@ - - Name: @PC_NAME@ - Description: @PC_DESCRIPTION@ diff --git a/data-plane-api-9c42588c956220b48eb3099d186487c2f04d32ec.tar.gz b/data-plane-api-9c42588c956220b48eb3099d186487c2f04d32ec.tar.gz deleted file mode 100644 index 5f8d23e2897c6597607f2fad7a8d9b0650bfe546..0000000000000000000000000000000000000000 Binary files a/data-plane-api-9c42588c956220b48eb3099d186487c2f04d32ec.tar.gz and /dev/null differ diff --git a/googleapis-2f9af297c84c55c8b871ba4495e01ade42476c92.tar.gz b/googleapis-2f9af297c84c55c8b871ba4495e01ade42476c92.tar.gz deleted file mode 100644 index 5d9001f3dff8dec1880c06c0de100a0c2fc65094..0000000000000000000000000000000000000000 Binary files a/googleapis-2f9af297c84c55c8b871ba4495e01ade42476c92.tar.gz and /dev/null differ diff --git a/googletest-0e402173c97aea7a00749e825b194bfede4f2e45.tar.gz b/googletest-0e402173c97aea7a00749e825b194bfede4f2e45.tar.gz deleted file mode 100644 index a95e3073c8c4a70adf790f2126614763f6cb3579..0000000000000000000000000000000000000000 Binary files a/googletest-0e402173c97aea7a00749e825b194bfede4f2e45.tar.gz and /dev/null differ diff --git a/grpc-1.36.4-python-grpcio_tests-fixture-super.patch b/grpc-1.36.4-python-grpcio_tests-fixture-super.patch deleted file mode 100644 index 098df226f3e6331ab16b9818ae41c5d698615cff..0000000000000000000000000000000000000000 --- a/grpc-1.36.4-python-grpcio_tests-fixture-super.patch +++ /dev/null @@ -1,45 +0,0 @@ -diff -Naur grpc-1.36.4-original/src/python/grpcio_tests/tests/health_check/_health_servicer_test.py grpc-1.36.4/src/python/grpcio_tests/tests/health_check/_health_servicer_test.py ---- grpc-1.36.4-original/src/python/grpcio_tests/tests/health_check/_health_servicer_test.py 2021-03-17 15:59:05.000000000 -0400 -+++ grpc-1.36.4/src/python/grpcio_tests/tests/health_check/_health_servicer_test.py 2021-03-22 16:39:05.558398948 -0400 -@@ -234,9 +234,7 @@ - - def setUp(self): - self._thread_pool = thread_pool.RecordingThreadPool(max_workers=None) -- super(HealthServicerTest, -- self).start_server(non_blocking=True, -- thread_pool=self._thread_pool) -+ super().start_server(non_blocking=True, thread_pool=self._thread_pool) - - def test_check_empty_service(self): - request = health_pb2.HealthCheckRequest() -@@ -273,8 +271,7 @@ - class HealthServicerBackwardsCompatibleWatchTest(BaseWatchTests.WatchTests): - - def setUp(self): -- super(HealthServicerBackwardsCompatibleWatchTest, -- self).start_server(non_blocking=False, thread_pool=None) -+ super().start_server(non_blocking=False, thread_pool=None) - - - if __name__ == '__main__': -diff -Naur grpc-1.36.4-original/src/python/grpcio_tests/tests/protoc_plugin/_python_plugin_test.py grpc-1.36.4/src/python/grpcio_tests/tests/protoc_plugin/_python_plugin_test.py ---- grpc-1.36.4-original/src/python/grpcio_tests/tests/protoc_plugin/_python_plugin_test.py 2021-03-17 15:59:05.000000000 -0400 -+++ grpc-1.36.4/src/python/grpcio_tests/tests/protoc_plugin/_python_plugin_test.py 2021-03-22 16:39:05.559398954 -0400 -@@ -532,7 +532,7 @@ - request_iterator, context) - - def setUp(self): -- super(SimpleStubsPluginTest, self).setUp() -+ super().setUp() - self._server = test_common.test_server() - service_pb2_grpc.add_TestServiceServicer_to_server( - self.Servicer(), self._server) -@@ -542,7 +542,7 @@ - - def tearDown(self): - self._server.stop(None) -- super(SimpleStubsPluginTest, self).tearDown() -+ super().tearDown() - - def testUnaryCall(self): - request = request_pb2.SimpleRequest(response_size=13) diff --git a/grpc-1.37.0-grpc_cli-do-not-link-gtest-gmock.patch b/grpc-1.37.0-grpc_cli-do-not-link-gtest-gmock.patch deleted file mode 100644 index 70b0abc47dfcebeacca4a912ac51fd3872e707cb..0000000000000000000000000000000000000000 --- a/grpc-1.37.0-grpc_cli-do-not-link-gtest-gmock.patch +++ /dev/null @@ -1,50 +0,0 @@ -diff -Naur grpc-1.37.1-original/CMakeLists.txt grpc-1.37.1/CMakeLists.txt ---- grpc-1.37.1-original/CMakeLists.txt 2021-04-27 18:01:25.000000000 -0400 -+++ grpc-1.37.1/CMakeLists.txt 2021-05-04 11:00:04.934427672 -0400 -@@ -3294,10 +3294,6 @@ - ${_gRPC_UPB_INCLUDE_DIR} - ${_gRPC_XXHASH_INCLUDE_DIR} - ${_gRPC_ZLIB_INCLUDE_DIR} -- third_party/googletest/googletest/include -- third_party/googletest/googletest -- third_party/googletest/googlemock/include -- third_party/googletest/googlemock - ${_gRPC_PROTO_GENS_DIR} - ) - target_link_libraries(grpc++_test_config -@@ -10669,7 +10665,6 @@ - - - endif() --if(gRPC_BUILD_TESTS) - - add_executable(grpc_cli - ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/reflection/v1alpha/reflection.pb.cc -@@ -10683,8 +10678,6 @@ - test/cpp/util/proto_file_parser.cc - test/cpp/util/proto_reflection_descriptor_database.cc - test/cpp/util/service_describer.cc -- third_party/googletest/googletest/src/gtest-all.cc -- third_party/googletest/googlemock/src/gmock-all.cc - ) - - target_include_directories(grpc_cli -@@ -10699,10 +10692,6 @@ - ${_gRPC_UPB_INCLUDE_DIR} - ${_gRPC_XXHASH_INCLUDE_DIR} - ${_gRPC_ZLIB_INCLUDE_DIR} -- third_party/googletest/googletest/include -- third_party/googletest/googletest -- third_party/googletest/googlemock/include -- third_party/googletest/googlemock - ${_gRPC_PROTO_GENS_DIR} - ) - -@@ -10715,7 +10704,6 @@ - ) - - --endif() - if(gRPC_BUILD_CODEGEN AND gRPC_BUILD_GRPC_CPP_PLUGIN) - - add_executable(grpc_cpp_plugin diff --git a/grpc-1.39.0-system-crypto-policies.patch b/grpc-1.39.0-system-crypto-policies.patch deleted file mode 100644 index f6db78291c757844d21090fe2f6892c3ca2eea2d..0000000000000000000000000000000000000000 --- a/grpc-1.39.0-system-crypto-policies.patch +++ /dev/null @@ -1,40 +0,0 @@ -diff -Naur grpc-1.39.0-original/src/objective-c/tests/CronetTests/CronetUnitTests.mm grpc-1.39.0/src/objective-c/tests/CronetTests/CronetUnitTests.mm ---- grpc-1.39.0-original/src/objective-c/tests/CronetTests/CronetUnitTests.mm 2021-07-20 18:39:39.000000000 -0400 -+++ grpc-1.39.0/src/objective-c/tests/CronetTests/CronetUnitTests.mm 2021-07-23 14:42:11.649278304 -0400 -@@ -103,7 +103,7 @@ - BIO_free(pem); - - // Select cipher suite -- SSL_CTX_set_cipher_list(ctx, "ECDHE-RSA-AES128-GCM-SHA256"); -+ SSL_CTX_set_cipher_list(ctx, "PROFILE=SYSTEM"); - - // Select ALPN protocol - SSL_CTX_set_alpn_select_cb(ctx, alpn_cb, NULL); -diff -Naur grpc-1.39.0-original/test/core/handshake/client_ssl.cc grpc-1.39.0/test/core/handshake/client_ssl.cc ---- grpc-1.39.0-original/test/core/handshake/client_ssl.cc 2021-07-20 18:39:39.000000000 -0400 -+++ grpc-1.39.0/test/core/handshake/client_ssl.cc 2021-07-23 14:41:27.549570232 -0400 -@@ -220,9 +220,7 @@ - - // Set the cipher list to match the one expressed in - // src/core/tsi/ssl_transport_security.cc. -- const char* cipher_list = -- "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-" -- "SHA384:ECDHE-RSA-AES256-GCM-SHA384"; -+ const char* cipher_list = "PROFILE=SYSTEM"; - if (!SSL_CTX_set_cipher_list(ctx, cipher_list)) { - ERR_print_errors_fp(stderr); - gpr_log(GPR_ERROR, "Couldn't set server cipher list."); -diff -Naur grpc-1.39.0-original/test/core/handshake/server_ssl_common.cc grpc-1.39.0/test/core/handshake/server_ssl_common.cc ---- grpc-1.39.0-original/test/core/handshake/server_ssl_common.cc 2021-07-20 18:39:39.000000000 -0400 -+++ grpc-1.39.0/test/core/handshake/server_ssl_common.cc 2021-07-23 14:41:14.369657480 -0400 -@@ -204,9 +204,7 @@ - - // Set the cipher list to match the one expressed in - // src/core/tsi/ssl_transport_security.c. -- const char* cipher_list = -- "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-" -- "SHA384:ECDHE-RSA-AES256-GCM-SHA384"; -+ const char* cipher_list = "PROFILE=SYSTEM"; - if (!SSL_CTX_set_cipher_list(ctx, cipher_list)) { - ERR_print_errors_fp(stderr); - gpr_log(GPR_ERROR, "Couldn't set server cipher list."); diff --git a/grpc-1.40.0-python-grpcio_tests-make-network-tests-skippable.patch b/grpc-1.40.0-python-grpcio_tests-make-network-tests-skippable.patch deleted file mode 100644 index 5a8d2f0eda8d246c49b9da7508b12d5fe16666f6..0000000000000000000000000000000000000000 --- a/grpc-1.40.0-python-grpcio_tests-make-network-tests-skippable.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff -Naur grpc-1.40.0-original/src/python/grpcio_tests/tests/unit/_dns_resolver_test.py grpc-1.40.0/src/python/grpcio_tests/tests/unit/_dns_resolver_test.py ---- grpc-1.40.0-original/src/python/grpcio_tests/tests/unit/_dns_resolver_test.py 2021-09-03 19:20:52.000000000 -0400 -+++ grpc-1.40.0/src/python/grpcio_tests/tests/unit/_dns_resolver_test.py 2021-09-09 10:55:12.919416808 -0400 -@@ -14,6 +14,7 @@ - """Tests for an actual dns resolution.""" - - import logging -+import os - import unittest - - import grpc -@@ -46,6 +47,8 @@ - def tearDown(self): - self._server.stop(None) - -+ @unittest.skipIf('FEDORA_NO_NETWORK_TESTS' in os.environ, -+ 'Network tests disabled') - def test_connect_loopback(self): - # NOTE(https://github.com/grpc/grpc/issues/18422) - # In short, Gevent + C-Ares = Segfault. The C-Ares driver is not diff --git a/grpc-1.45.0-python_wrapper-path.patch b/grpc-1.45.0-python_wrapper-path.patch deleted file mode 100644 index 3c4402d429824b525690109aa8635443ad95dc67..0000000000000000000000000000000000000000 --- a/grpc-1.45.0-python_wrapper-path.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff -Naur grpc-1.45.0-original/test/core/http/httpcli_test_util.cc grpc-1.45.0/test/core/http/httpcli_test_util.cc ---- grpc-1.45.0-original/test/core/http/httpcli_test_util.cc 2022-03-18 13:20:52.000000000 -0400 -+++ grpc-1.45.0/test/core/http/httpcli_test_util.cc 2022-03-31 13:14:49.481349132 -0400 -@@ -53,9 +53,9 @@ - lslash = me + (lslash - me) - sizeof("http"); - } - root = static_cast( -- gpr_malloc(static_cast(lslash - me + sizeof("/../..")))); -+ gpr_malloc(static_cast(lslash - me + sizeof("/..")))); - memcpy(root, me, static_cast(lslash - me)); -- memcpy(root + (lslash - me), "/../..", sizeof("/../..")); -+ memcpy(root + (lslash - me), "/..", sizeof("/..")); - } else { - root = gpr_strdup("."); - } diff --git a/grpc-1.46.3-ChannelzServicerTest-python3.11-regressions.patch b/grpc-1.46.3-ChannelzServicerTest-python3.11-regressions.patch deleted file mode 100644 index ac345b3658a65bad19702277b4e169e42e3acbbd..0000000000000000000000000000000000000000 --- a/grpc-1.46.3-ChannelzServicerTest-python3.11-regressions.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 280cab57a6810d0b564540737d248b1fc7226b58 Mon Sep 17 00:00:00 2001 -From: "Benjamin A. Beasley" -Date: Wed, 8 Jun 2022 21:07:38 -0400 -Subject: [PATCH] Skip failing ChannelzServicerTest tests on Python 3.11 - ---- - .../grpcio_tests/tests/channelz/_channelz_servicer_test.py | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/src/python/grpcio_tests/tests/channelz/_channelz_servicer_test.py b/src/python/grpcio_tests/tests/channelz/_channelz_servicer_test.py -index 565a79814c..07ee2c3500 100644 ---- a/src/python/grpcio_tests/tests/channelz/_channelz_servicer_test.py -+++ b/src/python/grpcio_tests/tests/channelz/_channelz_servicer_test.py -@@ -274,12 +274,14 @@ class ChannelzServicerTest(unittest.TestCase): - self.assertEqual(gtc_resp.channel[i].data.calls_failed, - gsc_resp.subchannel.data.calls_failed) - -+ @unittest.skipIf(sys.version_info >= (3, 11), "Fails on 3.11") - def test_server_basic(self): - self._pairs = _generate_channel_server_pairs(1) - resp = self._channelz_stub.GetServers( - channelz_pb2.GetServersRequest(start_server_id=0)) - self.assertEqual(len(resp.server), 1) - -+ @unittest.skipIf(sys.version_info >= (3, 11), "Fails on 3.11") - def test_get_one_server(self): - self._pairs = _generate_channel_server_pairs(1) - gss_resp = self._channelz_stub.GetServers( -@@ -291,6 +293,7 @@ class ChannelzServicerTest(unittest.TestCase): - self.assertEqual(gss_resp.server[0].ref.server_id, - gs_resp.server.ref.server_id) - -+ @unittest.skipIf(sys.version_info >= (3, 11), "Fails on 3.11") - def test_server_call(self): - self._pairs = _generate_channel_server_pairs(1) - k_success = 23 -@@ -394,6 +397,7 @@ class ChannelzServicerTest(unittest.TestCase): - self.assertEqual(gs_resp.socket.data.messages_received, - test_constants.STREAM_LENGTH) - -+ @unittest.skipIf(sys.version_info >= (3, 11), "Fails on 3.11") - def test_server_sockets(self): - self._pairs = _generate_channel_server_pairs(1) - self._send_successful_unary_unary(0) -@@ -412,6 +416,7 @@ class ChannelzServicerTest(unittest.TestCase): - # If the RPC call failed, it will raise a grpc.RpcError - # So, if there is no exception raised, considered pass - -+ @unittest.skipIf(sys.version_info >= (3, 11), "Fails on 3.11") - def test_server_listen_sockets(self): - self._pairs = _generate_channel_server_pairs(1) - --- -2.36.1 - diff --git a/grpc-1.48.0-python-grpcio_tests-DynamicStubTest-hang.patch b/grpc-1.48.0-python-grpcio_tests-DynamicStubTest-hang.patch deleted file mode 100644 index beae2e4a082f7a91ff42851b5631e553bf3d487e..0000000000000000000000000000000000000000 --- a/grpc-1.48.0-python-grpcio_tests-DynamicStubTest-hang.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff -Naur grpc-1.48.0-original/src/python/grpcio_tests/tests/unit/_dynamic_stubs_test.py grpc-1.48.0/src/python/grpcio_tests/tests/unit/_dynamic_stubs_test.py ---- grpc-1.48.0-original/src/python/grpcio_tests/tests/unit/_dynamic_stubs_test.py 2022-07-18 20:40:04.000000000 -0400 -+++ grpc-1.48.0/src/python/grpcio_tests/tests/unit/_dynamic_stubs_test.py 2022-08-14 15:41:01.208719432 -0400 -@@ -128,6 +128,7 @@ - @unittest.skipIf(os.name == "nt", "Windows multiprocessing unsupported") - @unittest.skipIf(test_common.running_under_gevent(), - "Import paths do not work with gevent runner.") -+@unittest.skip("Tests hang; possibly related to upstream issue #25368?") - class DynamicStubTest(unittest.TestCase): - - def test_sunny_day(self): diff --git a/grpc-1.48.0-python-grpcio_tests-skip-compression-tests.patch b/grpc-1.48.0-python-grpcio_tests-skip-compression-tests.patch deleted file mode 100644 index c84d50e97d97824b800f2d0530ce070645014f8f..0000000000000000000000000000000000000000 --- a/grpc-1.48.0-python-grpcio_tests-skip-compression-tests.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff -Naur grpc-1.48.0-original/src/python/grpcio_tests/tests/unit/_compression_test.py grpc-1.48.0/src/python/grpcio_tests/tests/unit/_compression_test.py ---- grpc-1.48.0-original/src/python/grpcio_tests/tests/unit/_compression_test.py 2022-07-18 20:40:04.000000000 -0400 -+++ grpc-1.48.0/src/python/grpcio_tests/tests/unit/_compression_test.py 2022-08-14 11:07:13.780565137 -0400 -@@ -298,6 +298,7 @@ - multicallable_kwargs, server_kwargs, - server_handler, _REQUEST) - -+ @unittest.skip('Wrong compression ratio may occur; unknown cause') - def testDisableNextCompressionStreaming(self): - server_kwargs = { - 'compression': grpc.Compression.Deflate, -@@ -349,6 +350,7 @@ - - def test_compression(**kwargs): - -+ @unittest.skip('Wrong compression ratio may occur; unknown cause') - def _test_compression(self): - self.assertConfigurationCompressed(**kwargs) - diff --git a/grpc-1.48.4.tar.gz b/grpc-1.74.0.tar.gz similarity index 40% rename from grpc-1.48.4.tar.gz rename to grpc-1.74.0.tar.gz index 1920c196916c401713902dd6e6c822ad52871944..a6a3599f2478074b877fe315472e4470c6adde71 100644 Binary files a/grpc-1.48.4.tar.gz and b/grpc-1.74.0.tar.gz differ diff --git a/grpc.spec b/grpc.spec index 5e95587d394bb26722c26d01142dc261f04c7395..c55eb51fc5516a3b3b151c5e6306f657c98091c7 100644 --- a/grpc.spec +++ b/grpc.spec @@ -1,134 +1,26 @@ -%define anolis_release 3 +%define anolis_release 1 -%global cpp_std 17 -%global gtest_url https://github.com/google/googletest -%global gtest_dir googletest-%{gtest_commit} -%global gtest_commit 0e402173c97aea7a00749e825b194bfede4f2e45 - -%global envoy_api_commit 9c42588c956220b48eb3099d186487c2f04d32ec -%global envoy_api_url https://github.com/envoyproxy/data-plane-api -%global envoy_api_dir data-plane-api-%{envoy_api_commit} - -%global googleapis_commit 2f9af297c84c55c8b871ba4495e01ade42476c92 -%global googleapis_url https://github.com/googleapis/googleapis -%global googleapis_dir googleapis-%{googleapis_commit} - -%global opencensus_proto_version 0.3.0 -%global opencensus_proto_url https://github.com/census-instrumentation/opencensus-proto -%global opencensus_proto_dir opencensus-proto-%{opencensus_proto_version} - -%global xds_commit cb28da3451f158a947dfc45090fe92b07b243bc1 -%global xds_url https://github.com/cncf/xds -%global xds_dir xds-%{xds_commit} - -%bcond_without bootstrap -%bcond_without core_tests -%bcond_with python_aio_tests -%bcond_with python_gevent_tests -%bcond_with valgrind -%bcond_with gdb -%bcond_with system_gtest +%global c_so_version 49 +%global cpp_so_version 1.74 Name: grpc -Version: 1.48.4 +Version: 1.74.0 Release: %{anolis_release}%{?dist} Summary: RPC library and framework +License: ASL 2.0 +URL: https://www.grpc.io +Source0: https://github.com/grpc/grpc/archive/v%{version}/%{name}-%{version}.tar.gz -%global srcversion %(echo '%{version}' | sed -r 's/~rc/-pre/') -%global pyversion %(echo '%{version}' | tr -d '~') -%global c_so_version 26 -%global cpp_so_version 1.48 +# Patch the CMakefiles.txt to install the libs to lib64 on 64 bit architecture +Patch0001: 0001-Use-GNUInstallDirs-for-platform-specific-libra.patch -License: Apache-2.0 AND BSD-2-Clause AND BSD-3-Clause AND MIT -URL: https://www.grpc.io -%global forgeurl https://github.com/grpc/grpc/ -Source0: %{forgeurl}/archive/v%{srcversion}/grpc-%{srcversion}.tar.gz -Source1: %{gtest_url}/archive/%{gtest_commit}/%{gtest_dir}.tar.gz -Source2: %{envoy_api_url}/archive/%{envoy_api_commit}/%{envoy_api_dir}.tar.gz -Source3: %{googleapis_url}/archive/%{googleapis_commit}/%{googleapis_dir}.tar.gz -Source4: %{opencensus_proto_url}/archive/v%{opencensus_proto_version}/%{opencensus_proto_dir}.tar.gz -Source5: %{xds_url}/archive/%{xds_commit}/%{xds_dir}.tar.gz - -Source100: grpc_cli.1 -Source101: grpc_cli-ls.1 -Source102: grpc_cli-call.1 -Source103: grpc_cli-type.1 -Source104: grpc_cli-parse.1 -Source105: grpc_cli-totext.1 -Source106: grpc_cli-tojson.1 -Source107: grpc_cli-tobinary.1 -Source108: grpc_cli-help.1 - -BuildRequires: gcc-c++ -BuildRequires: cmake -BuildRequires: ninja-build -%if %{with core_tests} -BuildRequires: chrpath -%endif - -BuildRequires: pkgconfig(zlib) -BuildRequires: cmake(gflags) -BuildRequires: pkgconfig(protobuf) -BuildRequires: protobuf-compiler -BuildRequires: pkgconfig(re2) -BuildRequires: pkgconfig(openssl) -BuildRequires: cmake(c-ares) -BuildRequires: abseil-cpp-devel -BuildRequires: pkgconfig(libxxhash) -BuildRequires: xxhash-static - -%if %{with core_tests} -BuildRequires: cmake(benchmark) -%if %{with system_gtest} -BuildRequires: cmake(gtest) -BuildRequires: pkgconfig(gmock) -%endif -%if %{with valgrind} -BuildRequires: valgrind -%endif -%if %{with gdb} -BuildRequires: gdb -%endif -%endif - -BuildRequires: python3-devel -BuildRequires: python3dist(setuptools) -BuildRequires: python3-pip -BuildRequires: protobuf -BuildRequires: python3dist(six) >= 1.10 -BuildRequires: python3dist(cython) > 0.23 -BuildRequires: (python3dist(protobuf) >= 3.12.0 with python3dist(protobuf) < 4) -%if %{without bootstrap} -BuildRequires: python3dist(xds-protos) >= 0.0.7 -%endif - -%if %{with python_gevent_tests} -BuildRequires: python3dist(gevent) -%endif - -BuildRequires: curl -%global _lto_cflags %{nil} - -BuildRequires: ca-certificates -BuildRequires: symlinks -BuildRequires: hardlink - -Patch: grpc-1.39.0-system-crypto-policies.patch -Patch: grpc-1.36.4-python-grpcio_tests-fixture-super.patch -Patch: grpc-1.40.0-python-grpcio_tests-make-network-tests-skippable.patch -Patch: grpc-1.48.0-python-grpcio_tests-skip-compression-tests.patch -Patch: grpc-1.37.0-grpc_cli-do-not-link-gtest-gmock.patch -Patch: grpc-1.45.0-python_wrapper-path.patch -Patch: grpc-1.46.3-ChannelzServicerTest-python3.11-regressions.patch -Patch: grpc-1.48.0-python-grpcio_tests-DynamicStubTest-hang.patch -Patch: %{forgeurl}/pull/31671.patch -Patch: 0001-http2-Dont-drop-connections-on-metadata-limit-exceed.patch - -Patch: 1000-backport-iomgr-EventEngine-Improve-server-handling-o.patch - -Requires: grpc-data = %{version}-%{release} -Provides: bundled(upb) -Provides: bundled(utf8_range) +BuildRequires: gcc-c++ pkgconfig protobuf-devel protobuf-compiler protobuf-lite-devel +BuildRequires: openssl-devel c-ares-devel gtest-devel zlib-devel gperftools-devel +BuildRequires: python3-devel python3-setuptools python3-Cython python3-wheel pyproject-rpm-macros +BuildRequires: cmake >= 3.13.0 +BuildRequires: pkgconfig(re2) +BuildRequires: abseil-cpp-devel +Requires: protobuf-compiler %description gRPC is a modern open source high performance RPC framework that can run in any @@ -154,665 +46,127 @@ Core Features that make it awesome: This package provides the shared C core library. -%package data -Summary: Data for gRPC bindings -License: Apache-2.0 -BuildArch: noarch - -Requires: ca-certificates - -%description data -Common data for gRPC bindings: currently, this contains only a symbolic link to -the system shared TLS certificates. - - -%package doc -Summary: Documentation and examples for gRPC -License: Apache-2.0 -BuildArch: noarch - -Obsoletes: python-grpcio-doc < 1.26.0-13 -Provides: python-grpcio-doc = %{version}-%{release} -Provides: python-grpcio-admin-doc = %{version}-%{release} -Provides: python-grpcio-csds-doc = %{version}-%{release} -Provides: python-grpcio-channelz-doc = %{version}-%{release} -Provides: python-grpcio-health-checking-doc = %{version}-%{release} -Provides: python-grpcio-reflection-doc = %{version}-%{release} -Provides: python-grpcio-status-doc = %{version}-%{release} -Provides: python-grpcio-testing-doc = %{version}-%{release} - -%description doc -Documentation and examples for gRPC, including Markdown documentation sources -for the following: - - • C (core) - ○ API - ○ Internals - • C++ - ○ API - ○ Internals - • Objective C - ○ API - ○ Internals - • Python - ○ grpcio - ○ grpcio_admin - ○ grpcio_csds - ○ grpcio_channelz - ○ grpcio_health_checking - ○ grpcio_reflection - ○ grpcio_status - ○ grpcio_testing - -For rendered HTML documentation, please see https://grpc.io/docs/. - - -%package cpp -Summary: C++ language bindings for gRPC -# License: same as base package -Requires: grpc = %{version}-%{release} -Requires: grpc-cpp = %{version}-%{release} - -Provides: bundled(upb) -Provides: bundled(utf8_range) +%package devel +Summary: gRPC library development files +Requires: %{name} = %{version}-%{release} +Requires: pkgconfig(re2) +Requires: abseil-cpp-devel -%description cpp -C++ language bindings for gRPC. +%description devel +Development headers and files for gRPC libraries. %package plugins Summary: Protocol buffers compiler plugins for gRPC # License: same as base package - Requires: grpc = %{version}-%{release} -Requires: grpc-cpp = %{version}-%{release} Requires: protobuf-compiler - -Provides: bundled(upb) -Provides: bundled(utf8_range) - + %description plugins Plugins to the protocol buffers compiler to generate gRPC sources. -%package cli -Summary: Command-line tool for gRPC -# License: same as base package - -Requires: grpc = %{version}-%{release} -Requires: grpc-cpp = %{version}-%{release} - -Provides: bundled(upb) -Provides: bundled(utf8_range) - -%description cli -The command line tool can do the following things: - - • Send unary rpc. - • Attach metadata and display received metadata. - • Handle common authentication to server. - • Infer request/response types from server reflection result. - • Find the request/response types from a given proto file. - • Read proto request in text form. - • Read request in wire form (for protobuf messages, this means serialized - binary form). - • Display proto response in text form. - • Write response in wire form to a file. - - -%package devel -Summary: Development files for gRPC library -Requires: grpc = %{version}-%{release} -Requires: grpc-cpp = %{version}-%{release} -Requires: grpc-plugins = %{version}-%{release} -Requires: kernel-headers -Requires: pkgconfig(protobuf) -Requires: pkgconfig(gmock) -Requires: abseil-cpp-devel -Requires: pkgconfig(re2) -Requires: cmake(c-ares) -Requires: pkgconfig(zlib) - -%description devel -Development headers and files for gRPC libraries (both C and C++). - - %package -n python3-grpcio -Summary: Python language bindings for gRPC -Requires: grpc-data = %{version}-%{release} - -Provides: bundled(upb) -Provides: bundled(utf8_range) - -%py_provides python3-grpc +Summary: Python3 language bindings for gRPC +Requires: %{name} = %{version}-%{release} %description -n python3-grpcio -Python language bindings for gRPC (HTTP/2-based RPC framework). - - -%global grpcio_egg %{python3_sitearch}/grpcio-%{pyversion}-py%{python3_version}.egg-info -%{?python_extras_subpkg:%python_extras_subpkg -n python3-grpcio -i %{grpcio_egg} protobuf} - - -%package -n python3-grpcio-tools -Summary: Package for gRPC Python tools -Provides: bundled(upb) -Provides: bundled(utf8_range) -%py_provides python3-grpc-tools - -%description -n python3-grpcio-tools -Package for gRPC Python tools. - - -%if %{without bootstrap} -%package -n python3-grpcio-admin -Summary: A collection of admin services -License: Apache-2.0 - -BuildArch: noarch - -%py_provides python3-grpc-admin - -%description -n python3-grpcio-admin -gRPC Python Admin Interface Package -=================================== - -Debugging gRPC library can be a complex task. There are many configurations and -internal states, which will affect the behavior of the library. This Python -package will be the collection of admin services that are exposing debug -information. Currently, it includes: - -* Channel tracing metrics (grpcio-channelz) -* Client Status Discovery Service (grpcio-csds) - -Here is a snippet to create an admin server on "localhost:50051": - - server = grpc.server(ThreadPoolExecutor()) - port = server.add_insecure_port('localhost:50051') - grpc_admin.add_admin_servicers(self._server) - server.start() - -Welcome to explore the admin services with CLI tool "grpcdebug": -https://github.com/grpc-ecosystem/grpcdebug. - -For any issues or suggestions, please send to -https://github.com/grpc/grpc/issues. -%endif - - -%if %{without bootstrap} -%package -n python3-grpcio-csds -Summary: xDS configuration dump library -License: Apache-2.0 - -BuildArch: noarch - -%py_provides python3-grpc-csds - -%description -n python3-grpcio-csds -gRPC Python Client Status Discovery Service package -=================================================== - -CSDS is part of the Envoy xDS protocol: -https://www.envoyproxy.io/docs/envoy/latest/api-v3/service/status/v3/csds.proto. -It allows the gRPC application to programmatically expose the received traffic -configuration (xDS resources). Welcome to explore with CLI tool "grpcdebug": -https://github.com/grpc-ecosystem/grpcdebug. - -For any issues or suggestions, please send to -https://github.com/grpc/grpc/issues. -%endif - - -%package -n python3-grpcio-channelz -Summary: Channel Level Live Debug Information Service for gRPC -License: Apache-2.0 - -BuildArch: noarch - -%py_provides python3-grpc-channelz - -%description -n python3-grpcio-channelz -gRPC Python Channelz package -============================ - -Channelz is a live debug tool in gRPC Python. - - -%package -n python3-grpcio-health-checking -Summary: Standard Health Checking Service for gRPC -License: Apache-2.0 - -BuildArch: noarch - -%py_provides python3-grpc-health - -%description -n python3-grpcio-health-checking -gRPC Python Health Checking -=========================== - -Reference package for GRPC Python health checking. - - -%package -n python3-grpcio-reflection -Summary: Standard Protobuf Reflection Service for gRPC -License: Apache-2.0 - -BuildArch: noarch - -%py_provides python3-grpc-reflection - -%description -n python3-grpcio-reflection -gRPC Python Reflection package -============================== - -Reference package for reflection in GRPC Python. - - -%package -n python3-grpcio-status -Summary: Status proto mapping for gRPC -License: Apache-2.0 - -BuildArch: noarch - -%py_provides python3-grpc-status - -%description -n python3-grpcio-status -gRPC Python Status Proto -=========================== - -Reference package for GRPC Python status proto mapping. - - -%package -n python3-grpcio-testing -Summary: Testing utilities for gRPC Python -License: Apache-2.0 - -BuildArch: noarch - -%py_provides python3-grpc-testing - -%description -n python3-grpcio-testing -gRPC Python Testing Package -=========================== - -Testing utilities for gRPC Python. +Python3 bindings for gRPC. %prep -%autosetup -p1 -n grpc-%{srcversion} - -cp -p third_party/upb/third_party/utf8_range/LICENSE LICENSE-utf8_range - -echo '===== Patching grpcio_tools for system protobuf =====' 2>&1 - -sed -r -i \ - -e "s/^(# AUTO-GENERATED .*)/\\1\\n\ -# Then, modified by hand to build with an external system protobuf\ -# installation./" \ - -e 's/^(CC_FILES=\[).*(\])/\1\2/' \ - -e "s@^((CC|PROTO)_INCLUDE=')[^']+'@\1%{_includedir}'@" \ - -e '/^PROTOBUF_SUBMODULE_VERSION=/d' \ - 'tools/distrib/python/grpcio_tools/protoc_lib_deps.py' - -echo '===== Preparing gtest/gmock =====' 2>&1 -%if %{without system_gtest} -%setup -q -T -D -b 1 -n grpc-%{srcversion} -rm -rvf 'third_party/googletest' -mv '../%{gtest_dir}' 'third_party/googletest' -%else -for gwhat in test mock -do - mkdir -p "third_party/googletest/google${gwhat}/src" \ - "third_party/googletest/google${gwhat}/include" - echo "typedef int dummy_${gwhat}_type;" \ - > "third_party/googletest/google${gwhat}/src/g${gwhat}-all.cc" -done -sed -r -i 's/^([[:blank:]]*)(\$\{_gRPC_GFLAGS_LIBRARIES\})/'\ -'\1\2\n\1gtest\n\1gmock/' CMakeLists.txt -%endif - -%setup -q -T -D -b 2 -n grpc-%{srcversion} -%setup -q -T -D -b 3 -n grpc-%{srcversion} -%setup -q -T -D -b 4 -n grpc-%{srcversion} -%setup -q -T -D -b 5 -n grpc-%{srcversion} -{ - awk '$1 ~ /^(#|$)/ { next }; 1' <<'EOF' -../%{envoy_api_dir}/ third_party/envoy-api/ -../%{googleapis_dir}/ third_party/googleapis/ -../%{opencensus_proto_dir}/ third_party/opencensus-proto/ -../%{xds_dir}/ third_party/xds/ -EOF -} | while read -r fromdir todir -do - find "${fromdir}" -type f ! -name '*.proto' -print -delete - rm -rvf "${todir}" - mv "${fromdir}" "${todir}" -done - -echo '===== Removing bundled xxhash =====' 2>&1 -rm -rvf third_party/xxhash - -echo '===== Fixing permissions =====' 2>&1 -find . -type f -perm /0111 \ - -exec gawk '!/^#!/ { print FILENAME }; { nextfile }' '{}' '+' | - xargs -r chmod -v a-x - -echo '===== Removing selected unused sources =====' 2>&1 -rm -rfv \ - src/boringssl/boringssl_prefix_symbols.h \ - third_party/cares/ares_build.h \ - third_party/upb/third_party/lunit -echo '' > etc/roots.pem - -rm -rvf examples/android src/android -rm -vf examples/node/package-lock.json -find . -type f -name .gitignore -print -delete - -echo '===== Fixing shebangs =====' 2>&1 -find . -type f -perm /0111 -exec gawk \ - '/^#!\/usr\/bin\/env[[:blank:]]/ { print FILENAME }; { nextfile }' \ - '{}' '+' | - xargs -r sed -r -i '1{s|^(#!/usr/bin/)env[[:blank:]]+([^[:blank:]]+)|\1\2|}' - -echo '===== Fixing hard-coded C++ standard =====' 2>&1 -sed -r -i 's/(std=c\+\+)14/\1%{cpp_std}/g' \ - setup.py grpc.gyp Rakefile \ - examples/cpp/*/Makefile \ - examples/cpp/*/CMakeLists.txt \ - tools/run_tests/artifacts/artifact_targets.py \ - tools/distrib/python/grpcio_tools/setup.py +%autosetup -p1 -n %{name}-%{version} +#avoid downloading +mkdir %{_builddir}/%{name}-%{version}/third_party/opencensus-proto/src %build -%global rmprefix %(echo $(($(wc -c <<<'%{_prefix}')+1))) - -echo '===== Building C (core) and C++ components =====' 2>&1 %cmake \ - -DgRPC_INSTALL:BOOL=ON \ - -DCMAKE_CXX_STANDARD:STRING=%{cpp_std} \ - -DCMAKE_SKIP_INSTALL_RPATH:BOOL=ON \ - -DgRPC_INSTALL_BINDIR:PATH=%(cut -b %{rmprefix}- <<<'%{_bindir}') \ - -DgRPC_INSTALL_LIBDIR:PATH=%(cut -b %{rmprefix}- <<<'%{_libdir}') \ - -DgRPC_INSTALL_INCLUDEDIR:PATH=%(cut -b %{rmprefix}- <<<'%{_includedir}') \ - -DgRPC_INSTALL_CMAKEDIR:PATH=%(cut -b %{rmprefix}- <<<'%{_libdir}/cmake/grpc') \ - -DgRPC_INSTALL_SHAREDIR:PATH=%(cut -b %{rmprefix}- <<<'%{_datadir}/grpc') \ - -DgRPC_BUILD_TESTS:BOOL=%{?with_core_tests:ON}%{?!with_core_tests:OFF} \ - -DgRPC_BUILD_CODEGEN:BOOL=ON \ - -DgRPC_BUILD_CSHARP_EXT:BOOL=ON \ - -DgRPC_BACKWARDS_COMPATIBILITY_MODE:BOOL=OFF \ - -DgRPC_ZLIB_PROVIDER:STRING='package' \ - -DgRPC_CARES_PROVIDER:STRING='package' \ - -DgRPC_RE2_PROVIDER:STRING='package' \ - -DgRPC_SSL_PROVIDER:STRING='package' \ - -DgRPC_PROTOBUF_PROVIDER:STRING='package' \ - -DgRPC_PROTOBUF_PACKAGE_TYPE:STRING='MODULE' \ - -DgRPC_BENCHMARK_PROVIDER:STRING='package' \ - -DgRPC_ABSL_PROVIDER:STRING='package' \ - -DgRPC_USE_PROTO_LITE:BOOL=OFF \ - -DgRPC_BUILD_GRPC_CPP_PLUGIN:BOOL=ON \ - -DgRPC_BUILD_GRPC_CSHARP_PLUGIN:BOOL=ON \ - -DgRPC_BUILD_GRPC_NODE_PLUGIN:BOOL=ON \ - -DgRPC_BUILD_GRPC_OBJECTIVE_C_PLUGIN:BOOL=ON \ - -DgRPC_BUILD_GRPC_PHP_PLUGIN:BOOL=ON \ - -DgRPC_BUILD_GRPC_PYTHON_PLUGIN:BOOL=ON \ - -DgRPC_BUILD_GRPC_RUBY_PLUGIN:BOOL=ON \ - -GNinja + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=%{_prefix} \ + -DCMAKE_INSTALL_LIBDIR=%{_libdir} \ + -DgRPC_INSTALL=ON \ + -DgRPC_CARES_PROVIDER=package \ + -DgRPC_PROTOBUF_PROVIDER=package \ + -DgRPC_SSL_PROVIDER=package \ + -DgRPC_ZLIB_PROVIDER=package \ + -DgRPC_RE2_PROVIDER=package \ + -DgRPC_ABSL_PROVIDER=package \ + -DgRPC_BUILD_GRPCPP_OTEL_PLUGIN=OFF \ + -DgRPC_OPENTELEMETRY_PROVIDER=none \ + -DBUILD_SHARED_LIBS=ON \ + -DCMAKE_VERBOSE_MAKEFILE=ON %cmake_build -echo '===== Building Python grpcio package =====' 2>&1 -PYROOT="${PWD}/%{_vpath_builddir}/pyroot" -if [ -n "${PYTHONPATH-}" ]; then PYTHONPATH="${PYTHONPATH}:"; fi -PYTHONPATH="${PYTHONPATH-}${PYROOT}%{python3_sitelib}" -PYTHONPATH="${PYTHONPATH}:${PYROOT}%{python3_sitearch}" -export PYTHONPATH - -export GRPC_PYTHON_BUILD_WITH_CYTHON='True' -export GRPC_PYTHON_BUILD_SYSTEM_OPENSSL='True' -export GRPC_PYTHON_BUILD_SYSTEM_ZLIB='True' -export GRPC_PYTHON_BUILD_SYSTEM_CARES='True' -export GRPC_PYTHON_BUILD_SYSTEM_RE2='True' -export GRPC_PYTHON_BUILD_SYSTEM_ABSL='True' -export GRPC_PYTHON_DISABLE_LIBC_COMPATIBILITY='True' -export GRPC_PYTHON_ENABLE_DOCUMENTATION_BUILD='False' -export GRPC_PYTHON_CFLAGS="$( - pkg-config --cflags protobuf -) -std=c++%{cpp_std} -fvisibility=hidden -fno-wrapv -fno-exceptions" -export GRPC_PYTHON_LDFLAGS="$(pkg-config --libs protobuf)" -%py3_build -%{__python3} %{py_setup} %{?py_setup_args} install \ - -O1 --skip-build --root "${PYROOT}" - -echo '===== Building Python grpcio_tools package =====' 2>&1 -pushd "tools/distrib/python/grpcio_tools/" >/dev/null -mkdir -p grpc_root/src -for srcdir in compiler -do - cp -rp "../../../../src/${srcdir}" "grpc_root/src/" -done -cp -rp '../../../../include' 'grpc_root/' -export GRPC_PYTHON_CFLAGS="-fno-wrapv -frtti $(pkg-config --cflags protobuf)" -export GRPC_PYTHON_LDFLAGS="$(pkg-config --libs protobuf) -lprotoc" -%py3_build -find . -type f -name protoc.py -execdir sed -r -i '1{/^#!/d}' '{}' '+' -%{__python3} %{py_setup} %{?py_setup_args} install \ - -O1 --skip-build --root "${PYROOT}" -popd >/dev/null - -echo '===== Building pure-Python packages =====' 1>&2 -for suffix in channelz %{?!with_bootstrap:csds admin} health_checking \ - reflection status testing tests -do - echo "----> grpcio_${suffix} <----" 1>&2 - pushd "src/python/grpcio_${suffix}/" >/dev/null - if ! echo "${suffix}" | grep -E "^(admin|csds)$" >/dev/null - then - %{__python3} %{py_setup} %{?py_setup_args} preprocess - fi - if ! echo "${suffix}" | grep -E "^(admin|csds|testing)$" >/dev/null - then - %{__python3} %{py_setup} %{?py_setup_args} build_package_protos - fi - %py3_build - %{__python3} %{py_setup} %{?py_setup_args} install \ - -O1 --skip-build --root "${PYROOT}" - popd >/dev/null -done +# build python module +export GRPC_PYTHON_BUILD_WITH_CYTHON=True +export GRPC_PYTHON_BUILD_SYSTEM_OPENSSL=True +export GRPC_PYTHON_BUILD_SYSTEM_ZLIB=True +export GRPC_PYTHON_BUILD_SYSTEM_CARES=True +export GRPC_PYTHON_BUILD_SYSTEM_RE2=True +export GRPC_PYTHON_BUILD_SYSTEM_ABSL=True +export CFLAGS="%optflags" +%pyproject_wheel %install %cmake_install +%pyproject_install +%pyproject_save_files grpc -%if %{with core_tests} -install -t '%{buildroot}%{_bindir}' -p -D '%{_vpath_builddir}/grpc_cli' -chrpath --delete '%{buildroot}%{_bindir}/grpc_cli' -install -t '%{buildroot}%{_libdir}' -p \ - '%{_vpath_builddir}/libgrpc++_test_config.so.%{cpp_so_version}' -chrpath --delete \ - '%{buildroot}%{_libdir}/libgrpc++_test_config.so.%{cpp_so_version}' - -install -d '%{buildroot}/%{_mandir}/man1' -install -t '%{buildroot}/%{_mandir}/man1' -p -m 0644 \ - %{SOURCE100} %{SOURCE101} %{SOURCE102} %{SOURCE103} %{SOURCE104} \ - %{SOURCE106} %{SOURCE107} %{SOURCE108} -%endif - -find %{buildroot} -type f -name '*.a' -print -delete -find %{buildroot}%{_includedir}/grpc* -type f -name '*.h' -perm /0111 \ - -execdir chmod -v a-x '{}' '+' -pushd '%{buildroot}' -PYROOT="${PWD}" -popd -if [ -n "${PYTHONPATH-}" ]; then PYTHONPATH="${PYTHONPATH}:"; fi -PYTHONPATH="${PYTHONPATH-}${PYROOT}%{python3_sitelib}" -PYTHONPATH="${PYTHONPATH}:${PYROOT}%{python3_sitearch}" -export PYTHONPATH - -%py3_install -pushd "tools/distrib/python/grpcio_tools/" >/dev/null -%py3_install -popd >/dev/null - -for suffix in channelz %{?!with_bootstrap:csds admin} health_checking \ - reflection status testing -do - pushd "src/python/grpcio_${suffix}/" >/dev/null - %py3_install - popd >/dev/null -done -%global sysbundle %{_sysconfdir}/pki/ca-trust/extracted/pem/tls-ca-bundle.pem -install -D -t "%{buildroot}$(dirname '%{sysbundle}')" -m 0644 '%{sysbundle}' - -find '%{buildroot}' -type f -name 'roots.pem' | - while read -r fn - do - ln -s -f "%{buildroot}%{sysbundle}" "${fn}" - symlinks -c -o "${fn}" - done - -rm -rvf "%{buildroot}$(dirname '%{sysbundle}')" -install -D -t '%{buildroot}%{_pkgdocdir}' -m 0644 -p \ - AUTHORS \ - CONCEPTS.md \ - MAINTAINERS.md \ - README.md \ - SECURITY.md \ - TROUBLESHOOTING.md -cp -rvp doc examples '%{buildroot}%{_pkgdocdir}' -hardlink -v '%{buildroot}%{_pkgdocdir}/examples/' - -%files -%license LICENSE NOTICE.txt LICENSE-utf8_range -%{_libdir}/libaddress_sorting.so.%{c_so_version}{,.*} -%{_libdir}/libgpr.so.%{c_so_version}{,.*} -%{_libdir}/libgrpc.so.%{c_so_version}{,.*} -%{_libdir}/libgrpc_unsecure.so.%{c_so_version}{,.*} -%{_libdir}/libupb.so.%{c_so_version}{,.*} - - -%files data -%license LICENSE NOTICE.txt -%dir %{_datadir}/grpc/ -%{_datadir}/grpc/roots.pem +# --- OTEL hardening: strip any leftover OTEL pc/deps --- +rm -f %{buildroot}%{_libdir}/pkgconfig/grpcpp_otel_plugin.pc +sed -i '/^Requires:.*opentelemetry_api/d' %{buildroot}%{_libdir}/pkgconfig/*.pc || true +%ldconfig_scriptlets -%files doc -%license LICENSE NOTICE.txt - -%doc %{_pkgdocdir}/AUTHORS -%doc %{_pkgdocdir}/CONCEPTS.md -%doc %{_pkgdocdir}/MAINTAINERS.md -%doc %{_pkgdocdir}/README.md -%doc %{_pkgdocdir}/SECURITY.md -%doc %{_pkgdocdir}/TROUBLESHOOTING.md - -%doc %{_pkgdocdir}/doc/ -%doc %{_pkgdocdir}/examples/ - - - -%files cpp -%{_libdir}/libgrpc++.so.%{cpp_so_version}{,.*} -%{_libdir}/libgrpc++_alts.so.%{cpp_so_version}{,.*} -%{_libdir}/libgrpc++_error_details.so.%{cpp_so_version}{,.*} -%{_libdir}/libgrpc++_reflection.so.%{cpp_so_version}{,.*} -%{_libdir}/libgrpc++_unsecure.so.%{cpp_so_version}{,.*} -%{_libdir}/libgrpc_plugin_support.so.%{cpp_so_version}{,.*} - -%{_libdir}/libgrpcpp_channelz.so.%{cpp_so_version}{,.*} - - -%if %{with core_tests} -%files cli -%{_bindir}/grpc_cli -%{_libdir}/libgrpc++_test_config.so.%{cpp_so_version} -%{_mandir}/man1/grpc_cli.1* -%{_mandir}/man1/grpc_cli-*.1* -%endif +%files +%defattr(-,root,root) +%doc README.md +%license LICENSE + +%{_datadir}/%{name} +%{_libdir}/libaddress_sorting.so.* +%{_libdir}/libgpr.so.* +%{_libdir}/libgrpc.so.* +%{_libdir}/libgrpc_unsecure.so.* +%{_libdir}/libgrpc++.so.* +%{_libdir}/libgrpc++_alts.so.* +%{_libdir}/libgrpc++_error_details.so.* +%{_libdir}/libgrpc++_reflection.so.* +%{_libdir}/libgrpc++_unsecure.so.* +%{_libdir}/libgrpc_plugin_support.so.* +%{_libdir}/libgrpcpp_channelz.so.* +%{_libdir}/libgrpc_authorization_provider.so.* + +%{_libdir}/libupb_*.so.* +%{_libdir}/libutf8_range*.so.* %files plugins %{_bindir}/grpc_*_plugin - %files devel -%{_libdir}/libaddress_sorting.so -%{_libdir}/libgpr.so -%{_libdir}/libgrpc.so -%{_libdir}/libgrpc_unsecure.so -%{_libdir}/libupb.so -%{_includedir}/grpc/ -%{_libdir}/pkgconfig/gpr.pc -%{_libdir}/pkgconfig/grpc.pc -%{_libdir}/pkgconfig/grpc_unsecure.pc -%{_libdir}/cmake/grpc/ - -%{_libdir}/libgrpc++.so -%{_libdir}/libgrpc++_alts.so -%{_libdir}/libgrpc++_error_details.so -%{_libdir}/libgrpc++_reflection.so -%{_libdir}/libgrpc++_unsecure.so -%{_libdir}/libgrpc_plugin_support.so -%{_includedir}/grpc++/ -%{_libdir}/pkgconfig/grpc++.pc -%{_libdir}/pkgconfig/grpc++_unsecure.pc - -%{_libdir}/libgrpcpp_channelz.so -%{_includedir}/grpcpp/ - +%defattr(-,root,root) +%{_libdir}/*.so +%{_libdir}/cmake/grpc +%{_libdir}/pkgconfig/* +%{_includedir}/grpc +%{_includedir}/grpc++ +%{_includedir}/grpcpp %files -n python3-grpcio -%license LICENSE NOTICE.txt LICENSE-utf8_range -%{python3_sitearch}/grpc/ -%{python3_sitearch}/grpcio-%{pyversion}-py%{python3_version}.egg-info/ - - -%files -n python3-grpcio-tools -%license LICENSE NOTICE.txt LICENSE-utf8_range -%{python3_sitearch}/grpc_tools/ -%{python3_sitearch}/grpcio_tools-%{pyversion}-py%{python3_version}.egg-info/ - - -%if %{without bootstrap} -%files -n python3-grpcio-admin -%{python3_sitelib}/grpc_admin/ -%{python3_sitelib}/grpcio_admin-%{pyversion}-py%{python3_version}.egg-info/ -%endif - - -%files -n python3-grpcio-channelz -%{python3_sitelib}/grpc_channelz/ -%{python3_sitelib}/grpcio_channelz-%{pyversion}-py%{python3_version}.egg-info/ - - -%if %{without bootstrap} -%files -n python3-grpcio-csds -%{python3_sitelib}/grpc_csds/ -%{python3_sitelib}/grpcio_csds-%{pyversion}-py%{python3_version}.egg-info/ -%endif - - -%files -n python3-grpcio-health-checking -%{python3_sitelib}/grpc_health/ -%{python3_sitelib}/grpcio_health_checking-%{pyversion}-py%{python3_version}.egg-info/ - - -%files -n python3-grpcio-reflection -%{python3_sitelib}/grpc_reflection/ -%{python3_sitelib}/grpcio_reflection-%{pyversion}-py%{python3_version}.egg-info/ - - -%files -n python3-grpcio-status -%{python3_sitelib}/grpc_status/ -%{python3_sitelib}/grpcio_status-%{pyversion}-py%{python3_version}.egg-info/ - - -%files -n python3-grpcio-testing -%{python3_sitelib}/grpc_testing/ -%{python3_sitelib}/grpcio_testing-%{pyversion}-py%{python3_version}.egg-info/ +%defattr(-,root,root) +%{python3_sitearch}/grpc +%{python3_sitearch}/grpcio-%{version}.dist-info* %changelog +* Wed Aug 13 2025 tomcruiseqi - 1.74.0-1 +- Update to 1.74.0 to fix CVE-2023-33953, CVE-2024-7246 +- Drop bundled upstream source archives from SRPM payload +- Remove obsolete/duplicate docs + * Mon May 06 2024 Chunmei Xu - 1.48.4-3 - fix CVE-2023-4785 diff --git a/grpc_cli-call.1 b/grpc_cli-call.1 deleted file mode 100644 index 60ca8c489273d4f89b78f16db5910bbd9d520df0..0000000000000000000000000000000000000000 --- a/grpc_cli-call.1 +++ /dev/null @@ -1,105 +0,0 @@ -.TH GRPC_CLI\-CALL "1" "May 2021" "" "User Commands" -.SH NAME -.B grpc_cli\ call -\(en call method -.SH SYNOPSIS -.B grpc_cli call -.I address -.RI [ service [\fB. method ]] -.I request -.RI [ OPTION ]...\: -.SH OPTIONS -.TP -.I address -.IB host : port -.TP -.I service -Exported service name -.TP -.I method -Method name -.TP -.I request -Text protobuffer (overrides -.BR \-\-infile ) -.TP -.B \-\-protofiles -Comma separated proto files used as a fallback when parsing request/response -.TP -.B \-\-proto_path -The search paths of proto files -.RB ( : -separated), valid only when -.B \-\-protofiles -is given -.TP -.B \-\-noremotedb -Don\(cqt attempt to use reflection service at all -.TP -.B \-\-metadata -The metadata to be sent to the server -.TP -.B \-\-infile -Input filename (defaults to -.IR stdin ) -.TP -.B \-\-outfile -Output filename (defaults to -.IR stdout ) -.TP -.B \-\-binary_input -Input in binary format -.TP -.B \-\-binary_output -Output in binary format -.TP -.B \-\-json_input -Input in json format -.TP -.B \-\-json_output -Output in json format -.TP -.B \-\-timeout -Specify timeout (in seconds), used to set the deadline for RPCs. -The default value of -.B \-1 -means no deadline has been set. -.TP -.B \-\-ssl_target -Set server host for ssl validation -.TP -.B \-\-ssl_client_cert -Client cert for ssl -.TP -.B \-\-ssl_client_key -Client private key for ssl -.TP -.B \-\-local_connect_type -Set to -.B local_tcp -or -.B uds -.TP -.B \-\-channel_creds_type -Set to -.BR insecure , -.BR ssl , -.BR gdc , -.BR alts , -or -.B local -.TP -.B \-\-call_creds -Set to -.BR none , -or -.BI access_token= token -.SH "SEE\ ALSO" -.BR grpc_cli (1), -.BR grpc_cli\-ls (1), -.BR grpc_cli\-type (1), -.BR grpc_cli\-parse (1), -.BR grpc_cli\-totext (1), -.BR grpc_cli\-tojson (1), -.BR grpc_cli\-tobinary (1), -.BR grpc_cli\-help (1) diff --git a/grpc_cli-help.1 b/grpc_cli-help.1 deleted file mode 100644 index f3074a1f17795e089c30267b0ef364424dcb3136..0000000000000000000000000000000000000000 --- a/grpc_cli-help.1 +++ /dev/null @@ -1,16 +0,0 @@ -.TH GRPC_CLI\-HELP "1" "May 2021" "" "User Commands" -.SH NAME -.B grpc_cli\ help -\(en print help -.SH SYNOPSIS -.B grpc_cli help -.I subcommand -.SH "SEE\ ALSO" -.BR grpc_cli (1), -.BR grpc_cli\-ls (1), -.BR grpc_cli\-call (1), -.BR grpc_cli\-type (1), -.BR grpc_cli\-parse (1), -.BR grpc_cli\-totext (1), -.BR grpc_cli\-tojson (1), -.BR grpc_cli\-tobinary (1) diff --git a/grpc_cli-ls.1 b/grpc_cli-ls.1 deleted file mode 100644 index 4a3460e9bc584b9e1d4fbc759f88a6fc991edb75..0000000000000000000000000000000000000000 --- a/grpc_cli-ls.1 +++ /dev/null @@ -1,65 +0,0 @@ -.TH GRPC_CLI\-LS "1" "May 2021" "" "User Commands" -.SH NAME -.B grpc_cli\ ls -\(en list services -.SH SYNOPSIS -.B grpc_cli ls -.I address -.RI [ service [\fB/ method ]] -.RI [ OPTION ]...\: -.SH OPTIONS -.TP -.I address -.IB host : port -.TP -.I service -Exported service name -.TP -.I method -Method name -.TP -.B \-\-l -Use a long listing format -.TP -.B \-\-outfile -Output filename (defaults to -.IR stdout ) -.TP -.B \-\-ssl_target -Set server host for ssl validation -.TP -.B \-\-ssl_client_cert -Client cert for ssl -.TP -.B \-\-ssl_client_key -Client private key for ssl -.TP -.B \-\-local_connect_type -Set to -.B local_tcp -or -.B uds -.TP -.B \-\-channel_creds_type -Set to -.BR insecure , -.BR ssl , -.BR gdc , -.BR alts , -or -.B local -.TP -.B \-\-call_creds -Set to -.BR none , -or -.BI access_token= token -.SH "SEE\ ALSO" -.BR grpc_cli (1), -.BR grpc_cli\-call (1), -.BR grpc_cli\-type (1), -.BR grpc_cli\-parse (1), -.BR grpc_cli\-totext (1), -.BR grpc_cli\-tojson (1), -.BR grpc_cli\-tobinary (1), -.BR grpc_cli\-help (1) diff --git a/grpc_cli-parse.1 b/grpc_cli-parse.1 deleted file mode 100644 index 2e32c0e740d0c9882f161d8712b3c2a03887f1f0..0000000000000000000000000000000000000000 --- a/grpc_cli-parse.1 +++ /dev/null @@ -1,93 +0,0 @@ -.TH GRPC_CLI\-PARSE "1" "May 2021" "" "User Commands" -.SH NAME -.B grpc_cli\ parse -\(en parse message -.SH SYNOPSIS -.B grpc_cli parse -.I address -.I type -.RI [ message ] -.RI [ OPTION ]...\: -.SH OPTIONS -.TP -.I address -.IB host : port -.TP -.I type -Protocol buffer type name -.TP -.I message -Text protobuffer (overrides -.BR \-\-infile ) -.TP -.B \-\-protofiles -Comma separated proto files used as a fallback when parsing request/response -.TP -.B \-\-proto_path -The search paths of proto files -.RB ( : -separated), valid only when -.B \-\-protofiles -is given -.TP -.B \-\-noremotedb -Don\(cqt attempt to use reflection service at all -.TP -.B \-\-infile -Input filename (defaults to -.IR stdin ) -.TP -.B \-\-outfile -Output filename (defaults to -.IR stdout ) -.TP -.B \-\-binary_input -Input in binary format -.TP -.B \-\-binary_output -Output in binary format -.TP -.B \-\-json_input -Input in json format -.TP -.B \-\-json_output -Output in json format -.TP -.B \-\-ssl_target -Set server host for ssl validation -.TP -.B \-\-ssl_client_cert -Client cert for ssl -.TP -.B \-\-ssl_client_key -Client private key for ssl -.TP -.B \-\-local_connect_type -Set to -.B local_tcp -or -.B uds -.TP -.B \-\-channel_creds_type -Set to -.BR insecure , -.BR ssl , -.BR gdc , -.BR alts , -or -.B local -.TP -.B \-\-call_creds -Set to -.BR none , -or -.BI access_token= token -.SH "SEE\ ALSO" -.BR grpc_cli (1), -.BR grpc_cli\-ls (1), -.BR grpc_cli\-call (1), -.BR grpc_cli\-type (1), -.BR grpc_cli\-totext (1), -.BR grpc_cli\-tojson (1), -.BR grpc_cli\-tobinary (1), -.BR grpc_cli\-help (1) diff --git a/grpc_cli-tobinary.1 b/grpc_cli-tobinary.1 deleted file mode 100644 index e58b7e9e4d1a086f4071799aff53f8d9761e4368..0000000000000000000000000000000000000000 --- a/grpc_cli-tobinary.1 +++ /dev/null @@ -1,39 +0,0 @@ -.TH GRPC_CLI\-TOBINARY "1" "May 2021" "" "User Commands" -.SH NAME -.B grpc_cli\ tobinary -\(en convert text message to binary -.SH SYNOPSIS -.B grpc_cli tobinary -.I protofiles -.I type -.RI [ message ] -.RI [ OPTION ]...\: -.SH OPTIONS -.TP -.I protofiles -Comma separated list of proto files -.TP -.I type -Protocol buffer type name -.TP -.B \-\-proto_path -The search paths of proto files -.RB ( : -separated) -.TP -.B \-\-infile -Input filename (defaults to -.IR stdin ) -.TP -.B \-\-outfile -Output filename (defaults to -.IR stdout ) -.SH "SEE\ ALSO" -.BR grpc_cli (1), -.BR grpc_cli\-ls (1), -.BR grpc_cli\-call (1), -.BR grpc_cli\-type (1), -.BR grpc_cli\-parse (1), -.BR grpc_cli\-totext (1), -.BR grpc_cli\-tojson (1), -.BR grpc_cli\-help (1) diff --git a/grpc_cli-tojson.1 b/grpc_cli-tojson.1 deleted file mode 100644 index 59d407d5a16195ae36ea97654aa61c203e54a9a6..0000000000000000000000000000000000000000 --- a/grpc_cli-tojson.1 +++ /dev/null @@ -1,38 +0,0 @@ -.TH GRPC_CLI\-TOJSON "1" "May 2021" "" "User Commands" -.SH NAME -.B grpc_cli\ tojson -\(en convert binary message to json -.SH SYNOPSIS -.B grpc_cli tojson -.I protofiles -.I type -.RI [ OPTION ]...\: -.SH OPTIONS -.TP -.I protofiles -Comma separated list of proto files -.TP -.I type -Protocol buffer type name -.TP -.B \-\-proto_path -The search paths of proto files -.RB ( : -separated) -.TP -.B \-\-infile -Input filename (defaults to -.IR stdin ) -.TP -.B \-\-outfile -Output filename (defaults to -.IR stdout ) -.SH "SEE\ ALSO" -.BR grpc_cli (1), -.BR grpc_cli\-ls (1), -.BR grpc_cli\-call (1), -.BR grpc_cli\-type (1), -.BR grpc_cli\-parse (1), -.BR grpc_cli\-totext (1), -.BR grpc_cli\-tobinary (1), -.BR grpc_cli\-help (1) diff --git a/grpc_cli-totext.1 b/grpc_cli-totext.1 deleted file mode 100644 index 9b297f0aad9d4752a1d23eaef1cfbf749b64378f..0000000000000000000000000000000000000000 --- a/grpc_cli-totext.1 +++ /dev/null @@ -1,38 +0,0 @@ -.TH GRPC_CLI\-TOTEXT "1" "May 2021" "" "User Commands" -.SH NAME -.B grpc_cli\ totext -\(en convert binary message to text -.SH SYNOPSIS -.B grpc_cli totext -.I protofiles -.I type -.RI [ OPTION ]...\: -.SH OPTIONS -.TP -.I protofiles -Comma separated list of proto files -.TP -.I type -Protocol buffer type name -.TP -.B \-\-proto_path -The search paths of proto files -.RB ( : -separated) -.TP -.B \-\-infile -Input filename (defaults to -.IR stdin ) -.TP -.B \-\-outfile -Output filename (defaults to -.IR stdout ) -.SH "SEE\ ALSO" -.BR grpc_cli (1), -.BR grpc_cli\-ls (1), -.BR grpc_cli\-call (1), -.BR grpc_cli\-type (1), -.BR grpc_cli\-parse (1), -.BR grpc_cli\-tojson (1), -.BR grpc_cli\-tobinary (1), -.BR grpc_cli\-help (1) diff --git a/grpc_cli-type.1 b/grpc_cli-type.1 deleted file mode 100644 index 99e2caf29342ba001930151ae831f11deb12a1c9..0000000000000000000000000000000000000000 --- a/grpc_cli-type.1 +++ /dev/null @@ -1,55 +0,0 @@ -.TH GRPC_CLI\-TYPE "1" "May 2021" "" "User Commands" -.SH NAME -.B grpc_cli\ type -\(en print type -.SH SYNOPSIS -.B grpc_cli type -.I address -.I type -.RI [ OPTION ]...\: -.SH OPTIONS -.TP -.I address -.IB host : port -.TP -.I type -Protocol buffer type name -.TP -.B \-\-ssl_target -Set server host for ssl validation -.TP -.B \-\-ssl_client_cert -Client cert for ssl -.TP -.B \-\-ssl_client_key -Client private key for ssl -.TP -.B \-\-local_connect_type -Set to -.B local_tcp -or -.B uds -.TP -.B \-\-channel_creds_type -Set to -.BR insecure , -.BR ssl , -.BR gdc , -.BR alts , -or -.B local -.TP -.B \-\-call_creds -Set to -.BR none , -or -.BI access_token= token -.SH "SEE\ ALSO" -.BR grpc_cli (1), -.BR grpc_cli\-ls (1), -.BR grpc_cli\-call (1), -.BR grpc_cli\-parse (1), -.BR grpc_cli\-totext (1), -.BR grpc_cli\-tojson (1), -.BR grpc_cli\-tobinary (1), -.BR grpc_cli\-help (1) diff --git a/grpc_cli.1 b/grpc_cli.1 deleted file mode 100644 index a03c566c286c7031cdf98256c1121ac6ef6a3166..0000000000000000000000000000000000000000 --- a/grpc_cli.1 +++ /dev/null @@ -1,48 +0,0 @@ -.TH GRPC_CLI "1" "May 2021" "" "User Commands" -.SH NAME -.B grpc_cli -\(en a command-line tool to talk to a grpc server -.SH SYNOPSIS -.B grpc_cli -.I COMMAND -.RI [ OPTION ]...\: -.SH OPTIONS -.SS COMMANDS -.P -Each of the following has a corresponding man page: for example, -.BR grpc_cli\-ls (1) -for -.RB \(lq grpc_cli\ ls \(rq. -.TP -.B grpc_cli\ ls -List services -.TP -.B grpc_cli\ call -Call method -.TP -.B grpc_cli\ type -Print type -.TP -.B grpc_cli\ parse -Parse message -.TP -.B grpc_cli\ totext -Convert binary message to text -.TP -.B grpc_cli\ tojson -Convert binary message to json -.TP -.B grpc_cli\ tobinary -Convert text message to binary -.TP -.B grpc_cli\ help -Print this message, or per-command usage -.SH "SEE\ ALSO" -.BR grpc_cli\-ls (1), -.BR grpc_cli\-call (1), -.BR grpc_cli\-type (1), -.BR grpc_cli\-parse (1), -.BR grpc_cli\-totext (1), -.BR grpc_cli\-tojson (1), -.BR grpc_cli\-tobinary (1), -.BR grpc_cli\-help (1) diff --git a/opencensus-proto-0.3.0.tar.gz b/opencensus-proto-0.3.0.tar.gz deleted file mode 100644 index 18db625578da74a7371799ff90f50c4dfee12da2..0000000000000000000000000000000000000000 Binary files a/opencensus-proto-0.3.0.tar.gz and /dev/null differ diff --git a/xds-cb28da3451f158a947dfc45090fe92b07b243bc1.tar.gz b/xds-cb28da3451f158a947dfc45090fe92b07b243bc1.tar.gz deleted file mode 100644 index 89bb94252a21934cb9ff87e2479b720638ad78b5..0000000000000000000000000000000000000000 Binary files a/xds-cb28da3451f158a947dfc45090fe92b07b243bc1.tar.gz and /dev/null differ