From ea49f096ee81ce1542799c74945057fad488627b Mon Sep 17 00:00:00 2001 From: "M. Chornyi" <99709299+mc-nv@users.noreply.github.com> Date: Fri, 17 Jul 2026 11:59:37 -0700 Subject: [PATCH 1/4] fix: Forward TRITON_THIRD_PARTY_REPO_TAG to client sub-builds The cc-clients and python-clients external projects clone the client repo but never pass a third-party tag, so the client build always uses the third_party default (main) regardless of what the surrounding build was pinned to. Add a TRITON_THIRD_PARTY_REPO_TAG cache variable and forward it to both client sub-builds. --- CMakeLists.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b5333168..5052347a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright 2020-2025, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# Copyright 2020-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -61,6 +61,7 @@ set(TRITON_REPO_ORGANIZATION "https://github.com/triton-inference-server" CACHE set(TRITON_COMMON_REPO_TAG "main" CACHE STRING "Tag for triton-inference-server/common repo") set(TRITON_CORE_REPO_TAG "main" CACHE STRING "Tag for triton-inference-server/core repo") set(TRITON_CLIENT_REPO_TAG "main" CACHE STRING "Tag for triton-inference-server/core repo") +set(TRITON_THIRD_PARTY_REPO_TAG "main" CACHE STRING "Tag for triton-inference-server/third_party repo") # # Install locations @@ -97,6 +98,7 @@ ExternalProject_Add( -DTRITON_REPO_ORGANIZATION:STRING=${TRITON_REPO_ORGANIZATION} -DTRITON_CORE_REPO_TAG:STRING=${TRITON_CORE_REPO_TAG} -DTRITON_COMMON_REPO_TAG:STRING=${TRITON_COMMON_REPO_TAG} + -DTRITON_THIRD_PARTY_REPO_TAG:STRING=${TRITON_THIRD_PARTY_REPO_TAG} -DTRITON_ENABLE_CC_HTTP:BOOL=${TRITON_ENABLE_CC_HTTP} -DTRITON_ENABLE_CC_GRPC:BOOL=${TRITON_ENABLE_CC_GRPC} -DTRITON_ENABLE_PYTHON_HTTP:BOOL=OFF @@ -159,6 +161,7 @@ if(TRITON_ENABLE_PYTHON_HTTP OR TRITON_ENABLE_PYTHON_GRPC) -DTRITON_REPO_ORGANIZATION:STRING=${TRITON_REPO_ORGANIZATION} -DTRITON_CORE_REPO_TAG:STRING=${TRITON_CORE_REPO_TAG} -DTRITON_COMMON_REPO_TAG:STRING=${TRITON_COMMON_REPO_TAG} + -DTRITON_THIRD_PARTY_REPO_TAG:STRING=${TRITON_THIRD_PARTY_REPO_TAG} -DTRITON_ENABLE_CC_HTTP:BOOL=OFF -DTRITON_ENABLE_CC_GRPC:BOOL=OFF -DTRITON_ENABLE_EXAMPLES:BOOL=ON From 35d4b81798807786e6308cd40f3177d0e0463137 Mon Sep 17 00:00:00 2001 From: "M. Chornyi" <99709299+mc-nv@users.noreply.github.com> Date: Fri, 17 Jul 2026 13:22:24 -0700 Subject: [PATCH 2/4] fix: Make nested utf8_range package findable in perf-analyzer configure protobuf v33's protobuf-config.cmake (pulled in transitively through gRPCConfig's find_dependency) requires the utf8_range package, whose config is installed inside the protobuf tree at /protobuf//cmake/utf8_range. The third-party root prefix alone cannot resolve it, so add the protobuf install tree as an additional CMAKE_PREFIX_PATH entry. --- src/CMakeLists.txt | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ae5f56e9..727b84ed 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright 2020-2025, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# Copyright 2020-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -53,8 +53,12 @@ set(TRITON_CORE_REPO_TAG "main" CACHE STRING "Tag for triton-inference-server/co # Install locations set(TRITON_THIRD_PARTY_INSTALL_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/third-party-install" CACHE STRING "Location of third-party build") -# Add third party installation to the search path -set(CMAKE_PREFIX_PATH ${TRITON_THIRD_PARTY_INSTALL_PREFIX} ${CMAKE_PREFIX_PATH}) +# Add third party installation to the search path. The protobuf install +# tree is listed as its own prefix so that the utf8_range package config +# it nests (required by protobuf-config since protobuf v33) is found. +set(CMAKE_PREFIX_PATH + ${TRITON_THIRD_PARTY_INSTALL_PREFIX} + "${TRITON_THIRD_PARTY_INSTALL_PREFIX}/protobuf" ${CMAKE_PREFIX_PATH}) # Triton CC Client Libraries find_library(TRITON_HTTP_STATIC_LIB From d20a30ba25caf06835a0cc9128b45049f03fc7ae Mon Sep 17 00:00:00 2001 From: "M. Chornyi" <99709299+mc-nv@users.noreply.github.com> Date: Fri, 17 Jul 2026 15:52:28 -0700 Subject: [PATCH 3/4] fix: Compile all perf-analyzer targets at TRITON_MIN_CXX_STANDARD MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit TRITON_MIN_CXX_STANDARD (default 20) governs the third-party build, and the abseil install pins its options.h to the standard used at build time — with C++20 it selects the std:: ordering types. Only the perf_analyzer executable requested cxx_std_20 via target_compile_features; the client-backend object libraries compiled at the compiler default (gnu++17) and failed against the pinned abseil headers ('partial_ordering' has not been declared in 'std'). Set CMAKE_CXX_STANDARD project-wide so every target matches the third-party stack. --- src/CMakeLists.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 727b84ed..619a3b27 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -28,6 +28,16 @@ cmake_minimum_required (VERSION 3.31.8) project(perf-analyzer LANGUAGES C CXX) +# Compile every target at the same standard the third-party stack was +# built with. The abseil install pins its options (e.g. C++20 +# std-ordering types) to the standard used at build time, so targets +# that fall back to the compiler default standard fail to compile +# against its headers. +if(TRITON_MIN_CXX_STANDARD) + set(CMAKE_CXX_STANDARD ${TRITON_MIN_CXX_STANDARD}) + set(CMAKE_CXX_STANDARD_REQUIRED ON) +endif() + # # Perf Analyzer Options # From 8e70356d1a30f8dbea7a2563bc173d770cafa8eb Mon Sep 17 00:00:00 2001 From: "M. Chornyi" <99709299+mc-nv@users.noreply.github.com> Date: Fri, 17 Jul 2026 16:15:20 -0700 Subject: [PATCH 4/4] fix: Replace removed protobuf always_print_primitive_fields option JsonPrintOptions::always_print_primitive_fields was removed in protobuf v33 (bundled with gRPC v1.81.1); use its designated replacement always_print_fields_with_no_presence. Also updated in the (currently disabled) TensorFlow Serving backend for when it returns. --- .../tensorflow_serving/tfserve_client_backend.cc | 4 ++-- src/client_backend/triton/triton_client_backend.cc | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/client_backend/tensorflow_serving/tfserve_client_backend.cc b/src/client_backend/tensorflow_serving/tfserve_client_backend.cc index 95147bbd..38243565 100644 --- a/src/client_backend/tensorflow_serving/tfserve_client_backend.cc +++ b/src/client_backend/tensorflow_serving/tfserve_client_backend.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2020, NVIDIA CORPORATION. All rights reserved. +// Copyright (c) 2020-2026, NVIDIA CORPORATION. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions @@ -67,7 +67,7 @@ TFServeClientBackend::ModelMetadata( std::string metadata; ::google::protobuf::util::JsonPrintOptions options; options.preserve_proto_field_names = true; - options.always_print_primitive_fields = true; + options.always_print_fields_with_no_presence = true; ::google::protobuf::util::MessageToJsonString( metadata_proto, &metadata, options); diff --git a/src/client_backend/triton/triton_client_backend.cc b/src/client_backend/triton/triton_client_backend.cc index 40ce3489..78f0037b 100644 --- a/src/client_backend/triton/triton_client_backend.cc +++ b/src/client_backend/triton/triton_client_backend.cc @@ -1,4 +1,4 @@ -// Copyright 2020-2025, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright 2020-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions @@ -190,7 +190,7 @@ TritonClientBackend::ModelMetadata( std::string metadata; ::google::protobuf::util::JsonPrintOptions options; options.preserve_proto_field_names = true; - options.always_print_primitive_fields = true; + options.always_print_fields_with_no_presence = true; ::google::protobuf::util::MessageToJsonString( model_metadata_proto, &metadata, options); @@ -218,7 +218,7 @@ TritonClientBackend::ModelConfig( std::string config; ::google::protobuf::util::JsonPrintOptions options; options.preserve_proto_field_names = true; - options.always_print_primitive_fields = true; + options.always_print_fields_with_no_presence = true; ::google::protobuf::util::MessageToJsonString( model_config_proto, &config, options);