[CI] Fixed build_cxx to accept additional cmake arguments (#37096)

Along with the fix, some code massage had to be made to resolve C++23 unique_ptr incomplete type errors.

Closes #37096

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/37096 from veblush:fix-cxx 20199cad7e
PiperOrigin-RevId: 651443290
pull/37204/head
Esun Kim 9 months ago committed by Copybara-Service
parent 95cf15e4b8
commit dd26bb9167
  1. 24
      src/core/load_balancing/health_check_client.cc
  2. 48
      src/core/server/server.cc
  3. 21
      src/core/telemetry/metrics.h
  4. 8
      tools/run_tests/helper_scripts/build_cxx.sh
  5. 10
      tools/run_tests/run_tests.py

@ -144,18 +144,6 @@ void HealthProducer::HealthChecker::OnConnectivityStateChangeLocked(
}
}
void HealthProducer::HealthChecker::StartHealthStreamLocked() {
if (GRPC_TRACE_FLAG_ENABLED(health_check_client)) {
LOG(INFO) << "HealthProducer " << producer_.get() << " HealthChecker "
<< this << ": creating HealthClient for \""
<< health_check_service_name_ << "\"";
}
stream_client_ = MakeOrphanable<SubchannelStreamClient>(
producer_->connected_subchannel_, producer_->subchannel_->pollset_set(),
std::make_unique<HealthStreamEventHandler>(Ref()),
GRPC_TRACE_FLAG_ENABLED(health_check_client) ? "HealthClient" : nullptr);
}
void HealthProducer::HealthChecker::NotifyWatchersLocked(
grpc_connectivity_state state, absl::Status status) {
if (GRPC_TRACE_FLAG_ENABLED(health_check_client)) {
@ -311,6 +299,18 @@ class HealthProducer::HealthChecker::HealthStreamEventHandler final
RefCountedPtr<HealthChecker> health_checker_;
};
void HealthProducer::HealthChecker::StartHealthStreamLocked() {
if (GRPC_TRACE_FLAG_ENABLED(health_check_client)) {
LOG(INFO) << "HealthProducer " << producer_.get() << " HealthChecker "
<< this << ": creating HealthClient for \""
<< health_check_service_name_ << "\"";
}
stream_client_ = MakeOrphanable<SubchannelStreamClient>(
producer_->connected_subchannel_, producer_->subchannel_->pollset_set(),
std::make_unique<HealthStreamEventHandler>(Ref()),
GRPC_TRACE_FLAG_ENABLED(health_check_client) ? "HealthClient" : nullptr);
}
//
// HealthProducer::ConnectivityWatcher
//

@ -87,30 +87,6 @@
namespace grpc_core {
//
// Server::RegisteredMethod
//
struct Server::RegisteredMethod {
RegisteredMethod(
const char* method_arg, const char* host_arg,
grpc_server_register_method_payload_handling payload_handling_arg,
uint32_t flags_arg)
: method(method_arg == nullptr ? "" : method_arg),
host(host_arg == nullptr ? "" : host_arg),
payload_handling(payload_handling_arg),
flags(flags_arg) {}
~RegisteredMethod() = default;
const std::string method;
const std::string host;
const grpc_server_register_method_payload_handling payload_handling;
const uint32_t flags;
// One request matcher per method.
std::unique_ptr<RequestMatcherInterface> matcher;
};
//
// Server::RequestMatcherInterface
//
@ -202,6 +178,30 @@ class Server::RequestMatcherInterface {
virtual Server* server() const = 0;
};
//
// Server::RegisteredMethod
//
struct Server::RegisteredMethod {
RegisteredMethod(
const char* method_arg, const char* host_arg,
grpc_server_register_method_payload_handling payload_handling_arg,
uint32_t flags_arg)
: method(method_arg == nullptr ? "" : method_arg),
host(host_arg == nullptr ? "" : host_arg),
payload_handling(payload_handling_arg),
flags(flags_arg) {}
~RegisteredMethod() = default;
const std::string method;
const std::string host;
const grpc_server_register_method_payload_handling payload_handling;
const uint32_t flags;
// One request matcher per method.
std::unique_ptr<RequestMatcherInterface> matcher;
};
//
// Server::RequestedCall
//

@ -461,14 +461,7 @@ class GlobalStatsPluginRegistry {
template <typename... Args>
GRPC_MUST_USE_RESULT std::unique_ptr<RegisteredMetricCallback>
RegisterCallback(absl::AnyInvocable<void(CallbackMetricReporter&)> callback,
Duration min_interval, Args... args) {
AssertIsCallbackGaugeHandle(args...);
return std::make_unique<RegisteredMetricCallback>(
*this, std::move(callback),
std::vector<GlobalInstrumentsRegistry::GlobalInstrumentHandle>{
args...},
min_interval);
}
Duration min_interval, Args... args);
// Adds all available client call tracers associated with the stats plugins
// within the group to \a call_context.
@ -557,6 +550,18 @@ class RegisteredMetricCallback {
Duration min_interval_;
};
template <typename... Args>
inline std::unique_ptr<RegisteredMetricCallback>
GlobalStatsPluginRegistry::StatsPluginGroup::RegisterCallback(
absl::AnyInvocable<void(CallbackMetricReporter&)> callback,
Duration min_interval, Args... args) {
AssertIsCallbackGaugeHandle(args...);
return std::make_unique<RegisteredMetricCallback>(
*this, std::move(callback),
std::vector<GlobalInstrumentsRegistry::GlobalInstrumentHandle>{args...},
min_interval);
}
} // namespace grpc_core
#endif // GRPC_SRC_CORE_TELEMETRY_METRICS_H

@ -24,7 +24,7 @@ INSTALL_PATH="$(pwd)/cmake/install"
cd third_party/abseil-cpp
mkdir build
cd build
cmake -DCMAKE_CXX_STANDARD=14 -DABSL_BUILD_TESTING=OFF -DCMAKE_BUILD_TYPE="${MSBUILD_CONFIG}" -DCMAKE_INSTALL_PREFIX="${INSTALL_PATH}" "$@" ..
cmake -DABSL_BUILD_TESTING=OFF -DCMAKE_BUILD_TYPE="${MSBUILD_CONFIG}" -DCMAKE_INSTALL_PREFIX="${INSTALL_PATH}" "$@" ..
make -j"${GRPC_RUN_TESTS_JOBS}" install
# Install opentelemetry-cpp since we only support "package" mode for opentelemetry at present.
@ -32,7 +32,7 @@ cd ../../..
cd third_party/opentelemetry-cpp
mkdir build
cd build
cmake -DCMAKE_CXX_STANDARD=14 -DWITH_ABSEIL=ON -DBUILD_TESTING=OFF -DWITH_BENCHMARK=OFF -DCMAKE_BUILD_TYPE="${MSBUILD_CONFIG}" -DCMAKE_INSTALL_PREFIX="${INSTALL_PATH}" "$@" ..
cmake -DWITH_ABSEIL=ON -DBUILD_TESTING=OFF -DWITH_BENCHMARK=OFF -DCMAKE_BUILD_TYPE="${MSBUILD_CONFIG}" -DCMAKE_INSTALL_PREFIX="${INSTALL_PATH}" "$@" ..
make -j"${GRPC_RUN_TESTS_JOBS}" install
cd ../../..
@ -41,9 +41,9 @@ cd cmake/build
# TODO(yashykt/veblush): Remove workaround after fixing b/332425004
if [ "${GRPC_RUNTESTS_ARCHITECTURE}" = "x86" ]; then
cmake -DCMAKE_CXX_STANDARD=14 -DgRPC_BUILD_TESTS=ON -DCMAKE_BUILD_TYPE="${MSBUILD_CONFIG}" "$@" ../..
cmake -DgRPC_BUILD_TESTS=ON -DCMAKE_BUILD_TYPE="${MSBUILD_CONFIG}" "$@" ../..
else
cmake -DCMAKE_CXX_STANDARD=14 -DgRPC_BUILD_GRPCPP_OTEL_PLUGIN=ON -DgRPC_ABSL_PROVIDER=package -DgRPC_BUILD_TESTS=ON -DCMAKE_BUILD_TYPE="${MSBUILD_CONFIG}" -DCMAKE_INSTALL_PREFIX="${INSTALL_PATH}" "$@" ../..
cmake -DgRPC_BUILD_GRPCPP_OTEL_PLUGIN=ON -DgRPC_ABSL_PROVIDER=package -DgRPC_BUILD_TESTS=ON -DCMAKE_BUILD_TYPE="${MSBUILD_CONFIG}" -DCMAKE_INSTALL_PREFIX="${INSTALL_PATH}" "$@" ../..
fi
# GRPC_RUN_TESTS_CXX_LANGUAGE_SUFFIX will be set to either "c" or "cxx"

@ -568,7 +568,13 @@ class CLanguage(object):
_check_compiler(compiler, ["default", "cmake"])
if compiler == "default" or compiler == "cmake":
return ("debian11", [])
# This is to address Apple clang defaults C++98.
cmake_args = (
["-DCMAKE_CXX_STANDARD=14"]
if platform_string() == "mac"
else []
)
return ("debian11", cmake_args)
elif compiler == "gcc8":
return ("gcc_8", [])
elif compiler == "gcc10.2":
@ -1777,7 +1783,7 @@ argp.add_argument(
argp.add_argument(
"--cmake_configure_extra_args",
default=[],
nargs="+",
action="append",
help="Extra arguments that will be passed to the cmake configure command. Only works for C/C++.",
)
args = argp.parse_args()

Loading…
Cancel
Save