diff --git a/.grpc.metadata b/.grpc.metadata new file mode 100644 index 0000000..dc693ba --- /dev/null +++ b/.grpc.metadata @@ -0,0 +1,2 @@ +2700098002ff870014ee012bf40876519ac1f83a SOURCES/grpc-1.41.1.tar.gz +7b100bb68db8df1060e178c495f3cbe941c9b058 SOURCES/googletest-release-1.11.0.tar.gz diff --git a/SOURCES/27516.patch b/SOURCES/27516.patch new file mode 100644 index 0000000..e87f132 --- /dev/null +++ b/SOURCES/27516.patch @@ -0,0 +1,26 @@ +From 1ff40f3a3ceb596fee7d1bb45e6985ace04352e9 Mon Sep 17 00:00:00 2001 +From: "Benjamin A. Beasley" +Date: Wed, 29 Sep 2021 13:33:22 -0400 +Subject: [PATCH] In src/core/lib/promise/detail/basic_seq.h, include cassert +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +It is needed for assert(…). +--- + src/core/lib/promise/detail/basic_seq.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/core/lib/promise/detail/basic_seq.h b/src/core/lib/promise/detail/basic_seq.h +index e03bb6d475ba..016102d28f73 100644 +--- a/src/core/lib/promise/detail/basic_seq.h ++++ b/src/core/lib/promise/detail/basic_seq.h +@@ -17,6 +17,8 @@ + + #include + ++#include ++ + #include "absl/types/variant.h" + #include "absl/utility/utility.h" + diff --git a/SOURCES/72351f63fd650cc7acfcd2d0307e8e8e8f777283.patch b/SOURCES/72351f63fd650cc7acfcd2d0307e8e8e8f777283.patch new file mode 100644 index 0000000..d6b6489 --- /dev/null +++ b/SOURCES/72351f63fd650cc7acfcd2d0307e8e8e8f777283.patch @@ -0,0 +1,2070 @@ +From 72351f63fd650cc7acfcd2d0307e8e8e8f777283 Mon Sep 17 00:00:00 2001 +From: Esun Kim +Date: Tue, 14 Jan 2020 16:35:23 -0800 +Subject: [PATCH] Remove grpc sources from grpc++ + +--- + BUILD.gn | 240 ----------------- + CMakeLists.txt | 396 ---------------------------- + Makefile | 396 ---------------------------- + build.yaml | 1 - + grpc.gyp | 396 ---------------------------- + tools/doxygen/Doxyfile.c++.internal | 240 ----------------- + 6 files changed, 1669 deletions(-) + +diff --git a/BUILD.gn b/BUILD.gn +index 0599ae15048..8a4d6c7b23c 100644 +--- a/BUILD.gn ++++ b/BUILD.gn +@@ -1191,135 +1191,32 @@ config("grpc_config") { + "include/grpcpp/support/sync_stream_impl.h", + "include/grpcpp/support/time.h", + "include/grpcpp/support/validate_service_config.h", +- "src/core/ext/filters/client_channel/backend_metric.cc", +- "src/core/ext/filters/client_channel/backend_metric.h", +- "src/core/ext/filters/client_channel/backup_poller.cc", +- "src/core/ext/filters/client_channel/backup_poller.h", +- "src/core/ext/filters/client_channel/channel_connectivity.cc", +- "src/core/ext/filters/client_channel/client_channel.cc", +- "src/core/ext/filters/client_channel/client_channel.h", +- "src/core/ext/filters/client_channel/client_channel_channelz.cc", +- "src/core/ext/filters/client_channel/client_channel_channelz.h", +- "src/core/ext/filters/client_channel/client_channel_factory.cc", +- "src/core/ext/filters/client_channel/client_channel_factory.h", +- "src/core/ext/filters/client_channel/client_channel_plugin.cc", +- "src/core/ext/filters/client_channel/connector.h", +- "src/core/ext/filters/client_channel/global_subchannel_pool.cc", +- "src/core/ext/filters/client_channel/global_subchannel_pool.h", +- "src/core/ext/filters/client_channel/health/health_check_client.cc", +- "src/core/ext/filters/client_channel/health/health_check_client.h", +- "src/core/ext/filters/client_channel/http_connect_handshaker.cc", +- "src/core/ext/filters/client_channel/http_connect_handshaker.h", +- "src/core/ext/filters/client_channel/http_proxy.cc", +- "src/core/ext/filters/client_channel/http_proxy.h", +- "src/core/ext/filters/client_channel/lb_policy.cc", +- "src/core/ext/filters/client_channel/lb_policy.h", +- "src/core/ext/filters/client_channel/lb_policy_factory.h", +- "src/core/ext/filters/client_channel/lb_policy_registry.cc", +- "src/core/ext/filters/client_channel/lb_policy_registry.h", +- "src/core/ext/filters/client_channel/local_subchannel_pool.cc", +- "src/core/ext/filters/client_channel/local_subchannel_pool.h", +- "src/core/ext/filters/client_channel/parse_address.cc", +- "src/core/ext/filters/client_channel/parse_address.h", +- "src/core/ext/filters/client_channel/proxy_mapper.h", +- "src/core/ext/filters/client_channel/proxy_mapper_registry.cc", +- "src/core/ext/filters/client_channel/proxy_mapper_registry.h", +- "src/core/ext/filters/client_channel/resolver.cc", +- "src/core/ext/filters/client_channel/resolver.h", +- "src/core/ext/filters/client_channel/resolver_factory.h", +- "src/core/ext/filters/client_channel/resolver_registry.cc", +- "src/core/ext/filters/client_channel/resolver_registry.h", +- "src/core/ext/filters/client_channel/resolver_result_parsing.cc", +- "src/core/ext/filters/client_channel/resolver_result_parsing.h", +- "src/core/ext/filters/client_channel/resolving_lb_policy.cc", +- "src/core/ext/filters/client_channel/resolving_lb_policy.h", +- "src/core/ext/filters/client_channel/retry_throttle.cc", +- "src/core/ext/filters/client_channel/retry_throttle.h", +- "src/core/ext/filters/client_channel/server_address.cc", +- "src/core/ext/filters/client_channel/server_address.h", +- "src/core/ext/filters/client_channel/service_config.cc", +- "src/core/ext/filters/client_channel/service_config.h", +- "src/core/ext/filters/client_channel/subchannel.cc", +- "src/core/ext/filters/client_channel/subchannel.h", +- "src/core/ext/filters/client_channel/subchannel_interface.h", +- "src/core/ext/filters/client_channel/subchannel_pool_interface.cc", +- "src/core/ext/filters/client_channel/subchannel_pool_interface.h", +- "src/core/ext/filters/deadline/deadline_filter.cc", +- "src/core/ext/filters/deadline/deadline_filter.h", + "src/core/ext/transport/inproc/inproc_transport.h", +- "src/core/ext/upb-generated/gogoproto/gogo.upb.c", +- "src/core/ext/upb-generated/gogoproto/gogo.upb.h", +- "src/core/ext/upb-generated/google/api/annotations.upb.c", +- "src/core/ext/upb-generated/google/api/annotations.upb.h", +- "src/core/ext/upb-generated/google/api/http.upb.c", +- "src/core/ext/upb-generated/google/api/http.upb.h", +- "src/core/ext/upb-generated/google/protobuf/any.upb.c", +- "src/core/ext/upb-generated/google/protobuf/any.upb.h", +- "src/core/ext/upb-generated/google/protobuf/descriptor.upb.c", +- "src/core/ext/upb-generated/google/protobuf/descriptor.upb.h", +- "src/core/ext/upb-generated/google/protobuf/duration.upb.c", +- "src/core/ext/upb-generated/google/protobuf/duration.upb.h", +- "src/core/ext/upb-generated/google/protobuf/empty.upb.c", +- "src/core/ext/upb-generated/google/protobuf/empty.upb.h", +- "src/core/ext/upb-generated/google/protobuf/struct.upb.c", +- "src/core/ext/upb-generated/google/protobuf/struct.upb.h", +- "src/core/ext/upb-generated/google/protobuf/timestamp.upb.c", +- "src/core/ext/upb-generated/google/protobuf/timestamp.upb.h", +- "src/core/ext/upb-generated/google/protobuf/wrappers.upb.c", +- "src/core/ext/upb-generated/google/protobuf/wrappers.upb.h", +- "src/core/ext/upb-generated/google/rpc/status.upb.c", +- "src/core/ext/upb-generated/google/rpc/status.upb.h", + "src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c", + "src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h", +- "src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c", +- "src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h", +- "src/core/ext/upb-generated/validate/validate.upb.c", +- "src/core/ext/upb-generated/validate/validate.upb.h", +- "src/core/lib/avl/avl.cc", + "src/core/lib/avl/avl.h", +- "src/core/lib/backoff/backoff.cc", + "src/core/lib/backoff/backoff.h", +- "src/core/lib/channel/channel_args.cc", + "src/core/lib/channel/channel_args.h", +- "src/core/lib/channel/channel_stack.cc", + "src/core/lib/channel/channel_stack.h", +- "src/core/lib/channel/channel_stack_builder.cc", + "src/core/lib/channel/channel_stack_builder.h", +- "src/core/lib/channel/channel_trace.cc", + "src/core/lib/channel/channel_trace.h", +- "src/core/lib/channel/channelz.cc", + "src/core/lib/channel/channelz.h", +- "src/core/lib/channel/channelz_registry.cc", + "src/core/lib/channel/channelz_registry.h", +- "src/core/lib/channel/connected_channel.cc", + "src/core/lib/channel/connected_channel.h", + "src/core/lib/channel/context.h", +- "src/core/lib/channel/handshaker.cc", + "src/core/lib/channel/handshaker.h", + "src/core/lib/channel/handshaker_factory.h", +- "src/core/lib/channel/handshaker_registry.cc", + "src/core/lib/channel/handshaker_registry.h", +- "src/core/lib/channel/status_util.cc", + "src/core/lib/channel/status_util.h", + "src/core/lib/compression/algorithm_metadata.h", +- "src/core/lib/compression/compression.cc", +- "src/core/lib/compression/compression_args.cc", + "src/core/lib/compression/compression_args.h", +- "src/core/lib/compression/compression_internal.cc", + "src/core/lib/compression/compression_internal.h", +- "src/core/lib/compression/message_compress.cc", + "src/core/lib/compression/message_compress.h", +- "src/core/lib/compression/stream_compression.cc", + "src/core/lib/compression/stream_compression.h", +- "src/core/lib/compression/stream_compression_gzip.cc", + "src/core/lib/compression/stream_compression_gzip.h", +- "src/core/lib/compression/stream_compression_identity.cc", + "src/core/lib/compression/stream_compression_identity.h", +- "src/core/lib/debug/stats.cc", + "src/core/lib/debug/stats.h", +- "src/core/lib/debug/stats_data.cc", + "src/core/lib/debug/stats_data.h", +- "src/core/lib/debug/trace.cc", + "src/core/lib/debug/trace.h", + "src/core/lib/gpr/alloc.h", + "src/core/lib/gpr/arena.h", +@@ -1356,257 +1253,120 @@ config("grpc_config") { + "src/core/lib/gprpp/string_view.h", + "src/core/lib/gprpp/sync.h", + "src/core/lib/gprpp/thd.h", +- "src/core/lib/http/format_request.cc", + "src/core/lib/http/format_request.h", +- "src/core/lib/http/httpcli.cc", + "src/core/lib/http/httpcli.h", +- "src/core/lib/http/parser.cc", + "src/core/lib/http/parser.h", + "src/core/lib/iomgr/block_annotate.h", +- "src/core/lib/iomgr/buffer_list.cc", + "src/core/lib/iomgr/buffer_list.h", +- "src/core/lib/iomgr/call_combiner.cc", + "src/core/lib/iomgr/call_combiner.h", +- "src/core/lib/iomgr/cfstream_handle.cc", + "src/core/lib/iomgr/cfstream_handle.h", + "src/core/lib/iomgr/closure.h", +- "src/core/lib/iomgr/combiner.cc", + "src/core/lib/iomgr/combiner.h", + "src/core/lib/iomgr/dynamic_annotations.h", +- "src/core/lib/iomgr/endpoint.cc", + "src/core/lib/iomgr/endpoint.h", +- "src/core/lib/iomgr/endpoint_cfstream.cc", + "src/core/lib/iomgr/endpoint_cfstream.h", + "src/core/lib/iomgr/endpoint_pair.h", +- "src/core/lib/iomgr/endpoint_pair_posix.cc", +- "src/core/lib/iomgr/endpoint_pair_uv.cc", +- "src/core/lib/iomgr/endpoint_pair_windows.cc", +- "src/core/lib/iomgr/error.cc", + "src/core/lib/iomgr/error.h", +- "src/core/lib/iomgr/error_cfstream.cc", + "src/core/lib/iomgr/error_cfstream.h", + "src/core/lib/iomgr/error_internal.h", +- "src/core/lib/iomgr/ev_epoll1_linux.cc", + "src/core/lib/iomgr/ev_epoll1_linux.h", +- "src/core/lib/iomgr/ev_epollex_linux.cc", + "src/core/lib/iomgr/ev_epollex_linux.h", +- "src/core/lib/iomgr/ev_poll_posix.cc", + "src/core/lib/iomgr/ev_poll_posix.h", +- "src/core/lib/iomgr/ev_posix.cc", + "src/core/lib/iomgr/ev_posix.h", +- "src/core/lib/iomgr/ev_windows.cc", +- "src/core/lib/iomgr/exec_ctx.cc", + "src/core/lib/iomgr/exec_ctx.h", +- "src/core/lib/iomgr/executor.cc", + "src/core/lib/iomgr/executor.h", +- "src/core/lib/iomgr/executor/mpmcqueue.cc", + "src/core/lib/iomgr/executor/mpmcqueue.h", +- "src/core/lib/iomgr/executor/threadpool.cc", + "src/core/lib/iomgr/executor/threadpool.h", +- "src/core/lib/iomgr/fork_posix.cc", +- "src/core/lib/iomgr/fork_windows.cc", + "src/core/lib/iomgr/gethostname.h", +- "src/core/lib/iomgr/gethostname_fallback.cc", +- "src/core/lib/iomgr/gethostname_host_name_max.cc", +- "src/core/lib/iomgr/gethostname_sysconf.cc", + "src/core/lib/iomgr/grpc_if_nametoindex.h", +- "src/core/lib/iomgr/grpc_if_nametoindex_posix.cc", +- "src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc", +- "src/core/lib/iomgr/internal_errqueue.cc", + "src/core/lib/iomgr/internal_errqueue.h", +- "src/core/lib/iomgr/iocp_windows.cc", + "src/core/lib/iomgr/iocp_windows.h", +- "src/core/lib/iomgr/iomgr.cc", + "src/core/lib/iomgr/iomgr.h", +- "src/core/lib/iomgr/iomgr_custom.cc", + "src/core/lib/iomgr/iomgr_custom.h", +- "src/core/lib/iomgr/iomgr_internal.cc", + "src/core/lib/iomgr/iomgr_internal.h", +- "src/core/lib/iomgr/iomgr_posix.cc", + "src/core/lib/iomgr/iomgr_posix.h", +- "src/core/lib/iomgr/iomgr_posix_cfstream.cc", +- "src/core/lib/iomgr/iomgr_uv.cc", +- "src/core/lib/iomgr/iomgr_windows.cc", +- "src/core/lib/iomgr/is_epollexclusive_available.cc", + "src/core/lib/iomgr/is_epollexclusive_available.h", +- "src/core/lib/iomgr/load_file.cc", + "src/core/lib/iomgr/load_file.h", +- "src/core/lib/iomgr/lockfree_event.cc", + "src/core/lib/iomgr/lockfree_event.h", +- "src/core/lib/iomgr/logical_thread.cc", + "src/core/lib/iomgr/logical_thread.h", + "src/core/lib/iomgr/nameser.h", +- "src/core/lib/iomgr/polling_entity.cc", + "src/core/lib/iomgr/polling_entity.h", +- "src/core/lib/iomgr/pollset.cc", + "src/core/lib/iomgr/pollset.h", +- "src/core/lib/iomgr/pollset_custom.cc", + "src/core/lib/iomgr/pollset_custom.h", +- "src/core/lib/iomgr/pollset_set.cc", + "src/core/lib/iomgr/pollset_set.h", +- "src/core/lib/iomgr/pollset_set_custom.cc", + "src/core/lib/iomgr/pollset_set_custom.h", +- "src/core/lib/iomgr/pollset_set_windows.cc", + "src/core/lib/iomgr/pollset_set_windows.h", +- "src/core/lib/iomgr/pollset_uv.cc", +- "src/core/lib/iomgr/pollset_windows.cc", + "src/core/lib/iomgr/pollset_windows.h", + "src/core/lib/iomgr/port.h", +- "src/core/lib/iomgr/resolve_address.cc", + "src/core/lib/iomgr/resolve_address.h", +- "src/core/lib/iomgr/resolve_address_custom.cc", + "src/core/lib/iomgr/resolve_address_custom.h", +- "src/core/lib/iomgr/resolve_address_posix.cc", +- "src/core/lib/iomgr/resolve_address_windows.cc", +- "src/core/lib/iomgr/resource_quota.cc", + "src/core/lib/iomgr/resource_quota.h", + "src/core/lib/iomgr/sockaddr.h", + "src/core/lib/iomgr/sockaddr_custom.h", + "src/core/lib/iomgr/sockaddr_posix.h", +- "src/core/lib/iomgr/sockaddr_utils.cc", + "src/core/lib/iomgr/sockaddr_utils.h", + "src/core/lib/iomgr/sockaddr_windows.h", +- "src/core/lib/iomgr/socket_factory_posix.cc", + "src/core/lib/iomgr/socket_factory_posix.h", +- "src/core/lib/iomgr/socket_mutator.cc", + "src/core/lib/iomgr/socket_mutator.h", + "src/core/lib/iomgr/socket_utils.h", +- "src/core/lib/iomgr/socket_utils_common_posix.cc", +- "src/core/lib/iomgr/socket_utils_linux.cc", +- "src/core/lib/iomgr/socket_utils_posix.cc", + "src/core/lib/iomgr/socket_utils_posix.h", +- "src/core/lib/iomgr/socket_utils_uv.cc", +- "src/core/lib/iomgr/socket_utils_windows.cc", +- "src/core/lib/iomgr/socket_windows.cc", + "src/core/lib/iomgr/socket_windows.h", + "src/core/lib/iomgr/sys_epoll_wrapper.h", +- "src/core/lib/iomgr/tcp_client.cc", + "src/core/lib/iomgr/tcp_client.h", +- "src/core/lib/iomgr/tcp_client_cfstream.cc", +- "src/core/lib/iomgr/tcp_client_custom.cc", +- "src/core/lib/iomgr/tcp_client_posix.cc", + "src/core/lib/iomgr/tcp_client_posix.h", +- "src/core/lib/iomgr/tcp_client_windows.cc", +- "src/core/lib/iomgr/tcp_custom.cc", + "src/core/lib/iomgr/tcp_custom.h", +- "src/core/lib/iomgr/tcp_posix.cc", + "src/core/lib/iomgr/tcp_posix.h", +- "src/core/lib/iomgr/tcp_server.cc", + "src/core/lib/iomgr/tcp_server.h", +- "src/core/lib/iomgr/tcp_server_custom.cc", +- "src/core/lib/iomgr/tcp_server_posix.cc", + "src/core/lib/iomgr/tcp_server_utils_posix.h", +- "src/core/lib/iomgr/tcp_server_utils_posix_common.cc", +- "src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc", +- "src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc", +- "src/core/lib/iomgr/tcp_server_windows.cc", +- "src/core/lib/iomgr/tcp_uv.cc", +- "src/core/lib/iomgr/tcp_windows.cc", + "src/core/lib/iomgr/tcp_windows.h", +- "src/core/lib/iomgr/time_averaged_stats.cc", + "src/core/lib/iomgr/time_averaged_stats.h", +- "src/core/lib/iomgr/timer.cc", + "src/core/lib/iomgr/timer.h", +- "src/core/lib/iomgr/timer_custom.cc", + "src/core/lib/iomgr/timer_custom.h", +- "src/core/lib/iomgr/timer_generic.cc", +- "src/core/lib/iomgr/timer_heap.cc", + "src/core/lib/iomgr/timer_heap.h", +- "src/core/lib/iomgr/timer_manager.cc", + "src/core/lib/iomgr/timer_manager.h", +- "src/core/lib/iomgr/timer_uv.cc", +- "src/core/lib/iomgr/udp_server.cc", + "src/core/lib/iomgr/udp_server.h", +- "src/core/lib/iomgr/unix_sockets_posix.cc", + "src/core/lib/iomgr/unix_sockets_posix.h", +- "src/core/lib/iomgr/unix_sockets_posix_noop.cc", +- "src/core/lib/iomgr/wakeup_fd_eventfd.cc", +- "src/core/lib/iomgr/wakeup_fd_nospecial.cc", +- "src/core/lib/iomgr/wakeup_fd_pipe.cc", + "src/core/lib/iomgr/wakeup_fd_pipe.h", +- "src/core/lib/iomgr/wakeup_fd_posix.cc", + "src/core/lib/iomgr/wakeup_fd_posix.h", +- "src/core/lib/json/json.cc", + "src/core/lib/json/json.h", + "src/core/lib/json/json_common.h", +- "src/core/lib/json/json_reader.cc", + "src/core/lib/json/json_reader.h", +- "src/core/lib/json/json_string.cc", +- "src/core/lib/json/json_writer.cc", + "src/core/lib/json/json_writer.h", + "src/core/lib/profiling/timers.h", +- "src/core/lib/slice/b64.cc", + "src/core/lib/slice/b64.h", +- "src/core/lib/slice/percent_encoding.cc", + "src/core/lib/slice/percent_encoding.h", +- "src/core/lib/slice/slice.cc", +- "src/core/lib/slice/slice_buffer.cc", + "src/core/lib/slice/slice_hash_table.h", +- "src/core/lib/slice/slice_intern.cc", + "src/core/lib/slice/slice_internal.h", +- "src/core/lib/slice/slice_string_helpers.cc", + "src/core/lib/slice/slice_string_helpers.h", + "src/core/lib/slice/slice_utils.h", + "src/core/lib/slice/slice_weak_hash_table.h", +- "src/core/lib/surface/api_trace.cc", + "src/core/lib/surface/api_trace.h", +- "src/core/lib/surface/byte_buffer.cc", +- "src/core/lib/surface/byte_buffer_reader.cc", +- "src/core/lib/surface/call.cc", + "src/core/lib/surface/call.h", +- "src/core/lib/surface/call_details.cc", +- "src/core/lib/surface/call_log_batch.cc", + "src/core/lib/surface/call_test_only.h", +- "src/core/lib/surface/channel.cc", + "src/core/lib/surface/channel.h", +- "src/core/lib/surface/channel_init.cc", + "src/core/lib/surface/channel_init.h", +- "src/core/lib/surface/channel_ping.cc", +- "src/core/lib/surface/channel_stack_type.cc", + "src/core/lib/surface/channel_stack_type.h", +- "src/core/lib/surface/completion_queue.cc", + "src/core/lib/surface/completion_queue.h", +- "src/core/lib/surface/completion_queue_factory.cc", + "src/core/lib/surface/completion_queue_factory.h", +- "src/core/lib/surface/event_string.cc", + "src/core/lib/surface/event_string.h", + "src/core/lib/surface/init.h", +- "src/core/lib/surface/lame_client.cc", + "src/core/lib/surface/lame_client.h", +- "src/core/lib/surface/metadata_array.cc", +- "src/core/lib/surface/server.cc", + "src/core/lib/surface/server.h", +- "src/core/lib/surface/validate_metadata.cc", + "src/core/lib/surface/validate_metadata.h", +- "src/core/lib/surface/version.cc", +- "src/core/lib/transport/bdp_estimator.cc", + "src/core/lib/transport/bdp_estimator.h", +- "src/core/lib/transport/byte_stream.cc", + "src/core/lib/transport/byte_stream.h", +- "src/core/lib/transport/connectivity_state.cc", + "src/core/lib/transport/connectivity_state.h", +- "src/core/lib/transport/error_utils.cc", + "src/core/lib/transport/error_utils.h", + "src/core/lib/transport/http2_errors.h", +- "src/core/lib/transport/metadata.cc", + "src/core/lib/transport/metadata.h", +- "src/core/lib/transport/metadata_batch.cc", + "src/core/lib/transport/metadata_batch.h", +- "src/core/lib/transport/pid_controller.cc", + "src/core/lib/transport/pid_controller.h", +- "src/core/lib/transport/static_metadata.cc", + "src/core/lib/transport/static_metadata.h", +- "src/core/lib/transport/status_conversion.cc", + "src/core/lib/transport/status_conversion.h", +- "src/core/lib/transport/status_metadata.cc", + "src/core/lib/transport/status_metadata.h", +- "src/core/lib/transport/timeout_encoding.cc", + "src/core/lib/transport/timeout_encoding.h", +- "src/core/lib/transport/transport.cc", + "src/core/lib/transport/transport.h", + "src/core/lib/transport/transport_impl.h", +- "src/core/lib/transport/transport_op_string.cc", +- "src/core/lib/uri/uri_parser.cc", + "src/core/lib/uri/uri_parser.h", + "src/cpp/client/channel_cc.cc", + "src/cpp/client/client_context.cc", +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 3d4418ad619..be27010428f 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -3299,205 +3299,7 @@ add_library(grpc++ + src/cpp/util/status.cc + src/cpp/util/string_ref.cc + src/cpp/util/time_cc.cc +- src/core/ext/filters/client_channel/backend_metric.cc +- src/core/ext/filters/client_channel/backup_poller.cc +- src/core/ext/filters/client_channel/channel_connectivity.cc +- src/core/ext/filters/client_channel/client_channel.cc +- src/core/ext/filters/client_channel/client_channel_channelz.cc +- src/core/ext/filters/client_channel/client_channel_factory.cc +- src/core/ext/filters/client_channel/client_channel_plugin.cc +- src/core/ext/filters/client_channel/global_subchannel_pool.cc +- src/core/ext/filters/client_channel/health/health_check_client.cc +- src/core/ext/filters/client_channel/http_connect_handshaker.cc +- src/core/ext/filters/client_channel/http_proxy.cc +- src/core/ext/filters/client_channel/lb_policy.cc +- src/core/ext/filters/client_channel/lb_policy_registry.cc +- src/core/ext/filters/client_channel/local_subchannel_pool.cc +- src/core/ext/filters/client_channel/parse_address.cc +- src/core/ext/filters/client_channel/proxy_mapper_registry.cc +- src/core/ext/filters/client_channel/resolver.cc +- src/core/ext/filters/client_channel/resolver_registry.cc +- src/core/ext/filters/client_channel/resolver_result_parsing.cc +- src/core/ext/filters/client_channel/resolving_lb_policy.cc +- src/core/ext/filters/client_channel/retry_throttle.cc +- src/core/ext/filters/client_channel/server_address.cc +- src/core/ext/filters/client_channel/service_config.cc +- src/core/ext/filters/client_channel/subchannel.cc +- src/core/ext/filters/client_channel/subchannel_pool_interface.cc +- src/core/lib/avl/avl.cc +- src/core/lib/backoff/backoff.cc +- src/core/lib/channel/channel_args.cc +- src/core/lib/channel/channel_stack.cc +- src/core/lib/channel/channel_stack_builder.cc +- src/core/lib/channel/channel_trace.cc +- src/core/lib/channel/channelz.cc +- src/core/lib/channel/channelz_registry.cc +- src/core/lib/channel/connected_channel.cc +- src/core/lib/channel/handshaker.cc +- src/core/lib/channel/handshaker_registry.cc +- src/core/lib/channel/status_util.cc +- src/core/lib/compression/compression.cc +- src/core/lib/compression/compression_args.cc +- src/core/lib/compression/compression_internal.cc +- src/core/lib/compression/message_compress.cc +- src/core/lib/compression/stream_compression.cc +- src/core/lib/compression/stream_compression_gzip.cc +- src/core/lib/compression/stream_compression_identity.cc +- src/core/lib/debug/stats.cc +- src/core/lib/debug/stats_data.cc +- src/core/lib/http/format_request.cc +- src/core/lib/http/httpcli.cc +- src/core/lib/http/parser.cc +- src/core/lib/iomgr/buffer_list.cc +- src/core/lib/iomgr/call_combiner.cc +- src/core/lib/iomgr/cfstream_handle.cc +- src/core/lib/iomgr/combiner.cc +- src/core/lib/iomgr/endpoint.cc +- src/core/lib/iomgr/endpoint_cfstream.cc +- src/core/lib/iomgr/endpoint_pair_posix.cc +- src/core/lib/iomgr/endpoint_pair_uv.cc +- src/core/lib/iomgr/endpoint_pair_windows.cc +- src/core/lib/iomgr/error.cc +- src/core/lib/iomgr/error_cfstream.cc +- src/core/lib/iomgr/ev_epoll1_linux.cc +- src/core/lib/iomgr/ev_epollex_linux.cc +- src/core/lib/iomgr/ev_poll_posix.cc +- src/core/lib/iomgr/ev_posix.cc +- src/core/lib/iomgr/ev_windows.cc +- src/core/lib/iomgr/exec_ctx.cc +- src/core/lib/iomgr/executor.cc +- src/core/lib/iomgr/executor/mpmcqueue.cc +- src/core/lib/iomgr/executor/threadpool.cc +- src/core/lib/iomgr/fork_posix.cc +- src/core/lib/iomgr/fork_windows.cc +- src/core/lib/iomgr/gethostname_fallback.cc +- src/core/lib/iomgr/gethostname_host_name_max.cc +- src/core/lib/iomgr/gethostname_sysconf.cc +- src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +- src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +- src/core/lib/iomgr/internal_errqueue.cc +- src/core/lib/iomgr/iocp_windows.cc +- src/core/lib/iomgr/iomgr.cc +- src/core/lib/iomgr/iomgr_custom.cc +- src/core/lib/iomgr/iomgr_internal.cc +- src/core/lib/iomgr/iomgr_posix.cc +- src/core/lib/iomgr/iomgr_posix_cfstream.cc +- src/core/lib/iomgr/iomgr_uv.cc +- src/core/lib/iomgr/iomgr_windows.cc +- src/core/lib/iomgr/is_epollexclusive_available.cc +- src/core/lib/iomgr/load_file.cc +- src/core/lib/iomgr/lockfree_event.cc +- src/core/lib/iomgr/logical_thread.cc +- src/core/lib/iomgr/polling_entity.cc +- src/core/lib/iomgr/pollset.cc +- src/core/lib/iomgr/pollset_custom.cc +- src/core/lib/iomgr/pollset_set.cc +- src/core/lib/iomgr/pollset_set_custom.cc +- src/core/lib/iomgr/pollset_set_windows.cc +- src/core/lib/iomgr/pollset_uv.cc +- src/core/lib/iomgr/pollset_windows.cc +- src/core/lib/iomgr/resolve_address.cc +- src/core/lib/iomgr/resolve_address_custom.cc +- src/core/lib/iomgr/resolve_address_posix.cc +- src/core/lib/iomgr/resolve_address_windows.cc +- src/core/lib/iomgr/resource_quota.cc +- src/core/lib/iomgr/sockaddr_utils.cc +- src/core/lib/iomgr/socket_factory_posix.cc +- src/core/lib/iomgr/socket_mutator.cc +- src/core/lib/iomgr/socket_utils_common_posix.cc +- src/core/lib/iomgr/socket_utils_linux.cc +- src/core/lib/iomgr/socket_utils_posix.cc +- src/core/lib/iomgr/socket_utils_uv.cc +- src/core/lib/iomgr/socket_utils_windows.cc +- src/core/lib/iomgr/socket_windows.cc +- src/core/lib/iomgr/tcp_client.cc +- src/core/lib/iomgr/tcp_client_cfstream.cc +- src/core/lib/iomgr/tcp_client_custom.cc +- src/core/lib/iomgr/tcp_client_posix.cc +- src/core/lib/iomgr/tcp_client_windows.cc +- src/core/lib/iomgr/tcp_custom.cc +- src/core/lib/iomgr/tcp_posix.cc +- src/core/lib/iomgr/tcp_server.cc +- src/core/lib/iomgr/tcp_server_custom.cc +- src/core/lib/iomgr/tcp_server_posix.cc +- src/core/lib/iomgr/tcp_server_utils_posix_common.cc +- src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +- src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +- src/core/lib/iomgr/tcp_server_windows.cc +- src/core/lib/iomgr/tcp_uv.cc +- src/core/lib/iomgr/tcp_windows.cc +- src/core/lib/iomgr/time_averaged_stats.cc +- src/core/lib/iomgr/timer.cc +- src/core/lib/iomgr/timer_custom.cc +- src/core/lib/iomgr/timer_generic.cc +- src/core/lib/iomgr/timer_heap.cc +- src/core/lib/iomgr/timer_manager.cc +- src/core/lib/iomgr/timer_uv.cc +- src/core/lib/iomgr/udp_server.cc +- src/core/lib/iomgr/unix_sockets_posix.cc +- src/core/lib/iomgr/unix_sockets_posix_noop.cc +- src/core/lib/iomgr/wakeup_fd_eventfd.cc +- src/core/lib/iomgr/wakeup_fd_nospecial.cc +- src/core/lib/iomgr/wakeup_fd_pipe.cc +- src/core/lib/iomgr/wakeup_fd_posix.cc +- src/core/lib/json/json.cc +- src/core/lib/json/json_reader.cc +- src/core/lib/json/json_string.cc +- src/core/lib/json/json_writer.cc +- src/core/lib/slice/b64.cc +- src/core/lib/slice/percent_encoding.cc +- src/core/lib/slice/slice.cc +- src/core/lib/slice/slice_buffer.cc +- src/core/lib/slice/slice_intern.cc +- src/core/lib/slice/slice_string_helpers.cc +- src/core/lib/surface/api_trace.cc +- src/core/lib/surface/byte_buffer.cc +- src/core/lib/surface/byte_buffer_reader.cc +- src/core/lib/surface/call.cc +- src/core/lib/surface/call_details.cc +- src/core/lib/surface/call_log_batch.cc +- src/core/lib/surface/channel.cc +- src/core/lib/surface/channel_init.cc +- src/core/lib/surface/channel_ping.cc +- src/core/lib/surface/channel_stack_type.cc +- src/core/lib/surface/completion_queue.cc +- src/core/lib/surface/completion_queue_factory.cc +- src/core/lib/surface/event_string.cc +- src/core/lib/surface/lame_client.cc +- src/core/lib/surface/metadata_array.cc +- src/core/lib/surface/server.cc +- src/core/lib/surface/validate_metadata.cc +- src/core/lib/surface/version.cc +- src/core/lib/transport/bdp_estimator.cc +- src/core/lib/transport/byte_stream.cc +- src/core/lib/transport/connectivity_state.cc +- src/core/lib/transport/error_utils.cc +- src/core/lib/transport/metadata.cc +- src/core/lib/transport/metadata_batch.cc +- src/core/lib/transport/pid_controller.cc +- src/core/lib/transport/static_metadata.cc +- src/core/lib/transport/status_conversion.cc +- src/core/lib/transport/status_metadata.cc +- src/core/lib/transport/timeout_encoding.cc +- src/core/lib/transport/transport.cc +- src/core/lib/transport/transport_op_string.cc +- src/core/lib/uri/uri_parser.cc +- src/core/lib/debug/trace.cc +- src/core/ext/filters/deadline/deadline_filter.cc + src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +- src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +- src/core/ext/upb-generated/gogoproto/gogo.upb.c +- src/core/ext/upb-generated/validate/validate.upb.c +- src/core/ext/upb-generated/google/api/annotations.upb.c +- src/core/ext/upb-generated/google/api/http.upb.c +- src/core/ext/upb-generated/google/protobuf/any.upb.c +- src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +- src/core/ext/upb-generated/google/protobuf/duration.upb.c +- src/core/ext/upb-generated/google/protobuf/empty.upb.c +- src/core/ext/upb-generated/google/protobuf/struct.upb.c +- src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +- src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +- src/core/ext/upb-generated/google/rpc/status.upb.c + src/cpp/codegen/codegen_init.cc + ) + +@@ -4564,205 +4366,7 @@ add_library(grpc++_unsecure + src/cpp/util/status.cc + src/cpp/util/string_ref.cc + src/cpp/util/time_cc.cc +- src/core/ext/filters/client_channel/backend_metric.cc +- src/core/ext/filters/client_channel/backup_poller.cc +- src/core/ext/filters/client_channel/channel_connectivity.cc +- src/core/ext/filters/client_channel/client_channel.cc +- src/core/ext/filters/client_channel/client_channel_channelz.cc +- src/core/ext/filters/client_channel/client_channel_factory.cc +- src/core/ext/filters/client_channel/client_channel_plugin.cc +- src/core/ext/filters/client_channel/global_subchannel_pool.cc +- src/core/ext/filters/client_channel/health/health_check_client.cc +- src/core/ext/filters/client_channel/http_connect_handshaker.cc +- src/core/ext/filters/client_channel/http_proxy.cc +- src/core/ext/filters/client_channel/lb_policy.cc +- src/core/ext/filters/client_channel/lb_policy_registry.cc +- src/core/ext/filters/client_channel/local_subchannel_pool.cc +- src/core/ext/filters/client_channel/parse_address.cc +- src/core/ext/filters/client_channel/proxy_mapper_registry.cc +- src/core/ext/filters/client_channel/resolver.cc +- src/core/ext/filters/client_channel/resolver_registry.cc +- src/core/ext/filters/client_channel/resolver_result_parsing.cc +- src/core/ext/filters/client_channel/resolving_lb_policy.cc +- src/core/ext/filters/client_channel/retry_throttle.cc +- src/core/ext/filters/client_channel/server_address.cc +- src/core/ext/filters/client_channel/service_config.cc +- src/core/ext/filters/client_channel/subchannel.cc +- src/core/ext/filters/client_channel/subchannel_pool_interface.cc +- src/core/lib/avl/avl.cc +- src/core/lib/backoff/backoff.cc +- src/core/lib/channel/channel_args.cc +- src/core/lib/channel/channel_stack.cc +- src/core/lib/channel/channel_stack_builder.cc +- src/core/lib/channel/channel_trace.cc +- src/core/lib/channel/channelz.cc +- src/core/lib/channel/channelz_registry.cc +- src/core/lib/channel/connected_channel.cc +- src/core/lib/channel/handshaker.cc +- src/core/lib/channel/handshaker_registry.cc +- src/core/lib/channel/status_util.cc +- src/core/lib/compression/compression.cc +- src/core/lib/compression/compression_args.cc +- src/core/lib/compression/compression_internal.cc +- src/core/lib/compression/message_compress.cc +- src/core/lib/compression/stream_compression.cc +- src/core/lib/compression/stream_compression_gzip.cc +- src/core/lib/compression/stream_compression_identity.cc +- src/core/lib/debug/stats.cc +- src/core/lib/debug/stats_data.cc +- src/core/lib/http/format_request.cc +- src/core/lib/http/httpcli.cc +- src/core/lib/http/parser.cc +- src/core/lib/iomgr/buffer_list.cc +- src/core/lib/iomgr/call_combiner.cc +- src/core/lib/iomgr/cfstream_handle.cc +- src/core/lib/iomgr/combiner.cc +- src/core/lib/iomgr/endpoint.cc +- src/core/lib/iomgr/endpoint_cfstream.cc +- src/core/lib/iomgr/endpoint_pair_posix.cc +- src/core/lib/iomgr/endpoint_pair_uv.cc +- src/core/lib/iomgr/endpoint_pair_windows.cc +- src/core/lib/iomgr/error.cc +- src/core/lib/iomgr/error_cfstream.cc +- src/core/lib/iomgr/ev_epoll1_linux.cc +- src/core/lib/iomgr/ev_epollex_linux.cc +- src/core/lib/iomgr/ev_poll_posix.cc +- src/core/lib/iomgr/ev_posix.cc +- src/core/lib/iomgr/ev_windows.cc +- src/core/lib/iomgr/exec_ctx.cc +- src/core/lib/iomgr/executor.cc +- src/core/lib/iomgr/executor/mpmcqueue.cc +- src/core/lib/iomgr/executor/threadpool.cc +- src/core/lib/iomgr/fork_posix.cc +- src/core/lib/iomgr/fork_windows.cc +- src/core/lib/iomgr/gethostname_fallback.cc +- src/core/lib/iomgr/gethostname_host_name_max.cc +- src/core/lib/iomgr/gethostname_sysconf.cc +- src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +- src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +- src/core/lib/iomgr/internal_errqueue.cc +- src/core/lib/iomgr/iocp_windows.cc +- src/core/lib/iomgr/iomgr.cc +- src/core/lib/iomgr/iomgr_custom.cc +- src/core/lib/iomgr/iomgr_internal.cc +- src/core/lib/iomgr/iomgr_posix.cc +- src/core/lib/iomgr/iomgr_posix_cfstream.cc +- src/core/lib/iomgr/iomgr_uv.cc +- src/core/lib/iomgr/iomgr_windows.cc +- src/core/lib/iomgr/is_epollexclusive_available.cc +- src/core/lib/iomgr/load_file.cc +- src/core/lib/iomgr/lockfree_event.cc +- src/core/lib/iomgr/logical_thread.cc +- src/core/lib/iomgr/polling_entity.cc +- src/core/lib/iomgr/pollset.cc +- src/core/lib/iomgr/pollset_custom.cc +- src/core/lib/iomgr/pollset_set.cc +- src/core/lib/iomgr/pollset_set_custom.cc +- src/core/lib/iomgr/pollset_set_windows.cc +- src/core/lib/iomgr/pollset_uv.cc +- src/core/lib/iomgr/pollset_windows.cc +- src/core/lib/iomgr/resolve_address.cc +- src/core/lib/iomgr/resolve_address_custom.cc +- src/core/lib/iomgr/resolve_address_posix.cc +- src/core/lib/iomgr/resolve_address_windows.cc +- src/core/lib/iomgr/resource_quota.cc +- src/core/lib/iomgr/sockaddr_utils.cc +- src/core/lib/iomgr/socket_factory_posix.cc +- src/core/lib/iomgr/socket_mutator.cc +- src/core/lib/iomgr/socket_utils_common_posix.cc +- src/core/lib/iomgr/socket_utils_linux.cc +- src/core/lib/iomgr/socket_utils_posix.cc +- src/core/lib/iomgr/socket_utils_uv.cc +- src/core/lib/iomgr/socket_utils_windows.cc +- src/core/lib/iomgr/socket_windows.cc +- src/core/lib/iomgr/tcp_client.cc +- src/core/lib/iomgr/tcp_client_cfstream.cc +- src/core/lib/iomgr/tcp_client_custom.cc +- src/core/lib/iomgr/tcp_client_posix.cc +- src/core/lib/iomgr/tcp_client_windows.cc +- src/core/lib/iomgr/tcp_custom.cc +- src/core/lib/iomgr/tcp_posix.cc +- src/core/lib/iomgr/tcp_server.cc +- src/core/lib/iomgr/tcp_server_custom.cc +- src/core/lib/iomgr/tcp_server_posix.cc +- src/core/lib/iomgr/tcp_server_utils_posix_common.cc +- src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +- src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +- src/core/lib/iomgr/tcp_server_windows.cc +- src/core/lib/iomgr/tcp_uv.cc +- src/core/lib/iomgr/tcp_windows.cc +- src/core/lib/iomgr/time_averaged_stats.cc +- src/core/lib/iomgr/timer.cc +- src/core/lib/iomgr/timer_custom.cc +- src/core/lib/iomgr/timer_generic.cc +- src/core/lib/iomgr/timer_heap.cc +- src/core/lib/iomgr/timer_manager.cc +- src/core/lib/iomgr/timer_uv.cc +- src/core/lib/iomgr/udp_server.cc +- src/core/lib/iomgr/unix_sockets_posix.cc +- src/core/lib/iomgr/unix_sockets_posix_noop.cc +- src/core/lib/iomgr/wakeup_fd_eventfd.cc +- src/core/lib/iomgr/wakeup_fd_nospecial.cc +- src/core/lib/iomgr/wakeup_fd_pipe.cc +- src/core/lib/iomgr/wakeup_fd_posix.cc +- src/core/lib/json/json.cc +- src/core/lib/json/json_reader.cc +- src/core/lib/json/json_string.cc +- src/core/lib/json/json_writer.cc +- src/core/lib/slice/b64.cc +- src/core/lib/slice/percent_encoding.cc +- src/core/lib/slice/slice.cc +- src/core/lib/slice/slice_buffer.cc +- src/core/lib/slice/slice_intern.cc +- src/core/lib/slice/slice_string_helpers.cc +- src/core/lib/surface/api_trace.cc +- src/core/lib/surface/byte_buffer.cc +- src/core/lib/surface/byte_buffer_reader.cc +- src/core/lib/surface/call.cc +- src/core/lib/surface/call_details.cc +- src/core/lib/surface/call_log_batch.cc +- src/core/lib/surface/channel.cc +- src/core/lib/surface/channel_init.cc +- src/core/lib/surface/channel_ping.cc +- src/core/lib/surface/channel_stack_type.cc +- src/core/lib/surface/completion_queue.cc +- src/core/lib/surface/completion_queue_factory.cc +- src/core/lib/surface/event_string.cc +- src/core/lib/surface/lame_client.cc +- src/core/lib/surface/metadata_array.cc +- src/core/lib/surface/server.cc +- src/core/lib/surface/validate_metadata.cc +- src/core/lib/surface/version.cc +- src/core/lib/transport/bdp_estimator.cc +- src/core/lib/transport/byte_stream.cc +- src/core/lib/transport/connectivity_state.cc +- src/core/lib/transport/error_utils.cc +- src/core/lib/transport/metadata.cc +- src/core/lib/transport/metadata_batch.cc +- src/core/lib/transport/pid_controller.cc +- src/core/lib/transport/static_metadata.cc +- src/core/lib/transport/status_conversion.cc +- src/core/lib/transport/status_metadata.cc +- src/core/lib/transport/timeout_encoding.cc +- src/core/lib/transport/transport.cc +- src/core/lib/transport/transport_op_string.cc +- src/core/lib/uri/uri_parser.cc +- src/core/lib/debug/trace.cc +- src/core/ext/filters/deadline/deadline_filter.cc + src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +- src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +- src/core/ext/upb-generated/gogoproto/gogo.upb.c +- src/core/ext/upb-generated/validate/validate.upb.c +- src/core/ext/upb-generated/google/api/annotations.upb.c +- src/core/ext/upb-generated/google/api/http.upb.c +- src/core/ext/upb-generated/google/protobuf/any.upb.c +- src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +- src/core/ext/upb-generated/google/protobuf/duration.upb.c +- src/core/ext/upb-generated/google/protobuf/empty.upb.c +- src/core/ext/upb-generated/google/protobuf/struct.upb.c +- src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +- src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +- src/core/ext/upb-generated/google/rpc/status.upb.c + src/cpp/codegen/codegen_init.cc + ) + +diff --git a/Makefile b/Makefile +index f8bd36f62f6..b25c748d3a9 100644 +--- a/Makefile ++++ b/Makefile +@@ -5695,205 +5695,7 @@ LIBGRPC++_SRC = \ + src/cpp/util/status.cc \ + src/cpp/util/string_ref.cc \ + src/cpp/util/time_cc.cc \ +- src/core/ext/filters/client_channel/backend_metric.cc \ +- src/core/ext/filters/client_channel/backup_poller.cc \ +- src/core/ext/filters/client_channel/channel_connectivity.cc \ +- src/core/ext/filters/client_channel/client_channel.cc \ +- src/core/ext/filters/client_channel/client_channel_channelz.cc \ +- src/core/ext/filters/client_channel/client_channel_factory.cc \ +- src/core/ext/filters/client_channel/client_channel_plugin.cc \ +- src/core/ext/filters/client_channel/global_subchannel_pool.cc \ +- src/core/ext/filters/client_channel/health/health_check_client.cc \ +- src/core/ext/filters/client_channel/http_connect_handshaker.cc \ +- src/core/ext/filters/client_channel/http_proxy.cc \ +- src/core/ext/filters/client_channel/lb_policy.cc \ +- src/core/ext/filters/client_channel/lb_policy_registry.cc \ +- src/core/ext/filters/client_channel/local_subchannel_pool.cc \ +- src/core/ext/filters/client_channel/parse_address.cc \ +- src/core/ext/filters/client_channel/proxy_mapper_registry.cc \ +- src/core/ext/filters/client_channel/resolver.cc \ +- src/core/ext/filters/client_channel/resolver_registry.cc \ +- src/core/ext/filters/client_channel/resolver_result_parsing.cc \ +- src/core/ext/filters/client_channel/resolving_lb_policy.cc \ +- src/core/ext/filters/client_channel/retry_throttle.cc \ +- src/core/ext/filters/client_channel/server_address.cc \ +- src/core/ext/filters/client_channel/service_config.cc \ +- src/core/ext/filters/client_channel/subchannel.cc \ +- src/core/ext/filters/client_channel/subchannel_pool_interface.cc \ +- src/core/lib/avl/avl.cc \ +- src/core/lib/backoff/backoff.cc \ +- src/core/lib/channel/channel_args.cc \ +- src/core/lib/channel/channel_stack.cc \ +- src/core/lib/channel/channel_stack_builder.cc \ +- src/core/lib/channel/channel_trace.cc \ +- src/core/lib/channel/channelz.cc \ +- src/core/lib/channel/channelz_registry.cc \ +- src/core/lib/channel/connected_channel.cc \ +- src/core/lib/channel/handshaker.cc \ +- src/core/lib/channel/handshaker_registry.cc \ +- src/core/lib/channel/status_util.cc \ +- src/core/lib/compression/compression.cc \ +- src/core/lib/compression/compression_args.cc \ +- src/core/lib/compression/compression_internal.cc \ +- src/core/lib/compression/message_compress.cc \ +- src/core/lib/compression/stream_compression.cc \ +- src/core/lib/compression/stream_compression_gzip.cc \ +- src/core/lib/compression/stream_compression_identity.cc \ +- src/core/lib/debug/stats.cc \ +- src/core/lib/debug/stats_data.cc \ +- src/core/lib/http/format_request.cc \ +- src/core/lib/http/httpcli.cc \ +- src/core/lib/http/parser.cc \ +- src/core/lib/iomgr/buffer_list.cc \ +- src/core/lib/iomgr/call_combiner.cc \ +- src/core/lib/iomgr/cfstream_handle.cc \ +- src/core/lib/iomgr/combiner.cc \ +- src/core/lib/iomgr/endpoint.cc \ +- src/core/lib/iomgr/endpoint_cfstream.cc \ +- src/core/lib/iomgr/endpoint_pair_posix.cc \ +- src/core/lib/iomgr/endpoint_pair_uv.cc \ +- src/core/lib/iomgr/endpoint_pair_windows.cc \ +- src/core/lib/iomgr/error.cc \ +- src/core/lib/iomgr/error_cfstream.cc \ +- src/core/lib/iomgr/ev_epoll1_linux.cc \ +- src/core/lib/iomgr/ev_epollex_linux.cc \ +- src/core/lib/iomgr/ev_poll_posix.cc \ +- src/core/lib/iomgr/ev_posix.cc \ +- src/core/lib/iomgr/ev_windows.cc \ +- src/core/lib/iomgr/exec_ctx.cc \ +- src/core/lib/iomgr/executor.cc \ +- src/core/lib/iomgr/executor/mpmcqueue.cc \ +- src/core/lib/iomgr/executor/threadpool.cc \ +- src/core/lib/iomgr/fork_posix.cc \ +- src/core/lib/iomgr/fork_windows.cc \ +- src/core/lib/iomgr/gethostname_fallback.cc \ +- src/core/lib/iomgr/gethostname_host_name_max.cc \ +- src/core/lib/iomgr/gethostname_sysconf.cc \ +- src/core/lib/iomgr/grpc_if_nametoindex_posix.cc \ +- src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc \ +- src/core/lib/iomgr/internal_errqueue.cc \ +- src/core/lib/iomgr/iocp_windows.cc \ +- src/core/lib/iomgr/iomgr.cc \ +- src/core/lib/iomgr/iomgr_custom.cc \ +- src/core/lib/iomgr/iomgr_internal.cc \ +- src/core/lib/iomgr/iomgr_posix.cc \ +- src/core/lib/iomgr/iomgr_posix_cfstream.cc \ +- src/core/lib/iomgr/iomgr_uv.cc \ +- src/core/lib/iomgr/iomgr_windows.cc \ +- src/core/lib/iomgr/is_epollexclusive_available.cc \ +- src/core/lib/iomgr/load_file.cc \ +- src/core/lib/iomgr/lockfree_event.cc \ +- src/core/lib/iomgr/logical_thread.cc \ +- src/core/lib/iomgr/polling_entity.cc \ +- src/core/lib/iomgr/pollset.cc \ +- src/core/lib/iomgr/pollset_custom.cc \ +- src/core/lib/iomgr/pollset_set.cc \ +- src/core/lib/iomgr/pollset_set_custom.cc \ +- src/core/lib/iomgr/pollset_set_windows.cc \ +- src/core/lib/iomgr/pollset_uv.cc \ +- src/core/lib/iomgr/pollset_windows.cc \ +- src/core/lib/iomgr/resolve_address.cc \ +- src/core/lib/iomgr/resolve_address_custom.cc \ +- src/core/lib/iomgr/resolve_address_posix.cc \ +- src/core/lib/iomgr/resolve_address_windows.cc \ +- src/core/lib/iomgr/resource_quota.cc \ +- src/core/lib/iomgr/sockaddr_utils.cc \ +- src/core/lib/iomgr/socket_factory_posix.cc \ +- src/core/lib/iomgr/socket_mutator.cc \ +- src/core/lib/iomgr/socket_utils_common_posix.cc \ +- src/core/lib/iomgr/socket_utils_linux.cc \ +- src/core/lib/iomgr/socket_utils_posix.cc \ +- src/core/lib/iomgr/socket_utils_uv.cc \ +- src/core/lib/iomgr/socket_utils_windows.cc \ +- src/core/lib/iomgr/socket_windows.cc \ +- src/core/lib/iomgr/tcp_client.cc \ +- src/core/lib/iomgr/tcp_client_cfstream.cc \ +- src/core/lib/iomgr/tcp_client_custom.cc \ +- src/core/lib/iomgr/tcp_client_posix.cc \ +- src/core/lib/iomgr/tcp_client_windows.cc \ +- src/core/lib/iomgr/tcp_custom.cc \ +- src/core/lib/iomgr/tcp_posix.cc \ +- src/core/lib/iomgr/tcp_server.cc \ +- src/core/lib/iomgr/tcp_server_custom.cc \ +- src/core/lib/iomgr/tcp_server_posix.cc \ +- src/core/lib/iomgr/tcp_server_utils_posix_common.cc \ +- src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc \ +- src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc \ +- src/core/lib/iomgr/tcp_server_windows.cc \ +- src/core/lib/iomgr/tcp_uv.cc \ +- src/core/lib/iomgr/tcp_windows.cc \ +- src/core/lib/iomgr/time_averaged_stats.cc \ +- src/core/lib/iomgr/timer.cc \ +- src/core/lib/iomgr/timer_custom.cc \ +- src/core/lib/iomgr/timer_generic.cc \ +- src/core/lib/iomgr/timer_heap.cc \ +- src/core/lib/iomgr/timer_manager.cc \ +- src/core/lib/iomgr/timer_uv.cc \ +- src/core/lib/iomgr/udp_server.cc \ +- src/core/lib/iomgr/unix_sockets_posix.cc \ +- src/core/lib/iomgr/unix_sockets_posix_noop.cc \ +- src/core/lib/iomgr/wakeup_fd_eventfd.cc \ +- src/core/lib/iomgr/wakeup_fd_nospecial.cc \ +- src/core/lib/iomgr/wakeup_fd_pipe.cc \ +- src/core/lib/iomgr/wakeup_fd_posix.cc \ +- src/core/lib/json/json.cc \ +- src/core/lib/json/json_reader.cc \ +- src/core/lib/json/json_string.cc \ +- src/core/lib/json/json_writer.cc \ +- src/core/lib/slice/b64.cc \ +- src/core/lib/slice/percent_encoding.cc \ +- src/core/lib/slice/slice.cc \ +- src/core/lib/slice/slice_buffer.cc \ +- src/core/lib/slice/slice_intern.cc \ +- src/core/lib/slice/slice_string_helpers.cc \ +- src/core/lib/surface/api_trace.cc \ +- src/core/lib/surface/byte_buffer.cc \ +- src/core/lib/surface/byte_buffer_reader.cc \ +- src/core/lib/surface/call.cc \ +- src/core/lib/surface/call_details.cc \ +- src/core/lib/surface/call_log_batch.cc \ +- src/core/lib/surface/channel.cc \ +- src/core/lib/surface/channel_init.cc \ +- src/core/lib/surface/channel_ping.cc \ +- src/core/lib/surface/channel_stack_type.cc \ +- src/core/lib/surface/completion_queue.cc \ +- src/core/lib/surface/completion_queue_factory.cc \ +- src/core/lib/surface/event_string.cc \ +- src/core/lib/surface/lame_client.cc \ +- src/core/lib/surface/metadata_array.cc \ +- src/core/lib/surface/server.cc \ +- src/core/lib/surface/validate_metadata.cc \ +- src/core/lib/surface/version.cc \ +- src/core/lib/transport/bdp_estimator.cc \ +- src/core/lib/transport/byte_stream.cc \ +- src/core/lib/transport/connectivity_state.cc \ +- src/core/lib/transport/error_utils.cc \ +- src/core/lib/transport/metadata.cc \ +- src/core/lib/transport/metadata_batch.cc \ +- src/core/lib/transport/pid_controller.cc \ +- src/core/lib/transport/static_metadata.cc \ +- src/core/lib/transport/status_conversion.cc \ +- src/core/lib/transport/status_metadata.cc \ +- src/core/lib/transport/timeout_encoding.cc \ +- src/core/lib/transport/transport.cc \ +- src/core/lib/transport/transport_op_string.cc \ +- src/core/lib/uri/uri_parser.cc \ +- src/core/lib/debug/trace.cc \ +- src/core/ext/filters/deadline/deadline_filter.cc \ + src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c \ +- src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c \ +- src/core/ext/upb-generated/gogoproto/gogo.upb.c \ +- src/core/ext/upb-generated/validate/validate.upb.c \ +- src/core/ext/upb-generated/google/api/annotations.upb.c \ +- src/core/ext/upb-generated/google/api/http.upb.c \ +- src/core/ext/upb-generated/google/protobuf/any.upb.c \ +- src/core/ext/upb-generated/google/protobuf/descriptor.upb.c \ +- src/core/ext/upb-generated/google/protobuf/duration.upb.c \ +- src/core/ext/upb-generated/google/protobuf/empty.upb.c \ +- src/core/ext/upb-generated/google/protobuf/struct.upb.c \ +- src/core/ext/upb-generated/google/protobuf/timestamp.upb.c \ +- src/core/ext/upb-generated/google/protobuf/wrappers.upb.c \ +- src/core/ext/upb-generated/google/rpc/status.upb.c \ + src/cpp/codegen/codegen_init.cc \ + + PUBLIC_HEADERS_CXX += \ +@@ -6926,205 +6728,7 @@ LIBGRPC++_UNSECURE_SRC = \ + src/cpp/util/status.cc \ + src/cpp/util/string_ref.cc \ + src/cpp/util/time_cc.cc \ +- src/core/ext/filters/client_channel/backend_metric.cc \ +- src/core/ext/filters/client_channel/backup_poller.cc \ +- src/core/ext/filters/client_channel/channel_connectivity.cc \ +- src/core/ext/filters/client_channel/client_channel.cc \ +- src/core/ext/filters/client_channel/client_channel_channelz.cc \ +- src/core/ext/filters/client_channel/client_channel_factory.cc \ +- src/core/ext/filters/client_channel/client_channel_plugin.cc \ +- src/core/ext/filters/client_channel/global_subchannel_pool.cc \ +- src/core/ext/filters/client_channel/health/health_check_client.cc \ +- src/core/ext/filters/client_channel/http_connect_handshaker.cc \ +- src/core/ext/filters/client_channel/http_proxy.cc \ +- src/core/ext/filters/client_channel/lb_policy.cc \ +- src/core/ext/filters/client_channel/lb_policy_registry.cc \ +- src/core/ext/filters/client_channel/local_subchannel_pool.cc \ +- src/core/ext/filters/client_channel/parse_address.cc \ +- src/core/ext/filters/client_channel/proxy_mapper_registry.cc \ +- src/core/ext/filters/client_channel/resolver.cc \ +- src/core/ext/filters/client_channel/resolver_registry.cc \ +- src/core/ext/filters/client_channel/resolver_result_parsing.cc \ +- src/core/ext/filters/client_channel/resolving_lb_policy.cc \ +- src/core/ext/filters/client_channel/retry_throttle.cc \ +- src/core/ext/filters/client_channel/server_address.cc \ +- src/core/ext/filters/client_channel/service_config.cc \ +- src/core/ext/filters/client_channel/subchannel.cc \ +- src/core/ext/filters/client_channel/subchannel_pool_interface.cc \ +- src/core/lib/avl/avl.cc \ +- src/core/lib/backoff/backoff.cc \ +- src/core/lib/channel/channel_args.cc \ +- src/core/lib/channel/channel_stack.cc \ +- src/core/lib/channel/channel_stack_builder.cc \ +- src/core/lib/channel/channel_trace.cc \ +- src/core/lib/channel/channelz.cc \ +- src/core/lib/channel/channelz_registry.cc \ +- src/core/lib/channel/connected_channel.cc \ +- src/core/lib/channel/handshaker.cc \ +- src/core/lib/channel/handshaker_registry.cc \ +- src/core/lib/channel/status_util.cc \ +- src/core/lib/compression/compression.cc \ +- src/core/lib/compression/compression_args.cc \ +- src/core/lib/compression/compression_internal.cc \ +- src/core/lib/compression/message_compress.cc \ +- src/core/lib/compression/stream_compression.cc \ +- src/core/lib/compression/stream_compression_gzip.cc \ +- src/core/lib/compression/stream_compression_identity.cc \ +- src/core/lib/debug/stats.cc \ +- src/core/lib/debug/stats_data.cc \ +- src/core/lib/http/format_request.cc \ +- src/core/lib/http/httpcli.cc \ +- src/core/lib/http/parser.cc \ +- src/core/lib/iomgr/buffer_list.cc \ +- src/core/lib/iomgr/call_combiner.cc \ +- src/core/lib/iomgr/cfstream_handle.cc \ +- src/core/lib/iomgr/combiner.cc \ +- src/core/lib/iomgr/endpoint.cc \ +- src/core/lib/iomgr/endpoint_cfstream.cc \ +- src/core/lib/iomgr/endpoint_pair_posix.cc \ +- src/core/lib/iomgr/endpoint_pair_uv.cc \ +- src/core/lib/iomgr/endpoint_pair_windows.cc \ +- src/core/lib/iomgr/error.cc \ +- src/core/lib/iomgr/error_cfstream.cc \ +- src/core/lib/iomgr/ev_epoll1_linux.cc \ +- src/core/lib/iomgr/ev_epollex_linux.cc \ +- src/core/lib/iomgr/ev_poll_posix.cc \ +- src/core/lib/iomgr/ev_posix.cc \ +- src/core/lib/iomgr/ev_windows.cc \ +- src/core/lib/iomgr/exec_ctx.cc \ +- src/core/lib/iomgr/executor.cc \ +- src/core/lib/iomgr/executor/mpmcqueue.cc \ +- src/core/lib/iomgr/executor/threadpool.cc \ +- src/core/lib/iomgr/fork_posix.cc \ +- src/core/lib/iomgr/fork_windows.cc \ +- src/core/lib/iomgr/gethostname_fallback.cc \ +- src/core/lib/iomgr/gethostname_host_name_max.cc \ +- src/core/lib/iomgr/gethostname_sysconf.cc \ +- src/core/lib/iomgr/grpc_if_nametoindex_posix.cc \ +- src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc \ +- src/core/lib/iomgr/internal_errqueue.cc \ +- src/core/lib/iomgr/iocp_windows.cc \ +- src/core/lib/iomgr/iomgr.cc \ +- src/core/lib/iomgr/iomgr_custom.cc \ +- src/core/lib/iomgr/iomgr_internal.cc \ +- src/core/lib/iomgr/iomgr_posix.cc \ +- src/core/lib/iomgr/iomgr_posix_cfstream.cc \ +- src/core/lib/iomgr/iomgr_uv.cc \ +- src/core/lib/iomgr/iomgr_windows.cc \ +- src/core/lib/iomgr/is_epollexclusive_available.cc \ +- src/core/lib/iomgr/load_file.cc \ +- src/core/lib/iomgr/lockfree_event.cc \ +- src/core/lib/iomgr/logical_thread.cc \ +- src/core/lib/iomgr/polling_entity.cc \ +- src/core/lib/iomgr/pollset.cc \ +- src/core/lib/iomgr/pollset_custom.cc \ +- src/core/lib/iomgr/pollset_set.cc \ +- src/core/lib/iomgr/pollset_set_custom.cc \ +- src/core/lib/iomgr/pollset_set_windows.cc \ +- src/core/lib/iomgr/pollset_uv.cc \ +- src/core/lib/iomgr/pollset_windows.cc \ +- src/core/lib/iomgr/resolve_address.cc \ +- src/core/lib/iomgr/resolve_address_custom.cc \ +- src/core/lib/iomgr/resolve_address_posix.cc \ +- src/core/lib/iomgr/resolve_address_windows.cc \ +- src/core/lib/iomgr/resource_quota.cc \ +- src/core/lib/iomgr/sockaddr_utils.cc \ +- src/core/lib/iomgr/socket_factory_posix.cc \ +- src/core/lib/iomgr/socket_mutator.cc \ +- src/core/lib/iomgr/socket_utils_common_posix.cc \ +- src/core/lib/iomgr/socket_utils_linux.cc \ +- src/core/lib/iomgr/socket_utils_posix.cc \ +- src/core/lib/iomgr/socket_utils_uv.cc \ +- src/core/lib/iomgr/socket_utils_windows.cc \ +- src/core/lib/iomgr/socket_windows.cc \ +- src/core/lib/iomgr/tcp_client.cc \ +- src/core/lib/iomgr/tcp_client_cfstream.cc \ +- src/core/lib/iomgr/tcp_client_custom.cc \ +- src/core/lib/iomgr/tcp_client_posix.cc \ +- src/core/lib/iomgr/tcp_client_windows.cc \ +- src/core/lib/iomgr/tcp_custom.cc \ +- src/core/lib/iomgr/tcp_posix.cc \ +- src/core/lib/iomgr/tcp_server.cc \ +- src/core/lib/iomgr/tcp_server_custom.cc \ +- src/core/lib/iomgr/tcp_server_posix.cc \ +- src/core/lib/iomgr/tcp_server_utils_posix_common.cc \ +- src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc \ +- src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc \ +- src/core/lib/iomgr/tcp_server_windows.cc \ +- src/core/lib/iomgr/tcp_uv.cc \ +- src/core/lib/iomgr/tcp_windows.cc \ +- src/core/lib/iomgr/time_averaged_stats.cc \ +- src/core/lib/iomgr/timer.cc \ +- src/core/lib/iomgr/timer_custom.cc \ +- src/core/lib/iomgr/timer_generic.cc \ +- src/core/lib/iomgr/timer_heap.cc \ +- src/core/lib/iomgr/timer_manager.cc \ +- src/core/lib/iomgr/timer_uv.cc \ +- src/core/lib/iomgr/udp_server.cc \ +- src/core/lib/iomgr/unix_sockets_posix.cc \ +- src/core/lib/iomgr/unix_sockets_posix_noop.cc \ +- src/core/lib/iomgr/wakeup_fd_eventfd.cc \ +- src/core/lib/iomgr/wakeup_fd_nospecial.cc \ +- src/core/lib/iomgr/wakeup_fd_pipe.cc \ +- src/core/lib/iomgr/wakeup_fd_posix.cc \ +- src/core/lib/json/json.cc \ +- src/core/lib/json/json_reader.cc \ +- src/core/lib/json/json_string.cc \ +- src/core/lib/json/json_writer.cc \ +- src/core/lib/slice/b64.cc \ +- src/core/lib/slice/percent_encoding.cc \ +- src/core/lib/slice/slice.cc \ +- src/core/lib/slice/slice_buffer.cc \ +- src/core/lib/slice/slice_intern.cc \ +- src/core/lib/slice/slice_string_helpers.cc \ +- src/core/lib/surface/api_trace.cc \ +- src/core/lib/surface/byte_buffer.cc \ +- src/core/lib/surface/byte_buffer_reader.cc \ +- src/core/lib/surface/call.cc \ +- src/core/lib/surface/call_details.cc \ +- src/core/lib/surface/call_log_batch.cc \ +- src/core/lib/surface/channel.cc \ +- src/core/lib/surface/channel_init.cc \ +- src/core/lib/surface/channel_ping.cc \ +- src/core/lib/surface/channel_stack_type.cc \ +- src/core/lib/surface/completion_queue.cc \ +- src/core/lib/surface/completion_queue_factory.cc \ +- src/core/lib/surface/event_string.cc \ +- src/core/lib/surface/lame_client.cc \ +- src/core/lib/surface/metadata_array.cc \ +- src/core/lib/surface/server.cc \ +- src/core/lib/surface/validate_metadata.cc \ +- src/core/lib/surface/version.cc \ +- src/core/lib/transport/bdp_estimator.cc \ +- src/core/lib/transport/byte_stream.cc \ +- src/core/lib/transport/connectivity_state.cc \ +- src/core/lib/transport/error_utils.cc \ +- src/core/lib/transport/metadata.cc \ +- src/core/lib/transport/metadata_batch.cc \ +- src/core/lib/transport/pid_controller.cc \ +- src/core/lib/transport/static_metadata.cc \ +- src/core/lib/transport/status_conversion.cc \ +- src/core/lib/transport/status_metadata.cc \ +- src/core/lib/transport/timeout_encoding.cc \ +- src/core/lib/transport/transport.cc \ +- src/core/lib/transport/transport_op_string.cc \ +- src/core/lib/uri/uri_parser.cc \ +- src/core/lib/debug/trace.cc \ +- src/core/ext/filters/deadline/deadline_filter.cc \ + src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c \ +- src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c \ +- src/core/ext/upb-generated/gogoproto/gogo.upb.c \ +- src/core/ext/upb-generated/validate/validate.upb.c \ +- src/core/ext/upb-generated/google/api/annotations.upb.c \ +- src/core/ext/upb-generated/google/api/http.upb.c \ +- src/core/ext/upb-generated/google/protobuf/any.upb.c \ +- src/core/ext/upb-generated/google/protobuf/descriptor.upb.c \ +- src/core/ext/upb-generated/google/protobuf/duration.upb.c \ +- src/core/ext/upb-generated/google/protobuf/empty.upb.c \ +- src/core/ext/upb-generated/google/protobuf/struct.upb.c \ +- src/core/ext/upb-generated/google/protobuf/timestamp.upb.c \ +- src/core/ext/upb-generated/google/protobuf/wrappers.upb.c \ +- src/core/ext/upb-generated/google/rpc/status.upb.c \ + src/cpp/codegen/codegen_init.cc \ + + PUBLIC_HEADERS_CXX += \ +diff --git a/build.yaml b/build.yaml +index 003ff5038de..214fbc619de 100644 +--- a/build.yaml ++++ b/build.yaml +@@ -601,7 +601,6 @@ filegroups: + uses: + - gpr_base_headers + - grpc_base_headers +- - grpc_client_channel + - grpc_health_upb + - grpc_transport_inproc_headers + - grpc++_codegen_base +diff --git a/grpc.gyp b/grpc.gyp +index 1dbb8e61295..7e2e0ead0a4 100644 +--- a/grpc.gyp ++++ b/grpc.gyp +@@ -1547,205 +1547,7 @@ + 'src/cpp/util/status.cc', + 'src/cpp/util/string_ref.cc', + 'src/cpp/util/time_cc.cc', +- 'src/core/ext/filters/client_channel/backend_metric.cc', +- 'src/core/ext/filters/client_channel/backup_poller.cc', +- 'src/core/ext/filters/client_channel/channel_connectivity.cc', +- 'src/core/ext/filters/client_channel/client_channel.cc', +- 'src/core/ext/filters/client_channel/client_channel_channelz.cc', +- 'src/core/ext/filters/client_channel/client_channel_factory.cc', +- 'src/core/ext/filters/client_channel/client_channel_plugin.cc', +- 'src/core/ext/filters/client_channel/global_subchannel_pool.cc', +- 'src/core/ext/filters/client_channel/health/health_check_client.cc', +- 'src/core/ext/filters/client_channel/http_connect_handshaker.cc', +- 'src/core/ext/filters/client_channel/http_proxy.cc', +- 'src/core/ext/filters/client_channel/lb_policy.cc', +- 'src/core/ext/filters/client_channel/lb_policy_registry.cc', +- 'src/core/ext/filters/client_channel/local_subchannel_pool.cc', +- 'src/core/ext/filters/client_channel/parse_address.cc', +- 'src/core/ext/filters/client_channel/proxy_mapper_registry.cc', +- 'src/core/ext/filters/client_channel/resolver.cc', +- 'src/core/ext/filters/client_channel/resolver_registry.cc', +- 'src/core/ext/filters/client_channel/resolver_result_parsing.cc', +- 'src/core/ext/filters/client_channel/resolving_lb_policy.cc', +- 'src/core/ext/filters/client_channel/retry_throttle.cc', +- 'src/core/ext/filters/client_channel/server_address.cc', +- 'src/core/ext/filters/client_channel/service_config.cc', +- 'src/core/ext/filters/client_channel/subchannel.cc', +- 'src/core/ext/filters/client_channel/subchannel_pool_interface.cc', +- 'src/core/lib/avl/avl.cc', +- 'src/core/lib/backoff/backoff.cc', +- 'src/core/lib/channel/channel_args.cc', +- 'src/core/lib/channel/channel_stack.cc', +- 'src/core/lib/channel/channel_stack_builder.cc', +- 'src/core/lib/channel/channel_trace.cc', +- 'src/core/lib/channel/channelz.cc', +- 'src/core/lib/channel/channelz_registry.cc', +- 'src/core/lib/channel/connected_channel.cc', +- 'src/core/lib/channel/handshaker.cc', +- 'src/core/lib/channel/handshaker_registry.cc', +- 'src/core/lib/channel/status_util.cc', +- 'src/core/lib/compression/compression.cc', +- 'src/core/lib/compression/compression_args.cc', +- 'src/core/lib/compression/compression_internal.cc', +- 'src/core/lib/compression/message_compress.cc', +- 'src/core/lib/compression/stream_compression.cc', +- 'src/core/lib/compression/stream_compression_gzip.cc', +- 'src/core/lib/compression/stream_compression_identity.cc', +- 'src/core/lib/debug/stats.cc', +- 'src/core/lib/debug/stats_data.cc', +- 'src/core/lib/http/format_request.cc', +- 'src/core/lib/http/httpcli.cc', +- 'src/core/lib/http/parser.cc', +- 'src/core/lib/iomgr/buffer_list.cc', +- 'src/core/lib/iomgr/call_combiner.cc', +- 'src/core/lib/iomgr/cfstream_handle.cc', +- 'src/core/lib/iomgr/combiner.cc', +- 'src/core/lib/iomgr/endpoint.cc', +- 'src/core/lib/iomgr/endpoint_cfstream.cc', +- 'src/core/lib/iomgr/endpoint_pair_posix.cc', +- 'src/core/lib/iomgr/endpoint_pair_uv.cc', +- 'src/core/lib/iomgr/endpoint_pair_windows.cc', +- 'src/core/lib/iomgr/error.cc', +- 'src/core/lib/iomgr/error_cfstream.cc', +- 'src/core/lib/iomgr/ev_epoll1_linux.cc', +- 'src/core/lib/iomgr/ev_epollex_linux.cc', +- 'src/core/lib/iomgr/ev_poll_posix.cc', +- 'src/core/lib/iomgr/ev_posix.cc', +- 'src/core/lib/iomgr/ev_windows.cc', +- 'src/core/lib/iomgr/exec_ctx.cc', +- 'src/core/lib/iomgr/executor.cc', +- 'src/core/lib/iomgr/executor/mpmcqueue.cc', +- 'src/core/lib/iomgr/executor/threadpool.cc', +- 'src/core/lib/iomgr/fork_posix.cc', +- 'src/core/lib/iomgr/fork_windows.cc', +- 'src/core/lib/iomgr/gethostname_fallback.cc', +- 'src/core/lib/iomgr/gethostname_host_name_max.cc', +- 'src/core/lib/iomgr/gethostname_sysconf.cc', +- 'src/core/lib/iomgr/grpc_if_nametoindex_posix.cc', +- 'src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc', +- 'src/core/lib/iomgr/internal_errqueue.cc', +- 'src/core/lib/iomgr/iocp_windows.cc', +- 'src/core/lib/iomgr/iomgr.cc', +- 'src/core/lib/iomgr/iomgr_custom.cc', +- 'src/core/lib/iomgr/iomgr_internal.cc', +- 'src/core/lib/iomgr/iomgr_posix.cc', +- 'src/core/lib/iomgr/iomgr_posix_cfstream.cc', +- 'src/core/lib/iomgr/iomgr_uv.cc', +- 'src/core/lib/iomgr/iomgr_windows.cc', +- 'src/core/lib/iomgr/is_epollexclusive_available.cc', +- 'src/core/lib/iomgr/load_file.cc', +- 'src/core/lib/iomgr/lockfree_event.cc', +- 'src/core/lib/iomgr/logical_thread.cc', +- 'src/core/lib/iomgr/polling_entity.cc', +- 'src/core/lib/iomgr/pollset.cc', +- 'src/core/lib/iomgr/pollset_custom.cc', +- 'src/core/lib/iomgr/pollset_set.cc', +- 'src/core/lib/iomgr/pollset_set_custom.cc', +- 'src/core/lib/iomgr/pollset_set_windows.cc', +- 'src/core/lib/iomgr/pollset_uv.cc', +- 'src/core/lib/iomgr/pollset_windows.cc', +- 'src/core/lib/iomgr/resolve_address.cc', +- 'src/core/lib/iomgr/resolve_address_custom.cc', +- 'src/core/lib/iomgr/resolve_address_posix.cc', +- 'src/core/lib/iomgr/resolve_address_windows.cc', +- 'src/core/lib/iomgr/resource_quota.cc', +- 'src/core/lib/iomgr/sockaddr_utils.cc', +- 'src/core/lib/iomgr/socket_factory_posix.cc', +- 'src/core/lib/iomgr/socket_mutator.cc', +- 'src/core/lib/iomgr/socket_utils_common_posix.cc', +- 'src/core/lib/iomgr/socket_utils_linux.cc', +- 'src/core/lib/iomgr/socket_utils_posix.cc', +- 'src/core/lib/iomgr/socket_utils_uv.cc', +- 'src/core/lib/iomgr/socket_utils_windows.cc', +- 'src/core/lib/iomgr/socket_windows.cc', +- 'src/core/lib/iomgr/tcp_client.cc', +- 'src/core/lib/iomgr/tcp_client_cfstream.cc', +- 'src/core/lib/iomgr/tcp_client_custom.cc', +- 'src/core/lib/iomgr/tcp_client_posix.cc', +- 'src/core/lib/iomgr/tcp_client_windows.cc', +- 'src/core/lib/iomgr/tcp_custom.cc', +- 'src/core/lib/iomgr/tcp_posix.cc', +- 'src/core/lib/iomgr/tcp_server.cc', +- 'src/core/lib/iomgr/tcp_server_custom.cc', +- 'src/core/lib/iomgr/tcp_server_posix.cc', +- 'src/core/lib/iomgr/tcp_server_utils_posix_common.cc', +- 'src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc', +- 'src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc', +- 'src/core/lib/iomgr/tcp_server_windows.cc', +- 'src/core/lib/iomgr/tcp_uv.cc', +- 'src/core/lib/iomgr/tcp_windows.cc', +- 'src/core/lib/iomgr/time_averaged_stats.cc', +- 'src/core/lib/iomgr/timer.cc', +- 'src/core/lib/iomgr/timer_custom.cc', +- 'src/core/lib/iomgr/timer_generic.cc', +- 'src/core/lib/iomgr/timer_heap.cc', +- 'src/core/lib/iomgr/timer_manager.cc', +- 'src/core/lib/iomgr/timer_uv.cc', +- 'src/core/lib/iomgr/udp_server.cc', +- 'src/core/lib/iomgr/unix_sockets_posix.cc', +- 'src/core/lib/iomgr/unix_sockets_posix_noop.cc', +- 'src/core/lib/iomgr/wakeup_fd_eventfd.cc', +- 'src/core/lib/iomgr/wakeup_fd_nospecial.cc', +- 'src/core/lib/iomgr/wakeup_fd_pipe.cc', +- 'src/core/lib/iomgr/wakeup_fd_posix.cc', +- 'src/core/lib/json/json.cc', +- 'src/core/lib/json/json_reader.cc', +- 'src/core/lib/json/json_string.cc', +- 'src/core/lib/json/json_writer.cc', +- 'src/core/lib/slice/b64.cc', +- 'src/core/lib/slice/percent_encoding.cc', +- 'src/core/lib/slice/slice.cc', +- 'src/core/lib/slice/slice_buffer.cc', +- 'src/core/lib/slice/slice_intern.cc', +- 'src/core/lib/slice/slice_string_helpers.cc', +- 'src/core/lib/surface/api_trace.cc', +- 'src/core/lib/surface/byte_buffer.cc', +- 'src/core/lib/surface/byte_buffer_reader.cc', +- 'src/core/lib/surface/call.cc', +- 'src/core/lib/surface/call_details.cc', +- 'src/core/lib/surface/call_log_batch.cc', +- 'src/core/lib/surface/channel.cc', +- 'src/core/lib/surface/channel_init.cc', +- 'src/core/lib/surface/channel_ping.cc', +- 'src/core/lib/surface/channel_stack_type.cc', +- 'src/core/lib/surface/completion_queue.cc', +- 'src/core/lib/surface/completion_queue_factory.cc', +- 'src/core/lib/surface/event_string.cc', +- 'src/core/lib/surface/lame_client.cc', +- 'src/core/lib/surface/metadata_array.cc', +- 'src/core/lib/surface/server.cc', +- 'src/core/lib/surface/validate_metadata.cc', +- 'src/core/lib/surface/version.cc', +- 'src/core/lib/transport/bdp_estimator.cc', +- 'src/core/lib/transport/byte_stream.cc', +- 'src/core/lib/transport/connectivity_state.cc', +- 'src/core/lib/transport/error_utils.cc', +- 'src/core/lib/transport/metadata.cc', +- 'src/core/lib/transport/metadata_batch.cc', +- 'src/core/lib/transport/pid_controller.cc', +- 'src/core/lib/transport/static_metadata.cc', +- 'src/core/lib/transport/status_conversion.cc', +- 'src/core/lib/transport/status_metadata.cc', +- 'src/core/lib/transport/timeout_encoding.cc', +- 'src/core/lib/transport/transport.cc', +- 'src/core/lib/transport/transport_op_string.cc', +- 'src/core/lib/uri/uri_parser.cc', +- 'src/core/lib/debug/trace.cc', +- 'src/core/ext/filters/deadline/deadline_filter.cc', + 'src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c', +- 'src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c', +- 'src/core/ext/upb-generated/gogoproto/gogo.upb.c', +- 'src/core/ext/upb-generated/validate/validate.upb.c', +- 'src/core/ext/upb-generated/google/api/annotations.upb.c', +- 'src/core/ext/upb-generated/google/api/http.upb.c', +- 'src/core/ext/upb-generated/google/protobuf/any.upb.c', +- 'src/core/ext/upb-generated/google/protobuf/descriptor.upb.c', +- 'src/core/ext/upb-generated/google/protobuf/duration.upb.c', +- 'src/core/ext/upb-generated/google/protobuf/empty.upb.c', +- 'src/core/ext/upb-generated/google/protobuf/struct.upb.c', +- 'src/core/ext/upb-generated/google/protobuf/timestamp.upb.c', +- 'src/core/ext/upb-generated/google/protobuf/wrappers.upb.c', +- 'src/core/ext/upb-generated/google/rpc/status.upb.c', + 'src/cpp/codegen/codegen_init.cc', + ], + }, +@@ -1901,205 +1703,7 @@ + 'src/cpp/util/status.cc', + 'src/cpp/util/string_ref.cc', + 'src/cpp/util/time_cc.cc', +- 'src/core/ext/filters/client_channel/backend_metric.cc', +- 'src/core/ext/filters/client_channel/backup_poller.cc', +- 'src/core/ext/filters/client_channel/channel_connectivity.cc', +- 'src/core/ext/filters/client_channel/client_channel.cc', +- 'src/core/ext/filters/client_channel/client_channel_channelz.cc', +- 'src/core/ext/filters/client_channel/client_channel_factory.cc', +- 'src/core/ext/filters/client_channel/client_channel_plugin.cc', +- 'src/core/ext/filters/client_channel/global_subchannel_pool.cc', +- 'src/core/ext/filters/client_channel/health/health_check_client.cc', +- 'src/core/ext/filters/client_channel/http_connect_handshaker.cc', +- 'src/core/ext/filters/client_channel/http_proxy.cc', +- 'src/core/ext/filters/client_channel/lb_policy.cc', +- 'src/core/ext/filters/client_channel/lb_policy_registry.cc', +- 'src/core/ext/filters/client_channel/local_subchannel_pool.cc', +- 'src/core/ext/filters/client_channel/parse_address.cc', +- 'src/core/ext/filters/client_channel/proxy_mapper_registry.cc', +- 'src/core/ext/filters/client_channel/resolver.cc', +- 'src/core/ext/filters/client_channel/resolver_registry.cc', +- 'src/core/ext/filters/client_channel/resolver_result_parsing.cc', +- 'src/core/ext/filters/client_channel/resolving_lb_policy.cc', +- 'src/core/ext/filters/client_channel/retry_throttle.cc', +- 'src/core/ext/filters/client_channel/server_address.cc', +- 'src/core/ext/filters/client_channel/service_config.cc', +- 'src/core/ext/filters/client_channel/subchannel.cc', +- 'src/core/ext/filters/client_channel/subchannel_pool_interface.cc', +- 'src/core/lib/avl/avl.cc', +- 'src/core/lib/backoff/backoff.cc', +- 'src/core/lib/channel/channel_args.cc', +- 'src/core/lib/channel/channel_stack.cc', +- 'src/core/lib/channel/channel_stack_builder.cc', +- 'src/core/lib/channel/channel_trace.cc', +- 'src/core/lib/channel/channelz.cc', +- 'src/core/lib/channel/channelz_registry.cc', +- 'src/core/lib/channel/connected_channel.cc', +- 'src/core/lib/channel/handshaker.cc', +- 'src/core/lib/channel/handshaker_registry.cc', +- 'src/core/lib/channel/status_util.cc', +- 'src/core/lib/compression/compression.cc', +- 'src/core/lib/compression/compression_args.cc', +- 'src/core/lib/compression/compression_internal.cc', +- 'src/core/lib/compression/message_compress.cc', +- 'src/core/lib/compression/stream_compression.cc', +- 'src/core/lib/compression/stream_compression_gzip.cc', +- 'src/core/lib/compression/stream_compression_identity.cc', +- 'src/core/lib/debug/stats.cc', +- 'src/core/lib/debug/stats_data.cc', +- 'src/core/lib/http/format_request.cc', +- 'src/core/lib/http/httpcli.cc', +- 'src/core/lib/http/parser.cc', +- 'src/core/lib/iomgr/buffer_list.cc', +- 'src/core/lib/iomgr/call_combiner.cc', +- 'src/core/lib/iomgr/cfstream_handle.cc', +- 'src/core/lib/iomgr/combiner.cc', +- 'src/core/lib/iomgr/endpoint.cc', +- 'src/core/lib/iomgr/endpoint_cfstream.cc', +- 'src/core/lib/iomgr/endpoint_pair_posix.cc', +- 'src/core/lib/iomgr/endpoint_pair_uv.cc', +- 'src/core/lib/iomgr/endpoint_pair_windows.cc', +- 'src/core/lib/iomgr/error.cc', +- 'src/core/lib/iomgr/error_cfstream.cc', +- 'src/core/lib/iomgr/ev_epoll1_linux.cc', +- 'src/core/lib/iomgr/ev_epollex_linux.cc', +- 'src/core/lib/iomgr/ev_poll_posix.cc', +- 'src/core/lib/iomgr/ev_posix.cc', +- 'src/core/lib/iomgr/ev_windows.cc', +- 'src/core/lib/iomgr/exec_ctx.cc', +- 'src/core/lib/iomgr/executor.cc', +- 'src/core/lib/iomgr/executor/mpmcqueue.cc', +- 'src/core/lib/iomgr/executor/threadpool.cc', +- 'src/core/lib/iomgr/fork_posix.cc', +- 'src/core/lib/iomgr/fork_windows.cc', +- 'src/core/lib/iomgr/gethostname_fallback.cc', +- 'src/core/lib/iomgr/gethostname_host_name_max.cc', +- 'src/core/lib/iomgr/gethostname_sysconf.cc', +- 'src/core/lib/iomgr/grpc_if_nametoindex_posix.cc', +- 'src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc', +- 'src/core/lib/iomgr/internal_errqueue.cc', +- 'src/core/lib/iomgr/iocp_windows.cc', +- 'src/core/lib/iomgr/iomgr.cc', +- 'src/core/lib/iomgr/iomgr_custom.cc', +- 'src/core/lib/iomgr/iomgr_internal.cc', +- 'src/core/lib/iomgr/iomgr_posix.cc', +- 'src/core/lib/iomgr/iomgr_posix_cfstream.cc', +- 'src/core/lib/iomgr/iomgr_uv.cc', +- 'src/core/lib/iomgr/iomgr_windows.cc', +- 'src/core/lib/iomgr/is_epollexclusive_available.cc', +- 'src/core/lib/iomgr/load_file.cc', +- 'src/core/lib/iomgr/lockfree_event.cc', +- 'src/core/lib/iomgr/logical_thread.cc', +- 'src/core/lib/iomgr/polling_entity.cc', +- 'src/core/lib/iomgr/pollset.cc', +- 'src/core/lib/iomgr/pollset_custom.cc', +- 'src/core/lib/iomgr/pollset_set.cc', +- 'src/core/lib/iomgr/pollset_set_custom.cc', +- 'src/core/lib/iomgr/pollset_set_windows.cc', +- 'src/core/lib/iomgr/pollset_uv.cc', +- 'src/core/lib/iomgr/pollset_windows.cc', +- 'src/core/lib/iomgr/resolve_address.cc', +- 'src/core/lib/iomgr/resolve_address_custom.cc', +- 'src/core/lib/iomgr/resolve_address_posix.cc', +- 'src/core/lib/iomgr/resolve_address_windows.cc', +- 'src/core/lib/iomgr/resource_quota.cc', +- 'src/core/lib/iomgr/sockaddr_utils.cc', +- 'src/core/lib/iomgr/socket_factory_posix.cc', +- 'src/core/lib/iomgr/socket_mutator.cc', +- 'src/core/lib/iomgr/socket_utils_common_posix.cc', +- 'src/core/lib/iomgr/socket_utils_linux.cc', +- 'src/core/lib/iomgr/socket_utils_posix.cc', +- 'src/core/lib/iomgr/socket_utils_uv.cc', +- 'src/core/lib/iomgr/socket_utils_windows.cc', +- 'src/core/lib/iomgr/socket_windows.cc', +- 'src/core/lib/iomgr/tcp_client.cc', +- 'src/core/lib/iomgr/tcp_client_cfstream.cc', +- 'src/core/lib/iomgr/tcp_client_custom.cc', +- 'src/core/lib/iomgr/tcp_client_posix.cc', +- 'src/core/lib/iomgr/tcp_client_windows.cc', +- 'src/core/lib/iomgr/tcp_custom.cc', +- 'src/core/lib/iomgr/tcp_posix.cc', +- 'src/core/lib/iomgr/tcp_server.cc', +- 'src/core/lib/iomgr/tcp_server_custom.cc', +- 'src/core/lib/iomgr/tcp_server_posix.cc', +- 'src/core/lib/iomgr/tcp_server_utils_posix_common.cc', +- 'src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc', +- 'src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc', +- 'src/core/lib/iomgr/tcp_server_windows.cc', +- 'src/core/lib/iomgr/tcp_uv.cc', +- 'src/core/lib/iomgr/tcp_windows.cc', +- 'src/core/lib/iomgr/time_averaged_stats.cc', +- 'src/core/lib/iomgr/timer.cc', +- 'src/core/lib/iomgr/timer_custom.cc', +- 'src/core/lib/iomgr/timer_generic.cc', +- 'src/core/lib/iomgr/timer_heap.cc', +- 'src/core/lib/iomgr/timer_manager.cc', +- 'src/core/lib/iomgr/timer_uv.cc', +- 'src/core/lib/iomgr/udp_server.cc', +- 'src/core/lib/iomgr/unix_sockets_posix.cc', +- 'src/core/lib/iomgr/unix_sockets_posix_noop.cc', +- 'src/core/lib/iomgr/wakeup_fd_eventfd.cc', +- 'src/core/lib/iomgr/wakeup_fd_nospecial.cc', +- 'src/core/lib/iomgr/wakeup_fd_pipe.cc', +- 'src/core/lib/iomgr/wakeup_fd_posix.cc', +- 'src/core/lib/json/json.cc', +- 'src/core/lib/json/json_reader.cc', +- 'src/core/lib/json/json_string.cc', +- 'src/core/lib/json/json_writer.cc', +- 'src/core/lib/slice/b64.cc', +- 'src/core/lib/slice/percent_encoding.cc', +- 'src/core/lib/slice/slice.cc', +- 'src/core/lib/slice/slice_buffer.cc', +- 'src/core/lib/slice/slice_intern.cc', +- 'src/core/lib/slice/slice_string_helpers.cc', +- 'src/core/lib/surface/api_trace.cc', +- 'src/core/lib/surface/byte_buffer.cc', +- 'src/core/lib/surface/byte_buffer_reader.cc', +- 'src/core/lib/surface/call.cc', +- 'src/core/lib/surface/call_details.cc', +- 'src/core/lib/surface/call_log_batch.cc', +- 'src/core/lib/surface/channel.cc', +- 'src/core/lib/surface/channel_init.cc', +- 'src/core/lib/surface/channel_ping.cc', +- 'src/core/lib/surface/channel_stack_type.cc', +- 'src/core/lib/surface/completion_queue.cc', +- 'src/core/lib/surface/completion_queue_factory.cc', +- 'src/core/lib/surface/event_string.cc', +- 'src/core/lib/surface/lame_client.cc', +- 'src/core/lib/surface/metadata_array.cc', +- 'src/core/lib/surface/server.cc', +- 'src/core/lib/surface/validate_metadata.cc', +- 'src/core/lib/surface/version.cc', +- 'src/core/lib/transport/bdp_estimator.cc', +- 'src/core/lib/transport/byte_stream.cc', +- 'src/core/lib/transport/connectivity_state.cc', +- 'src/core/lib/transport/error_utils.cc', +- 'src/core/lib/transport/metadata.cc', +- 'src/core/lib/transport/metadata_batch.cc', +- 'src/core/lib/transport/pid_controller.cc', +- 'src/core/lib/transport/static_metadata.cc', +- 'src/core/lib/transport/status_conversion.cc', +- 'src/core/lib/transport/status_metadata.cc', +- 'src/core/lib/transport/timeout_encoding.cc', +- 'src/core/lib/transport/transport.cc', +- 'src/core/lib/transport/transport_op_string.cc', +- 'src/core/lib/uri/uri_parser.cc', +- 'src/core/lib/debug/trace.cc', +- 'src/core/ext/filters/deadline/deadline_filter.cc', + 'src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c', +- 'src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c', +- 'src/core/ext/upb-generated/gogoproto/gogo.upb.c', +- 'src/core/ext/upb-generated/validate/validate.upb.c', +- 'src/core/ext/upb-generated/google/api/annotations.upb.c', +- 'src/core/ext/upb-generated/google/api/http.upb.c', +- 'src/core/ext/upb-generated/google/protobuf/any.upb.c', +- 'src/core/ext/upb-generated/google/protobuf/descriptor.upb.c', +- 'src/core/ext/upb-generated/google/protobuf/duration.upb.c', +- 'src/core/ext/upb-generated/google/protobuf/empty.upb.c', +- 'src/core/ext/upb-generated/google/protobuf/struct.upb.c', +- 'src/core/ext/upb-generated/google/protobuf/timestamp.upb.c', +- 'src/core/ext/upb-generated/google/protobuf/wrappers.upb.c', +- 'src/core/ext/upb-generated/google/rpc/status.upb.c', + 'src/cpp/codegen/codegen_init.cc', + ], + }, +diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal +index dc84a6f3fd7..f3c1bad6b7a 100644 +--- a/tools/doxygen/Doxyfile.c++.internal ++++ b/tools/doxygen/Doxyfile.c++.internal +@@ -1063,135 +1063,32 @@ include/grpcpp/support/sync_stream.h \ + include/grpcpp/support/sync_stream_impl.h \ + include/grpcpp/support/time.h \ + include/grpcpp/support/validate_service_config.h \ +-src/core/ext/filters/client_channel/backend_metric.cc \ +-src/core/ext/filters/client_channel/backend_metric.h \ +-src/core/ext/filters/client_channel/backup_poller.cc \ +-src/core/ext/filters/client_channel/backup_poller.h \ +-src/core/ext/filters/client_channel/channel_connectivity.cc \ +-src/core/ext/filters/client_channel/client_channel.cc \ +-src/core/ext/filters/client_channel/client_channel.h \ +-src/core/ext/filters/client_channel/client_channel_channelz.cc \ +-src/core/ext/filters/client_channel/client_channel_channelz.h \ +-src/core/ext/filters/client_channel/client_channel_factory.cc \ +-src/core/ext/filters/client_channel/client_channel_factory.h \ +-src/core/ext/filters/client_channel/client_channel_plugin.cc \ +-src/core/ext/filters/client_channel/connector.h \ +-src/core/ext/filters/client_channel/global_subchannel_pool.cc \ +-src/core/ext/filters/client_channel/global_subchannel_pool.h \ +-src/core/ext/filters/client_channel/health/health_check_client.cc \ +-src/core/ext/filters/client_channel/health/health_check_client.h \ +-src/core/ext/filters/client_channel/http_connect_handshaker.cc \ +-src/core/ext/filters/client_channel/http_connect_handshaker.h \ +-src/core/ext/filters/client_channel/http_proxy.cc \ +-src/core/ext/filters/client_channel/http_proxy.h \ +-src/core/ext/filters/client_channel/lb_policy.cc \ +-src/core/ext/filters/client_channel/lb_policy.h \ +-src/core/ext/filters/client_channel/lb_policy_factory.h \ +-src/core/ext/filters/client_channel/lb_policy_registry.cc \ +-src/core/ext/filters/client_channel/lb_policy_registry.h \ +-src/core/ext/filters/client_channel/local_subchannel_pool.cc \ +-src/core/ext/filters/client_channel/local_subchannel_pool.h \ +-src/core/ext/filters/client_channel/parse_address.cc \ +-src/core/ext/filters/client_channel/parse_address.h \ +-src/core/ext/filters/client_channel/proxy_mapper.h \ +-src/core/ext/filters/client_channel/proxy_mapper_registry.cc \ +-src/core/ext/filters/client_channel/proxy_mapper_registry.h \ +-src/core/ext/filters/client_channel/resolver.cc \ +-src/core/ext/filters/client_channel/resolver.h \ +-src/core/ext/filters/client_channel/resolver_factory.h \ +-src/core/ext/filters/client_channel/resolver_registry.cc \ +-src/core/ext/filters/client_channel/resolver_registry.h \ +-src/core/ext/filters/client_channel/resolver_result_parsing.cc \ +-src/core/ext/filters/client_channel/resolver_result_parsing.h \ +-src/core/ext/filters/client_channel/resolving_lb_policy.cc \ +-src/core/ext/filters/client_channel/resolving_lb_policy.h \ +-src/core/ext/filters/client_channel/retry_throttle.cc \ +-src/core/ext/filters/client_channel/retry_throttle.h \ +-src/core/ext/filters/client_channel/server_address.cc \ +-src/core/ext/filters/client_channel/server_address.h \ +-src/core/ext/filters/client_channel/service_config.cc \ +-src/core/ext/filters/client_channel/service_config.h \ +-src/core/ext/filters/client_channel/subchannel.cc \ +-src/core/ext/filters/client_channel/subchannel.h \ +-src/core/ext/filters/client_channel/subchannel_interface.h \ +-src/core/ext/filters/client_channel/subchannel_pool_interface.cc \ +-src/core/ext/filters/client_channel/subchannel_pool_interface.h \ +-src/core/ext/filters/deadline/deadline_filter.cc \ +-src/core/ext/filters/deadline/deadline_filter.h \ + src/core/ext/transport/inproc/inproc_transport.h \ +-src/core/ext/upb-generated/gogoproto/gogo.upb.c \ +-src/core/ext/upb-generated/gogoproto/gogo.upb.h \ +-src/core/ext/upb-generated/google/api/annotations.upb.c \ +-src/core/ext/upb-generated/google/api/annotations.upb.h \ +-src/core/ext/upb-generated/google/api/http.upb.c \ +-src/core/ext/upb-generated/google/api/http.upb.h \ +-src/core/ext/upb-generated/google/protobuf/any.upb.c \ +-src/core/ext/upb-generated/google/protobuf/any.upb.h \ +-src/core/ext/upb-generated/google/protobuf/descriptor.upb.c \ +-src/core/ext/upb-generated/google/protobuf/descriptor.upb.h \ +-src/core/ext/upb-generated/google/protobuf/duration.upb.c \ +-src/core/ext/upb-generated/google/protobuf/duration.upb.h \ +-src/core/ext/upb-generated/google/protobuf/empty.upb.c \ +-src/core/ext/upb-generated/google/protobuf/empty.upb.h \ +-src/core/ext/upb-generated/google/protobuf/struct.upb.c \ +-src/core/ext/upb-generated/google/protobuf/struct.upb.h \ +-src/core/ext/upb-generated/google/protobuf/timestamp.upb.c \ +-src/core/ext/upb-generated/google/protobuf/timestamp.upb.h \ +-src/core/ext/upb-generated/google/protobuf/wrappers.upb.c \ +-src/core/ext/upb-generated/google/protobuf/wrappers.upb.h \ +-src/core/ext/upb-generated/google/rpc/status.upb.c \ +-src/core/ext/upb-generated/google/rpc/status.upb.h \ + src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c \ + src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h \ +-src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c \ +-src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h \ +-src/core/ext/upb-generated/validate/validate.upb.c \ +-src/core/ext/upb-generated/validate/validate.upb.h \ +-src/core/lib/avl/avl.cc \ + src/core/lib/avl/avl.h \ +-src/core/lib/backoff/backoff.cc \ + src/core/lib/backoff/backoff.h \ +-src/core/lib/channel/channel_args.cc \ + src/core/lib/channel/channel_args.h \ +-src/core/lib/channel/channel_stack.cc \ + src/core/lib/channel/channel_stack.h \ +-src/core/lib/channel/channel_stack_builder.cc \ + src/core/lib/channel/channel_stack_builder.h \ +-src/core/lib/channel/channel_trace.cc \ + src/core/lib/channel/channel_trace.h \ +-src/core/lib/channel/channelz.cc \ + src/core/lib/channel/channelz.h \ +-src/core/lib/channel/channelz_registry.cc \ + src/core/lib/channel/channelz_registry.h \ +-src/core/lib/channel/connected_channel.cc \ + src/core/lib/channel/connected_channel.h \ + src/core/lib/channel/context.h \ +-src/core/lib/channel/handshaker.cc \ + src/core/lib/channel/handshaker.h \ + src/core/lib/channel/handshaker_factory.h \ +-src/core/lib/channel/handshaker_registry.cc \ + src/core/lib/channel/handshaker_registry.h \ +-src/core/lib/channel/status_util.cc \ + src/core/lib/channel/status_util.h \ + src/core/lib/compression/algorithm_metadata.h \ +-src/core/lib/compression/compression.cc \ +-src/core/lib/compression/compression_args.cc \ + src/core/lib/compression/compression_args.h \ +-src/core/lib/compression/compression_internal.cc \ + src/core/lib/compression/compression_internal.h \ +-src/core/lib/compression/message_compress.cc \ + src/core/lib/compression/message_compress.h \ +-src/core/lib/compression/stream_compression.cc \ + src/core/lib/compression/stream_compression.h \ +-src/core/lib/compression/stream_compression_gzip.cc \ + src/core/lib/compression/stream_compression_gzip.h \ +-src/core/lib/compression/stream_compression_identity.cc \ + src/core/lib/compression/stream_compression_identity.h \ +-src/core/lib/debug/stats.cc \ + src/core/lib/debug/stats.h \ +-src/core/lib/debug/stats_data.cc \ + src/core/lib/debug/stats_data.h \ +-src/core/lib/debug/trace.cc \ + src/core/lib/debug/trace.h \ + src/core/lib/gpr/alloc.h \ + src/core/lib/gpr/arena.h \ +@@ -1228,257 +1125,120 @@ src/core/lib/gprpp/ref_counted_ptr.h \ + src/core/lib/gprpp/string_view.h \ + src/core/lib/gprpp/sync.h \ + src/core/lib/gprpp/thd.h \ +-src/core/lib/http/format_request.cc \ + src/core/lib/http/format_request.h \ +-src/core/lib/http/httpcli.cc \ + src/core/lib/http/httpcli.h \ +-src/core/lib/http/parser.cc \ + src/core/lib/http/parser.h \ + src/core/lib/iomgr/block_annotate.h \ +-src/core/lib/iomgr/buffer_list.cc \ + src/core/lib/iomgr/buffer_list.h \ +-src/core/lib/iomgr/call_combiner.cc \ + src/core/lib/iomgr/call_combiner.h \ +-src/core/lib/iomgr/cfstream_handle.cc \ + src/core/lib/iomgr/cfstream_handle.h \ + src/core/lib/iomgr/closure.h \ +-src/core/lib/iomgr/combiner.cc \ + src/core/lib/iomgr/combiner.h \ + src/core/lib/iomgr/dynamic_annotations.h \ +-src/core/lib/iomgr/endpoint.cc \ + src/core/lib/iomgr/endpoint.h \ +-src/core/lib/iomgr/endpoint_cfstream.cc \ + src/core/lib/iomgr/endpoint_cfstream.h \ + src/core/lib/iomgr/endpoint_pair.h \ +-src/core/lib/iomgr/endpoint_pair_posix.cc \ +-src/core/lib/iomgr/endpoint_pair_uv.cc \ +-src/core/lib/iomgr/endpoint_pair_windows.cc \ +-src/core/lib/iomgr/error.cc \ + src/core/lib/iomgr/error.h \ +-src/core/lib/iomgr/error_cfstream.cc \ + src/core/lib/iomgr/error_cfstream.h \ + src/core/lib/iomgr/error_internal.h \ +-src/core/lib/iomgr/ev_epoll1_linux.cc \ + src/core/lib/iomgr/ev_epoll1_linux.h \ +-src/core/lib/iomgr/ev_epollex_linux.cc \ + src/core/lib/iomgr/ev_epollex_linux.h \ +-src/core/lib/iomgr/ev_poll_posix.cc \ + src/core/lib/iomgr/ev_poll_posix.h \ +-src/core/lib/iomgr/ev_posix.cc \ + src/core/lib/iomgr/ev_posix.h \ +-src/core/lib/iomgr/ev_windows.cc \ +-src/core/lib/iomgr/exec_ctx.cc \ + src/core/lib/iomgr/exec_ctx.h \ +-src/core/lib/iomgr/executor.cc \ + src/core/lib/iomgr/executor.h \ +-src/core/lib/iomgr/executor/mpmcqueue.cc \ + src/core/lib/iomgr/executor/mpmcqueue.h \ +-src/core/lib/iomgr/executor/threadpool.cc \ + src/core/lib/iomgr/executor/threadpool.h \ +-src/core/lib/iomgr/fork_posix.cc \ +-src/core/lib/iomgr/fork_windows.cc \ + src/core/lib/iomgr/gethostname.h \ +-src/core/lib/iomgr/gethostname_fallback.cc \ +-src/core/lib/iomgr/gethostname_host_name_max.cc \ +-src/core/lib/iomgr/gethostname_sysconf.cc \ + src/core/lib/iomgr/grpc_if_nametoindex.h \ +-src/core/lib/iomgr/grpc_if_nametoindex_posix.cc \ +-src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc \ +-src/core/lib/iomgr/internal_errqueue.cc \ + src/core/lib/iomgr/internal_errqueue.h \ +-src/core/lib/iomgr/iocp_windows.cc \ + src/core/lib/iomgr/iocp_windows.h \ +-src/core/lib/iomgr/iomgr.cc \ + src/core/lib/iomgr/iomgr.h \ +-src/core/lib/iomgr/iomgr_custom.cc \ + src/core/lib/iomgr/iomgr_custom.h \ +-src/core/lib/iomgr/iomgr_internal.cc \ + src/core/lib/iomgr/iomgr_internal.h \ +-src/core/lib/iomgr/iomgr_posix.cc \ + src/core/lib/iomgr/iomgr_posix.h \ +-src/core/lib/iomgr/iomgr_posix_cfstream.cc \ +-src/core/lib/iomgr/iomgr_uv.cc \ +-src/core/lib/iomgr/iomgr_windows.cc \ +-src/core/lib/iomgr/is_epollexclusive_available.cc \ + src/core/lib/iomgr/is_epollexclusive_available.h \ +-src/core/lib/iomgr/load_file.cc \ + src/core/lib/iomgr/load_file.h \ +-src/core/lib/iomgr/lockfree_event.cc \ + src/core/lib/iomgr/lockfree_event.h \ +-src/core/lib/iomgr/logical_thread.cc \ + src/core/lib/iomgr/logical_thread.h \ + src/core/lib/iomgr/nameser.h \ +-src/core/lib/iomgr/polling_entity.cc \ + src/core/lib/iomgr/polling_entity.h \ +-src/core/lib/iomgr/pollset.cc \ + src/core/lib/iomgr/pollset.h \ +-src/core/lib/iomgr/pollset_custom.cc \ + src/core/lib/iomgr/pollset_custom.h \ +-src/core/lib/iomgr/pollset_set.cc \ + src/core/lib/iomgr/pollset_set.h \ +-src/core/lib/iomgr/pollset_set_custom.cc \ + src/core/lib/iomgr/pollset_set_custom.h \ +-src/core/lib/iomgr/pollset_set_windows.cc \ + src/core/lib/iomgr/pollset_set_windows.h \ +-src/core/lib/iomgr/pollset_uv.cc \ +-src/core/lib/iomgr/pollset_windows.cc \ + src/core/lib/iomgr/pollset_windows.h \ + src/core/lib/iomgr/port.h \ +-src/core/lib/iomgr/resolve_address.cc \ + src/core/lib/iomgr/resolve_address.h \ +-src/core/lib/iomgr/resolve_address_custom.cc \ + src/core/lib/iomgr/resolve_address_custom.h \ +-src/core/lib/iomgr/resolve_address_posix.cc \ +-src/core/lib/iomgr/resolve_address_windows.cc \ +-src/core/lib/iomgr/resource_quota.cc \ + src/core/lib/iomgr/resource_quota.h \ + src/core/lib/iomgr/sockaddr.h \ + src/core/lib/iomgr/sockaddr_custom.h \ + src/core/lib/iomgr/sockaddr_posix.h \ +-src/core/lib/iomgr/sockaddr_utils.cc \ + src/core/lib/iomgr/sockaddr_utils.h \ + src/core/lib/iomgr/sockaddr_windows.h \ +-src/core/lib/iomgr/socket_factory_posix.cc \ + src/core/lib/iomgr/socket_factory_posix.h \ +-src/core/lib/iomgr/socket_mutator.cc \ + src/core/lib/iomgr/socket_mutator.h \ + src/core/lib/iomgr/socket_utils.h \ +-src/core/lib/iomgr/socket_utils_common_posix.cc \ +-src/core/lib/iomgr/socket_utils_linux.cc \ +-src/core/lib/iomgr/socket_utils_posix.cc \ + src/core/lib/iomgr/socket_utils_posix.h \ +-src/core/lib/iomgr/socket_utils_uv.cc \ +-src/core/lib/iomgr/socket_utils_windows.cc \ +-src/core/lib/iomgr/socket_windows.cc \ + src/core/lib/iomgr/socket_windows.h \ + src/core/lib/iomgr/sys_epoll_wrapper.h \ +-src/core/lib/iomgr/tcp_client.cc \ + src/core/lib/iomgr/tcp_client.h \ +-src/core/lib/iomgr/tcp_client_cfstream.cc \ +-src/core/lib/iomgr/tcp_client_custom.cc \ +-src/core/lib/iomgr/tcp_client_posix.cc \ + src/core/lib/iomgr/tcp_client_posix.h \ +-src/core/lib/iomgr/tcp_client_windows.cc \ +-src/core/lib/iomgr/tcp_custom.cc \ + src/core/lib/iomgr/tcp_custom.h \ +-src/core/lib/iomgr/tcp_posix.cc \ + src/core/lib/iomgr/tcp_posix.h \ +-src/core/lib/iomgr/tcp_server.cc \ + src/core/lib/iomgr/tcp_server.h \ +-src/core/lib/iomgr/tcp_server_custom.cc \ +-src/core/lib/iomgr/tcp_server_posix.cc \ + src/core/lib/iomgr/tcp_server_utils_posix.h \ +-src/core/lib/iomgr/tcp_server_utils_posix_common.cc \ +-src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc \ +-src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc \ +-src/core/lib/iomgr/tcp_server_windows.cc \ +-src/core/lib/iomgr/tcp_uv.cc \ +-src/core/lib/iomgr/tcp_windows.cc \ + src/core/lib/iomgr/tcp_windows.h \ +-src/core/lib/iomgr/time_averaged_stats.cc \ + src/core/lib/iomgr/time_averaged_stats.h \ +-src/core/lib/iomgr/timer.cc \ + src/core/lib/iomgr/timer.h \ +-src/core/lib/iomgr/timer_custom.cc \ + src/core/lib/iomgr/timer_custom.h \ +-src/core/lib/iomgr/timer_generic.cc \ +-src/core/lib/iomgr/timer_heap.cc \ + src/core/lib/iomgr/timer_heap.h \ +-src/core/lib/iomgr/timer_manager.cc \ + src/core/lib/iomgr/timer_manager.h \ +-src/core/lib/iomgr/timer_uv.cc \ +-src/core/lib/iomgr/udp_server.cc \ + src/core/lib/iomgr/udp_server.h \ +-src/core/lib/iomgr/unix_sockets_posix.cc \ + src/core/lib/iomgr/unix_sockets_posix.h \ +-src/core/lib/iomgr/unix_sockets_posix_noop.cc \ +-src/core/lib/iomgr/wakeup_fd_eventfd.cc \ +-src/core/lib/iomgr/wakeup_fd_nospecial.cc \ +-src/core/lib/iomgr/wakeup_fd_pipe.cc \ + src/core/lib/iomgr/wakeup_fd_pipe.h \ +-src/core/lib/iomgr/wakeup_fd_posix.cc \ + src/core/lib/iomgr/wakeup_fd_posix.h \ +-src/core/lib/json/json.cc \ + src/core/lib/json/json.h \ + src/core/lib/json/json_common.h \ +-src/core/lib/json/json_reader.cc \ + src/core/lib/json/json_reader.h \ +-src/core/lib/json/json_string.cc \ +-src/core/lib/json/json_writer.cc \ + src/core/lib/json/json_writer.h \ + src/core/lib/profiling/timers.h \ +-src/core/lib/slice/b64.cc \ + src/core/lib/slice/b64.h \ +-src/core/lib/slice/percent_encoding.cc \ + src/core/lib/slice/percent_encoding.h \ +-src/core/lib/slice/slice.cc \ +-src/core/lib/slice/slice_buffer.cc \ + src/core/lib/slice/slice_hash_table.h \ +-src/core/lib/slice/slice_intern.cc \ + src/core/lib/slice/slice_internal.h \ +-src/core/lib/slice/slice_string_helpers.cc \ + src/core/lib/slice/slice_string_helpers.h \ + src/core/lib/slice/slice_utils.h \ + src/core/lib/slice/slice_weak_hash_table.h \ +-src/core/lib/surface/api_trace.cc \ + src/core/lib/surface/api_trace.h \ +-src/core/lib/surface/byte_buffer.cc \ +-src/core/lib/surface/byte_buffer_reader.cc \ +-src/core/lib/surface/call.cc \ + src/core/lib/surface/call.h \ +-src/core/lib/surface/call_details.cc \ +-src/core/lib/surface/call_log_batch.cc \ + src/core/lib/surface/call_test_only.h \ +-src/core/lib/surface/channel.cc \ + src/core/lib/surface/channel.h \ +-src/core/lib/surface/channel_init.cc \ + src/core/lib/surface/channel_init.h \ +-src/core/lib/surface/channel_ping.cc \ +-src/core/lib/surface/channel_stack_type.cc \ + src/core/lib/surface/channel_stack_type.h \ +-src/core/lib/surface/completion_queue.cc \ + src/core/lib/surface/completion_queue.h \ +-src/core/lib/surface/completion_queue_factory.cc \ + src/core/lib/surface/completion_queue_factory.h \ +-src/core/lib/surface/event_string.cc \ + src/core/lib/surface/event_string.h \ + src/core/lib/surface/init.h \ +-src/core/lib/surface/lame_client.cc \ + src/core/lib/surface/lame_client.h \ +-src/core/lib/surface/metadata_array.cc \ +-src/core/lib/surface/server.cc \ + src/core/lib/surface/server.h \ +-src/core/lib/surface/validate_metadata.cc \ + src/core/lib/surface/validate_metadata.h \ +-src/core/lib/surface/version.cc \ +-src/core/lib/transport/bdp_estimator.cc \ + src/core/lib/transport/bdp_estimator.h \ +-src/core/lib/transport/byte_stream.cc \ + src/core/lib/transport/byte_stream.h \ +-src/core/lib/transport/connectivity_state.cc \ + src/core/lib/transport/connectivity_state.h \ +-src/core/lib/transport/error_utils.cc \ + src/core/lib/transport/error_utils.h \ + src/core/lib/transport/http2_errors.h \ +-src/core/lib/transport/metadata.cc \ + src/core/lib/transport/metadata.h \ +-src/core/lib/transport/metadata_batch.cc \ + src/core/lib/transport/metadata_batch.h \ +-src/core/lib/transport/pid_controller.cc \ + src/core/lib/transport/pid_controller.h \ +-src/core/lib/transport/static_metadata.cc \ + src/core/lib/transport/static_metadata.h \ +-src/core/lib/transport/status_conversion.cc \ + src/core/lib/transport/status_conversion.h \ +-src/core/lib/transport/status_metadata.cc \ + src/core/lib/transport/status_metadata.h \ +-src/core/lib/transport/timeout_encoding.cc \ + src/core/lib/transport/timeout_encoding.h \ +-src/core/lib/transport/transport.cc \ + src/core/lib/transport/transport.h \ + src/core/lib/transport/transport_impl.h \ +-src/core/lib/transport/transport_op_string.cc \ +-src/core/lib/uri/uri_parser.cc \ + src/core/lib/uri/uri_parser.h \ + src/cpp/README.md \ + src/cpp/client/channel_cc.cc \ diff --git a/SOURCES/99f8a10aec994a8957fbb6787768b444ef34d6a2.patch b/SOURCES/99f8a10aec994a8957fbb6787768b444ef34d6a2.patch new file mode 100644 index 0000000..cb3c9f6 --- /dev/null +++ b/SOURCES/99f8a10aec994a8957fbb6787768b444ef34d6a2.patch @@ -0,0 +1,1025 @@ +From 99f8a10aec994a8957fbb6787768b444ef34d6a2 Mon Sep 17 00:00:00 2001 +From: Esun Kim +Date: Tue, 10 Dec 2019 22:48:33 -0800 +Subject: [PATCH] Make gRPC podspec template more robust + +--- + gRPC-C++.podspec | 360 ++++++--------------------- + gRPC-Core.podspec | 105 ++++---- + templates/gRPC-C++.podspec.template | 179 ++++++------- + templates/gRPC-Core.podspec.template | 132 +++++----- + 4 files changed, 268 insertions(+), 508 deletions(-) + +diff --git a/gRPC-C++.podspec b/gRPC-C++.podspec +index 5a9a2c0add2..3eafd3550d6 100644 +--- a/gRPC-C++.podspec ++++ b/gRPC-C++.podspec +@@ -19,7 +19,6 @@ + # See the License for the specific language governing permissions and + # limitations under the License. + +- + Pod::Spec.new do |s| + s.name = 'gRPC-C++' + # TODO (mxyan): use version that match gRPC version when pod is stabilized +@@ -65,6 +64,7 @@ Pod::Spec.new do |s| + } + + s.libraries = 'c++' ++ s.compiler_flags = '-Wno-comma' + + s.default_subspecs = 'Interface', 'Implementation' + +@@ -213,66 +213,9 @@ Pod::Spec.new do |s| + ss.header_mappings_dir = '.' + ss.dependency "#{s.name}/Interface", version + ss.dependency 'gRPC-Core', version ++ abseil_version = '0.20190808.1' + + ss.source_files = 'include/grpcpp/impl/codegen/core_codegen.h', +- 'src/cpp/client/channel_cc.cc', +- 'src/cpp/client/client_context.cc', +- 'src/cpp/client/client_interceptor.cc', +- 'src/cpp/client/create_channel.cc', +- 'src/cpp/client/create_channel_internal.cc', +- 'src/cpp/client/create_channel_internal.h', +- 'src/cpp/client/create_channel_posix.cc', +- 'src/cpp/client/credentials_cc.cc', +- 'src/cpp/client/generic_stub.cc', +- 'src/cpp/client/insecure_credentials.cc', +- 'src/cpp/client/secure_credentials.cc', +- 'src/cpp/client/secure_credentials.h', +- 'src/cpp/codegen/codegen_init.cc', +- 'src/cpp/common/alarm.cc', +- 'src/cpp/common/auth_property_iterator.cc', +- 'src/cpp/common/channel_arguments.cc', +- 'src/cpp/common/channel_filter.cc', +- 'src/cpp/common/channel_filter.h', +- 'src/cpp/common/completion_queue_cc.cc', +- 'src/cpp/common/core_codegen.cc', +- 'src/cpp/common/resource_quota_cc.cc', +- 'src/cpp/common/rpc_method.cc', +- 'src/cpp/common/secure_auth_context.cc', +- 'src/cpp/common/secure_auth_context.h', +- 'src/cpp/common/secure_channel_arguments.cc', +- 'src/cpp/common/secure_create_auth_context.cc', +- 'src/cpp/common/tls_credentials_options.cc', +- 'src/cpp/common/tls_credentials_options_util.cc', +- 'src/cpp/common/tls_credentials_options_util.h', +- 'src/cpp/common/validate_service_config.cc', +- 'src/cpp/common/version_cc.cc', +- 'src/cpp/server/async_generic_service.cc', +- 'src/cpp/server/channel_argument_option.cc', +- 'src/cpp/server/create_default_thread_pool.cc', +- 'src/cpp/server/dynamic_thread_pool.cc', +- 'src/cpp/server/dynamic_thread_pool.h', +- 'src/cpp/server/external_connection_acceptor_impl.cc', +- 'src/cpp/server/external_connection_acceptor_impl.h', +- 'src/cpp/server/health/default_health_check_service.cc', +- 'src/cpp/server/health/default_health_check_service.h', +- 'src/cpp/server/health/health_check_service.cc', +- 'src/cpp/server/health/health_check_service_server_builder_option.cc', +- 'src/cpp/server/insecure_server_credentials.cc', +- 'src/cpp/server/secure_server_credentials.cc', +- 'src/cpp/server/secure_server_credentials.h', +- 'src/cpp/server/server_builder.cc', +- 'src/cpp/server/server_callback.cc', +- 'src/cpp/server/server_cc.cc', +- 'src/cpp/server/server_context.cc', +- 'src/cpp/server/server_credentials.cc', +- 'src/cpp/server/server_posix.cc', +- 'src/cpp/server/thread_pool_interface.h', +- 'src/cpp/thread_manager/thread_manager.cc', +- 'src/cpp/thread_manager/thread_manager.h', +- 'src/cpp/util/byte_buffer_cc.cc', +- 'src/cpp/util/status.cc', +- 'src/cpp/util/string_ref.cc', +- 'src/cpp/util/time_cc.cc', + 'src/core/ext/filters/client_channel/backend_metric.h', + 'src/core/ext/filters/client_channel/backup_poller.h', + 'src/core/ext/filters/client_channel/client_channel.h', +@@ -628,6 +571,64 @@ Pod::Spec.new do |s| + 'src/core/tsi/transport_security.h', + 'src/core/tsi/transport_security_grpc.h', + 'src/core/tsi/transport_security_interface.h', ++ 'src/cpp/client/channel_cc.cc', ++ 'src/cpp/client/client_context.cc', ++ 'src/cpp/client/client_interceptor.cc', ++ 'src/cpp/client/create_channel.cc', ++ 'src/cpp/client/create_channel_internal.cc', ++ 'src/cpp/client/create_channel_internal.h', ++ 'src/cpp/client/create_channel_posix.cc', ++ 'src/cpp/client/credentials_cc.cc', ++ 'src/cpp/client/generic_stub.cc', ++ 'src/cpp/client/insecure_credentials.cc', ++ 'src/cpp/client/secure_credentials.cc', ++ 'src/cpp/client/secure_credentials.h', ++ 'src/cpp/codegen/codegen_init.cc', ++ 'src/cpp/common/alarm.cc', ++ 'src/cpp/common/auth_property_iterator.cc', ++ 'src/cpp/common/channel_arguments.cc', ++ 'src/cpp/common/channel_filter.cc', ++ 'src/cpp/common/channel_filter.h', ++ 'src/cpp/common/completion_queue_cc.cc', ++ 'src/cpp/common/core_codegen.cc', ++ 'src/cpp/common/resource_quota_cc.cc', ++ 'src/cpp/common/rpc_method.cc', ++ 'src/cpp/common/secure_auth_context.cc', ++ 'src/cpp/common/secure_auth_context.h', ++ 'src/cpp/common/secure_channel_arguments.cc', ++ 'src/cpp/common/secure_create_auth_context.cc', ++ 'src/cpp/common/tls_credentials_options.cc', ++ 'src/cpp/common/tls_credentials_options_util.cc', ++ 'src/cpp/common/tls_credentials_options_util.h', ++ 'src/cpp/common/validate_service_config.cc', ++ 'src/cpp/common/version_cc.cc', ++ 'src/cpp/server/async_generic_service.cc', ++ 'src/cpp/server/channel_argument_option.cc', ++ 'src/cpp/server/create_default_thread_pool.cc', ++ 'src/cpp/server/dynamic_thread_pool.cc', ++ 'src/cpp/server/dynamic_thread_pool.h', ++ 'src/cpp/server/external_connection_acceptor_impl.cc', ++ 'src/cpp/server/external_connection_acceptor_impl.h', ++ 'src/cpp/server/health/default_health_check_service.cc', ++ 'src/cpp/server/health/default_health_check_service.h', ++ 'src/cpp/server/health/health_check_service.cc', ++ 'src/cpp/server/health/health_check_service_server_builder_option.cc', ++ 'src/cpp/server/insecure_server_credentials.cc', ++ 'src/cpp/server/secure_server_credentials.cc', ++ 'src/cpp/server/secure_server_credentials.h', ++ 'src/cpp/server/server_builder.cc', ++ 'src/cpp/server/server_callback.cc', ++ 'src/cpp/server/server_cc.cc', ++ 'src/cpp/server/server_context.cc', ++ 'src/cpp/server/server_credentials.cc', ++ 'src/cpp/server/server_posix.cc', ++ 'src/cpp/server/thread_pool_interface.h', ++ 'src/cpp/thread_manager/thread_manager.cc', ++ 'src/cpp/thread_manager/thread_manager.h', ++ 'src/cpp/util/byte_buffer_cc.cc', ++ 'src/cpp/util/status.cc', ++ 'src/cpp/util/string_ref.cc', ++ 'src/cpp/util/time_cc.cc', + 'third_party/upb/upb/decode.h', + 'third_party/upb/upb/encode.h', + 'third_party/upb/upb/generated_util.h', +@@ -638,235 +639,6 @@ Pod::Spec.new do |s| + 'third_party/upb/upb/upb.h' + + ss.private_header_files = 'include/grpcpp/impl/codegen/core_codegen.h', +- 'src/core/ext/filters/client_channel/backend_metric.h', +- 'src/core/ext/filters/client_channel/backup_poller.h', +- 'src/core/ext/filters/client_channel/client_channel.h', +- 'src/core/ext/filters/client_channel/client_channel_channelz.h', +- 'src/core/ext/filters/client_channel/client_channel_factory.h', +- 'src/core/ext/filters/client_channel/connector.h', +- 'src/core/ext/filters/client_channel/global_subchannel_pool.h', +- 'src/core/ext/filters/client_channel/health/health_check_client.h', +- 'src/core/ext/filters/client_channel/http_connect_handshaker.h', +- 'src/core/ext/filters/client_channel/http_proxy.h', +- 'src/core/ext/filters/client_channel/lb_policy.h', +- 'src/core/ext/filters/client_channel/lb_policy_factory.h', +- 'src/core/ext/filters/client_channel/lb_policy_registry.h', +- 'src/core/ext/filters/client_channel/local_subchannel_pool.h', +- 'src/core/ext/filters/client_channel/parse_address.h', +- 'src/core/ext/filters/client_channel/proxy_mapper.h', +- 'src/core/ext/filters/client_channel/proxy_mapper_registry.h', +- 'src/core/ext/filters/client_channel/resolver.h', +- 'src/core/ext/filters/client_channel/resolver_factory.h', +- 'src/core/ext/filters/client_channel/resolver_registry.h', +- 'src/core/ext/filters/client_channel/resolver_result_parsing.h', +- 'src/core/ext/filters/client_channel/resolving_lb_policy.h', +- 'src/core/ext/filters/client_channel/retry_throttle.h', +- 'src/core/ext/filters/client_channel/server_address.h', +- 'src/core/ext/filters/client_channel/service_config.h', +- 'src/core/ext/filters/client_channel/subchannel.h', +- 'src/core/ext/filters/client_channel/subchannel_interface.h', +- 'src/core/ext/filters/client_channel/subchannel_pool_interface.h', +- 'src/core/ext/filters/deadline/deadline_filter.h', +- 'src/core/ext/transport/inproc/inproc_transport.h', +- 'src/core/ext/upb-generated/gogoproto/gogo.upb.h', +- 'src/core/ext/upb-generated/google/api/annotations.upb.h', +- 'src/core/ext/upb-generated/google/api/http.upb.h', +- 'src/core/ext/upb-generated/google/protobuf/any.upb.h', +- 'src/core/ext/upb-generated/google/protobuf/descriptor.upb.h', +- 'src/core/ext/upb-generated/google/protobuf/duration.upb.h', +- 'src/core/ext/upb-generated/google/protobuf/empty.upb.h', +- 'src/core/ext/upb-generated/google/protobuf/struct.upb.h', +- 'src/core/ext/upb-generated/google/protobuf/timestamp.upb.h', +- 'src/core/ext/upb-generated/google/protobuf/wrappers.upb.h', +- 'src/core/ext/upb-generated/google/rpc/status.upb.h', +- 'src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h', +- 'src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h', +- 'src/core/ext/upb-generated/validate/validate.upb.h', +- 'src/core/lib/avl/avl.h', +- 'src/core/lib/backoff/backoff.h', +- 'src/core/lib/channel/channel_args.h', +- 'src/core/lib/channel/channel_stack.h', +- 'src/core/lib/channel/channel_stack_builder.h', +- 'src/core/lib/channel/channel_trace.h', +- 'src/core/lib/channel/channelz.h', +- 'src/core/lib/channel/channelz_registry.h', +- 'src/core/lib/channel/connected_channel.h', +- 'src/core/lib/channel/context.h', +- 'src/core/lib/channel/handshaker.h', +- 'src/core/lib/channel/handshaker_factory.h', +- 'src/core/lib/channel/handshaker_registry.h', +- 'src/core/lib/channel/status_util.h', +- 'src/core/lib/compression/algorithm_metadata.h', +- 'src/core/lib/compression/compression_args.h', +- 'src/core/lib/compression/compression_internal.h', +- 'src/core/lib/compression/message_compress.h', +- 'src/core/lib/compression/stream_compression.h', +- 'src/core/lib/compression/stream_compression_gzip.h', +- 'src/core/lib/compression/stream_compression_identity.h', +- 'src/core/lib/debug/stats.h', +- 'src/core/lib/debug/stats_data.h', +- 'src/core/lib/debug/trace.h', +- 'src/core/lib/gpr/alloc.h', +- 'src/core/lib/gpr/arena.h', +- 'src/core/lib/gpr/env.h', +- 'src/core/lib/gpr/murmur_hash.h', +- 'src/core/lib/gpr/spinlock.h', +- 'src/core/lib/gpr/string.h', +- 'src/core/lib/gpr/string_windows.h', +- 'src/core/lib/gpr/time_precise.h', +- 'src/core/lib/gpr/tls.h', +- 'src/core/lib/gpr/tls_gcc.h', +- 'src/core/lib/gpr/tls_msvc.h', +- 'src/core/lib/gpr/tls_pthread.h', +- 'src/core/lib/gpr/tmpfile.h', +- 'src/core/lib/gpr/useful.h', +- 'src/core/lib/gprpp/arena.h', +- 'src/core/lib/gprpp/atomic.h', +- 'src/core/lib/gprpp/debug_location.h', +- 'src/core/lib/gprpp/fork.h', +- 'src/core/lib/gprpp/global_config.h', +- 'src/core/lib/gprpp/global_config_custom.h', +- 'src/core/lib/gprpp/global_config_env.h', +- 'src/core/lib/gprpp/global_config_generic.h', +- 'src/core/lib/gprpp/host_port.h', +- 'src/core/lib/gprpp/inlined_vector.h', +- 'src/core/lib/gprpp/manual_constructor.h', +- 'src/core/lib/gprpp/map.h', +- 'src/core/lib/gprpp/memory.h', +- 'src/core/lib/gprpp/mpscq.h', +- 'src/core/lib/gprpp/optional.h', +- 'src/core/lib/gprpp/orphanable.h', +- 'src/core/lib/gprpp/ref_counted.h', +- 'src/core/lib/gprpp/ref_counted_ptr.h', +- 'src/core/lib/gprpp/string_view.h', +- 'src/core/lib/gprpp/sync.h', +- 'src/core/lib/gprpp/thd.h', +- 'src/core/lib/http/format_request.h', +- 'src/core/lib/http/httpcli.h', +- 'src/core/lib/http/parser.h', +- 'src/core/lib/iomgr/block_annotate.h', +- 'src/core/lib/iomgr/buffer_list.h', +- 'src/core/lib/iomgr/call_combiner.h', +- 'src/core/lib/iomgr/cfstream_handle.h', +- 'src/core/lib/iomgr/closure.h', +- 'src/core/lib/iomgr/combiner.h', +- 'src/core/lib/iomgr/dynamic_annotations.h', +- 'src/core/lib/iomgr/endpoint.h', +- 'src/core/lib/iomgr/endpoint_cfstream.h', +- 'src/core/lib/iomgr/endpoint_pair.h', +- 'src/core/lib/iomgr/error.h', +- 'src/core/lib/iomgr/error_cfstream.h', +- 'src/core/lib/iomgr/error_internal.h', +- 'src/core/lib/iomgr/ev_epoll1_linux.h', +- 'src/core/lib/iomgr/ev_epollex_linux.h', +- 'src/core/lib/iomgr/ev_poll_posix.h', +- 'src/core/lib/iomgr/ev_posix.h', +- 'src/core/lib/iomgr/exec_ctx.h', +- 'src/core/lib/iomgr/executor.h', +- 'src/core/lib/iomgr/executor/mpmcqueue.h', +- 'src/core/lib/iomgr/executor/threadpool.h', +- 'src/core/lib/iomgr/gethostname.h', +- 'src/core/lib/iomgr/grpc_if_nametoindex.h', +- 'src/core/lib/iomgr/internal_errqueue.h', +- 'src/core/lib/iomgr/iocp_windows.h', +- 'src/core/lib/iomgr/iomgr.h', +- 'src/core/lib/iomgr/iomgr_custom.h', +- 'src/core/lib/iomgr/iomgr_internal.h', +- 'src/core/lib/iomgr/iomgr_posix.h', +- 'src/core/lib/iomgr/is_epollexclusive_available.h', +- 'src/core/lib/iomgr/load_file.h', +- 'src/core/lib/iomgr/lockfree_event.h', +- 'src/core/lib/iomgr/logical_thread.h', +- 'src/core/lib/iomgr/nameser.h', +- 'src/core/lib/iomgr/polling_entity.h', +- 'src/core/lib/iomgr/pollset.h', +- 'src/core/lib/iomgr/pollset_custom.h', +- 'src/core/lib/iomgr/pollset_set.h', +- 'src/core/lib/iomgr/pollset_set_custom.h', +- 'src/core/lib/iomgr/pollset_set_windows.h', +- 'src/core/lib/iomgr/pollset_windows.h', +- 'src/core/lib/iomgr/port.h', +- 'src/core/lib/iomgr/resolve_address.h', +- 'src/core/lib/iomgr/resolve_address_custom.h', +- 'src/core/lib/iomgr/resource_quota.h', +- 'src/core/lib/iomgr/sockaddr.h', +- 'src/core/lib/iomgr/sockaddr_custom.h', +- 'src/core/lib/iomgr/sockaddr_posix.h', +- 'src/core/lib/iomgr/sockaddr_utils.h', +- 'src/core/lib/iomgr/sockaddr_windows.h', +- 'src/core/lib/iomgr/socket_factory_posix.h', +- 'src/core/lib/iomgr/socket_mutator.h', +- 'src/core/lib/iomgr/socket_utils.h', +- 'src/core/lib/iomgr/socket_utils_posix.h', +- 'src/core/lib/iomgr/socket_windows.h', +- 'src/core/lib/iomgr/sys_epoll_wrapper.h', +- 'src/core/lib/iomgr/tcp_client.h', +- 'src/core/lib/iomgr/tcp_client_posix.h', +- 'src/core/lib/iomgr/tcp_custom.h', +- 'src/core/lib/iomgr/tcp_posix.h', +- 'src/core/lib/iomgr/tcp_server.h', +- 'src/core/lib/iomgr/tcp_server_utils_posix.h', +- 'src/core/lib/iomgr/tcp_windows.h', +- 'src/core/lib/iomgr/time_averaged_stats.h', +- 'src/core/lib/iomgr/timer.h', +- 'src/core/lib/iomgr/timer_custom.h', +- 'src/core/lib/iomgr/timer_heap.h', +- 'src/core/lib/iomgr/timer_manager.h', +- 'src/core/lib/iomgr/udp_server.h', +- 'src/core/lib/iomgr/unix_sockets_posix.h', +- 'src/core/lib/iomgr/wakeup_fd_pipe.h', +- 'src/core/lib/iomgr/wakeup_fd_posix.h', +- 'src/core/lib/json/json.h', +- 'src/core/lib/json/json_common.h', +- 'src/core/lib/json/json_reader.h', +- 'src/core/lib/json/json_writer.h', +- 'src/core/lib/profiling/timers.h', +- 'src/core/lib/slice/b64.h', +- 'src/core/lib/slice/percent_encoding.h', +- 'src/core/lib/slice/slice_hash_table.h', +- 'src/core/lib/slice/slice_internal.h', +- 'src/core/lib/slice/slice_string_helpers.h', +- 'src/core/lib/slice/slice_utils.h', +- 'src/core/lib/slice/slice_weak_hash_table.h', +- 'src/core/lib/surface/api_trace.h', +- 'src/core/lib/surface/call.h', +- 'src/core/lib/surface/call_test_only.h', +- 'src/core/lib/surface/channel.h', +- 'src/core/lib/surface/channel_init.h', +- 'src/core/lib/surface/channel_stack_type.h', +- 'src/core/lib/surface/completion_queue.h', +- 'src/core/lib/surface/completion_queue_factory.h', +- 'src/core/lib/surface/event_string.h', +- 'src/core/lib/surface/init.h', +- 'src/core/lib/surface/lame_client.h', +- 'src/core/lib/surface/server.h', +- 'src/core/lib/surface/validate_metadata.h', +- 'src/core/lib/transport/bdp_estimator.h', +- 'src/core/lib/transport/byte_stream.h', +- 'src/core/lib/transport/connectivity_state.h', +- 'src/core/lib/transport/error_utils.h', +- 'src/core/lib/transport/http2_errors.h', +- 'src/core/lib/transport/metadata.h', +- 'src/core/lib/transport/metadata_batch.h', +- 'src/core/lib/transport/pid_controller.h', +- 'src/core/lib/transport/static_metadata.h', +- 'src/core/lib/transport/status_conversion.h', +- 'src/core/lib/transport/status_metadata.h', +- 'src/core/lib/transport/timeout_encoding.h', +- 'src/core/lib/transport/transport.h', +- 'src/core/lib/transport/transport_impl.h', +- 'src/core/lib/uri/uri_parser.h', +- 'src/cpp/client/create_channel_internal.h', +- 'src/cpp/client/secure_credentials.h', +- 'src/cpp/common/channel_filter.h', +- 'src/cpp/common/secure_auth_context.h', +- 'src/cpp/common/tls_credentials_options_util.h', +- 'src/cpp/server/dynamic_thread_pool.h', +- 'src/cpp/server/external_connection_acceptor_impl.h', +- 'src/cpp/server/health/default_health_check_service.h', +- 'src/cpp/server/secure_server_credentials.h', +- 'src/cpp/server/thread_pool_interface.h', +- 'src/cpp/thread_manager/thread_manager.h', + 'src/core/ext/filters/client_channel/backend_metric.h', + 'src/core/ext/filters/client_channel/backup_poller.h', + 'src/core/ext/filters/client_channel/client_channel.h', +@@ -1222,6 +994,17 @@ Pod::Spec.new do |s| + 'src/core/tsi/transport_security.h', + 'src/core/tsi/transport_security_grpc.h', + 'src/core/tsi/transport_security_interface.h', ++ 'src/cpp/client/create_channel_internal.h', ++ 'src/cpp/client/secure_credentials.h', ++ 'src/cpp/common/channel_filter.h', ++ 'src/cpp/common/secure_auth_context.h', ++ 'src/cpp/common/tls_credentials_options_util.h', ++ 'src/cpp/server/dynamic_thread_pool.h', ++ 'src/cpp/server/external_connection_acceptor_impl.h', ++ 'src/cpp/server/health/default_health_check_service.h', ++ 'src/cpp/server/secure_server_credentials.h', ++ 'src/cpp/server/thread_pool_interface.h', ++ 'src/cpp/thread_manager/thread_manager.h', + 'third_party/upb/upb/decode.h', + 'third_party/upb/upb/encode.h', + 'third_party/upb/upb/generated_util.h', +@@ -1237,7 +1020,6 @@ Pod::Spec.new do |s| + ss.dependency "#{s.name}/Interface", version + + ss.source_files = 'include/grpcpp/impl/codegen/config_protobuf.h', +- 'include/grpcpp/impl/codegen/config_protobuf.h', + 'include/grpcpp/impl/codegen/proto_buffer_reader.h', + 'include/grpcpp/impl/codegen/proto_buffer_writer.h', + 'include/grpcpp/impl/codegen/proto_utils.h' +diff --git a/gRPC-Core.podspec b/gRPC-Core.podspec +index 5b306628b20..ec4a29465de 100644 +--- a/gRPC-Core.podspec ++++ b/gRPC-Core.podspec +@@ -19,7 +19,6 @@ + # See the License for the specific language governing permissions and + # limitations under the License. + +- + Pod::Spec.new do |s| + s.name = 'gRPC-Core' + version = '1.26.0' +@@ -97,7 +96,7 @@ Pod::Spec.new do |s| + } + + s.default_subspecs = 'Interface', 'Implementation' +- s.compiler_flags = '-DGRPC_ARES=0' ++ s.compiler_flags = '-DGRPC_ARES=0 -Wno-comma' + s.libraries = 'c++' + + # Like many other C libraries, gRPC-Core has its public headers under `include//` and its +@@ -123,40 +122,26 @@ Pod::Spec.new do |s| + 'include/grpc/grpc_security.h', + 'include/grpc/grpc_security_constants.h', + 'include/grpc/impl/codegen/atm.h', +- 'include/grpc/impl/codegen/atm.h', + 'include/grpc/impl/codegen/atm_gcc_atomic.h', +- 'include/grpc/impl/codegen/atm_gcc_atomic.h', +- 'include/grpc/impl/codegen/atm_gcc_sync.h', + 'include/grpc/impl/codegen/atm_gcc_sync.h', + 'include/grpc/impl/codegen/atm_windows.h', +- 'include/grpc/impl/codegen/atm_windows.h', + 'include/grpc/impl/codegen/byte_buffer.h', + 'include/grpc/impl/codegen/byte_buffer_reader.h', + 'include/grpc/impl/codegen/compression_types.h', + 'include/grpc/impl/codegen/connectivity_state.h', + 'include/grpc/impl/codegen/fork.h', +- 'include/grpc/impl/codegen/fork.h', +- 'include/grpc/impl/codegen/gpr_slice.h', + 'include/grpc/impl/codegen/gpr_slice.h', + 'include/grpc/impl/codegen/gpr_types.h', +- 'include/grpc/impl/codegen/gpr_types.h', + 'include/grpc/impl/codegen/grpc_types.h', + 'include/grpc/impl/codegen/log.h', +- 'include/grpc/impl/codegen/log.h', +- 'include/grpc/impl/codegen/port_platform.h', + 'include/grpc/impl/codegen/port_platform.h', + 'include/grpc/impl/codegen/propagation_bits.h', + 'include/grpc/impl/codegen/slice.h', + 'include/grpc/impl/codegen/status.h', + 'include/grpc/impl/codegen/sync.h', +- 'include/grpc/impl/codegen/sync.h', +- 'include/grpc/impl/codegen/sync_custom.h', + 'include/grpc/impl/codegen/sync_custom.h', + 'include/grpc/impl/codegen/sync_generic.h', +- 'include/grpc/impl/codegen/sync_generic.h', + 'include/grpc/impl/codegen/sync_posix.h', +- 'include/grpc/impl/codegen/sync_posix.h', +- 'include/grpc/impl/codegen/sync_windows.h', + 'include/grpc/impl/codegen/sync_windows.h', + 'include/grpc/load_reporting.h', + 'include/grpc/slice.h', +@@ -186,6 +171,7 @@ Pod::Spec.new do |s| + ss.libraries = 'z' + ss.dependency "#{s.name}/Interface", version + ss.dependency 'BoringSSL-GRPC', '0.0.5' ++ abseil_version = '0.20190808.1' + ss.compiler_flags = '-DGRPC_SHADOW_BORINGSSL_SYMBOLS' + + ss.source_files = 'src/core/ext/filters/census/grpc_context.cc', +@@ -969,7 +955,6 @@ Pod::Spec.new do |s| + 'third_party/upb/upb/table.int.h', + 'third_party/upb/upb/upb.c', + 'third_party/upb/upb/upb.h' +- + ss.private_header_files = 'src/core/ext/filters/client_channel/backend_metric.h', + 'src/core/ext/filters/client_channel/backup_poller.h', + 'src/core/ext/filters/client_channel/client_channel.h', +@@ -1372,54 +1357,15 @@ Pod::Spec.new do |s| + 'test/core/end2end/data/server1_key.cc', + 'test/core/end2end/data/ssl_test_data.h', + 'test/core/end2end/data/test_root_cert.cc', ++ 'test/core/end2end/end2end_test_utils.cc', ++ 'test/core/end2end/end2end_tests.cc', ++ 'test/core/end2end/end2end_tests.h', + 'test/core/end2end/fixtures/http_proxy_fixture.cc', + 'test/core/end2end/fixtures/http_proxy_fixture.h', + 'test/core/end2end/fixtures/local_util.cc', + 'test/core/end2end/fixtures/local_util.h', + 'test/core/end2end/fixtures/proxy.cc', + 'test/core/end2end/fixtures/proxy.h', +- 'test/core/iomgr/endpoint_tests.cc', +- 'test/core/iomgr/endpoint_tests.h', +- 'test/core/security/oauth2_utils.cc', +- 'test/core/security/oauth2_utils.h', +- 'test/core/util/cmdline.cc', +- 'test/core/util/cmdline.h', +- 'test/core/util/debugger_macros.cc', +- 'test/core/util/debugger_macros.h', +- 'test/core/util/fuzzer_util.cc', +- 'test/core/util/fuzzer_util.h', +- 'test/core/util/grpc_profiler.cc', +- 'test/core/util/grpc_profiler.h', +- 'test/core/util/histogram.cc', +- 'test/core/util/histogram.h', +- 'test/core/util/memory_counters.cc', +- 'test/core/util/memory_counters.h', +- 'test/core/util/mock_endpoint.cc', +- 'test/core/util/mock_endpoint.h', +- 'test/core/util/parse_hexstring.cc', +- 'test/core/util/parse_hexstring.h', +- 'test/core/util/passthru_endpoint.cc', +- 'test/core/util/passthru_endpoint.h', +- 'test/core/util/port.cc', +- 'test/core/util/port.h', +- 'test/core/util/port_isolated_runtime_environment.cc', +- 'test/core/util/port_server_client.cc', +- 'test/core/util/port_server_client.h', +- 'test/core/util/slice_splitter.cc', +- 'test/core/util/slice_splitter.h', +- 'test/core/util/subprocess.h', +- 'test/core/util/subprocess_windows.cc', +- 'test/core/util/test_config.cc', +- 'test/core/util/test_config.h', +- 'test/core/util/test_lb_policies.cc', +- 'test/core/util/test_lb_policies.h', +- 'test/core/util/tracer_util.cc', +- 'test/core/util/tracer_util.h', +- 'test/core/util/trickle_endpoint.cc', +- 'test/core/util/trickle_endpoint.h', +- 'test/core/end2end/end2end_test_utils.cc', +- 'test/core/end2end/end2end_tests.cc', +- 'test/core/end2end/end2end_tests.h', + 'test/core/end2end/tests/authority_not_supported.cc', + 'test/core/end2end/tests/bad_hostname.cc', + 'test/core/end2end/tests/bad_ping.cc', +@@ -1498,7 +1444,46 @@ Pod::Spec.new do |s| + 'test/core/end2end/tests/trailing_metadata.cc', + 'test/core/end2end/tests/workaround_cronet_compression.cc', + 'test/core/end2end/tests/write_buffering.cc', +- 'test/core/end2end/tests/write_buffering_at_end.cc' ++ 'test/core/end2end/tests/write_buffering_at_end.cc', ++ 'test/core/iomgr/endpoint_tests.cc', ++ 'test/core/iomgr/endpoint_tests.h', ++ 'test/core/security/oauth2_utils.cc', ++ 'test/core/security/oauth2_utils.h', ++ 'test/core/util/cmdline.cc', ++ 'test/core/util/cmdline.h', ++ 'test/core/util/debugger_macros.cc', ++ 'test/core/util/debugger_macros.h', ++ 'test/core/util/fuzzer_util.cc', ++ 'test/core/util/fuzzer_util.h', ++ 'test/core/util/grpc_profiler.cc', ++ 'test/core/util/grpc_profiler.h', ++ 'test/core/util/histogram.cc', ++ 'test/core/util/histogram.h', ++ 'test/core/util/memory_counters.cc', ++ 'test/core/util/memory_counters.h', ++ 'test/core/util/mock_endpoint.cc', ++ 'test/core/util/mock_endpoint.h', ++ 'test/core/util/parse_hexstring.cc', ++ 'test/core/util/parse_hexstring.h', ++ 'test/core/util/passthru_endpoint.cc', ++ 'test/core/util/passthru_endpoint.h', ++ 'test/core/util/port.cc', ++ 'test/core/util/port.h', ++ 'test/core/util/port_isolated_runtime_environment.cc', ++ 'test/core/util/port_server_client.cc', ++ 'test/core/util/port_server_client.h', ++ 'test/core/util/slice_splitter.cc', ++ 'test/core/util/slice_splitter.h', ++ 'test/core/util/subprocess.h', ++ 'test/core/util/subprocess_windows.cc', ++ 'test/core/util/test_config.cc', ++ 'test/core/util/test_config.h', ++ 'test/core/util/test_lb_policies.cc', ++ 'test/core/util/test_lb_policies.h', ++ 'test/core/util/tracer_util.cc', ++ 'test/core/util/tracer_util.h', ++ 'test/core/util/trickle_endpoint.cc', ++ 'test/core/util/trickle_endpoint.h' + end + + # TODO (mxyan): Instead of this hack, add include path "third_party" to C core's include path? +diff --git a/templates/gRPC-C++.podspec.template b/templates/gRPC-C++.podspec.template +index 0a31cc5066b..ef0801c6735 100644 +--- a/templates/gRPC-C++.podspec.template ++++ b/templates/gRPC-C++.podspec.template +@@ -20,108 +20,84 @@ + # 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. ++ <% ++ lib_maps = {lib.name: lib for lib in libs} ++ filegroup_maps = {filegroup.name: filegroup for filegroup in filegroups} + +- <%! +- def grpc_lib_files(libs, expect_libs, groups): ++ def ruby_multiline_list(files, indent): ++ return (',\n' + indent*' ').join('\'%s\'' % f for f in files) ++ ++ def is_absl_lib(target_name): ++ return target_name.startswith("absl/") ++ ++ def get_absl_spec_name(label): ++ # e.g. absl/apple:banana -> abseil/apple/banana ++ return "abseil/" + label[5:].replace(":", "/") ++ ++ def lib_and_transitive_deps(lib): ++ return list(sorted(set({lib} | lib_maps[lib].transitive_deps))) ++ ++ def non_abseil_lib_and_transitive_deps(lib): ++ return [l for l in lib_and_transitive_deps(lib) if not is_absl_lib(l)] ++ ++ def list_abseil_specs(lib): ++ # This returns a list of abseil specs which the given lib and ++ # its non-abseil transitive dependencies depend on. ++ # As a result, internal abseil libraries are excluded from the result. ++ absl_specs = set() ++ for lib_name in lib_and_transitive_deps(lib): ++ if is_absl_lib(lib_name): continue ++ for dep in lib_maps[lib_name].deps: ++ if is_absl_lib(dep): ++ absl_specs.add(get_absl_spec_name(dep)) ++ return list(sorted(absl_specs)) ++ ++ def list_lib_files(lib, fields): ++ files = set() ++ for lib_name in non_abseil_lib_and_transitive_deps(lib): ++ lib = lib_maps[lib_name] ++ for field in fields: ++ files.update(lib.get(field, [])) ++ return list(sorted(files)) ++ ++ def list_filegroup_files(expect_filegroups, groups): + out = [] +- for lib in libs: +- if lib.name in expect_libs: +- for group in groups: +- out += lib.get(group, []) +- return sorted(out) ++ for filegroup_name in expect_filegroups: ++ filegroup = filegroup_maps[filegroup_name] ++ for group in groups: ++ out += filegroup.get(group, []) ++ return list(sorted(set(out))) + + def filter_grpcpp(files): +- return [file for file in files if not file.startswith("include/grpc++")] +- +- grpc_libs = ("grpc", "gpr", "upb") +- +- def grpc_private_files(libs): +- out = grpc_lib_files(libs, grpc_libs, ("headers", "src")) +- return out +- +- def grpc_private_headers(libs): +- out = grpc_lib_files(libs, grpc_libs, ("headers",)) +- return out +- +- def grpc_public_headers(libs): +- out = grpc_lib_files(libs, grpc_libs, ("public_headers",)) +- return out +- +- def grpcpp_proto_files(filegroups): +- out = grpc_lib_files(filegroups, ("grpc++_codegen_proto", "grpc++_config_proto"), ("headers", "src", "public_headers")) +- excl_files = grpc_lib_files(filegroups, ("grpc++_codegen_base",), ("headers", "src", "public_headers")) +- out = [file for file in out if file not in excl_files] +- out = filter_grpcpp(out) +- return out +- +- def grpcpp_private_files(libs, filegroups): +- out = grpc_lib_files(libs, ("grpc++",), ("headers", "src")) +- excl_files = grpc_private_files(libs) +- ++ return sorted([file for file in files if not file.startswith("include/grpc++")]) ++ ++ grpc_private_files = list_lib_files("grpc", ("headers", "src")) ++ grpc_public_headers = list_lib_files("grpc", ("public_headers",)) ++ grpc_private_headers = list_lib_files("grpc", ("headers",)) ++ ++ grpcpp_proto_files = filter_grpcpp( ++ set(list_filegroup_files(("grpc++_codegen_proto", "grpc++_config_proto"), ("headers", "src", "public_headers"))) ++ - set(list_filegroup_files(("grpc++_codegen_base",), ("headers", "src", "public_headers"))) ++ ) ++ grpcpp_private_files = filter_grpcpp( ++ set(list_lib_files("grpc++", ("headers", "src"))) ++ - set(grpc_private_files) + # We exclude proto related files in this particular podspec so that we can provide a protobuf-independent lib +- excl_files += grpcpp_proto_files(filegroups) +- out = [file for file in out if file not in excl_files] +- +- out = filter_grpcpp(out) +- return out +- +- def grpcpp_private_headers(libs, filegroups): +- out = grpc_lib_files(libs, ("grpc++",), ("headers",)) +- excl_files = grpc_private_headers(libs) +- ++ - set(grpcpp_proto_files) ++ ) ++ grpcpp_private_headers = filter_grpcpp( ++ set(list_lib_files("grpc++", ("headers",))) ++ - set(grpc_private_headers) + # We exclude proto related files in this particular podspec so that we can provide a protobuf-independent lib +- excl_files = grpcpp_proto_files(filegroups) +- out = [file for file in out if file not in excl_files] +- +- out = filter_grpcpp(out) +- return out +- +- def grpcpp_public_headers(libs, filegroups): +- out = grpc_lib_files(libs, ("grpc++",), ("public_headers",)) +- excl_files = grpc_public_headers(libs) +- ++ - set(grpcpp_proto_files) ++ ) ++ grpcpp_public_headers = filter_grpcpp( ++ set(list_lib_files("grpc++", ("public_headers",))) ++ - set(grpc_public_headers) + # We exclude proto related files in this particular podspec so that we can provide a protobuf-independent lib +- excl_files += grpcpp_proto_files(filegroups) +- +- out = [file for file in out if file not in excl_files] +- +- out = filter_grpcpp(out) +- +- return out +- +- def grpc_test_util_files(libs): +- out = grpc_lib_files(libs, ("grpc_test_util",), ("src", "headers")) +- return out +- +- def grpc_test_util_headers(libs): +- out = grpc_lib_files(libs, ("grpc_test_util",), ("headers",)) +- return out +- +- # Tests subspec is currently disabled since the tests currently use `grpc++` include style instead of `grpcpp`. +- # TODO (mxyan): enable Tests subspec after the inclusion style is updated in `test/` directory. +- def grpcpp_test_util_files(libs, filegroups): +- out = grpc_lib_files(libs, ("grpc++_test_util",), ("src", "headers")) +- excl_files = grpc_test_util_files(libs) + grpcpp_private_files(libs, filegroups) +- +- # We exclude proto related files in this particular podspec so that we can provide a protobuf-independent lib +- excl_files += grpc_lib_files(filegroups, ("grpc++_codegen_proto", "grpc++_config_proto"), ("headers", "src")) +- excl_files += ["test/cpp/util/byte_buffer_proto_helper.cc", +- "test/cpp/util/byte_buffer_proto_helper.h", +- "test/cpp/end2end/test_service_impl.cc", +- "test/cpp/end2end/test_service_impl.h"] +- excl_files += [file for file in out if file.endswith(".proto")] +- +- out = [file for file in out if not file in excl_files] +- +- # Since some C++ test files directly included private headers in C core, we intentionally add these header +- # files to this subspec +- out += grpc_test_util_headers(libs) +- +- return out +- +- def ruby_multiline_list(files, indent): +- return (',\n' + indent*' ').join('\'%s\'' % f for f in files) +- ++ - set(grpcpp_proto_files) ++ ) ++ grpcpp_abseil_specs = list_abseil_specs("grpc++") + %> + Pod::Spec.new do |s| + s.name = 'gRPC-C++' +@@ -168,6 +144,7 @@ + } + + s.libraries = 'c++' ++ s.compiler_flags = '-Wno-comma' + + s.default_subspecs = 'Interface', 'Implementation' + +@@ -179,24 +156,28 @@ + s.subspec 'Interface' do |ss| + ss.header_mappings_dir = 'include/grpcpp' + +- ss.source_files = ${ruby_multiline_list(grpcpp_public_headers(libs, filegroups), 22)} ++ ss.source_files = ${ruby_multiline_list(grpcpp_public_headers, 22)} + end + + s.subspec 'Implementation' do |ss| + ss.header_mappings_dir = '.' + ss.dependency "#{s.name}/Interface", version + ss.dependency 'gRPC-Core', version ++ abseil_version = '0.20190808.1' ++ % for abseil_spec in grpcpp_abseil_specs: ++ ss.dependency '${abseil_spec}', abseil_version ++ % endfor + +- ss.source_files = ${ruby_multiline_list(grpcpp_private_files(libs, filegroups) + grpc_private_headers(libs), 22)} ++ ss.source_files = ${ruby_multiline_list(sorted(grpcpp_private_files + grpc_private_headers), 22)} + +- ss.private_header_files = ${ruby_multiline_list(grpcpp_private_headers(libs, filegroups) + grpc_private_headers(libs), 30)} ++ ss.private_header_files = ${ruby_multiline_list(sorted(grpcpp_private_headers + grpc_private_headers), 30)} + end + + s.subspec 'Protobuf' do |ss| + ss.header_mappings_dir = 'include/grpcpp' + ss.dependency "#{s.name}/Interface", version + +- ss.source_files = ${ruby_multiline_list(grpcpp_proto_files(filegroups), 22)} ++ ss.source_files = ${ruby_multiline_list(grpcpp_proto_files, 22)} + end + + s.subspec 'Cronet-Interface' do |ss| +diff --git a/templates/gRPC-Core.podspec.template b/templates/gRPC-Core.podspec.template +index 9bebbdf4097..847aabc41d7 100644 +--- a/templates/gRPC-Core.podspec.template ++++ b/templates/gRPC-Core.podspec.template +@@ -20,60 +20,70 @@ + # 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. +- +- <%! +- def grpc_lib_files(libs, expect_libs, groups): +- out = [] +- for lib in libs: +- if lib.name in expect_libs: +- for group in groups: +- out += lib.get(group, []) +- return sorted(out) +- +- grpc_libs = ("grpc", "gpr", "upb") +- +- def grpc_private_files(libs): +- out = grpc_lib_files(libs, grpc_libs, ("headers", "src")) +- return out +- +- def grpc_public_headers(libs): +- out = grpc_lib_files(libs, grpc_libs, ("public_headers",)) +- return out +- +- def grpc_private_headers(libs): +- out = grpc_lib_files(libs, grpc_libs, ("headers",)) +- return out +- +- def grpc_cronet_files(libs): +- out = grpc_lib_files(libs, ("grpc_cronet",), ("src", "headers")) +- excl = grpc_private_files(libs) +- excl += [ +- # We do not need cronet dedicated plugin registry +- "src/core/ext/transport/cronet/plugin_registry/grpc_cronet_plugin_registry.cc", +- # We do not need dummy cronet API for ObjC +- "src/core/ext/transport/cronet/transport/cronet_api_dummy.cc", +- ] +- return [file for file in out if not file in excl] +- +- def grpc_cronet_public_headers(libs): +- out = grpc_lib_files(libs, ("grpc_cronet",), ("public_headers",)) +- excl = grpc_public_headers(libs) +- return [file for file in out if not file in excl] +- +- def grpc_test_util_files(libs): +- out = grpc_lib_files(libs, ("grpc_test_util",), ("src", "headers")) +- excl = grpc_private_files(libs) +- # Subprocess is not supported in tvOS and not needed by our tests. +- excl += ["test/core/util/subprocess_posix.cc"] +- return [file for file in out if not file in excl] +- +- def end2end_tests_files(libs): +- out = grpc_lib_files(libs, ("end2end_tests",), ("src", "headers")) +- excl = grpc_private_files(libs) +- return [file for file in out if not file in excl] ++ <% ++ lib_maps = {lib.name: lib for lib in libs} + + def ruby_multiline_list(files, indent): + return (',\n' + indent*' ').join('\'%s\'' % f for f in files) ++ ++ def is_absl_lib(target_name): ++ return target_name.startswith("absl/") ++ ++ def get_absl_spec_name(label): ++ # e.g. absl/apple:banana -> abseil/apple/banana ++ return "abseil/" + label[5:].replace(":", "/") ++ ++ def lib_and_transitive_deps(lib): ++ return list(sorted(set({lib} | lib_maps[lib].transitive_deps))) ++ ++ def non_abseil_lib_and_transitive_deps(lib): ++ return [l for l in lib_and_transitive_deps(lib) if not is_absl_lib(l)] ++ ++ def list_abseil_specs(lib): ++ # This returns a list of abseil specs which the given lib and ++ # its non-abseil transitive dependencies depend on. ++ # As a result, internal abseil libraries are excluded from the result. ++ absl_specs = set() ++ for lib_name in lib_and_transitive_deps(lib): ++ if is_absl_lib(lib_name): continue ++ for dep in lib_maps[lib_name].deps: ++ if is_absl_lib(dep): ++ absl_specs.add(get_absl_spec_name(dep)) ++ return list(sorted(absl_specs)) ++ ++ def list_lib_files(lib, fields): ++ files = set() ++ for lib_name in non_abseil_lib_and_transitive_deps(lib): ++ lib = lib_maps[lib_name] ++ for field in fields: ++ files.update(lib.get(field, [])) ++ return list(sorted(files)) ++ ++ grpc_private_files = list_lib_files("grpc", ("headers", "src")) ++ grpc_public_headers = list_lib_files("grpc", ("public_headers",)) ++ grpc_private_headers = list_lib_files("grpc", ("headers",)) ++ grpc_abseil_specs = list_abseil_specs("grpc") ++ ++ grpc_cronet_files = list(sorted( ++ set(list_lib_files("grpc_cronet", ("src", "headers"))) ++ - set(grpc_private_files) ++ - set([ ++ # We do not need cronet dedicated plugin registry ++ "src/core/ext/transport/cronet/plugin_registry/grpc_cronet_plugin_registry.cc", ++ # We do not need dummy cronet API for ObjC ++ "src/core/ext/transport/cronet/transport/cronet_api_dummy.cc", ++ ]))) ++ grpc_cronet_public_headers = list(sorted( ++ set(list_lib_files("grpc_cronet", ("public_headers",))) ++ - set(grpc_public_headers))) ++ ++ grpc_test_util_files = list(sorted( ++ set(list_lib_files("end2end_tests", ("src", "headers"))) ++ - set(grpc_private_files) ++ - set([ ++ # Subprocess is not supported in tvOS and not needed by our tests. ++ "test/core/util/subprocess_posix.cc", ++ ]))) + %> + Pod::Spec.new do |s| + s.name = 'gRPC-Core' +@@ -152,7 +162,7 @@ + } + + s.default_subspecs = 'Interface', 'Implementation' +- s.compiler_flags = '-DGRPC_ARES=0' ++ s.compiler_flags = '-DGRPC_ARES=0 -Wno-comma' + s.libraries = 'c++' + + # Like many other C libraries, gRPC-Core has its public headers under `include//` and its +@@ -168,18 +178,21 @@ + s.subspec 'Interface' do |ss| + ss.header_mappings_dir = 'include/grpc' + +- ss.source_files = ${ruby_multiline_list(grpc_public_headers(libs), 22)} ++ ss.source_files = ${ruby_multiline_list(grpc_public_headers, 22)} + end + s.subspec 'Implementation' do |ss| + ss.header_mappings_dir = '.' + ss.libraries = 'z' + ss.dependency "#{s.name}/Interface", version + ss.dependency 'BoringSSL-GRPC', '0.0.5' ++ abseil_version = '0.20190808.1' ++ % for abseil_spec in grpc_abseil_specs: ++ ss.dependency '${abseil_spec}', abseil_version ++ % endfor + ss.compiler_flags = '-DGRPC_SHADOW_BORINGSSL_SYMBOLS' + +- ss.source_files = ${ruby_multiline_list(grpc_private_files(libs), 22)} +- +- ss.private_header_files = ${ruby_multiline_list(grpc_private_headers(libs), 30)} ++ ss.source_files = ${ruby_multiline_list(grpc_private_files, 22)} ++ ss.private_header_files = ${ruby_multiline_list(grpc_private_headers, 30)} + end + + # CFStream is now default. Leaving this subspec only for compatibility purpose. +@@ -189,7 +202,7 @@ + + s.subspec 'Cronet-Interface' do |ss| + ss.header_mappings_dir = 'include/grpc' +- ss.source_files = ${ruby_multiline_list(grpc_cronet_public_headers(libs), 22)} ++ ss.source_files = ${ruby_multiline_list(grpc_cronet_public_headers, 22)} + end + + s.subspec 'Cronet-Implementation' do |ss| +@@ -199,7 +212,7 @@ + ss.dependency "#{s.name}/Implementation", version + ss.dependency "#{s.name}/Cronet-Interface", version + +- ss.source_files = ${ruby_multiline_list(grpc_cronet_files(libs), 22)} ++ ss.source_files = ${ruby_multiline_list(grpc_cronet_files, 22)} + end + + s.subspec 'Tests' do |ss| +@@ -208,8 +221,7 @@ + ss.dependency "#{s.name}/Interface", version + ss.dependency "#{s.name}/Implementation", version + +- ss.source_files = ${ruby_multiline_list(grpc_test_util_files(libs), 22)}, +- ${ruby_multiline_list(end2end_tests_files(libs), 22)} ++ ss.source_files = ${ruby_multiline_list(grpc_test_util_files, 22)} + end + + # TODO (mxyan): Instead of this hack, add include path "third_party" to C core's include path? diff --git a/SOURCES/README.md b/SOURCES/README.md new file mode 100644 index 0000000..7955d69 --- /dev/null +++ b/SOURCES/README.md @@ -0,0 +1,3 @@ +# grpc + +The grpc package \ No newline at end of file diff --git a/SOURCES/grpc-0001-enforce-system-crypto-policies.patch b/SOURCES/grpc-0001-enforce-system-crypto-policies.patch new file mode 100644 index 0000000..14add7d --- /dev/null +++ b/SOURCES/grpc-0001-enforce-system-crypto-policies.patch @@ -0,0 +1,41 @@ +From 5d56d52e0829e503e403568de66bb6cebfec3202 Mon Sep 17 00:00:00 2001 +From: Sergey Avseyev +Date: Wed, 28 Nov 2018 18:53:22 +0300 +Subject: [PATCH 1/4] enforce system crypto policies + +--- + test/core/handshake/client_ssl.cc | 3 +-- + test/core/handshake/server_ssl_common.cc | 3 +-- + 2 files changed, 2 insertions(+), 4 deletions(-) + +diff --git a/test/core/handshake/client_ssl.cc b/test/core/handshake/client_ssl.cc +index 467df6e229..b31934e51b 100644 +--- a/test/core/handshake/client_ssl.cc ++++ b/test/core/handshake/client_ssl.cc +@@ -161,8 +161,7 @@ static void server_thread(void* arg) { + // 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"; ++ "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/test/core/handshake/server_ssl_common.cc b/test/core/handshake/server_ssl_common.cc +index 41b2829d8b..8b21ea7c73 100644 +--- a/test/core/handshake/server_ssl_common.cc ++++ b/test/core/handshake/server_ssl_common.cc +@@ -167,8 +167,7 @@ bool server_ssl_test(const char* alpn_list[], unsigned int alpn_list_len, + // 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"; ++ "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."); +-- +2.21.0 + diff --git a/SOURCES/grpc-1.26.0-core-tests-link-errors.patch b/SOURCES/grpc-1.26.0-core-tests-link-errors.patch new file mode 100644 index 0000000..48e6521 --- /dev/null +++ b/SOURCES/grpc-1.26.0-core-tests-link-errors.patch @@ -0,0 +1,11 @@ +diff -Naur grpc-1.26.0-original/CMakeLists.txt grpc-1.26.0/CMakeLists.txt +--- grpc-1.26.0-original/CMakeLists.txt 2019-12-17 20:29:27.000000000 -0500 ++++ grpc-1.26.0/CMakeLists.txt 2021-03-15 09:17:35.873493405 -0400 +@@ -2609,6 +2609,7 @@ + ${_gRPC_ALLTARGETS_LIBRARIES} + gpr + grpc_unsecure ++ grpc + upb + ) + if(_gRPC_PLATFORM_IOS OR _gRPC_PLATFORM_MAC) diff --git a/SOURCES/grpc-1.26.0-grpcio-tests-conditionalize-enum34.patch b/SOURCES/grpc-1.26.0-grpcio-tests-conditionalize-enum34.patch new file mode 100644 index 0000000..2a90d4f --- /dev/null +++ b/SOURCES/grpc-1.26.0-grpcio-tests-conditionalize-enum34.patch @@ -0,0 +1,21 @@ +diff -Naur grpc-1.26.0-original/src/python/grpcio_tests/setup.py grpc-1.26.0/src/python/grpcio_tests/setup.py +--- grpc-1.26.0-original/src/python/grpcio_tests/setup.py 2019-12-17 20:29:27.000000000 -0500 ++++ grpc-1.26.0/src/python/grpcio_tests/setup.py 2021-02-02 09:11:20.236194502 -0500 +@@ -37,7 +37,7 @@ + } + + INSTALL_REQUIRES = ( +- 'coverage>=4.0', 'enum34>=1.0.4', ++ 'coverage>=4.0', + 'grpcio>={version}'.format(version=grpc_version.VERSION), + 'grpcio-channelz>={version}'.format(version=grpc_version.VERSION), + 'grpcio-status>={version}'.format(version=grpc_version.VERSION), +@@ -48,6 +48,8 @@ + + if not PY3: + INSTALL_REQUIRES += ('futures>=2.2.0',) ++if sys.version_info < (3, 4): ++ INSTALL_REQUIRES += ('enum34>=1.0.4',) + + COMMAND_CLASS = { + # Run `preprocess` *before* doing any packaging! diff --git a/SOURCES/grpc-1.26.0-grpcio_tests-make-network-tests-skippable.patch b/SOURCES/grpc-1.26.0-grpcio_tests-make-network-tests-skippable.patch new file mode 100644 index 0000000..a9307dd --- /dev/null +++ b/SOURCES/grpc-1.26.0-grpcio_tests-make-network-tests-skippable.patch @@ -0,0 +1,40 @@ +diff -Naur grpc-1.26.0-original/src/python/grpcio_tests/tests/interop/_secure_intraop_test.py grpc-1.26.0/src/python/grpcio_tests/tests/interop/_secure_intraop_test.py +--- grpc-1.26.0-original/src/python/grpcio_tests/tests/interop/_secure_intraop_test.py 2019-12-17 20:29:27.000000000 -0500 ++++ grpc-1.26.0/src/python/grpcio_tests/tests/interop/_secure_intraop_test.py 2021-03-15 10:09:54.802317262 -0400 +@@ -13,6 +13,7 @@ + # limitations under the License. + """Secure client-server interoperability as a unit test.""" + ++import os + import unittest + + import grpc +@@ -29,6 +30,8 @@ + class SecureIntraopTest(_intraop_test_case.IntraopTestCase, unittest.TestCase): + + def setUp(self): ++ if 'FEDORA_NO_NETWORK_TESTS' in os.environ: ++ self.skipTest('Network tests disabled') + self.server = test_common.test_server() + test_pb2_grpc.add_TestServiceServicer_to_server(service.TestService(), + self.server) +diff -Naur grpc-1.26.0-original/src/python/grpcio_tests/tests/unit/_dns_resolver_test.py grpc-1.26.0/src/python/grpcio_tests/tests/unit/_dns_resolver_test.py +--- grpc-1.26.0-original/src/python/grpcio_tests/tests/unit/_dns_resolver_test.py 2019-12-17 20:29:27.000000000 -0500 ++++ grpc-1.26.0/src/python/grpcio_tests/tests/unit/_dns_resolver_test.py 2021-03-15 10:08:08.159649736 -0400 +@@ -13,6 +13,7 @@ + # limitations under the License. + """Tests for an actual dns resolution.""" + ++import os + import unittest + import logging + import six +@@ -45,6 +46,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/SOURCES/grpc-1.26.0-python-SyntaxWarning.patch b/SOURCES/grpc-1.26.0-python-SyntaxWarning.patch new file mode 100644 index 0000000..1509310 --- /dev/null +++ b/SOURCES/grpc-1.26.0-python-SyntaxWarning.patch @@ -0,0 +1,14 @@ +Backport upstream commit 9e0b427893b65b220faf8a31a6afdc67f6f41364 “Use != with literals” + +diff -Naur grpc-1.26.0-original/src/python/grpcio/commands.py grpc-1.26.0/src/python/grpcio/commands.py +--- grpc-1.26.0-original/src/python/grpcio/commands.py 2019-12-17 20:29:27.000000000 -0500 ++++ grpc-1.26.0/src/python/grpcio/commands.py 2021-01-28 12:51:33.635142522 -0500 +@@ -99,7 +99,7 @@ + target_dir = os.path.join(GRPC_STEM, 'doc', 'build') + exit_code = sphinx.cmd.build.build_main( + ['-b', 'html', '-W', '--keep-going', source_dir, target_dir]) +- if exit_code is not 0: ++ if exit_code: + raise CommandError( + "Documentation generation has warnings or errors") + diff --git a/SOURCES/grpc-1.26.0-python-grpcio_tests-fixture-super.patch b/SOURCES/grpc-1.26.0-python-grpcio_tests-fixture-super.patch new file mode 100644 index 0000000..ed99b1c --- /dev/null +++ b/SOURCES/grpc-1.26.0-python-grpcio_tests-fixture-super.patch @@ -0,0 +1,23 @@ +diff -Naur grpc-1.26.0-original/src/python/grpcio_tests/tests/health_check/_health_servicer_test.py grpc-1.26.0/src/python/grpcio_tests/tests/health_check/_health_servicer_test.py +--- grpc-1.26.0-original/src/python/grpcio_tests/tests/health_check/_health_servicer_test.py 2019-12-17 20:29:27.000000000 -0500 ++++ grpc-1.26.0/src/python/grpcio_tests/tests/health_check/_health_servicer_test.py 2021-03-15 09:15:08.419558680 -0400 +@@ -235,8 +235,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 +272,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 --git a/SOURCES/grpc-1.26.0-python-grpcio_tools-use-system-protobuf.patch b/SOURCES/grpc-1.26.0-python-grpcio_tools-use-system-protobuf.patch new file mode 100644 index 0000000..6b42770 --- /dev/null +++ b/SOURCES/grpc-1.26.0-python-grpcio_tools-use-system-protobuf.patch @@ -0,0 +1,18 @@ +diff -Naur grpc-1.26.0-original/tools/distrib/python/grpcio_tools/protoc_lib_deps.py grpc-1.26.0/tools/distrib/python/grpcio_tools/protoc_lib_deps.py +--- grpc-1.26.0-original/tools/distrib/python/grpcio_tools/protoc_lib_deps.py 2019-12-17 20:29:27.000000000 -0500 ++++ grpc-1.26.0/tools/distrib/python/grpcio_tools/protoc_lib_deps.py 2021-01-29 09:37:57.182365074 -0500 +@@ -14,10 +14,9 @@ + # limitations under the License. + + # AUTO-GENERATED BY make_grpcio_tools.py! +-CC_FILES=['google/protobuf/compiler/zip_writer.cc', 'google/protobuf/compiler/subprocess.cc', 'google/protobuf/compiler/ruby/ruby_generator.cc', 'google/protobuf/compiler/python/python_generator.cc', 'google/protobuf/compiler/plugin.pb.cc', 'google/protobuf/compiler/plugin.cc', 'google/protobuf/compiler/php/php_generator.cc', 'google/protobuf/compiler/objectivec/objectivec_primitive_field.cc', 'google/protobuf/compiler/objectivec/objectivec_oneof.cc', 'google/protobuf/compiler/objectivec/objectivec_message_field.cc', 'google/protobuf/compiler/objectivec/objectivec_message.cc', 'google/protobuf/compiler/objectivec/objectivec_map_field.cc', 'google/protobuf/compiler/objectivec/objectivec_helpers.cc', 'google/protobuf/compiler/objectivec/objectivec_generator.cc', 'google/protobuf/compiler/objectivec/objectivec_file.cc', 'google/protobuf/compiler/objectivec/objectivec_field.cc', 'google/protobuf/compiler/objectivec/objectivec_extension.cc', 'google/protobuf/compiler/objectivec/objectivec_enum_field.cc', 'google/protobuf/compiler/objectivec/objectivec_enum.cc', 'google/protobuf/compiler/js/well_known_types_embed.cc', 'google/protobuf/compiler/js/js_generator.cc', 'google/protobuf/compiler/java/java_string_field_lite.cc', 'google/protobuf/compiler/java/java_string_field.cc', 'google/protobuf/compiler/java/java_shared_code_generator.cc', 'google/protobuf/compiler/java/java_service.cc', 'google/protobuf/compiler/java/java_primitive_field_lite.cc', 'google/protobuf/compiler/java/java_primitive_field.cc', 'google/protobuf/compiler/java/java_name_resolver.cc', 'google/protobuf/compiler/java/java_message_lite.cc', 'google/protobuf/compiler/java/java_message_field_lite.cc', 'google/protobuf/compiler/java/java_message_field.cc', 'google/protobuf/compiler/java/java_message_builder_lite.cc', 'google/protobuf/compiler/java/java_message_builder.cc', 'google/protobuf/compiler/java/java_message.cc', 'google/protobuf/compiler/java/java_map_field_lite.cc', 'google/protobuf/compiler/java/java_map_field.cc', 'google/protobuf/compiler/java/java_helpers.cc', 'google/protobuf/compiler/java/java_generator_factory.cc', 'google/protobuf/compiler/java/java_generator.cc', 'google/protobuf/compiler/java/java_file.cc', 'google/protobuf/compiler/java/java_field.cc', 'google/protobuf/compiler/java/java_extension_lite.cc', 'google/protobuf/compiler/java/java_extension.cc', 'google/protobuf/compiler/java/java_enum_lite.cc', 'google/protobuf/compiler/java/java_enum_field_lite.cc', 'google/protobuf/compiler/java/java_enum_field.cc', 'google/protobuf/compiler/java/java_enum.cc', 'google/protobuf/compiler/java/java_doc_comment.cc', 'google/protobuf/compiler/java/java_context.cc', 'google/protobuf/compiler/csharp/csharp_wrapper_field.cc', 'google/protobuf/compiler/csharp/csharp_source_generator_base.cc', 'google/protobuf/compiler/csharp/csharp_repeated_primitive_field.cc', 'google/protobuf/compiler/csharp/csharp_repeated_message_field.cc', 'google/protobuf/compiler/csharp/csharp_repeated_enum_field.cc', 'google/protobuf/compiler/csharp/csharp_reflection_class.cc', 'google/protobuf/compiler/csharp/csharp_primitive_field.cc', 'google/protobuf/compiler/csharp/csharp_message_field.cc', 'google/protobuf/compiler/csharp/csharp_message.cc', 'google/protobuf/compiler/csharp/csharp_map_field.cc', 'google/protobuf/compiler/csharp/csharp_helpers.cc', 'google/protobuf/compiler/csharp/csharp_generator.cc', 'google/protobuf/compiler/csharp/csharp_field_base.cc', 'google/protobuf/compiler/csharp/csharp_enum_field.cc', 'google/protobuf/compiler/csharp/csharp_enum.cc', 'google/protobuf/compiler/csharp/csharp_doc_comment.cc', 'google/protobuf/compiler/cpp/cpp_string_field.cc', 'google/protobuf/compiler/cpp/cpp_service.cc', 'google/protobuf/compiler/cpp/cpp_primitive_field.cc', 'google/protobuf/compiler/cpp/cpp_padding_optimizer.cc', 'google/protobuf/compiler/cpp/cpp_message_field.cc', 'google/protobuf/compiler/cpp/cpp_message.cc', 'google/protobuf/compiler/cpp/cpp_map_field.cc', 'google/protobuf/compiler/cpp/cpp_helpers.cc', 'google/protobuf/compiler/cpp/cpp_generator.cc', 'google/protobuf/compiler/cpp/cpp_file.cc', 'google/protobuf/compiler/cpp/cpp_field.cc', 'google/protobuf/compiler/cpp/cpp_extension.cc', 'google/protobuf/compiler/cpp/cpp_enum_field.cc', 'google/protobuf/compiler/cpp/cpp_enum.cc', 'google/protobuf/compiler/command_line_interface.cc', 'google/protobuf/compiler/code_generator.cc', 'google/protobuf/wrappers.pb.cc', 'google/protobuf/wire_format.cc', 'google/protobuf/util/type_resolver_util.cc', 'google/protobuf/util/time_util.cc', 'google/protobuf/util/message_differencer.cc', 'google/protobuf/util/json_util.cc', 'google/protobuf/util/internal/utility.cc', 'google/protobuf/util/internal/type_info_test_helper.cc', 'google/protobuf/util/internal/type_info.cc', 'google/protobuf/util/internal/protostream_objectwriter.cc', 'google/protobuf/util/internal/protostream_objectsource.cc', 'google/protobuf/util/internal/proto_writer.cc', 'google/protobuf/util/internal/object_writer.cc', 'google/protobuf/util/internal/json_stream_parser.cc', 'google/protobuf/util/internal/json_objectwriter.cc', 'google/protobuf/util/internal/json_escaping.cc', 'google/protobuf/util/internal/field_mask_utility.cc', 'google/protobuf/util/internal/error_listener.cc', 'google/protobuf/util/internal/default_value_objectwriter.cc', 'google/protobuf/util/internal/datapiece.cc', 'google/protobuf/util/field_mask_util.cc', 'google/protobuf/util/field_comparator.cc', 'google/protobuf/util/delimited_message_util.cc', 'google/protobuf/unknown_field_set.cc', 'google/protobuf/type.pb.cc', 'google/protobuf/timestamp.pb.cc', 'google/protobuf/text_format.cc', 'google/protobuf/stubs/substitute.cc', 'google/protobuf/stubs/mathlimits.cc', 'google/protobuf/struct.pb.cc', 'google/protobuf/source_context.pb.cc', 'google/protobuf/service.cc', 'google/protobuf/reflection_ops.cc', 'google/protobuf/message.cc', 'google/protobuf/map_field.cc', 'google/protobuf/io/zero_copy_stream_impl.cc', 'google/protobuf/io/tokenizer.cc', 'google/protobuf/io/printer.cc', 'google/protobuf/io/gzip_stream.cc', 'google/protobuf/generated_message_table_driven.cc', 'google/protobuf/generated_message_reflection.cc', 'google/protobuf/field_mask.pb.cc', 'google/protobuf/extension_set_heavy.cc', 'google/protobuf/empty.pb.cc', 'google/protobuf/dynamic_message.cc', 'google/protobuf/duration.pb.cc', 'google/protobuf/descriptor_database.cc', 'google/protobuf/descriptor.pb.cc', 'google/protobuf/descriptor.cc', 'google/protobuf/compiler/parser.cc', 'google/protobuf/compiler/importer.cc', 'google/protobuf/api.pb.cc', 'google/protobuf/any.pb.cc', 'google/protobuf/any.cc', 'google/protobuf/wire_format_lite.cc', 'google/protobuf/stubs/time.cc', 'google/protobuf/stubs/strutil.cc', 'google/protobuf/stubs/structurally_valid.cc', 'google/protobuf/stubs/stringprintf.cc', 'google/protobuf/stubs/stringpiece.cc', 'google/protobuf/stubs/statusor.cc', 'google/protobuf/stubs/status.cc', 'google/protobuf/stubs/int128.cc', 'google/protobuf/stubs/common.cc', 'google/protobuf/stubs/bytestream.cc', 'google/protobuf/repeated_field.cc', 'google/protobuf/parse_context.cc', 'google/protobuf/message_lite.cc', 'google/protobuf/io/zero_copy_stream_impl_lite.cc', 'google/protobuf/io/zero_copy_stream.cc', 'google/protobuf/io/strtod.cc', 'google/protobuf/io/io_win32.cc', 'google/protobuf/io/coded_stream.cc', 'google/protobuf/implicit_weak_message.cc', 'google/protobuf/generated_message_util.cc', 'google/protobuf/generated_message_table_driven_lite.cc', 'google/protobuf/extension_set.cc', 'google/protobuf/arena.cc', 'google/protobuf/any_lite.cc'] ++# Then, modified by hand to build with an external system protobuf installation. ++CC_FILES=[] + PROTO_FILES=['google/protobuf/wrappers.proto', 'google/protobuf/type.proto', 'google/protobuf/timestamp.proto', 'google/protobuf/struct.proto', 'google/protobuf/source_context.proto', 'google/protobuf/field_mask.proto', 'google/protobuf/empty.proto', 'google/protobuf/duration.proto', 'google/protobuf/descriptor.proto', 'google/protobuf/compiler/plugin.proto', 'google/protobuf/api.proto', 'google/protobuf/any.proto'] + +-CC_INCLUDE='third_party/protobuf/src' +-PROTO_INCLUDE='third_party/protobuf/src' +- +-PROTOBUF_SUBMODULE_VERSION="09745575a923640154bcf307fba8aedff47f240a" ++CC_INCLUDE='/usr/include' ++PROTO_INCLUDE='/usr/include' diff --git a/SOURCES/grpc-1.36.0-python-grpcio_tests-skip-compression-tests.patch b/SOURCES/grpc-1.36.0-python-grpcio_tests-skip-compression-tests.patch new file mode 100644 index 0000000..08f1892 --- /dev/null +++ b/SOURCES/grpc-1.36.0-python-grpcio_tests-skip-compression-tests.patch @@ -0,0 +1,21 @@ +diff -Naur grpc-1.36.0-original/src/python/grpcio_tests/tests/unit/_compression_test.py grpc-1.36.0/src/python/grpcio_tests/tests/unit/_compression_test.py +--- grpc-1.36.0-original/src/python/grpcio_tests/tests/unit/_compression_test.py 2021-02-23 16:34:43.000000000 -0500 ++++ grpc-1.36.0/src/python/grpcio_tests/tests/unit/_compression_test.py 2021-03-03 09:41:03.076816980 -0500 +@@ -318,6 +318,7 @@ + else: + self.assertNotCompressed(received_ratio) + ++ @unittest.skip('Wrong compression ratio may occur; unknown cause') + def testDisableNextCompressionStreaming(self): + server_kwargs = { + 'compression': grpc.Compression.Deflate, +@@ -372,6 +373,9 @@ + def _test_compression(self): + self.assertConfigurationCompressed(**kwargs) + ++ _test_compression = unittest.skip( ++ 'Wrong compression ratio may occur; unknown cause' ++ )(_test_compression) + return _test_compression + + setattr(CompressionTest, _get_compression_test_name(**options), diff --git a/SOURCES/grpc-1.36.4-python-grpcio_tests-fixture-super.patch b/SOURCES/grpc-1.36.4-python-grpcio_tests-fixture-super.patch new file mode 100644 index 0000000..098df22 --- /dev/null +++ b/SOURCES/grpc-1.36.4-python-grpcio_tests-fixture-super.patch @@ -0,0 +1,45 @@ +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/SOURCES/grpc-1.36.4-python-grpcio_tests-skip-compression-tests.patch b/SOURCES/grpc-1.36.4-python-grpcio_tests-skip-compression-tests.patch new file mode 100644 index 0000000..82b7cc5 --- /dev/null +++ b/SOURCES/grpc-1.36.4-python-grpcio_tests-skip-compression-tests.patch @@ -0,0 +1,21 @@ +diff -Naur grpc-1.36.4-original/src/python/grpcio_tests/tests/unit/_compression_test.py grpc-1.36.4/src/python/grpcio_tests/tests/unit/_compression_test.py +--- grpc-1.36.4-original/src/python/grpcio_tests/tests/unit/_compression_test.py 2021-03-17 15:59:05.000000000 -0400 ++++ grpc-1.36.4/src/python/grpcio_tests/tests/unit/_compression_test.py 2021-03-22 16:46:55.555358822 -0400 +@@ -318,6 +318,7 @@ + else: + self.assertNotCompressed(received_ratio) + ++ @unittest.skip('Wrong compression ratio may occur; unknown cause') + def testDisableNextCompressionStreaming(self): + server_kwargs = { + 'compression': grpc.Compression.Deflate, +@@ -372,6 +373,9 @@ + def _test_compression(self): + self.assertConfigurationCompressed(**kwargs) + ++ _test_compression = unittest.skip( ++ 'Wrong compression ratio may occur; unknown cause' ++ )(_test_compression) + return _test_compression + + setattr(CompressionTest, _get_compression_test_name(**options), diff --git a/SOURCES/grpc-1.37.0-grpc_cli-do-not-link-gtest-gmock.patch b/SOURCES/grpc-1.37.0-grpc_cli-do-not-link-gtest-gmock.patch new file mode 100644 index 0000000..70b0abc --- /dev/null +++ b/SOURCES/grpc-1.37.0-grpc_cli-do-not-link-gtest-gmock.patch @@ -0,0 +1,50 @@ +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/SOURCES/grpc-1.39.0-python_wrapper-path.patch b/SOURCES/grpc-1.39.0-python_wrapper-path.patch new file mode 100644 index 0000000..5b7a227 --- /dev/null +++ b/SOURCES/grpc-1.39.0-python_wrapper-path.patch @@ -0,0 +1,30 @@ +diff -Naur grpc-1.39.0-original/test/core/http/httpcli_test.cc grpc-1.39.0/test/core/http/httpcli_test.cc +--- grpc-1.39.0-original/test/core/http/httpcli_test.cc 2021-07-20 18:39:39.000000000 -0400 ++++ grpc-1.39.0/test/core/http/httpcli_test.cc 2021-08-02 11:38:43.215629892 -0400 +@@ -165,9 +165,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 -Naur grpc-1.39.0-original/test/core/http/httpscli_test.cc grpc-1.39.0/test/core/http/httpscli_test.cc +--- grpc-1.39.0-original/test/core/http/httpscli_test.cc 2021-07-20 18:39:39.000000000 -0400 ++++ grpc-1.39.0/test/core/http/httpscli_test.cc 2021-08-02 11:38:52.825572125 -0400 +@@ -166,9 +166,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/SOURCES/grpc-1.39.0-system-crypto-policies.patch b/SOURCES/grpc-1.39.0-system-crypto-policies.patch new file mode 100644 index 0000000..f6db782 --- /dev/null +++ b/SOURCES/grpc-1.39.0-system-crypto-policies.patch @@ -0,0 +1,40 @@ +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/SOURCES/grpc-1.40.0-google-benchmark-1.6.0.patch b/SOURCES/grpc-1.40.0-google-benchmark-1.6.0.patch new file mode 100644 index 0000000..14f5d98 --- /dev/null +++ b/SOURCES/grpc-1.40.0-google-benchmark-1.6.0.patch @@ -0,0 +1,55 @@ +From 67cba751363d35fcf88aae7f82616d560d7403fa Mon Sep 17 00:00:00 2001 +From: "Benjamin A. Beasley" +Date: Tue, 14 Sep 2021 15:00:41 -0400 +Subject: [PATCH] Adapt to google-benchmark 1.6.0 + +State::thread_index and State::threads are now accessor methods instead +of data members. +--- + test/cpp/microbenchmarks/bm_cq_multiple_threads.cc | 2 +- + test/cpp/microbenchmarks/bm_threadpool.cc | 6 +++--- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/test/cpp/microbenchmarks/bm_cq_multiple_threads.cc b/test/cpp/microbenchmarks/bm_cq_multiple_threads.cc +index d57a021cee..f9cdd67809 100644 +--- a/test/cpp/microbenchmarks/bm_cq_multiple_threads.cc ++++ b/test/cpp/microbenchmarks/bm_cq_multiple_threads.cc +@@ -160,7 +160,7 @@ static void teardown() { + */ + static void BM_Cq_Throughput(benchmark::State& state) { + gpr_timespec deadline = gpr_inf_future(GPR_CLOCK_MONOTONIC); +- auto thd_idx = state.thread_index; ++ auto thd_idx = state.thread_index(); + + gpr_mu_lock(&g_mu); + g_threads_active++; +diff --git a/test/cpp/microbenchmarks/bm_threadpool.cc b/test/cpp/microbenchmarks/bm_threadpool.cc +index b06deeeb37..cedad52ed2 100644 +--- a/test/cpp/microbenchmarks/bm_threadpool.cc ++++ b/test/cpp/microbenchmarks/bm_threadpool.cc +@@ -152,11 +152,11 @@ class SuicideFunctorForAdd : public grpc_completion_queue_functor { + static void BM_ThreadPoolExternalAdd(benchmark::State& state) { + static grpc_core::ThreadPool* external_add_pool = nullptr; + // Setup for each run of test. +- if (state.thread_index == 0) { ++ if (state.thread_index() == 0) { + const int num_threads = state.range(1); + external_add_pool = new grpc_core::ThreadPool(num_threads); + } +- const int num_iterations = state.range(0) / state.threads; ++ const int num_iterations = state.range(0) / state.threads(); + while (state.KeepRunningBatch(num_iterations)) { + BlockingCounter counter(num_iterations); + for (int i = 0; i < num_iterations; ++i) { +@@ -166,7 +166,7 @@ static void BM_ThreadPoolExternalAdd(benchmark::State& state) { + } + + // Teardown at the end of each test run. +- if (state.thread_index == 0) { ++ if (state.thread_index() == 0) { + state.SetItemsProcessed(state.range(0)); + delete external_add_pool; + } +-- +2.31.1 + diff --git a/SOURCES/grpc-1.40.0-python-grpcio-use-system-abseil.patch b/SOURCES/grpc-1.40.0-python-grpcio-use-system-abseil.patch new file mode 100644 index 0000000..31ecb52 --- /dev/null +++ b/SOURCES/grpc-1.40.0-python-grpcio-use-system-abseil.patch @@ -0,0 +1,45 @@ +diff -Naur grpc-1.40.0-original/setup.py grpc-1.40.0/setup.py +--- grpc-1.40.0-original/setup.py 2021-09-03 19:20:52.000000000 -0400 ++++ grpc-1.40.0/setup.py 2021-09-07 14:57:55.247990450 -0400 +@@ -29,6 +29,7 @@ + from distutils import util + import os + import os.path ++import pathlib + import platform + import re + import shlex +@@ -154,6 +155,11 @@ + # runtime, the shared library must be installed + BUILD_WITH_SYSTEM_RE2 = _env_bool_value('GRPC_PYTHON_BUILD_SYSTEM_RE2', 'False') + ++# Export this variable to use the system installation of abseil. You need to ++# have the header files installed (in /usr/include/absl) and during ++# runtime, the shared library must be installed ++BUILD_WITH_SYSTEM_ABSL = os.environ.get('GRPC_PYTHON_BUILD_SYSTEM_ABSL', False) ++ + # Export this variable to force building the python extension with a statically linked libstdc++. + # At least on linux, this is normally not needed as we can build manylinux-compatible wheels on linux just fine + # without statically linking libstdc++ (which leads to a slight increase in the wheel size). +@@ -296,6 +302,10 @@ + CORE_C_FILES = filter(lambda x: 'third_party/re2' not in x, CORE_C_FILES) + RE2_INCLUDE = (os.path.join('/usr', 'include', 're2'),) + ++if BUILD_WITH_SYSTEM_ABSL: ++ CORE_C_FILES = filter(lambda x: 'third_party/abseil-cpp' not in x, CORE_C_FILES) ++ ABSL_INCLUDE = (os.path.join('/usr', 'include'),) ++ + EXTENSION_INCLUDE_DIRECTORIES = ((PYTHON_STEM,) + CORE_INCLUDE + ABSL_INCLUDE + + ADDRESS_SORTING_INCLUDE + CARES_INCLUDE + + RE2_INCLUDE + SSL_INCLUDE + UPB_INCLUDE + +@@ -325,6 +335,10 @@ + EXTENSION_LIBRARIES += ('cares',) + if BUILD_WITH_SYSTEM_RE2: + EXTENSION_LIBRARIES += ('re2',) ++if BUILD_WITH_SYSTEM_ABSL: ++ EXTENSION_LIBRARIES += tuple( ++ lib.stem[3:] for lib in pathlib.Path('/usr').glob('lib*/libabsl_*.so') ++ ) + + DEFINE_MACROS = (('_WIN32_WINNT', 0x600),) + asm_files = [] diff --git a/SOURCES/grpc-1.40.0-python-grpcio_tests-make-network-tests-skippable.patch b/SOURCES/grpc-1.40.0-python-grpcio_tests-make-network-tests-skippable.patch new file mode 100644 index 0000000..5a8d2f0 --- /dev/null +++ b/SOURCES/grpc-1.40.0-python-grpcio_tests-make-network-tests-skippable.patch @@ -0,0 +1,20 @@ +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/SOURCES/grpc-1.40.0-python2-test-scripts.patch b/SOURCES/grpc-1.40.0-python2-test-scripts.patch new file mode 100644 index 0000000..b5bae55 --- /dev/null +++ b/SOURCES/grpc-1.40.0-python2-test-scripts.patch @@ -0,0 +1,69 @@ +diff -Naur --no-dereference grpc-1.40.0-original/test/core/http/test_server.py grpc-1.40.0/test/core/http/test_server.py +--- grpc-1.40.0-original/test/core/http/test_server.py 2021-09-03 19:20:52.000000000 -0400 ++++ grpc-1.40.0/test/core/http/test_server.py 2021-09-09 11:34:26.772184779 -0400 +@@ -19,7 +19,7 @@ + import ssl + import sys + +-import BaseHTTPServer ++import http.server + + _PEM = os.path.abspath( + os.path.join(os.path.dirname(sys.argv[0]), '../../..', +@@ -27,7 +27,7 @@ + _KEY = os.path.abspath( + os.path.join(os.path.dirname(sys.argv[0]), '../../..', + 'src/core/tsi/test_creds/server1.key')) +-print _PEM ++print(_PEM) + open(_PEM).close() + + argp = argparse.ArgumentParser(description='Server for httpcli_test') +@@ -35,29 +35,29 @@ + argp.add_argument('-s', '--ssl', default=False, action='store_true') + args = argp.parse_args() + +-print 'server running on port %d' % args.port ++print('server running on port %d' % args.port) + + +-class Handler(BaseHTTPServer.BaseHTTPRequestHandler): ++class Handler(http.server.BaseHTTPRequestHandler): + + def good(self): + self.send_response(200) + self.send_header('Content-Type', 'text/html') + self.end_headers() +- self.wfile.write('Hello world!') +- self.wfile.write('

This is a test

') ++ self.wfile.write(b'Hello world!') ++ self.wfile.write(b'

This is a test

') + + def do_GET(self): + if self.path == '/get': + self.good() + + def do_POST(self): +- content = self.rfile.read(int(self.headers.getheader('content-length'))) ++ content = self.rfile.read(int(self.headers.get('content-length'))) + if self.path == '/post' and content == 'hello': + self.good() + + +-httpd = BaseHTTPServer.HTTPServer(('localhost', args.port), Handler) ++httpd = http.server.HTTPServer(('localhost', args.port), Handler) + if args.ssl: + httpd.socket = ssl.wrap_socket(httpd.socket, + certfile=_PEM, +diff -Naur --no-dereference grpc-1.40.0-original/tools/distrib/python_wrapper.sh grpc-1.40.0/tools/distrib/python_wrapper.sh +--- grpc-1.40.0-original/tools/distrib/python_wrapper.sh 2021-09-03 19:20:52.000000000 -0400 ++++ grpc-1.40.0/tools/distrib/python_wrapper.sh 2021-09-09 11:33:47.641824138 -0400 +@@ -14,7 +14,7 @@ + # See the License for the specific language governing permissions and + # limitations under the License. + +-for p in python2.7 python2.6 python2 python not_found ; do ++for p in python3 not_found ; do + + python=$(which $p || echo not_found) + diff --git a/SOURCES/grpc.rpmlintrc b/SOURCES/grpc.rpmlintrc new file mode 100644 index 0000000..5f9e915 --- /dev/null +++ b/SOURCES/grpc.rpmlintrc @@ -0,0 +1,16 @@ +# These are not real spelling errors... +addFilter(r' spelling-error .*[ \(]en_US\)? (microservices|auth|gRPC|' + r'channelz|proto(buf)?|unary|rpc)|grpcio ') +# Maybe some of these are supposed to be CRNL-terminated: +addFilter(r' wrong-file-end-of-line-encoding ' + r'/usr/share/doc/grpc/examples/csharp/') +# We generally follow upstream package metadata for these: +addFilter(r' description-shorter-than-summary') +# Many subpackages do not have their own documentation! +addFilter(r' no-documentation') +# We believe we have patched all calls to SSL_CTX_set_cipher_list with +# hard-coded values to use "PROFILE=SYSTEM" instead, thereby complying with the +# system policy. +addFilter(r' crypto-policy-non-compliance-openssl .* SSL_CTX_set_cipher_list') +# These will not dangle after the ca-certificates dependency is installed: +addFilter(r' dangling-relative-symlink .*\.pem$') diff --git a/SOURCES/grpc_cli-call.1 b/SOURCES/grpc_cli-call.1 new file mode 100644 index 0000000..60ca8c4 --- /dev/null +++ b/SOURCES/grpc_cli-call.1 @@ -0,0 +1,105 @@ +.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/SOURCES/grpc_cli-help.1 b/SOURCES/grpc_cli-help.1 new file mode 100644 index 0000000..f3074a1 --- /dev/null +++ b/SOURCES/grpc_cli-help.1 @@ -0,0 +1,16 @@ +.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/SOURCES/grpc_cli-ls.1 b/SOURCES/grpc_cli-ls.1 new file mode 100644 index 0000000..4a3460e --- /dev/null +++ b/SOURCES/grpc_cli-ls.1 @@ -0,0 +1,65 @@ +.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/SOURCES/grpc_cli-parse.1 b/SOURCES/grpc_cli-parse.1 new file mode 100644 index 0000000..2e32c0e --- /dev/null +++ b/SOURCES/grpc_cli-parse.1 @@ -0,0 +1,93 @@ +.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/SOURCES/grpc_cli-tobinary.1 b/SOURCES/grpc_cli-tobinary.1 new file mode 100644 index 0000000..e58b7e9 --- /dev/null +++ b/SOURCES/grpc_cli-tobinary.1 @@ -0,0 +1,39 @@ +.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/SOURCES/grpc_cli-tojson.1 b/SOURCES/grpc_cli-tojson.1 new file mode 100644 index 0000000..59d407d --- /dev/null +++ b/SOURCES/grpc_cli-tojson.1 @@ -0,0 +1,38 @@ +.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/SOURCES/grpc_cli-totext.1 b/SOURCES/grpc_cli-totext.1 new file mode 100644 index 0000000..9b297f0 --- /dev/null +++ b/SOURCES/grpc_cli-totext.1 @@ -0,0 +1,38 @@ +.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/SOURCES/grpc_cli-type.1 b/SOURCES/grpc_cli-type.1 new file mode 100644 index 0000000..99e2caf --- /dev/null +++ b/SOURCES/grpc_cli-type.1 @@ -0,0 +1,55 @@ +.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/SOURCES/grpc_cli.1 b/SOURCES/grpc_cli.1 new file mode 100644 index 0000000..a03c566 --- /dev/null +++ b/SOURCES/grpc_cli.1 @@ -0,0 +1,48 @@ +.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/SPECS/grpc.spec b/SPECS/grpc.spec new file mode 100644 index 0000000..564eac4 --- /dev/null +++ b/SPECS/grpc.spec @@ -0,0 +1,2260 @@ +## START: Set by rpmautospec +## (rpmautospec version 0.2.5) +%define autorelease(e:s:pb:) %{?-p:0.}%{lua: + release_number = 5; + base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}")); + print(release_number + base_release_number - 1); +}%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{?dist} +## END: Set by rpmautospec + +# We need to use C++17 to link against the system abseil-cpp, or we get linker +# errors. +%global cpp_std 17 + +# However, we also get linker errors building the tests if we link against the +# copy of gtest in Fedora (compiled with C++11). The exact root cause is not +# quite clear. We must therefore bundle a copy of gtest in the source RPM +# rather than using the system copy. This is to be discouraged, but there is no +# alternative in this case. It is not treated as a bundled library because it +# is used only at build time, and contributes nothing to the installed files. +# We take measures to verify this in %%check. +%global gtest_version 1.11.0 +%bcond_with system_gtest + +# Bootstrapping breaks the circular dependency on python3dist(xds-protos), +# which is packaged separately but ultimately generated from grpc sources using +# the proto compilers in this package; the consequence is that we cannot build +# the python3-grpcio-admin or python3-grpcio-csds subpackages until after +# bootstrapping. +%bcond_without bootstrap + +# This must be enabled to get grpc_cli, which is apparently considered part of +# the tests by upstream. This is mentioned in +# https://github.com/grpc/grpc/issues/23432. +%bcond_without core_tests + +# A great many of these tests (over 20%) fail. Any help in understanding these +# well enough to fix them or report them upstream is welcome. +%bcond_with python_aio_tests + +%ifnarch s390x +%bcond_without python_gevent_tests +%else +# A signficant number of Python tests pass in test_lite but fail in +# test_gevent, mostly by dumping core without a traceback. Since it is tedious +# to enumerate these (and it is difficult to implement “suite-specific” skips +# for shared tests, so the tests would have to be skipped in all suites), we +# just skip the gevent suite entirely on this architecture. +%bcond_with python_gevent_tests +%endif + +# test-suite is broken for ppc64le +# FIXME: timeout error when running testing._time_test.StrictRealTimeTest.test_call_at +%ifarch x86_64 +%bcond_without check +%else +%bcond_with check +%endif + +# HTML documentation generated with Doxygen and/or Sphinx is not suitable for +# packaging due to a minified JavaScript bundle inserted by +# Doxygen/Sphinx/Sphinx themes itself. See discussion at +# https://bugzilla.redhat.com/show_bug.cgi?id=2006555. +# +# Normally we could consider enabling the Doxygen PDF documentation as a lesser +# substitute, but (after enabling it and working around some Unicode characters +# in the Markdown input) we get: +# +# ! TeX capacity exceeded, sorry [main memory size=6000000]. +# +# A similar situation applies to the Sphinx-generated HTML documentation for +# Python, except that we have not even tried to render it as a PDF because it +# is too unpleasant to try if we already cannot package the Doxygen-generated +# documentation. Instead, we have just dropped all documentation. + +Name: grpc +Version: 1.41.1 +Release: %autorelease +Summary: RPC library and framework + +# CMakeLists.txt: gRPC_CORE_SOVERSION +%global c_so_version 19 +# CMakeLists.txt: gRPC_CPP_SOVERSION +%global cpp_so_version 1.41 +# CMakeLists.txt: gRPC_CSHARP_SOVERSION +%global csharp_so_version 2.41 +# See https://github.com/abseil/abseil-cpp/issues/950#issuecomment-843169602 +# regarding unusual SOVERSION style (not a single number). + +# The entire source is ASL 2.0 except the following: +# +# BSD: +# - third_party/upb/, except third_party/upb/third_party/lunit/ +# * Potentially linked into any compiled subpackage (but not pure-Python +# subpackages, etc.) +# - third_party/address_sorting/ +# * Potentially linked into any compiled subpackage (but not pure-Python +# subpackages, etc.) +# +# as well as the following which do not contribute to the base License field or +# any subpackage License field for the reasons noted: +# +# MPLv2.0: +# - etc/roots.pem +# * Truncated to an empty file in prep; a symlink to the shared system +# certificates is used instead +# - src/android/test/interop/app/src/main/assets/roots.pem +# * Truncated to an empty file in prep +# ISC: +# - src/boringssl/crypto_test_data.cc and src/boringssl/err_data.c +# * Removed in prep; not used when building with system OpenSSL +# BSD: +# - src/objective-c/*.podspec and +# templates/src/objective-c/*.podspec.template +# * Unused since the Objective-C bindings are not currently built +# MIT: +# - third_party/cares/ares_build.h +# * Removed in prep; header from system C-Ares used instead +# - third_party/rake-compiler-dock/ +# * Removed in prep, since we build no containers +# - third_party/upb/third_party/lunit/ +# * Removed in prep, since there is no obvious way to run the upb tests +License: ASL 2.0 and BSD +URL: https://www.grpc.io +%global forgeurl https://github.com/grpc/grpc/ +# Used only at build time (not a bundled library); see notes at definition of +# gtest_version macro for explanation and justification. +%global gtest_url https://github.com/google/googletest +%global gtest_archivename googletest-release-%{gtest_version} +Source0: %{forgeurl}/archive/v%{version}/grpc-%{version}.tar.gz +Source1: %{gtest_url}/archive/release-%{gtest_version}/%{gtest_archivename}.tar.gz + +# Downstream grpc_cli man pages; hand-written based on “grpc_cli help” output. +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 + +# ~~~~ C (core) and C++ (cpp) ~~~~ + +BuildRequires: gcc-c++ +BuildRequires: cmake +BuildRequires: ninja-build +%if %{with core_tests} +# Used on grpc_cli: +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 +# Sets XXH_INCLUDE_ALL, which means xxhash is used as a header-only library +BuildRequires: pkgconfig(libxxhash) +BuildRequires: xxhash-static +# Header-only C library, which we unbundle from the bundled copy of upb +BuildRequires: wyhash_final1-devel +BuildRequires: wyhash_final1-static + +%if %{with core_tests} +BuildRequires: cmake(benchmark) +%if %{with system_gtest} +BuildRequires: cmake(gtest) +BuildRequires: pkgconfig(gmock) +%endif +%endif + +# ~~~~ Python ~~~~ + +BuildRequires: python3-devel +BuildRequires: python3dist(setuptools) + +# grpcio (setup.py) setup_requires (with +# GRPC_PYTHON_ENABLE_DOCUMENTATION_BUILD, which is NOT enabled): +# BuildRequires: python3dist(sphinx) + +# grpcio (setup.py) setup_requires (with +# GRPC_PYTHON_ENABLE_DOCUMENTATION_BUILD, which is NOT enabled): +# grpcio_tests (src/python/grpcio_tests/setup.py) install_requires: +BuildRequires: python3dist(six) >= 1.10 +# grpcio (setup.py) install_requires also has: +# six>=1.5.2 + +# grpcio (setup.py) setup_requires (with GRPC_PYTHON_BUILD_WITH_CYTHON, or +# absent generated sources); also needed for grpcio_tools +# (tools/distrib/python/grpcio_tools/setup.py) +BuildRequires: python3dist(cython) > 0.23 + +# grpcio (setup.py) install_requires: +# grpcio_tests (src/python/grpcio_tests/setup.py) install_requires: +# futures>=2.2.0; python_version<'3.2' + +# grpcio (setup.py) install_requires: +# grpcio_tests (src/python/grpcio_tests/setup.py) install_requires: +# enum34>=1.0.4; python_version<'3.4' + +# grpcio_csds (src/python/grpcio_csds/setup.py) install_requires: +# grpcio_channelz (src/python/grpcio_channelz/setup.py) install_requires: +# grpcio_health_checking (src/python/grpcio_health_checking/setup.py) +# install_requires: +# grpcio_reflection (src/python/grpcio_reflection/setup.py) install_requires: +# grpcio_status (src/python/grpcio_status/setup.py) install_requires: +# grpcio_testing (src/python/grpcio_testing/setup.py) install_requires: +# grpcio_tests (src/python/grpcio_tests/setup.py) install_requires: +BuildRequires: python3dist(protobuf) >= 3.6.0 +# grpcio_tools (tools/distrib/python/grpcio_tools/setup.py) install_requires +# also has: +# protobuf>=3.5.0.post1 +# which is written as +# python3dist(protobuf) >= 3.5^post1 + +# grpcio_status (src/python/grpcio_status/setup.py) install_requires: +BuildRequires: python3dist(googleapis-common-protos) >= 1.5.5 + +%if %{without bootstrap} +# grpcio_csds (src/python/grpcio_csds/setup.py) install_requires +BuildRequires: python3dist(xds-protos) >= 0.0.7 +%endif + +# Several packages have dependencies on grpcio or grpcio_tools—and grpcio-tests +# depends on all of the other Python packages—which are satisfied within this +# package. +# +# Similarly, grpcio_admin depends on grpcio_channelz and grpcio_csds. + +# grpcio_tests (src/python/grpcio_tests/setup.py) install_requires: +BuildRequires: python3dist(coverage) >= 4.0 + +# grpcio_tests (src/python/grpcio_tests/setup.py) install_requires: +BuildRequires: python3dist(oauth2client) >= 1.4.7 + +# grpcio_tests (src/python/grpcio_tests/setup.py) install_requires: +BuildRequires: python3dist(google-auth) >= 1.17.2 + +# grpcio_tests (src/python/grpcio_tests/setup.py) install_requires: +BuildRequires: python3dist(requests) >= 2.14.2 + +# Required for “test_gevent” tests: +BuildRequires: python3dist(gevent) + +# For stopping the port server +BuildRequires: curl + +# ~~~~ Miscellaneous ~~~~ + +# https://bugzilla.redhat.com/show_bug.cgi?id=1893533 +%global _lto_cflags %{nil} + +# Reference documentation, which is *not* enabled +# BuildRequires: doxygen + +BuildRequires: ca-certificates +# For converting absolute symlinks in the buildroot to relative ones +BuildRequires: symlinks + +# Apply Fedora system crypto policies. Since this is Fedora-specific, the patch +# is not suitable for upstream. +# https://docs.fedoraproject.org/en-US/packaging-guidelines/CryptoPolicies/#_cc_applications +# +# In fact, this may not be needed, since only testing code is patched. +Patch0: grpc-1.39.0-system-crypto-policies.patch +# Add an option GRPC_PYTHON_BUILD_SYSTEM_ABSL to go with the gRPC_ABSL_PROVIDER +# option already provided upstream. See +# https://github.com/grpc/grpc/issues/25559. +Patch1: grpc-1.40.0-python-grpcio-use-system-abseil.patch +# Fix errors like: +# TypeError: super(type, obj): obj must be an instance or subtype of type +# It is not clear why these occur. +Patch2: grpc-1.36.4-python-grpcio_tests-fixture-super.patch +# Skip tests requiring non-loopback network access when the +# FEDORA_NO_NETWORK_TESTS environment variable is set. +Patch3: grpc-1.40.0-python-grpcio_tests-make-network-tests-skippable.patch +# A handful of compression tests miss the compression ratio threshold. It seems +# to be inconsistent which particular combinations fail in a particular test +# run. It is not clear that this is a real problem. Any help in understanding +# the actual cause well enough to fix this or usefully report it upstream is +# welcome. +Patch4: grpc-1.36.4-python-grpcio_tests-skip-compression-tests.patch +# The upstream requirement to link gtest/gmock from grpc_cli is spurious. +# Remove it. We still have to build the core tests and link a test library +# (libgrpc++_test_config.so…) +Patch5: grpc-1.37.0-grpc_cli-do-not-link-gtest-gmock.patch +# Fix confusion about path to python_wrapper.sh in httpcli/httpscli tests. I +# suppose that the unpatched code must be correct for how upstream runs the +# tests, somehow. +Patch6: grpc-1.39.0-python_wrapper-path.patch +# Port Python 2 scripts used in core tests to Python 3 +Patch7: grpc-1.40.0-python2-test-scripts.patch +# Fix compatibility with breaking changes in google-benchmark 1.6.0 +# +# This will not be sent upstream since it is impractical to make a patch +# compatible with both 1.6.0 and 1.5.0, and upstream has not yet updated to +# 1.6.0. +Patch8: grpc-1.40.0-google-benchmark-1.6.0.patch +# In src/core/lib/promise/detail/basic_seq.h, include cassert +# https://github.com/grpc/grpc/pull/27516 +Patch9: 27516.patch + +Requires: grpc-data = %{version}-%{release} + +# Upstream https://github.com/protocolbuffers/upb does not support building +# with anything other than Bazel, and Bazel is not likely to make it into +# Fedora anytime soon due to its nightmarish collection of dependencies. +# Monitor this at https://bugzilla.redhat.com/show_bug.cgi?id=1470842. +# Therefore upb cannot be packaged for Fedora, and we must use the bundled +# copy. +# +# Note that upstream has never chosen a version, and it is not clear from which +# commit the bundled copy was taken or forked. +# +# Note also that libupb is installed in the system-wide linker path, which will +# be a problem if upb is ever packaged separately. We will cross that bridge if +# we get there. +Provides: bundled(upb) + +# Regarding third_party/address_sorting: this looks a bit like a bundled +# library, but it is not. From a source file comment: +# This is an adaptation of Android's implementation of RFC 6724 (in Android’s +# getaddrinfo.c). It has some cosmetic differences from Android’s +# getaddrinfo.c, but Android’s getaddrinfo.c was used as a guide or example +# of a way to implement the RFC 6724 spec when this was written. + +%description +gRPC is a modern open source high performance RPC framework that can run in any +environment. It can efficiently connect services in and across data centers +with pluggable support for load balancing, tracing, health checking and +authentication. It is also applicable in last mile of distributed computing to +connect devices, mobile applications and browsers to backend services. + +The main usage scenarios: + + • Efficiently connecting polyglot services in microservices style + architecture + • Connecting mobile devices, browser clients to backend services + • Generating efficient client libraries + +Core Features that make it awesome: + + • Idiomatic client libraries in 10 languages + • Highly efficient on wire and with a simple service definition framework + • Bi-directional streaming with http/2 based transport + • Pluggable auth, tracing, load balancing and health checking + +This package provides the shared C core library. + + +%package data +Summary: Data for gRPC bindings +License: ASL 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: ASL 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%{?_isa} = %{version}-%{release} + +%description cpp +C++ language bindings for gRPC. + + +%package plugins +Summary: Protocol buffers compiler plugins for gRPC +# License: same as base package +Requires: grpc%{?_isa} = %{version}-%{release} +Requires: protobuf-compiler + +%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%{?_isa} = %{version}-%{release} + +%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 +# License: same as base package +Requires: grpc%{?_isa} = %{version}-%{release} +Requires: grpc-cpp%{?_isa} = %{version}-%{release} + +# grpc/impl/codegen/port_platform.h includes linux/version.h +Requires: kernel-headers%{?_isa} +# grpcpp/impl/codegen/config_protobuf.h includes google/protobuf/… +Requires: pkgconfig(protobuf) +# grpcpp/test/mock_stream.h includes gmock/gmock.h +Requires: pkgconfig(gmock) +# grpcpp/impl/codegen/sync.h includes absl/synchronization/mutex.h +# grpc.pc has -labsl_[…] +Requires: abseil-cpp-devel%{?_isa} +# grpc.pc has -lre2 +Requires: pkgconfig(re2) +# grpc.pc has -lcares +Requires: cmake(c-ares) +# grpc.pc has -lz +Requires: pkgconfig(zlib) + +# Library name conflict for %%{_libdir}/libgpr.so MUST be removed per +# guidelines, but until a plan can be devised, we make the conflict explicit. +# +# https://bugzilla.redhat.com/show_bug.cgi?id=2017576 +Conflicts: libgpr + +%description devel +Development headers and files for gRPC libraries (both C and C++). + + +%package -n python3-grpcio +Summary: Python language bindings for gRPC +# License: same as base package + +# Note that the Python package has no runtime dependency on the base C library; +# everything it needs is bundled. +Requires: grpc-data = %{version}-%{release} + +%description -n python3-grpcio +Python language bindings for gRPC (HTTP/2-based RPC framework). + + +%global grpcio_egg %{python3_sitearch}/grpcio-%{version}-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 +# License: same as base package + +%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: ASL 2.0 +BuildArch: noarch + +%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: ASL 2.0 +BuildArch: noarch + +%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: ASL 2.0 +BuildArch: noarch + +%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: ASL 2.0 +BuildArch: noarch + +%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: ASL 2.0 +BuildArch: noarch + +%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: ASL 2.0 +BuildArch: noarch + +%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: ASL 2.0 +BuildArch: noarch + +%description -n python3-grpcio-testing +gRPC Python Testing Package +=========================== + +Testing utilities for gRPC Python. + + +%prep +%autosetup -p1 + +echo '===== Patching grpcio_tools for system protobuf =====' 2>&1 +# Build python3-grpcio_tools against system protobuf packages instead of +# expecting a git submodule. Must also add requisite linker flags using +# GRPC_PYTHON_LDFLAGS. This was formerly done by +# grpc-VERSION-python-grpcio_tools-use-system-protobuf.patch, but it had to be +# tediously but trivially rebased every patch release as the CC_FILES list +# changed, so we automated the patch. +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} +# Copy in the needed gtest/gmock implementations. +%setup -q -T -D -b 1 +rm -rvf 'third_party/googletest' +mv '../%{gtest_archivename}' 'third_party/googletest' +%else +# Patch CMakeLists for external gtest/gmock. +# +# 1. Create dummy sources, adding a typedef so the translation unit is not +# empty, rather than removing references to these sources from +# CMakeLists.txt. This is so that we do not end up with executables with no +# sources, only libraries, which is a CMake error. +# 2. Either remove references to the corresponding include directories, or +# create the directories and leave them empty. +# 3. “Stuff” the external library into the target_link_libraries() for each +# test by noting that GMock/GTest/GFlags are always used together. +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 + +echo '===== Removing bundled wyhash =====' 2>&1 +# Remove bundled wyhash (via upb); to avoid patching the build system, simply +# use a symlink to find the system copy. This is sufficient since it is a +# header-only library. +rm -rvf third_party/upb/third_party/wyhash +ln -s %{_includedir}/wyhash_final1/ third_party/upb/third_party/wyhash + +echo '===== Removing bundled xxhash =====' 2>&1 +# Remove bundled xxhash +rm -rvf third_party/xxhash +# Since grpc sets XXH_INCLUDE_ALL wherever it uses xxhash, it is using xxhash +# as a header-only library. This means we can replace it with the system copy +# by doing nothing further; xxhash.h is in the system include path and will be +# found instead, and there are no linker flags to add. See also +# https://github.com/grpc/grpc/issues/25945. + +echo '===== Fixing permissions =====' 2>&1 +# https://github.com/grpc/grpc/pull/27069 +find . -type f -perm /0111 \ + -exec gawk '!/^#!/ { print FILENAME }; { nextfile }' '{}' '+' | + xargs -r chmod -v a-x + +echo '===== Removing selected unused sources =====' 2>&1 +# Remove unused sources that have licenses not in the License field, to ensure +# they are not accidentally used in the build. See the comment above the base +# package License field for more details. +rm -rfv \ + src/boringssl/*.c src/boringssl/*.cc \ + third_party/cares/ares_build.h \ + third_party/rake-compiler-dock \ + third_party/upb/third_party/lunit +# Since we are replacing roots.pem with a symlink to the shared system +# certificates, we do not include its license (MPLv2.0) in any License field. +# We remove its contents so that, if we make a packaging mistake, we will have +# a bug but not an incorrect License field. +echo '' > etc/roots.pem + +# Remove Android sources and examples. We do not need these on Linux, and they +# have some issues that will be flagged when reviewing the package, such as: +# - Another copy of the MPLv2.0-licensed certificate bundle from +# etc/roots.pem, in src/android/test/interop/app/src/main/assets/roots.pem +# - Pre-built jar files at +# src/android/test/interop/gradle/wrapper/gradle-wrapper.jar and +# examples/android/helloworld/gradle/wrapper/gradle-wrapper.jar +rm -rvf examples/android src/android + +# Remove unwanted .gitignore files, generally in examples. One could argue that +# a sample .gitignore file is part of the example, but, well, we’re not going +# to do that. +find . -type f -name .gitignore -print -delete + +echo '===== Fixing shebangs =====' 2>&1 +# Find executables with /usr/bin/env shebangs in the examples, and fix them. +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 +# We need to adjust the C++ standard to avoid abseil-related linker errors. For +# the main C++ build, we can use CMAKE_CXX_STANDARD. For extensions, examples, +# etc., we must patch. +sed -r -i 's/(std=c\+\+)11/\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 + +echo '===== Fixing .pc install path =====' 2>&1 +# Fix the install path for .pc files +# https://github.com/grpc/grpc/issues/25635 +sed -r -i 's|lib(/pkgconfig)|\${gRPC_INSTALL_LIBDIR}\1|' CMakeLists.txt + +echo '===== Patching to skip certain broken tests =====' 2>&1 + +%ifarch %{ix86} %{arm32} +# Confirmed in 1.41.0 2021-10-01 (in %%{arm32} only) +# TODO figure out how to report this upstream in a useful/actionable way +sed -r -i "s/^([[:blank:]]*)(def test_concurrent_stream_stream)\\b/\ +\\1@unittest.skip('May hang unexplainedly')\\n\\1\\2/" \ + 'src/python/grpcio_tests/tests/testing/_client_test.py' +%endif + +%ifarch %{ix86} %{arm32} +# Confirmed in 1.41.0 2021-10-05 +# These tests fail with: +# OverflowError: Python int too large to convert to C ssize_t +# TODO figure out how to report this upstream in a useful/actionable way +sed -r -i \ + "s/^([[:blank:]]*)(def test(SSLSessionCacheLRU|SessionResumption))\\b/\ +\\1@unittest.skip('Unexplained overflow error on 32-bit')\\n\\1\\2/" \ + 'src/python/grpcio_tests/tests/unit/_auth_context_test.py' \ + 'src/python/grpcio_tests/tests/unit/_session_cache_test.py' +%endif + +# Confirmed in 1.41.0 2021-10-08 (on aarch64 and s390x) +# These tests can be flaky and may fail only sometimes. Failures have been seen +# on all architectures. +# TODO figure out how to report this upstream in a useful/actionable way +sed -r -i "s/^([[:blank:]]*)(def testConcurrent(Blocking|Future)\ +Invocations)\\b/\\1@unittest.skip('May hang unexplainedly')\\n\\1\\2/" \ + 'src/python/grpcio_tests/tests/unit/_rpc_part_2_test.py' + +%ifarch %{arm64} ppc64le s390x x86_64 +# Confirmed in 1.41.0 2021-10-05 (aarch64 and ppc64le) +# This is flaky and often succeeds. +# TODO figure out how to report this upstream in a useful/actionable way +# +# unit._dynamic_stubs_test.DynamicStubTest.test_grpc_tools_unimportable +# traceback: +# Traceback (most recent call last): +# File "/usr/lib64/python3.10/unittest/case.py", line 59, in testPartExecutor +# yield +# File "/usr/lib64/python3.10/unittest/case.py", line 592, in run +# self._callTestMethod(testMethod) +# File "/usr/lib64/python3.10/unittest/case.py", line 549, in _callTestMethod +# method() +# File +# "/builddir/build/BUILD/grpc-1.39.0/src/python/grpcio_tests/tests/unit/_dynamic_stubs_test.py", +# line 136, in test_grpc_tools_unimportable +# _run_in_subprocess(_test_grpc_tools_unimportable) +# File +# "/builddir/build/BUILD/grpc-1.39.0/src/python/grpcio_tests/tests/unit/_dynamic_stubs_test.py", +# line 80, in _run_in_subprocess +# assert proc.exitcode == 0, "Process exited with code {}".format( +# AssertionError: Process exited with code 64 +sed -r -i "s/^([[:blank:]]*)(class DynamicStubTest)\\b/\ +\\1@unittest.skip('Child process exits with code 64')\\n\\1\\2/" \ + 'src/python/grpcio_tests/tests/unit/_dynamic_stubs_test.py' +%endif + +%ifarch %{arm64} ppc64le s390x x86_64 +# Confirmed in 1.41.0 2021-10-05 (aarch64) +# This is flaky and often succeeds. +# TODO figure out how to report this upstream in a useful/actionable way +# +# unit._logging_test.LoggingTest.test_can_configure_logger +# traceback: +# Traceback (most recent call last): +# File "/usr/lib64/python3.10/unittest/case.py", line 59, in testPartExecutor +# yield +# File "/usr/lib64/python3.10/unittest/case.py", line 592, in run +# self._callTestMethod(testMethod) +# File "/usr/lib64/python3.10/unittest/case.py", line 549, in _callTestMethod +# method() +# File +# "/builddir/build/BUILD/grpc-1.39.0/src/python/grpcio_tests/tests/unit/_logging_test.py", +# line 66, in test_can_configure_logger +# self._verifyScriptSucceeds(script) +# File +# "/builddir/build/BUILD/grpc-1.39.0/src/python/grpcio_tests/tests/unit/_logging_test.py", +# line 91, in _verifyScriptSucceeds +# self.assertEqual( +# File "/usr/lib64/python3.10/unittest/case.py", line 839, in assertEqual +# assertion_func(first, second, msg=msg) +# File "/usr/lib64/python3.10/unittest/case.py", line 832, in _baseAssertEqual +# raise self.failureException(msg) +# AssertionError: 0 != 64 : process failed with exit code 64 (stdout: b'', stderr: b'') +sed -r -i "s/^([[:blank:]]*)(def test_(can_configure_logger|grpc_logger|\ +handler_found|logger_not_occupied))\\b/\ +\\1@unittest.skip('Child process exits with code 64')\\n\\1\\2/" \ + 'src/python/grpcio_tests/tests/unit/_logging_test.py' +%endif + +%ifarch %{ix86} %{arm32} +# Confirmed in 1.41.0 2021-10-05 +# TODO figure out how to report this upstream in a useful/actionable way +sed -r -i "s/^([[:blank:]]*)(def testCancelManyCalls)\\b/\ +\\1@unittest.skip('May hang unexplainedly')\\n\\1\\2/" \ + 'src/python/grpcio_tests/tests/unit/_cython/_cancel_many_calls_test.py' +%endif + + +%build +# ~~~~ C (core) and C++ (cpp) ~~~~ + +echo '===== Building C (core) and C++ components =====' 2>&1 +# We could use either make or ninja as the backend; ninja is faster and has no +# disadvantages (except a small additional BR, given we already need Python) +# +# We need to adjust the C++ standard to avoid abseil-related linker errors. +%cmake \ + -DgRPC_INSTALL:BOOL=ON \ + -DCMAKE_CXX_STANDARD:STRING=%{cpp_std} \ + -DCMAKE_SKIP_INSTALL_RPATH:BOOL=ON \ + -DgRPC_INSTALL_BINDIR:PATH=%{_bindir} \ + -DgRPC_INSTALL_LIBDIR:PATH=%{_libdir} \ + -DgRPC_INSTALL_INCLUDEDIR:PATH=%{_includedir} \ + -DgRPC_INSTALL_CMAKEDIR:PATH=%{_libdir}/cmake/grpc \ + -DgRPC_INSTALL_SHAREDIR:PATH=%{_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 +%cmake_build +# ~~~~ Python ~~~~ + +echo '===== Building Python grpcio package =====' 2>&1 +# Since there are some interdepndencies in the Python packages (e.g., many have +# setup_requires: grpcio-tools), we do temporary installs of built packages +# into a local directory as needed, and add it to the PYTHONPATH. +PYROOT="${PWD}/%{_vpath_builddir}/pyroot" +if [ -n "${PYTHONPATH-}" ]; then PYTHONPATH="${PYTHONPATH}:"; fi +PYTHONPATH="${PYTHONPATH-}${PYROOT}%{python3_sitelib}" +PYTHONPATH="${PYTHONPATH}:${PYROOT}%{python3_sitearch}" +export PYTHONPATH + +# ~~ grpcio ~~ +# Note that we had to patch in the GRPC_PYTHON_BUILD_SYSTEM_ABSL option. +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' +# We must set GRPC_PYTHON_CFLAGS to avoid unwanted defaults. We take the +# upstream flags except that we remove -std=c99, which is inapplicable to the +# C++ parts of the extension. +# +# We must set GRPC_PYTHON_LDFLAGS to avoid unwanted defaults. The upstream +# flags attempt to statically link libgcc, so we do not need any of them. Since +# we forcibly unbundle protobuf, we need to add linker flags for protobuf +# ourselves. +export GRPC_PYTHON_CFLAGS="-fvisibility=hidden -fno-wrapv -fno-exceptions $( + pkg-config --cflags protobuf +)" +export GRPC_PYTHON_LDFLAGS="$(pkg-config --libs protobuf)" +%py3_build +%{__python3} %{py_setup} %{?py_setup_args} install \ + -O1 --skip-build --root "${PYROOT}" + +# ~~ grpcio-tools ~~ +echo '===== Building Python grpcio_tools package =====' 2>&1 +pushd "tools/distrib/python/grpcio_tools/" >/dev/null +# When copying more things in here, make sure the subpackage License field +# stays correct. We need copies, not symlinks, so that the “graft” in +# MANIFEST.in works. +mkdir -p grpc_root/src +for srcdir in compiler +do + cp -rp "../../../../src/${srcdir}" "grpc_root/src/" +done +cp -rp '../../../../include' 'grpc_root/' +# We must set GRPC_PYTHON_CFLAGS and GRPC_PYTHON_LDFLAGS again; grpcio_tools +# does not have the same default upstream flags as grpcio does, and it needs to +# link the protobuf compiler library. +export GRPC_PYTHON_CFLAGS="-fno-wrapv -frtti $(pkg-config --cflags protobuf)" +export GRPC_PYTHON_LDFLAGS="$(pkg-config --libs protobuf) -lprotoc" +%py3_build +# Remove unwanted shebang from grpc_tools.protoc source file, which will be +# installed without an executable bit: +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 + + +%install +# ~~~~ C (core) and C++ (cpp) ~~~~ +%cmake_install + +%if %{with core_tests} +# For some reason, grpc_cli is not installed. Do it manually. +install -t '%{buildroot}%{_bindir}' -p -D '%{_vpath_builddir}/grpc_cli' +# grpc_cli build does not respect CMAKE_INSTALL_RPATH +# https://github.com/grpc/grpc/issues/25176 +chrpath --delete '%{buildroot}%{_bindir}/grpc_cli' + +# This library is also required for grpc_cli; it is built as part of the test +# code. +install -t '%{buildroot}%{_libdir}' -p \ + %{_vpath_builddir}/libgrpc++_test_config.so.* +chrpath --delete '%{buildroot}%{_libdir}/'libgrpc++_test_config.so.* + +install -d '%{buildroot}/%{_mandir}/man1' +install -t '%{buildroot}/%{_mandir}/man1' -p -m 0644 \ + %{SOURCE100} %{SOURCE101} %{SOURCE102} %{SOURCE103} %{SOURCE104} \ + %{SOURCE106} %{SOURCE107} %{SOURCE108} +%endif + +# Remove any static libraries that may have been installed against our wishes +find %{buildroot} -type f -name '*.a' -print -delete +# Fix wrong permissions on installed headers +find %{buildroot}%{_includedir}/grpc* -type f -name '*.h' -perm /0111 \ + -execdir chmod -v a-x '{}' '+' + +# ~~~~ Python ~~~~ + +# Since several packages have an install_requires: grpcio-tools, we must ensure +# the buildroot Python site-packages directories are in the PYTHONPATH. +pushd '%{buildroot}' +PYROOT="${PWD}" +popd +if [ -n "${PYTHONPATH-}" ]; then PYTHONPATH="${PYTHONPATH}:"; fi +PYTHONPATH="${PYTHONPATH-}${PYROOT}%{python3_sitelib}" +PYTHONPATH="${PYTHONPATH}:${PYROOT}%{python3_sitearch}" +export PYTHONPATH + +# ~~ grpcio ~~ +%py3_install + +# ~~ grpcio-tools ~~ +pushd "tools/distrib/python/grpcio_tools/" >/dev/null +%py3_install +popd >/dev/null + +# ~~ pure-python modules grpcio-* ~~ +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 +# The grpcio_tests package should not be installed; it would provide top-level +# packages with generic names like “tests” or “tests_aio”. + +# ~~~~ Miscellaneous ~~~~ + +# Replace copies of the certificate bundle with symlinks to the shared system +# certificates. This has the following benefits: +# - Reduces duplication and save space +# - Respects system-wide administrative trust configuration +# - Keeps “MPLv2.0” from having to be added to a number of License fields +%global sysbundle %{_sysconfdir}/pki/ca-trust/extracted/pem/tls-ca-bundle.pem +# We do not own this file; we temporarily install it in the buildroot so we do +# not have dangling symlinks. +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}')" + +# ~~ documentation and examples ~~ + +install -D -t '%{buildroot}%{_pkgdocdir}' -m 0644 -p AUTHORS *.md +cp -rvp doc examples '%{buildroot}%{_pkgdocdir}' + + +%check +%if %{with check} +export FEDORA_NO_NETWORK_TESTS=1 + +%if %{with core_tests} +PORT_SERVER_PORT="$(awk ' + /_PORT_SERVER_PORT[[:blank:]]*=[[:blank:]]*[[:digit:]]+$/ { print $NF } +' tools/run_tests/python_utils/start_port_server.py)" + +# Note that no tests are actually found by ctest: +%ctest + +# Exclude tests that are known to hang or otherwise fail. Assistance welcome in +# figuring out what is wrong with these. Note, however, that we are running +# the tests very differently from upstream, which uses scripts in +# tools/run_tests/ that rebuild the entire source and use Docker, so it is +# likely to be difficult to get help from upstream for any failures here. Note +# that some of these tests would never work in an environment without Internet +# access. +{ sed -r -e '/^(#|$)/d' -e 's|^(.*)$|%{_vpath_builddir}/\1_test|' <<'EOF' + +# Requires (or may require) network: +resolve_address_using_ares_resolver +resolve_address_using_ares_resolver_posix +resolve_address_using_native_resolver +resolve_address_using_native_resolver_posix +ssl_transport_security + +# Seems to require privilege: +flaky_network + +%ifarch s390x +# Unexplained: +# +# [ RUN ] AddressSortingTest.TestSorterKnowsIpv6LoopbackIsAvailable +# ../test/cpp/naming/address_sorting_test.cc:807: Failure +# Expected equality of these values: +# source_addr_output->sin6_family +# Which is: 0 +# 10 +# ../test/cpp/naming/address_sorting_test.cc:817: Failure +# Expected equality of these values: +# source_addr_str +# Which is: "::" +# "::1" +# [ FAILED ] AddressSortingTest.TestSorterKnowsIpv6LoopbackIsAvailable (0 ms) +# +# Confirmed in 1.41.0 2021-10-10 +address_sorting +%endif + +%ifarch s390x +# Unexplained: +# +# Status is not ok: Setting authenticated associated data failed +# E0805 21:01:40.415152384 1888289 aes_gcm_test.cc:77] assertion failed: status == GRPC_STATUS_OK +# *** SIGABRT received at time=1628197300 on cpu 1 *** +# PC: @ 0x3ff8581ec8e (unknown) __pthread_kill_internal +# @ 0x3ff85701524 (unknown) (unknown) +# @ 0x3ff85701790 (unknown) (unknown) +# @ 0x3ff862e3b78 (unknown) (unknown) +# @ 0x3ff8581ec8e (unknown) __pthread_kill_internal +# @ 0x3ff857d03e0 (unknown) gsignal +# @ 0x3ff857b3480 (unknown) abort +# @ 0x2aa27303a48 (unknown) gsec_assert_ok() +# @ 0x2aa27303b80 (unknown) gsec_test_random_encrypt_decrypt() +# @ 0x2aa2730156e (unknown) main +# @ 0x3ff857b3732 (unknown) __libc_start_call_main +# @ 0x3ff857b380e (unknown) __libc_start_main@GLIBC_2.2 +# @ 0x2aa27302730 (unknown) (unknown) +# +# Confirmed in 1.41.0 2021-10-10 +alts_crypt +%endif + +%ifarch s390x +# Unexplained: +# +# (aborted without output) +# +# Confirmed in 1.41.0 2021-10-10 +alts_crypter +%endif + +%ifarch s390x +# Unexplained: +# +# [ RUN ] AltsConcurrentConnectivityTest.TestBasicClientServerHandshakes +# E0811 15:42:24.743250725 2232792 +# alts_grpc_privacy_integrity_record_protocol.cc:107] Failed to unprotect, More +# bytes written than expected. Frame decryption failed. +# [… 14 similar lines omitted …] +# E0811 15:42:29.735499217 2232786 +# alts_grpc_privacy_integrity_record_protocol.cc:107] Failed to unprotect, More +# bytes written than expected. Frame decryption failed. +# /builddir/build/BUILD/grpc-1.39.0/test/core/tsi/alts/handshaker/alts_concurrent_connectivity_test.cc:245: +# Failure +# Expected equality of these values: +# ev.type +# Which is: 1 +# GRPC_OP_COMPLETE +# Which is: 2 +# connect_loop runner:0x3ffc7ffdc68 got ev.type:1 i:0 +# [ FAILED ] AltsConcurrentConnectivityTest.TestBasicClientServerHandshakes (5021 ms) +# [ RUN ] AltsConcurrentConnectivityTest.TestConcurrentClientServerHandshakes +# [… 2983 lines including some additional failures and error messages omitted …] +# [----------] 5 tests from AltsConcurrentConnectivityTest (27346 ms total) +# [----------] Global test environment tear-down +# [==========] 5 tests from 1 test suite ran. (27347 ms total) +# [ PASSED ] 3 tests. +# [ FAILED ] 2 tests, listed below: +# [ FAILED ] AltsConcurrentConnectivityTest.TestBasicClientServerHandshakes +# [ FAILED ] AltsConcurrentConnectivityTest.TestConcurrentClientServerHandshakes +# 2 FAILED TESTS +# E0811 15:43:02.072126233 2232783 test_config.cc:195] +# Timeout in waiting for gRPC shutdown +# +# Confirmed in 1.41.0 2021-10-10 +alts_concurrent_connectivity +%endif + +%ifarch s390x +# Unexplained: +# +# (aborted without output) +# +# Confirmed in 1.41.0 2021-10-10 +alts_frame_protector +%endif + +%ifarch s390x +# Unexplained: +# +# E0809 03:12:16.141688879 1707771 +# alts_grpc_integrity_only_record_protocol.cc:109] Failed to protect, Setting +# authenticated associated data failed +# E0809 03:12:16.141863502 1707771 alts_grpc_record_protocol_test.cc:282] +# assertion failed: status == TSI_OK +# *** SIGABRT received at time=1628478736 on cpu 2 *** +# PC: @ 0x3ffa571ec8e (unknown) __pthread_kill_internal +# @ 0x3ffa5601524 (unknown) (unknown) +# @ 0x3ffa5601790 (unknown) (unknown) +# @ 0x3ffa61e3b78 (unknown) (unknown) +# @ 0x3ffa571ec8e (unknown) __pthread_kill_internal +# @ 0x3ffa56d03e0 (unknown) gsignal +# @ 0x3ffa56b3480 (unknown) abort +# @ 0x2aa1fa82e3e (unknown) random_seal_unseal() +# @ 0x2aa1fa836f8 (unknown) alts_grpc_record_protocol_tests() +# @ 0x2aa1fa81c68 (unknown) main +# @ 0x3ffa56b3732 (unknown) __libc_start_call_main +# @ 0x3ffa56b380e (unknown) __libc_start_main@GLIBC_2.2 +# @ 0x2aa1fa81d60 (unknown) (unknown) +# +# Confirmed in 1.41.0 2021-10-10 +alts_grpc_record_protocol +%endif + +%ifarch s390x +# Unexplained: +# +# E0807 15:46:27.681935728 3628534 +# alts_grpc_integrity_only_record_protocol.cc:109] Failed to protect, Setting +# authenticated associated data failed +# E0807 15:46:27.682097664 3628534 alts_grpc_record_protocol_test.cc:282] +# assertion failed: status == TSI_OK +# *** SIGABRT received at time=1628351187 on cpu 1 *** +# PC: @ 0x3ffbae9ec8e (unknown) __pthread_kill_internal +# @ 0x3ffbad81524 (unknown) (unknown) +# @ 0x3ffbad81790 (unknown) (unknown) +# @ 0x3ffbb963b78 (unknown) (unknown) +# @ 0x3ffbae9ec8e (unknown) __pthread_kill_internal +# @ 0x3ffbae503e0 (unknown) gsignal +# @ 0x3ffbae33480 (unknown) abort +# @ 0x2aa07782e3e (unknown) random_seal_unseal() +# @ 0x2aa077836f8 (unknown) alts_grpc_record_protocol_tests() +# @ 0x2aa07781c68 (unknown) main +# @ 0x3ffbae33732 (unknown) __libc_start_call_main +# @ 0x3ffbae3380e (unknown) __libc_start_main@GLIBC_2.2 +# @ 0x2aa07781d60 (unknown) (unknown) +# +# Confirmed in 1.41.0 2021-10-10 +alts_handshaker_client +%endif + +%ifarch s390x +# Unexplained: +# +# (aborted without output) +# +# Confirmed in 1.41.0 2021-10-10 +alts_iovec_record_protocol +%endif + +%ifarch s390x +# Unexplained: +# +# [ RUN ] AltsUtilTest.AuthContextWithGoodAltsContextWithoutRpcVersions +# /builddir/build/BUILD/grpc-1.39.0/test/cpp/common/alts_util_test.cc:122: Failure +# Expected equality of these values: +# expected_sl +# Which is: 1 +# alts_context->security_level() +# Which is: 0 +# [ FAILED ] AltsUtilTest.AuthContextWithGoodAltsContextWithoutRpcVersions (0 ms) +# +# Confirmed in 1.41.0 2021-10-10 +alts_util +%endif + +%ifarch s390x +# Unexplained: +# +# E0809 16:49:05.522667340 1558872 +# alts_grpc_integrity_only_record_protocol.cc:109] Failed to protect, Setting +# authenticated associated data failed +# E0809 16:49:05.523083934 1558872 alts_zero_copy_grpc_protector_test.cc:183] +# assertion failed: tsi_zero_copy_grpc_protector_protect( sender, +# &var->original_sb, &var->protected_sb) == TSI_OK +# *** SIGABRT received at time=1628527745 on cpu 2 *** +# PC: @ 0x3ff8169ec8e (unknown) __pthread_kill_internal +# @ 0x3ff81581524 (unknown) (unknown) +# @ 0x3ff81581790 (unknown) (unknown) +# @ 0x3ff82163b78 (unknown) (unknown) +# @ 0x3ff8169ec8e (unknown) __pthread_kill_internal +# @ 0x3ff816503e0 (unknown) gsignal +# @ 0x3ff81633480 (unknown) abort +# @ 0x2aa3d0028b8 (unknown) seal_unseal_small_buffer() +# @ 0x2aa3d002a68 (unknown) alts_zero_copy_protector_seal_unseal_small_buffer_tests() +# @ 0x2aa3d001b26 (unknown) main +# @ 0x3ff81633732 (unknown) __libc_start_call_main +# @ 0x3ff8163380e (unknown) __libc_start_main@GLIBC_2.2 +# @ 0x2aa3d001c10 (unknown) (unknown) +# +# Confirmed in 1.41.0 2021-10-10 +alts_zero_copy_grpc_protector +%endif + +%ifarch %{ix86} %{arm32} +# Unexplained: +# +# [ RUN ] CertificateProviderStoreTest.Basic +# E0809 18:01:00.777880860 323759 certificate_provider_store.cc:67] +# Certificate provider factory fake2 not found +# [ OK ] CertificateProviderStoreTest.Basic (1 ms) +# [ RUN ] CertificateProviderStoreTest.Multithreaded +# terminate called without an active exception +# *** SIGABRT received at time=1628532060 on cpu 0 *** +# PC: @ 0xf7f9d559 (unknown) __kernel_vsyscall +# +# Confirmed in 1.41.0 2021-10-10 +certificate_provider_store +%endif + +%ifarch %{ix86} +# Unexplained: +# +# [ RUN ] ChannelTracerTest.TestMultipleEviction +# /builddir/build/BUILD/grpc-1.39.0/test/core/channel/channel_trace_test.cc:65: +# Failure +# Expected equality of these values: +# array.array_value().size() +# Which is: 3 +# expected +# Which is: 4 +# [ FAILED ] ChannelTracerTest.TestMultipleEviction (1 ms) +# +# Confirmed in 1.41.0 2021-10-10 +channel_trace +%endif + +%ifarch ppc64le %{arm32} %{arm64} s390x +# Unexplained: +# +# ppc64le, aarch64: +# +# E0811 14:46:04.709808861 2142245 tcp_server_posix.cc:216] Failed accept4: Too many open files +# terminate called after throwing an instance of 'std::runtime_error' +# what(): random_device::random_device(const std::string&): device not available +# *** SIGABRT received at time=1628693164 on cpu 4 *** +# [address_is_readable.cc : 96] RAW: Failed to create pipe, errno=24 +# [failure_signal_handler.cc : 331] RAW: Signal 6 raised at PC=0x7fff926a9864 while already in AbslFailureSignalHandler() +# [… 13710 similar messages omitted …] +# *** SIGABRT received at time=1628693166 on cpu 1 *** +# [address_is_readable.cc : 96] RAW: Failed to create pipe, errno=24 +# [failure_signal_handler.cc : 331] RAW: Signal 6 raised at PC=0x7fff926a9864 while already in AbslFailureSignalHandler() +# *** SIGABRT received at time=1628693167 on cpu 1 *** +# PC: @ 0x7fff926a9864 (unknown) __pthread_kill_internal +# @ 0x7fff92461a48 (unknown) (unknown) +# @ 0x7fff937ae4e2 48 (unknown) +# @ 0x7fff9264848c 48 gsignal +# @ 0x7fff92621404 336 abort +# @ 0x7fff91d112a4 3200 (unknown) +# @ 0x7fff91d112fc 48 absl::lts_20210324::raw_logging_internal::RawLog() +# @ 0x7fff91a824c4 272 absl::lts_20210324::debugging_internal::AddressIsReadable() +# @ 0x7fff923f1568 176 (unknown) +# @ 0x7fff923f1730 96 (unknown) +# @ 0x7fff923f19e8 32 absl::lts_20210324::GetStackFramesWithContext() +# @ 0x7fff924616e4 480 (unknown) +# @ 0x7fff92461a48 (unknown) (unknown) +# @ 0x7fff937ae4e2 48 (unknown) +# @ 0x7fff9264848c 48 gsignal +# @ 0x7fff92621404 336 abort +# @ 0x7fff91d112a4 3200 (unknown) +# @ 0x7fff91d112fc 48 absl::lts_20210324::raw_logging_internal::RawLog() +# @ 0x7fff91a824c4 272 absl::lts_20210324::debugging_internal::AddressIsReadable() +# @ 0x7fff923f1568 176 (unknown) +# @ 0x7fff923f1730 96 (unknown) +# @ 0x7fff923f19e8 32 absl::lts_20210324::GetStackFramesWithContext() +# @ 0x7fff924616e4 480 (unknown) +# @ 0x7fff92461a48 (unknown) (unknown) +# @ 0x7fff937ae4e2 48 (unknown) +# @ 0x7fff9264848c 48 gsignal +# @ 0x7fff92621404 336 abort +# @ 0x7fff91d112a4 3200 (unknown) +# @ 0x7fff91d112fc 48 absl::lts_20210324::raw_logging_internal::RawLog() +# @ 0x7fff91a824c4 272 absl::lts_20210324::debugging_internal::AddressIsReadable() +# @ 0x7fff923f1568 176 (unknown) +# @ 0x7fff923f1730 96 (unknown) +# @ 0x7fff923f19e8 32 absl::lts_20210324::GetStackFramesWithContext() +# @ ... and at least 1000 more frames +# +# armv7hl, s390x: +# +# E0811 15:35:58.278096553 31424 grpclb.cc:1055] [grpclb 0xfe65c0] lb_calld=0xfe9778: Invalid LB response received: ''. Ignoring. +# E0811 15:35:58.966844494 31575 tcp_server_posix.cc:216] Failed accept4: Too many open files +# terminate called after throwing an instance of 'std::runtime_error' +# what(): random_device::random_device(const std::string&): device not available +# *** SIGABRT received at time=1628696159 on cpu 4 *** +# [symbolize_elf.inc : 965] RAW: /proc/self/task/31421/maps: errno=24 +# PC: @ 0xb6418058 (unknown) (unknown) +# @ 0xb62d4274 (unknown) (unknown) +# @ 0xb63d2310 (unknown) (unknown) +# @ 0xb6418058 (unknown) (unknown) +# @ 0xb63d0ddc (unknown) (unknown) +# +# Confirmed in 1.41.0 2021-10-10 +client_channel_stress +%endif + +%ifarch s390x +# Unexplained hang: +# +# [ RUN ] ClientLbEnd2endTest.RoundRobinWithHealthChecking +# /builddir/build/BUILD/grpc-1.39.0/test/cpp/end2end/client_lb_end2end_test.cc:1452: Failure +# Value of: WaitForChannelReady(channel.get()) +# Actual: false +# Expected: true +# [… hundreds of similar messages …] +# From /builddir/build/BUILD/grpc-1.39.0/test/cpp/end2end/client_lb_end2end_test.cc:1462 +# Error: Deadline Exceeded +# /builddir/build/BUILD/grpc-1.39.0/test/cpp/end2end/client_lb_end2end_test.cc:342: Failure +# Value of: success +# Actual: false +# Expected: true +# From /builddir/build/BUILD/grpc-1.39.0/test/cpp/end2end/client_lb_end2end_test.cc:1462 +# Error: Deadline Exceeded +# timeout: sending signal TERM to command 'redhat-linux-build/client_lb_end2end_test' +# *** SIGTERM received at time=1628744184 on cpu 0 *** +# PC: @ 0x3ff89d165aa (unknown) epoll_wait +# @ 0x3ff89881524 (unknown) (unknown) +# @ 0x3ff89881790 (unknown) (unknown) +# @ 0x3ff8acffb78 (unknown) (unknown) +# @ 0x3ff89d165aa (unknown) epoll_wait +# @ 0x3ff8a573dea (unknown) pollset_work() +# @ 0x3ff8a577630 (unknown) pollset_work() +# @ 0x3ff8a611a8e (unknown) cq_pluck() +# @ 0x3ff8a6102c2 (unknown) grpc_completion_queue_pluck +# @ 0x3ff8a84c08c (unknown) grpc::CoreCodegen::grpc_completion_queue_pluck() +# @ 0x2aa189b3de0 (unknown) grpc::CompletionQueue::Pluck() +# @ 0x2aa189bb4be (unknown) grpc::internal::BlockingUnaryCallImpl<>::BlockingUnaryCallImpl() +# @ 0x2aa189d213a (unknown) grpc::internal::BlockingUnaryCall<>() +# @ 0x2aa189c4e2e (unknown) grpc::testing::EchoTestService::Stub::Echo() +# @ 0x2aa18a01112 (unknown) grpc::testing::(anonymous namespace)::ClientLbEnd2endTest::SendRpc() +# @ 0x2aa18a0139c (unknown) grpc::testing::(anonymous namespace)::ClientLbEnd2endTest::CheckRpcSendOk() +# @ 0x2aa18a07a00 (unknown) grpc::testing::(anonymous namespace)::ClientLbEnd2endTest::WaitForServer() +# @ 0x2aa18a0f97a (unknown) grpc::testing::(anonymous namespace)::ClientLbEnd2endTest_RoundRobinWithHealthChecking_Test::TestBody() +# @ 0x2aa18a706f6 (unknown) testing::internal::HandleExceptionsInMethodIfSupported<>() +# @ 0x2aa18a62aba (unknown) testing::Test::Run() +# @ 0x2aa18a62d54 (unknown) testing::TestInfo::Run() +# @ 0x2aa18a635ce (unknown) testing::TestSuite::Run() +# @ 0x2aa18a64258 (unknown) testing::internal::UnitTestImpl::RunAllTests() +# @ 0x2aa18a70c86 (unknown) testing::internal::HandleExceptionsInMethodIfSupported<>() +# @ 0x2aa18a62e68 (unknown) testing::UnitTest::Run() +# @ 0x2aa189aa086 (unknown) main +# @ 0x3ff89c33732 (unknown) __libc_start_call_main +# @ 0x3ff89c3380e (unknown) __libc_start_main@GLIBC_2.2 +# @ 0x2aa189ac6a0 (unknown) (unknown) +# +# Confirmed in 1.41.0 2021-10-10 +client_lb_end2end +%endif + +%ifarch %{arm32} %{ix86} +# Unexplained: +# +# [ RUN ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.ServerStreamingCallThroughFakeBinderChannel/0 +# /builddir/build/BUILD/grpc-1.41.0/test/core/transport/binder/end2end/ +# end2end_binder_transport_test.cc:188: Failure +# Expected equality of these values: +# cnt +# Which is: 0 +# end2end_testing::EchoServer::kServerStreamingCounts +# Which is: 100 +# [ FAILED ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.ServerStreamingCallThroughFakeBinderChannel/0, +# where GetParam() = 0 (3 ms) +# [… etc. …] +# [ FAILED ] 18 tests, listed below: +# [ FAILED ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.ServerStreamingCallThroughFakeBinderChannel/0, +# where GetParam() = 0 +# [ FAILED ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.ServerStreamingCallThroughFakeBinderChannel/1, +# where GetParam() = 10ns +# [ FAILED ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.ServerStreamingCallThroughFakeBinderChannel/2, +# where GetParam() = 10us +# [ FAILED ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.ServerStreamingCallThroughFakeBinderChannel/3, +# where GetParam() = 100us +# [ FAILED ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.ServerStreamingCallThroughFakeBinderChannel/4, +# where GetParam() = 1ms +# [ FAILED ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.ServerStreamingCallThroughFakeBinderChannel/5, +# where GetParam() = 20ms +# [ FAILED ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.ClientStreamingCallThroughFakeBinderChannel/0, +# where GetParam() = 0 +# [ FAILED ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.ClientStreamingCallThroughFakeBinderChannel/1, +# where GetParam() = 10ns +# [ FAILED ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.ClientStreamingCallThroughFakeBinderChannel/2, +# where GetParam() = 10us +# [ FAILED ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.ClientStreamingCallThroughFakeBinderChannel/3, +# where GetParam() = 100us +# [ FAILED ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.ClientStreamingCallThroughFakeBinderChannel/4, +# where GetParam() = 1ms +# [ FAILED ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.ClientStreamingCallThroughFakeBinderChannel/5, +# where GetParam() = 20ms +# [ FAILED ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.BiDirStreamingCallThroughFakeBinderChannel/0, +# where GetParam() = 0 +# [ FAILED ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.BiDirStreamingCallThroughFakeBinderChannel/1, +# where GetParam() = 10ns +# [ FAILED ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.BiDirStreamingCallThroughFakeBinderChannel/2, +# where GetParam() = 10us +# [ FAILED ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.BiDirStreamingCallThroughFakeBinderChannel/3, +# where GetParam() = 100us +# [ FAILED ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.BiDirStreamingCallThroughFakeBinderChannel/4, +# where GetParam() = 1ms +# [ FAILED ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.BiDirStreamingCallThroughFakeBinderChannel/5, +# where GetParam() = 20ms +# [ FAILED ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.ServerStreamingCallThroughFakeBinderChannel/0, +# where GetParam() = 0 +# [ FAILED ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.ServerStreamingCallThroughFakeBinderChannel/1, +# where GetParam() = 10ns +# [ FAILED ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.ServerStreamingCallThroughFakeBinderChannel/2, +# where GetParam() = 10us +# [ FAILED ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.ServerStreamingCallThroughFakeBinderChannel/3, +# where GetParam() = 100us +# [ FAILED ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.ServerStreamingCallThroughFakeBinderChannel/4, +# where GetParam() = 1ms +# [ FAILED ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.ServerStreamingCallThroughFakeBinderChannel/5, +# where GetParam() = 20ms +# [ FAILED ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.ClientStreamingCallThroughFakeBinderChannel/0, +# where GetParam() = 0 +# [ FAILED ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.ClientStreamingCallThroughFakeBinderChannel/1, +# where GetParam() = 10ns +# [ FAILED ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.ClientStreamingCallThroughFakeBinderChannel/2, +# where GetParam() = 10us +# [ FAILED ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.ClientStreamingCallThroughFakeBinderChannel/3, +# where GetParam() = 100us +# [ FAILED ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.ClientStreamingCallThroughFakeBinderChannel/4, +# where GetParam() = 1ms +# [ FAILED ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.ClientStreamingCallThroughFakeBinderChannel/5, +# where GetParam() = 20ms +# [ FAILED ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.BiDirStreamingCallThroughFakeBinderChannel/0, +# where GetParam() = 0 +# [ FAILED ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.BiDirStreamingCallThroughFakeBinderChannel/1, +# where GetParam() = 10ns +# [ FAILED ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.BiDirStreamingCallThroughFakeBinderChannel/2, +# where GetParam() = 10us +# [ FAILED ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.BiDirStreamingCallThroughFakeBinderChannel/3, +# where GetParam() = 100us +# [ FAILED ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.BiDirStreamingCallThroughFakeBinderChannel/4, +# where GetParam() = 1ms +# [ FAILED ] End2EndBinderTransportTestWithDifferentDelayTimes/ +# End2EndBinderTransportTest.BiDirStreamingCallThroughFakeBinderChannel/5, +# where GetParam() = 20ms +# +# Confirmed in 1.41.0 2021-09-29 +end2end_binder_transport +%endif + +# Unexplained: +# +# [ RUN ] EvaluateArgsTest.EmptyMetadata +# *** SIGSEGV received at time=1628108665 on cpu 143 *** +# PC: @ 0xffffac12f3d0 (unknown) __strlen_asimd +# @ 0xffffac06f810 1142966656 (unknown) +# @ 0xffffaca217ec 64 (unknown) +# @ 0xaaaadf5806dc 624 grpc_core::EvaluateArgsTest_EmptyMetadata_Test::TestBody() +# @ 0xaaaadf5c1b78 96 testing::internal::HandleExceptionsInMethodIfSupported<>() +# @ 0xaaaadf5b48d8 32 testing::Test::Run() +# @ 0xaaaadf5b4ad4 64 testing::TestInfo::Run() +# @ 0xaaaadf5b5424 80 testing::TestSuite::Run() +# @ 0xaaaadf5b5f08 240 testing::internal::UnitTestImpl::RunAllTests() +# @ 0xaaaadf5b4ca0 144 testing::UnitTest::Run() +# @ 0xaaaadf57c2d8 64 main +# @ 0xffffac0ba0c4 272 __libc_start_call_main +# @ 0xffffac0ba198 (unknown) __libc_start_main@GLIBC_2.17 +# +# Confirmed in 1.41.0 2021-10-10 +evaluate_args + +%ifarch x86_64 %{ix86} +# Unexplained: +# +# [ RUN ] ExamineStackTest.AbseilStackProvider +# /builddir/build/BUILD/grpc-1.39.0/test/core/gprpp/examine_stack_test.cc:75: Failure +# Value of: stack_trace->find("GetCurrentStackTrace") != std::string::npos +# Actual: false +# Expected: true +# [ FAILED ] ExamineStackTest.AbseilStackProvider (0 ms) +# +# Confirmed in 1.41.0 2021-10-10 +examine_stack +%endif + +%ifarch s390x +# Unexplained: +# +# E0809 21:33:27.754988355 3699302 cq_verifier.cc:228] +# no event received, but expected:tag(257) GRPC_OP_COMPLETE success=1 +# /builddir/build/BUILD/grpc-1.39.0/test/core/end2end/goaway_server_test.cc:264 +# tag(769) GRPC_OP_COMPLETE success=1 +# /builddir/build/BUILD/grpc-1.39.0/test/core/end2end/goaway_server_test.cc:265 +# *** SIGABRT received at time=1628544807 on cpu 2 *** +# PC: @ 0x3ff9ce1ec8e (unknown) __pthread_kill_internal +# @ 0x3ff9cd01524 (unknown) (unknown) +# @ 0x3ff9cd01790 (unknown) (unknown) +# @ 0x3ff9d9e3b78 (unknown) (unknown) +# @ 0x3ff9ce1ec8e (unknown) __pthread_kill_internal +# @ 0x3ff9cdd03e0 (unknown) gsignal +# @ 0x3ff9cdb3480 (unknown) abort +# @ 0x2aa3fb850a6 (unknown) cq_verify() +# @ 0x2aa3fb8359e (unknown) main +# @ 0x3ff9cdb3732 (unknown) __libc_start_call_main +# @ 0x3ff9cdb380e (unknown) __libc_start_main@GLIBC_2.2 +# @ 0x2aa3fb83cd0 (unknown) (unknown) +# +# Confirmed in 1.41.0 2021-10-11 +goaway_server +%endif + +%ifarch %{ix86} %{arm32} +# Unexplained: +# +# [ RUN ] GrpcTlsCertificateDistributorTest.SetKeyMaterialsInCallback +# terminate called without an active exception +# *** SIGABRT received at time=1628556696 on cpu 3 *** +# PC: @ 0xf7fa9559 (unknown) __kernel_vsyscall +# +# Confirmed in 1.41.0 2021-10-11 +grpc_tls_certificate_distributor +%endif + +# Unexplained: +# +# [ RUN ] GrpcToolTest.CallCommandWithTimeoutDeadlineSet +# [libprotobuf ERROR google/protobuf/text_format.cc:319] Error parsing text-format grpc.testing.SimpleRequest: 1:7: Message type "grpc.testing.SimpleRequest" has no field named "redhat". +# Failed to convert text format to proto. +# Failed to parse request. +# /builddir/build/BUILD/grpc-1.39.0/test/cpp/util/grpc_tool_test.cc:912: Failure +# Value of: 0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(), std::bind(PrintStream, &output_stream, std::placeholders::_1)) +# Actual: false +# Expected: true +# /builddir/build/BUILD/grpc-1.39.0/test/cpp/util/grpc_tool_test.cc:917: Failure +# Value of: nullptr != strstr(output_stream.str().c_str(), "message: \"true\"") +# Actual: false +# Expected: true +# [ FAILED ] GrpcToolTest.CallCommandWithTimeoutDeadlineSet (4 ms) +# +# Confirmed in 1.41.0 2021-10-11 +grpc_tool + +# While we have fixed a couple of problems with these tests, including porting +# the test server to Python 3, success still eludes us. +# +# 127.0.0.1 - - [02/Aug/2021 20:34:47] "GET /get HTTP/1.0" 200 - +# E0802 20:34:48.343858742 1765052 httpcli_test.cc:52] +# assertion failed: response->status == 200 +# *** SIGABRT received at time=1627936488 on cpu 2 *** +# PC: @ 0x7fe44b4f2783 (unknown) pthread_kill@@GLIBC_2.34 +# @ ... and at least 1 more frames +# +# Confirmed in 1.41.0 2021-10-11 +httpcli +httpscli + +%ifarch %{ix86} %{arm32} +# Unexplained: +# +# /builddir/build/BUILD/grpc-1.39.0/test/cpp/server/load_reporter/get_cpu_stats_test.cc:39: Failure +# Expected: (busy) <= (total), actual: 9034196912422118975 vs 3761728973136652623 +# [ FAILED ] GetCpuStatsTest.BusyNoLargerThanTotal (0 ms) +# +# Confirmed in 1.41.0 2021-10-11 +lb_get_cpu_stats +%endif + +%ifarch s390x +# Unexplained: +# +# *** SIGABRT received at time=1628614005 on cpu 0 *** +# PC: @ 0x3ff81d1ec8e (unknown) __pthread_kill_internal +# @ 0x3ff81c01524 (unknown) (unknown) +# @ 0x3ff81c01790 (unknown) (unknown) +# @ 0x3ff82363b78 (unknown) (unknown) +# @ 0x3ff81d1ec8e (unknown) __pthread_kill_internal +# @ 0x3ff81cd03e0 (unknown) gsignal +# @ 0x3ff81cb3480 (unknown) abort +# @ 0x2aa18880c9e (unknown) verification_test() +# @ 0x2aa18880a34 (unknown) main +# @ 0x3ff81cb3732 (unknown) __libc_start_call_main +# @ 0x3ff81cb380e (unknown) __libc_start_main@GLIBC_2.2 +# @ 0x2aa18880ab0 (unknown) (unknown) +# +# Confirmed in 1.41.0 2021-10-11 +murmur_hash +%endif + +%ifarch x86_64 %{ix86} +# Unexplained: +# +# [ RUN ] StackTracerTest.Basic +# /builddir/build/BUILD/grpc-1.39.0/test/core/util/stack_tracer_test.cc:35: Failure +# Value of: absl::StrContains(stack_trace, "Basic") +# Actual: false +# Expected: true +# [ FAILED ] StackTracerTest.Basic (1 ms) +# +# Confirmed in 1.41.0 2021-10-11 +stack_tracer +%endif + +# Unexplained: +# +# This may be flaky and sometimes succeed; this is known to be the case on +# ppc64le. +# +# E0805 15:49:03.066330569 3863708 oauth2_credentials.cc:158] +# Call to http server ended with error 401 +# [{"access_token":"ya29.AHES6ZRN3-HlhAPya30GnW_bHSb_", +# "expires_in":3599, "token_type":"Bearer"}]. +# *** SIGSEGV received at time=1628178543 on cpu 3 *** +# PC: @ 0x7ff236e4219c (unknown) __strlen_evex +# @ ... and at least 1 more frames +# +# Confirmed in 1.41.0 2021-10-12 +test_core_security_credentials + +# Unexplained: +# +# [ RUN ] XdsTest/BasicTest.Vanilla/XdsResolverV3 +# E0811 05:13:55.545624715 3911922 xds_resolver.cc:836] +# [xds_resolver 0x5650c8f82c00] received error from XdsClient: +# {"created":"@1628658835.545596932","description":"xds call +# failed","file":"/builddir/build/BUILD/grpc-1.39.0/src/core/ext/xds/xds_client.cc","file_line":1309} +# E0811 05:13:55.546102538 3911922 cds.cc:533] +# [cdslb 0x5650c8f80dd0] xds error obtaining data for cluster cluster_name: +# {"created":"@1628658835.545596932","description":"xds call +# failed","file":"/builddir/build/BUILD/grpc-1.39.0/src/core/ext/xds/xds_client.cc","file_line":1309} +# E0811 05:13:55.546238067 3911922 xds_cluster_resolver.cc:741] +# [xds_cluster_resolver_lb 0x5650c90f0200] discovery mechanism 0 xds watcher +# reported error: {"created":"@1628658835.545596932","description":"xds call +# failed","file":"/builddir/build/BUILD/grpc-1.39.0/src/core/ext/xds/xds_client.cc","file_line":1309} +# [ OK ] XdsTest/BasicTest.Vanilla/XdsResolverV3 (102 ms) +# [ RUN ] XdsTest/BasicTest.Vanilla/XdsResolverV3WithLoadReporting +# E0811 05:13:55.635384861 3911938 xds_resolver.cc:836] +# [xds_resolver 0x5650c8f82c00] received error from XdsClient: +# {"created":"@1628658835.635350317","description":"xds call +# failed","file":"/builddir/build/BUILD/grpc-1.39.0/src/core/ext/xds/xds_client.cc","file_line":1309} +# E0811 05:13:55.635785649 3911938 cds.cc:533] +# [cdslb 0x7f597800aaf0] xds error obtaining data for cluster cluster_name: +# {"created":"@1628658835.635350317","description":"xds call +# failed","file":"/builddir/build/BUILD/grpc-1.39.0/src/core/ext/xds/xds_client.cc","file_line":1309} +# E0811 05:13:55.635941953 3911938 xds_cluster_resolver.cc:741] +# [xds_cluster_resolver_lb 0x7f597c004940] discovery mechanism 0 xds watcher +# reported error: {"created":"@1628658835.635350317","description":"xds call +# failed","file":"/builddir/build/BUILD/grpc-1.39.0/src/core/ext/xds/xds_client.cc","file_line":1309} +# [ OK ] XdsTest/BasicTest.Vanilla/XdsResolverV3WithLoadReporting (89 ms) +# [ RUN ] XdsTest/BasicTest.Vanilla/FakeResolverV3 +# *** SIGSEGV received at time=1628658835 on cpu 5 *** +# PC: @ 0x7f5984c2d19c (unknown) __strlen_evex +# @ ... and at least 1 more frames +# +# Confirmed in 1.41.0 2021-10-12 +xds_end2end + +EOF +} | xargs -r chmod -v a-x + +find %{_vpath_builddir} -type f -perm /0111 -name '*_test' | sort | + while read -r testexe + do + echo "==== $(date -u --iso-8601=ns): $(basename "${testexe}") ====" + %{__python3} tools/run_tests/start_port_server.py + # We have tried to skip all tests that hang, but since this is a common + # problem, we use timeout so that a test that does hang breaks the build in + # a reasonable amount of time. + timeout -k 11m -v 10m "${testexe}" + done + +# Stop the port server +curl "http://localhost:${PORT_SERVER_PORT}/quitquitquit" || : +%endif + +# Work around problems in generated tests; we could not fix them in %%prep +# because the test implementations did not exist yet. + +%ifarch ppc64le +# Confirmed in 1.41.0 2021-10-01 (likely flaky) +# protoc_plugin._python_plugin_test.SimpleStubsPluginTest.testUnaryCall +# traceback: +# Traceback (most recent call last): +# File "/usr/lib64/python3.10/unittest/case.py", line 59, in testPartExecutor +# yield +# File "/usr/lib64/python3.10/unittest/case.py", line 591, in run +# self._callTestMethod(testMethod) +# File "/usr/lib64/python3.10/unittest/case.py", line 549, in _callTestMethod +# method() +# File "/builddir/build/BUILD/grpc-1.41.0/src/python/grpcio_tests/tests/ +# protoc_plugin/_python_plugin_test.py", line 548, in testUnaryCall +# response = service_pb2_grpc.TestService.UnaryCall( +# File "/builddir/build/BUILD/grpc-1.41.0/src/python/grpcio_tests/tests/ +# protoc_plugin/protos/service/test_service_pb2_grpc.py", line 140, in UnaryCall +# return grpc.experimental.unary_unary(request, target, +# '/grpc_protoc_plugin.TestService/UnaryCall', +# File "/builddir/build/BUILDROOT/grpc-1.41.0-2.fc36.ppc64le/usr/lib64/ +# python3.10/site-packages/grpc/experimental/__init__.py", line 77, in _wrapper +# return f(*args, **kwargs) +# File "/builddir/build/BUILDROOT/grpc-1.41.0-2.fc36.ppc64le/usr/lib64/ +# python3.10/site-packages/grpc/_simple_stubs.py", line 242, in unary_unary +# return multicallable(request, +# File "/builddir/build/BUILDROOT/grpc-1.41.0-2.fc36.ppc64le/usr/lib64/ +# python3.10/site-packages/grpc/_channel.py", line 946, in __call__ +# return _end_unary_response_blocking(state, call, False, None) +# File "/builddir/build/BUILDROOT/grpc-1.41.0-2.fc36.ppc64le/usr/lib64/ +# python3.10/site-packages/grpc/_channel.py", line 849, in +# _end_unary_response_blocking +# raise _InactiveRpcError(state) +# grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with: +# status = StatusCode.UNAVAILABLE +# details = "Broken pipe" +# debug_error_string = "{"created":"@1633121043.829503175", +# "description":"Error received from peer ipv6:[::1]:42049", +# "file":"src/core/lib/surface/call.cc","file_line":1069, +# "grpc_message":"Broken pipe","grpc_status":14}" +# > +# stdout: +# stderr: +# /builddir/build/BUILD/grpc-1.41.0/src/python/grpcio_tests/tests/ +# protoc_plugin/protos/service/test_service_pb2_grpc.py:140: +# ExperimentalApiWarning: 'unary_unary' is an experimental API. It is +# subject to change or removal between minor releases. Proceed with +# caution. +# return grpc.experimental.unary_unary(request, target, +# '/grpc_protoc_plugin.TestService/UnaryCall', +sed -r -i -e "s/^([[:blank:]]*)(def UnaryCall\(request,)$/\ +\\1@unittest.skip('Broken pipe')\\n\\1\\2/" \ + -e "s/^(import grpc)$/\\1\\nimport unittest/" \ + "src/python/grpcio_tests/tests/protoc_plugin/protos/service/\ +test_service_pb2_grpc.py" +%endif + +pushd src/python/grpcio_tests +for suite in \ + test_lite \ + %{?with_python_aio_tests:test_aio} \ + %{?with_python_gevent_tests:test_gevent} \ + test_py3_only +do + echo "==== $(date -u --iso-8601=ns): Python ${suite} ====" + # See the implementation of the %%pytest macro, upon which our environment + # setup is based. We add a timeout that is rather long, as it must apply to + # the entire test suite. (Patching in a per-test timeout would be harder.) + env CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" \ + LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}" \ + PATH="%{buildroot}%{_bindir}:$PATH" \ + PYTHONPATH="${PYTHONPATH:-%{buildroot}%{python3_sitearch}:%{buildroot}%{python3_sitelib}}" \ + PYTHONDONTWRITEBYTECODE=1 \ + timeout -k 31m -v 30m \ + %{__python3} %{py_setup} %{?py_setup_args} "${suite}" +done +popd + +%if %{without system_gtest} +# As a sanity check for our claim that gtest/gmock are not bundled, check +# installed executables for symbols that appear to have come from gtest/gmock. +foundgtest=0 +if find %{buildroot} -type f -perm /0111 \ + -execdir objdump --syms --dynamic-syms --demangle '{}' '+' 2>/dev/null | + grep -E '[^:]testing::' +then + echo 'Found traces of gtest/gmock' 1>&2 + exit 1 +fi +%endif + +%endif + +%files +%license LICENSE NOTICE.txt +%{_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 + + +%files doc +%license LICENSE NOTICE.txt +%{_pkgdocdir} + + +%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 plugins +# These are for program use and do not offer a CLI for the end user, so they +# should really be in %%{_libexecdir}; however, too many downstream users +# expect them in $PATH to change this for the time being. +%{_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 + + +%files -n python3-grpcio +%license LICENSE NOTICE.txt +%{python3_sitearch}/grpc +%{python3_sitearch}/grpcio-%{version}-py%{python3_version}.egg-info + + +%files -n python3-grpcio-tools +%{python3_sitearch}/grpc_tools +%{python3_sitearch}/grpcio_tools-%{version}-py%{python3_version}.egg-info + + +%if %{without bootstrap} +%files -n python3-grpcio-admin +%{python3_sitelib}/grpc_admin +%{python3_sitelib}/grpcio_admin-%{version}-py%{python3_version}.egg-info +%endif + + +%files -n python3-grpcio-channelz +%{python3_sitelib}/grpc_channelz +%{python3_sitelib}/grpcio_channelz-%{version}-py%{python3_version}.egg-info + + +%if %{without bootstrap} +%files -n python3-grpcio-csds +%{python3_sitelib}/grpc_csds +%{python3_sitelib}/grpcio_csds-%{version}-py%{python3_version}.egg-info +%endif + + +%files -n python3-grpcio-health-checking +%{python3_sitelib}/grpc_health +%{python3_sitelib}/grpcio_health_checking-%{version}-py%{python3_version}.egg-info + + +%files -n python3-grpcio-reflection +%{python3_sitelib}/grpc_reflection +%{python3_sitelib}/grpcio_reflection-%{version}-py%{python3_version}.egg-info + + +%files -n python3-grpcio-status +%{python3_sitelib}/grpc_status +%{python3_sitelib}/grpcio_status-%{version}-py%{python3_version}.egg-info + + +%files -n python3-grpcio-testing +%{python3_sitelib}/grpc_testing +%{python3_sitelib}/grpcio_testing-%{version}-py%{python3_version}.egg-info + + +%changelog +* Tue Dec 14 2021 Benjamin A. Beasley 1.41.1-5 +- Dep. on cmake-filesystem is now auto-generated + +* Fri Nov 05 2021 Adrian Reber 1.41.1-4 +- Rebuilt for protobuf 3.19.0 + +* Tue Oct 26 2021 Benjamin A. Beasley 1.41.1-3 +- Add explicit Conflicts with libgpr for now (RHBZ#2017576) + +* Tue Oct 26 2021 Benjamin A. Beasley 1.41.1-2 +- Fix mixed spaces and tabs in spec file + +* Tue Oct 26 2021 Benjamin A. Beasley 1.41.1-1 +- Update to 1.41.1 (close RHBZ#20172232) + +* Tue Oct 26 2021 Benjamin A. Beasley 1.41.0-4 +- Reduce macro indirection in the spec file + +* Mon Oct 25 2021 Adrian Reber 1.41.0-3 +- Rebuilt for protobuf 3.18.1 + +* Tue Oct 12 2021 Benjamin A. Beasley 1.41.0-2 +- Update failing/skipped tests + +* Wed Oct 06 2021 Benjamin A. Beasley 1.41.0-1 +- Update to 1.41.0 + +* Thu Sep 30 2021 Benjamin A. Beasley 1.40.0-3 +- Add missing python3-grpcio+protobuf extras metapackage + +* Tue Sep 28 2021 Benjamin A. Beasley 1.40.0-2 +- Drop HTML documentation + +* Fri Sep 17 2021 Benjamin A. Beasley 1.40.0-1 +- Update to 1.40.0 (close RHBZ#2002019) + +* Wed Sep 15 2021 Benjamin A. Beasley 1.39.1-10 +- Trivial fix to grpc_cli-call man page + +* Tue Sep 14 2021 Benjamin A. Beasley 1.39.1-9 +- Adapt to google-benchmark 1.6.0 + +* Tue Sep 14 2021 Sahana Prasad 1.39.1-8 +- Rebuilt with OpenSSL 3.0.0 + +* Mon Aug 23 2021 Benjamin A. Beasley 1.39.1-7 +- Update some spec file comments + +* Fri Aug 20 2021 Benjamin A. Beasley 1.39.1-6 +- Remove arguably-excessive use of the %%{name} macro + +* Fri Aug 20 2021 Benjamin A. Beasley 1.39.1-5 +- No files need CRNL line ending fixes anymore + +* Fri Aug 20 2021 Benjamin A. Beasley 1.39.1-4 +- Spiff up shebang-fixing snippet + +* Fri Aug 20 2021 Benjamin A. Beasley 1.39.1-3 +- Remove executable permissions from more non-script sources, and send a PR + upstream + +* Fri Aug 20 2021 Benjamin A. Beasley 1.39.1-2 +- Some minor spec file cleanup + +* Thu Aug 19 2021 Benjamin A. Beasley 1.39.1-1 +- Update to grpc 1.39.1 (close RHBZ#1993554) + +* Thu Aug 19 2021 Benjamin A. Beasley 1.39.0-3 +- More updates to documented/skipped test failures + +* Fri Aug 06 2021 Benjamin A. Beasley 1.39.0-2 +- Some updates to documented/skipped test failures + +* Tue Aug 03 2021 Benjamin A. Beasley 1.39.0-1 +- Update to 1.39.0 + +* Wed Jul 21 2021 Benjamin A. Beasley 1.37.1-10 +- Simplify core test exclusion (no more useless use of cat) + +* Fri Jul 9 2021 Benjamin A. Beasley - 1.37.1-8 +- Use googletest 1.11.0 + +* Mon Jun 14 2021 Benjamin A. Beasley - 1.37.1-7 +- Add BR on xxhash-static since we use it as a header-only library + +* Thu Jun 10 2021 Rich Mattes - 1.37.1-6 +- Rebuild for abseil-cpp-20210324.2 + +* Thu Jun 10 2021 Stephen Gallagher - 1.37.1-5 +- Fix builds against Python 3.10 on ELN/RHEL as well + +* Thu Jun 10 2021 Benjamin A. Beasley - 1.37.1-4 +- Since it turns out xxhash is used as a header-only library, we can stop + patching the source to unbundle it; removing the bundled copy suffices + +* Fri Jun 04 2021 Python Maint - 1.37.1-3 +- Rebuilt for Python 3.10 + +* Fri May 21 2021 Benjamin A. Beasley - 1.37.1-2 +- Use full gRPC_{CPP,CSHARP}_SOVERSION in file globs + +* Tue May 11 2021 Benjamin A. Beasley - 1.37.1-1 +- General: + * New version 1.37.1 + * Drop patches that were upstreamed since the last packaged release, were + backported from upstream in the first place, or have otherwise been + obsoleted by upstream changes. + * Rebase/update remaining patches as needed + * Drop Fedora 32 compatibility + * Add man pages for grpc_cli +- C (core) and C++ (cpp): + * Switch to CMake build system + * Build with C++17 for compatibility with the abseil-cpp package in Fedora + * Add various Requires to -devel subpackage + +* Tue Apr 06 2021 Benjamin A. Beasley - 1.26.0-15 +- General: + * Do not use %%exclude for unpackaged files (RPM 4.17 compatibility) +- Python: + * Stop using %%pyproject_buildrequires, since it is difficult to fit the + pyproject-rpm-macros build and install macros into this package, and Miro + Hrončok has advised that “mixing %%pyproject_buildrequires with + %%py3_build/%%py3_install is generally not a supported way of building + Python packages.” + +* Thu Mar 25 2021 Benjamin A. Beasley - 1.26.0-14 +- General: + * Improved googletest source URL (better tarball name) + +* Tue Mar 23 2021 Benjamin A. Beasley - 1.26.0-13 +- General: + * Replace * with • in descriptions + * Use cmake() dependencies first, and pkgconfig() dependencies second, where + available + * Drop explicit pkgconfig BR + * Fix the directory in which CMake installs pkgconfig files + * Improved CMake options + * Build the Doxygen reference manuals +- C (core) and C++ (cpp): + * Let the -devel package require cmake-filesystem + * Allow building tests with our own copy of gtest/gmock, which will become + mandatory when we depend on abseil-cpp and switch to C++17 + * Fix a link error in the core tests when using CMake + * Manually install grpc_cli (CMake) + * Add CMake files to the files list for the -devel package + * Start running some of the core tests in %%check +- Python: + * Add several patches required for the tests + * BR gevent for gevent_tests + * Fix build; in particular, add missing preprocess and build_package_protos + steps, without which the packages were missing generated proto modules and + were not + usable! + * Add %%py_provides for Fedora 32 + * Drop python3dist(setuptools) BR, redundant with %%pyproject_buildrequires + * Start running most of the Python tests in %%check + * Merge the python-grpcio-doc subpackage into grpc-doc + +* Tue Feb 16 2021 Benjamin A. Beasley - 1.26.0-12 +- C (core) and C++ (cpp): + * Add CMake build support but do not enable it yet; there is still a problem + where grpc_cli is only built with the tests, and a linking problem when + building the tests + +* Tue Feb 02 2021 Benjamin A. Beasley - 1.26.0-11 +- General: + * Update summaries and descriptions + * Update License fields to include licenses from bundled components + * Fix failure to respect Fedora build flags + * Use the system shared certificate bundle instead of shipping our own +- CLI: + * No longer set rpath $ORIGIN +- C (core) and C++ (cpp): + * Add c_so_version/cpp_so_version macros + * Split out C++ bindings and shared data into subpackages + * Drop obsolete ldconfig_scriptlets macro + * Stop stripping debugging symbols +- Python: + * Use generated BR’s + * Build and package Python binding documentation + * Disable accommodations for older libc’s + * Patch out -std=gnu99 flag, which is inappropriate for C++ + * Build additional Python packages grpcio_tools, gprcio_channelz, + grpcio_health_checking, grpcio_reflection, grpcio_status, and + grpcio_testing + +* Tue Jan 26 2021 Fedora Release Engineering - 1.26.0-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Thu Jan 14 08:46:34 CET 2021 Adrian Reber - 1.26.0-9 +- Rebuilt for protobuf 3.14 + +* Fri Nov 13 2020 Artem Polishchuk - 1.26.0-8 +- build: disable LTO due to rh#1893533 + +* Thu Sep 24 2020 Adrian Reber - 1.26.0-7 +- Rebuilt for protobuf 3.13 + +* Mon Aug 03 2020 Gwyn Ciesla - 1.26.0-6 +- Patches for https://github.com/grpc/grpc/pull/21669 + +* Tue Jul 28 2020 Fedora Release Engineering - 1.26.0-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Sun Jun 14 2020 Adrian Reber - 1.26.0-4 +- Rebuilt for protobuf 3.12 + +* Tue May 26 2020 Miro Hrončok - 1.26.0-3 +- Rebuilt for Python 3.9 + +* Wed Jan 29 2020 Fedora Release Engineering - 1.26.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Wed Jan 15 2020 Sergey Avseyev - 1.26.0-1 +- Update to 1.26.0 + +* Thu Dec 19 2019 Orion Poplawski - 1.20.1-5 +- Rebuild for protobuf 3.11 + +* Thu Oct 03 2019 Miro Hrončok - 1.20.1-4 +- Rebuilt for Python 3.8.0rc1 (#1748018) + +* Mon Aug 19 2019 Miro Hrončok - 1.20.1-3 +- Rebuilt for Python 3.8 + +* Thu Jul 25 2019 Fedora Release Engineering - 1.20.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Fri May 17 2019 Sergey Avseyev - 1.20.1-1 +- Update to 1.20.1 + +* Fri Feb 01 2019 Fedora Release Engineering - 1.18.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Wed Jan 16 2019 Sergey Avseyev - 1.18.0-1 +- Update to 1.18.0 + +* Mon Dec 17 2018 Igor Gnatenko - 1.17.1-3 +- Properly store patch in SRPM + +* Mon Dec 17 2018 Sergey Avseyev - 1.17.1-2 +- Build without ruby plugin for Fedora < 30 (Thanks to Mathieu Bridon) + +* Fri Dec 14 2018 Sergey Avseyev - 1.17.1-1 +- Update to 1.17.1 and package python bindings + +* Fri Dec 07 2018 Sergey Avseyev - 1.17.0-1 +- Initial revision +