diff --git a/.ci_support/linux_64_.yaml b/.ci_support/linux_64_.yaml index 150512c7..e8e17c0c 100644 --- a/.ci_support/linux_64_.yaml +++ b/.ci_support/linux_64_.yaml @@ -10,10 +10,6 @@ c_stdlib_version: - '2.17' channel_sources: - conda-forge -- conda-forge -- conda-forge -- conda-forge -- conda-forge,conda-forge/label/python_rc channel_targets: - conda-forge main cxx_compiler: @@ -23,13 +19,13 @@ cxx_compiler_version: docker_image: - quay.io/condaforge/linux-anvil-x86_64:alma9 libabseil: -- '20250512' +- '20250814' libgrpc: -- '1.73' +- '1.74' libprotobuf: -- 6.31.1 +- 6.32.1 openssl: -- '3' +- '3.5' pin_run_as_build: python: min_pin: x.x @@ -47,7 +43,5 @@ target_platform: zip_keys: - - c_compiler_version - cxx_compiler_version -- - python - - channel_sources zlib: - '1' diff --git a/.ci_support/linux_aarch64_.yaml b/.ci_support/linux_aarch64_.yaml index 2da1f3c2..82da54d9 100644 --- a/.ci_support/linux_aarch64_.yaml +++ b/.ci_support/linux_aarch64_.yaml @@ -10,10 +10,6 @@ c_stdlib_version: - '2.17' channel_sources: - conda-forge -- conda-forge -- conda-forge -- conda-forge -- conda-forge,conda-forge/label/python_rc channel_targets: - conda-forge main cxx_compiler: @@ -23,13 +19,13 @@ cxx_compiler_version: docker_image: - quay.io/condaforge/linux-anvil-x86_64:alma9 libabseil: -- '20250512' +- '20250814' libgrpc: -- '1.73' +- '1.74' libprotobuf: -- 6.31.1 +- 6.32.1 openssl: -- '3' +- '3.5' pin_run_as_build: python: min_pin: x.x @@ -47,7 +43,5 @@ target_platform: zip_keys: - - c_compiler_version - cxx_compiler_version -- - python - - channel_sources zlib: - '1' diff --git a/.ci_support/linux_ppc64le_.yaml b/.ci_support/linux_ppc64le_.yaml index 35cc6b77..23ddb823 100644 --- a/.ci_support/linux_ppc64le_.yaml +++ b/.ci_support/linux_ppc64le_.yaml @@ -10,10 +10,6 @@ c_stdlib_version: - '2.17' channel_sources: - conda-forge -- conda-forge -- conda-forge -- conda-forge -- conda-forge,conda-forge/label/python_rc channel_targets: - conda-forge main cxx_compiler: @@ -23,13 +19,13 @@ cxx_compiler_version: docker_image: - quay.io/condaforge/linux-anvil-x86_64:alma9 libabseil: -- '20250512' +- '20250814' libgrpc: -- '1.73' +- '1.74' libprotobuf: -- 6.31.1 +- 6.32.1 openssl: -- '3' +- '3.5' pin_run_as_build: python: min_pin: x.x @@ -47,7 +43,5 @@ target_platform: zip_keys: - - c_compiler_version - cxx_compiler_version -- - python - - channel_sources zlib: - '1' diff --git a/.ci_support/migrations/absl_grpc_proto_25Q3.yaml b/.ci_support/migrations/absl_grpc_proto_25Q3.yaml new file mode 100644 index 00000000..0a763f9a --- /dev/null +++ b/.ci_support/migrations/absl_grpc_proto_25Q3.yaml @@ -0,0 +1,30 @@ +__migrator: + build_number: 1 + commit_message: Rebuild for libabseil 20250814, libgrpc 1.74 & libprotobuf 6.32.0 + kind: version + migration_number: 1 + paused: true + exclude: + # core deps + - abseil-cpp + - grpc-cpp + - libprotobuf + # required for building/testing + - protobuf + - re2 + # bazel stack + - bazel + - grpc_java_plugin + - singlejar +libabseil: +- 20250814 +libgrpc: +- "1.74" +libprotobuf: +- 6.32.1 +# we need to leave this migration open until we're ready to move the global baseline, see +# https://github.com/conda-forge/conda-forge.github.io/issues/2467; grpc 1.72 requires 11.0, +# see https://github.com/grpc/grpc/commit/f122d248443c81592e748da1adb240cbf0a0231c +c_stdlib_version: # [osx] + - 11.0 # [osx] +migrator_ts: 1755579905.5999165 diff --git a/.ci_support/osx_64_.yaml b/.ci_support/osx_64_.yaml index e4c4295e..9dbf730d 100644 --- a/.ci_support/osx_64_.yaml +++ b/.ci_support/osx_64_.yaml @@ -14,10 +14,6 @@ c_stdlib_version: - '11.0' channel_sources: - conda-forge -- conda-forge -- conda-forge -- conda-forge -- conda-forge,conda-forge/label/python_rc channel_targets: - conda-forge main cxx_compiler: @@ -25,15 +21,15 @@ cxx_compiler: cxx_compiler_version: - '19' libabseil: -- '20250512' +- '20250814' libgrpc: -- '1.73' +- '1.74' libprotobuf: -- 6.31.1 +- 6.32.1 macos_machine: - x86_64-apple-darwin13.4.0 openssl: -- '3' +- '3.5' pin_run_as_build: python: min_pin: x.x @@ -51,7 +47,5 @@ target_platform: zip_keys: - - c_compiler_version - cxx_compiler_version -- - python - - channel_sources zlib: - '1' diff --git a/.ci_support/osx_arm64_.yaml b/.ci_support/osx_arm64_.yaml index 0fa6ef90..6681e74e 100644 --- a/.ci_support/osx_arm64_.yaml +++ b/.ci_support/osx_arm64_.yaml @@ -14,10 +14,6 @@ c_stdlib_version: - '11.0' channel_sources: - conda-forge -- conda-forge -- conda-forge -- conda-forge -- conda-forge,conda-forge/label/python_rc channel_targets: - conda-forge main cxx_compiler: @@ -25,15 +21,15 @@ cxx_compiler: cxx_compiler_version: - '19' libabseil: -- '20250512' +- '20250814' libgrpc: -- '1.73' +- '1.74' libprotobuf: -- 6.31.1 +- 6.32.1 macos_machine: - arm64-apple-darwin20.0.0 openssl: -- '3' +- '3.5' pin_run_as_build: python: min_pin: x.x @@ -51,7 +47,5 @@ target_platform: zip_keys: - - c_compiler_version - cxx_compiler_version -- - python - - channel_sources zlib: - '1' diff --git a/.ci_support/win_64_.yaml b/.ci_support/win_64_.yaml index 6cdeb8b4..ac6cf3ab 100644 --- a/.ci_support/win_64_.yaml +++ b/.ci_support/win_64_.yaml @@ -6,22 +6,18 @@ c_stdlib: - vs channel_sources: - conda-forge -- conda-forge -- conda-forge -- conda-forge -- conda-forge,conda-forge/label/python_rc channel_targets: - conda-forge main cxx_compiler: - vs2022 libabseil: -- '20250512' +- '20250814' libgrpc: -- '1.73' +- '1.74' libprotobuf: -- 6.31.1 +- 6.32.1 openssl: -- '3' +- '3.5' pin_run_as_build: python: min_pin: x.x @@ -36,8 +32,5 @@ re2: - 2025.08.12 target_platform: - win-64 -zip_keys: -- - python - - channel_sources zlib: - '1' diff --git a/.scripts/run_osx_build.sh b/.scripts/run_osx_build.sh index 361edeb2..bac7141a 100755 --- a/.scripts/run_osx_build.sh +++ b/.scripts/run_osx_build.sh @@ -63,6 +63,25 @@ if [[ "${sha:-}" == "" ]]; then sha=$(git rev-parse HEAD) fi +if [[ "${OSX_SDK_DIR:-}" == "" ]]; then + if [[ "${CI:-}" == "" ]]; then + echo "Please set OSX_SDK_DIR to a directory where SDKs can be downloaded to. Aborting" + exit 1 + else + export OSX_SDK_DIR=/opt/conda-sdks + /usr/bin/sudo mkdir -p "${OSX_SDK_DIR}" + /usr/bin/sudo chown "${USER}" "${OSX_SDK_DIR}" + fi +else + if tmpf=$(mktemp -p "$OSX_SDK_DIR" tmp.XXXXXXXX 2>/dev/null); then + rm -f "$tmpf" + echo "OSX_SDK_DIR is writeable without sudo, continuing" + else + echo "User-provided OSX_SDK_DIR is not writeable for current user! Aborting" + exit 1 + fi +fi + echo -e "\n\nRunning the build setup script." source run_conda_forge_build_setup diff --git a/recipe/build-cpp.sh b/recipe/build-cpp.sh index cad68c1b..5f677be5 100755 --- a/recipe/build-cpp.sh +++ b/recipe/build-cpp.sh @@ -71,6 +71,11 @@ pushd build-cpp echo CC="${CC}" echo CFLAGS="${CFLAGS}" +# our compilers set `-DNDEBUG` in CPPFLAGS, but grpc does not seem to respect +# this consistently; add it to CXXFLAGS as well to avoid any doubt, see +# https://github.com/abseil/abseil-cpp/issues/1624#issuecomment-1968073823 +CXXFLAGS="${CXXFLAGS} -DNDEBUG" + # point to right protoc if [[ "$CONDA_BUILD_CROSS_COMPILATION" == 1 ]]; then export CMAKE_ARGS="${CMAKE_ARGS} -DProtobuf_PROTOC_EXECUTABLE=$BUILD_PREFIX/bin/protoc" diff --git a/recipe/build-grpcio.sh b/recipe/build-grpcio.sh index c7b5882b..82598e18 100755 --- a/recipe/build-grpcio.sh +++ b/recipe/build-grpcio.sh @@ -1,6 +1,8 @@ #!/bin/bash +set -ex export GRPC_BUILD_WITH_BORING_SSL_ASM="" +export GRPC_PYTHON_BUILD_SYSTEM_ABSL="True" export GRPC_PYTHON_BUILD_SYSTEM_CARES="True" export GRPC_PYTHON_BUILD_SYSTEM_GRPC_CORE="True" export GRPC_PYTHON_BUILD_SYSTEM_OPENSSL="True" @@ -24,4 +26,9 @@ fi ln -sf "$(which $CC)" "$SRC_DIR/cc" export PATH="$SRC_DIR:$PATH" +# our compilers set `-DNDEBUG` in CPPFLAGS, but grpc does not seem to respect +# this consistently; add it to CXXFLAGS as well to avoid any doubt, see +# https://github.com/abseil/abseil-cpp/issues/1624#issuecomment-1968073823 +CXXFLAGS="${CXXFLAGS} -DNDEBUG" + $PYTHON -m pip install . --no-deps --ignore-installed --no-cache-dir -v diff --git a/recipe/generate_def.py b/recipe/generate_def.py index f517a3df..0435c92e 100644 --- a/recipe/generate_def.py +++ b/recipe/generate_def.py @@ -64,6 +64,10 @@ # trailing demangled names (e.g. "(`upb_FieldType_CType'::`2'::c_type)" above); # don't use [-1] because some demangled symbols contain `operator|` symbol = line.split("|")[1].strip().split()[0] + # keep constructors/destructors before filtering other symbols starting with "??" + if any(symbol.startswith(x) for x in ["??0", "??1"]): + symbols.add(symbol) + continue # skip labels and metadata if "Label" in line or any(symbol.startswith(x) for x in [".", "$", "@", "??", "?$", "__"]): continue diff --git a/recipe/meta.yaml b/recipe/meta.yaml index 9d7db11a..d535d928 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -1,13 +1,13 @@ -{% set version = "1.74.1" %} +{% set version = "1.78.0.pre1" %} # core package & vendored libs use different version scheme than CPP libs, see # top of https://github.com/grpc/grpc/blob/v{{ version }}/CMakeLists.txt -# the difference of 25 is empirical, last changed in 1.70 (1.69 had a non-zero minor version) -{% set core_major = version.split(".")[1] | int - 25 %} +# the difference of 26 is empirical, last changed in 1.78 +{% set core_major = version.split(".")[1] | int - 26 %} {% set core_version = core_major | string ~ ".0.0" %} -{% set core_libs = ["gpr", "grpc", "grpc_unsecure"] %} -{% set core_cpp_libs = ["grpc++", "grpc++_unsecure"] %} +{% set core_libs = ["gpr", "grpc"] %} +{% set core_cpp_libs = ["grpc++"] %} {% set vendored_libs = ["address_sorting"] %} {% set binaries_plugin_langs = [ "cpp", "csharp", "node", "objective_c", "php", "python", "ruby" @@ -19,7 +19,7 @@ package: source: - url: https://github.com/grpc/grpc/archive/v{{ version.replace(".pre", "-pre") }}.tar.gz - sha256: 7bf97c11cf3808d650a3a025bbf9c5f922c844a590826285067765dfd055d228 + sha256: 65260591abab43d5aa130efe199c8d859f2c6c0d95944b59aeeea259e97aec84 patches: - patches/0001-windows-ssl-lib-names.patch - patches/0002-fix-win-setup-cmds.patch @@ -42,9 +42,12 @@ source: - patches/0010-reduce-buildtests_cxx-target-to-end2end-tests.patch # don't rebuild protobuf/upb/abseil for grpcio-tools - patches/0011-build-grpcio-tools-from-source.patch - - patches/0012-add-linkage-to-openssl-to-grpc_unsecure.patch # [win] - - patches/0013-reduce-grpc-symbol-explosion-with-autogenerated-expo.patch - - patches/0014-update-GRPC_DLL-instances-where-necessary.patch + - patches/0012-reduce-grpc-symbol-explosion-with-autogenerated-expo.patch + - patches/0013-update-GRPC_DLL-instances-where-necessary.patch + - patches/0014-use-protobuf-s-libutf8_range.patch + - patches/0015-disable-grpc-_unsecure.patch + # backport https://github.com/grpc/grpc/pull/41357 + - patches/0016-Fix-Compiler-Plugins-fall-back-to-the-edition-2023-f.patch {% if build_platform == target_platform and not win %} - folder: third_party/benchmark @@ -65,7 +68,7 @@ source: - folder: third_party/protoc-gen-validate git_url: https://github.com/envoyproxy/protoc-gen-validate.git - git_rev: 32c2415389a3538082507ae537e7edd9578c64ed + git_rev: 7b06248484ceeaa947e93ca2747eccf336a88ecc - folder: third_party/xds git_url: https://github.com/cncf/xds.git @@ -73,7 +76,7 @@ source: {% endif %} build: - number: 1 + number: 0 outputs: - name: libgrpc @@ -161,6 +164,16 @@ outputs: - pkg-config --print-errors --exact-version "{{ version }}" {{ each_lib }} {% endfor %} + # absence of grpc{,++}_unsecure + - test ! -f $PREFIX/lib/libgrpc_unsecure.so # [linux] + - test ! -f $PREFIX/lib/libgrpc++_unsecure.so # [linux] + - test ! -f $PREFIX/lib/libgrpc_unsecure.dylib # [osx] + - test ! -f $PREFIX/lib/libgrpc++_unsecure.dylib # [osx] + - if exist %LIBRARY_BIN%\grpc_unsecure.dll exit 1 # [win] + - if exist %LIBRARY_BIN%\grpc++_unsecure.dll exit 1 # [win] + - if exist %LIBRARY_LIB%\grpc_unsecure.lib exit 1 # [win] + - if exist %LIBRARY_LIB%\grpc++_unsecure.lib exit 1 # [win] + # CMake test: compile upstream example - ./test_grpc.sh # [unix] - ./test_grpc.bat # [win] @@ -187,12 +200,14 @@ outputs: - pip - setuptools - cython + - libabseil - {{ pin_subpackage('libgrpc', exact=True) }} - pthread-stubs # [linux] - zlib run: - python - {{ pin_subpackage('libgrpc', exact=True) }} + - typing-extensions >=4.12,<5 test: source_files: - examples/python/helloworld/ diff --git a/recipe/patches/0001-windows-ssl-lib-names.patch b/recipe/patches/0001-windows-ssl-lib-names.patch index 3b9bd887..4462cf96 100644 --- a/recipe/patches/0001-windows-ssl-lib-names.patch +++ b/recipe/patches/0001-windows-ssl-lib-names.patch @@ -1,7 +1,7 @@ -From d5ed2615f402d4b60de392d7faa49ce7e8fa6513 Mon Sep 17 00:00:00 2001 +From 791d094c30613f9f4548929a78a2dd7886051dcb Mon Sep 17 00:00:00 2001 From: Jonathan Helmus Date: Mon, 17 Feb 2020 15:45:06 -0600 -Subject: [PATCH 01/14] windows ssl lib names +Subject: [PATCH 01/16] windows ssl lib names Co-Authored-By: Julien Schueller Co-Authored-By: Nicholas Bollweg @@ -11,7 +11,7 @@ Co-Authored-By: Marius van Niekerk 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/setup.py b/setup.py -index 39ca17e824..3a879f037b 100644 +index 38d3ab7229..e0f0572512 100644 --- a/setup.py +++ b/setup.py @@ -367,10 +367,10 @@ if "win32" in sys.platform: diff --git a/recipe/patches/0002-fix-win-setup-cmds.patch b/recipe/patches/0002-fix-win-setup-cmds.patch index e41c404d..53e5c167 100644 --- a/recipe/patches/0002-fix-win-setup-cmds.patch +++ b/recipe/patches/0002-fix-win-setup-cmds.patch @@ -1,7 +1,7 @@ -From f50311e7ac7f652ac5692f88d92dc0fb9fa6e3c1 Mon Sep 17 00:00:00 2001 +From 539ed80707fa18ce824f92fca2e058360874a281 Mon Sep 17 00:00:00 2001 From: Mike Sarahan Date: Tue, 18 Feb 2020 13:53:05 -0600 -Subject: [PATCH 02/14] fix win setup cmds +Subject: [PATCH 02/16] fix win setup cmds Co-Authored-By: Julien Schueller Co-Authored-By: Nicholas Bollweg @@ -12,10 +12,10 @@ Co-Authored-By: H. Vetinari 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/setup.py b/setup.py -index 3a879f037b..adfec063fd 100644 +index e0f0572512..70f301db5b 100644 --- a/setup.py +++ b/setup.py -@@ -209,6 +209,9 @@ ENABLE_DOCUMENTATION_BUILD = _env_bool_value( +@@ -203,6 +203,9 @@ ENABLE_DOCUMENTATION_BUILD = _env_bool_value( def check_linker_need_libatomic(): diff --git a/recipe/patches/0003-Link-against-grpc-and-abseil.patch b/recipe/patches/0003-Link-against-grpc-and-abseil.patch index 4ca37dc3..bf4cc00b 100644 --- a/recipe/patches/0003-Link-against-grpc-and-abseil.patch +++ b/recipe/patches/0003-Link-against-grpc-and-abseil.patch @@ -1,7 +1,7 @@ -From 41f565b1cc5a805928c9d7a6542f1e6802a4bfa4 Mon Sep 17 00:00:00 2001 +From e35f63d1bbbf64f22fbf5582c98f2134394485b2 Mon Sep 17 00:00:00 2001 From: Marius van Niekerk Date: Mon, 13 Jun 2022 17:13:07 -0400 -Subject: [PATCH 03/14] Link against grpc and abseil +Subject: [PATCH 03/16] Link against grpc and abseil Co-Authored-By: H. Vetinari --- @@ -9,10 +9,10 @@ Co-Authored-By: H. Vetinari 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/setup.py b/setup.py -index adfec063fd..266a690474 100644 +index 70f301db5b..8ef5add234 100644 --- a/setup.py +++ b/setup.py -@@ -180,6 +180,8 @@ BUILD_WITH_STATIC_LIBSTDCXX = _env_bool_value( +@@ -174,6 +174,8 @@ BUILD_WITH_STATIC_LIBSTDCXX = _env_bool_value( "GRPC_PYTHON_BUILD_WITH_STATIC_LIBSTDCXX", "False" ) diff --git a/recipe/patches/0004-force-protoc-executable.patch b/recipe/patches/0004-force-protoc-executable.patch index 223ec197..3337f8f3 100644 --- a/recipe/patches/0004-force-protoc-executable.patch +++ b/recipe/patches/0004-force-protoc-executable.patch @@ -1,7 +1,7 @@ -From 29ede911ee9d4f9096f5719d20103e180271e1cc Mon Sep 17 00:00:00 2001 +From f8276a552795c00f3beb8a89ec8956bcc58185be Mon Sep 17 00:00:00 2001 From: "Uwe L. Korn" Date: Fri, 11 Sep 2020 14:20:04 +0200 -Subject: [PATCH 04/14] force protoc executable +Subject: [PATCH 04/16] force protoc executable --- cmake/protobuf.cmake | 17 ++--------------- diff --git a/recipe/patches/0005-mark-linkages-of-grpc-_unsecure-as-private.patch b/recipe/patches/0005-mark-linkages-of-grpc-_unsecure-as-private.patch index cb185dce..50d1f0b0 100644 --- a/recipe/patches/0005-mark-linkages-of-grpc-_unsecure-as-private.patch +++ b/recipe/patches/0005-mark-linkages-of-grpc-_unsecure-as-private.patch @@ -1,7 +1,7 @@ -From 5cad386388ee72810dfcbf0afc88ded797f5e840 Mon Sep 17 00:00:00 2001 +From 6603ce4c49f79b23ee0d4cbe84180fa96e170eab Mon Sep 17 00:00:00 2001 From: "H. Vetinari" Date: Tue, 23 Aug 2022 11:45:20 +0200 -Subject: [PATCH 05/14] mark linkages of grpc{,_unsecure} as private +Subject: [PATCH 05/16] mark linkages of grpc{,_unsecure} as private except openssl & gpr, which are needed by dependents @@ -9,14 +9,14 @@ See also: https://github.com/grpc/grpc/issues/30838 Co-Authored-By: Mark Harfouche --- - CMakeLists.txt | 110 +++++++++++++++++++++++++++---------------------- - 1 file changed, 60 insertions(+), 50 deletions(-) + CMakeLists.txt | 106 +++++++++++++++++++++++++++---------------------- + 1 file changed, 58 insertions(+), 48 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt -index f652a4055c..2fae60378f 100644 +index 39f17106e3..72fa6688ab 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -3069,35 +3069,40 @@ target_include_directories(grpc +@@ -3137,34 +3137,39 @@ target_include_directories(grpc ${_gRPC_ZLIB_INCLUDE_DIR} ) target_link_libraries(grpc @@ -26,13 +26,12 @@ index f652a4055c..2fae60378f 100644 - ${_gRPC_RE2_LIBRARIES} - ${_gRPC_ZLIB_LIBRARIES} - absl::algorithm_container -- absl::config - absl::no_destructor - absl::btree - absl::flat_hash_map - absl::flat_hash_set - absl::inlined_vector -- absl::bind_front +- absl::node_hash_map - absl::function_ref - absl::hash - absl::type_traits @@ -59,13 +58,12 @@ index f652a4055c..2fae60378f 100644 + # external dependencies that need to available at runtime + PUBLIC ${_gRPC_SSL_LIBRARIES} + PRIVATE absl::algorithm_container -+ PRIVATE absl::config + PRIVATE absl::no_destructor + PRIVATE absl::btree + PRIVATE absl::flat_hash_map + PRIVATE absl::flat_hash_set + PRIVATE absl::inlined_vector -+ PRIVATE absl::bind_front ++ PRIVATE absl::node_hash_map + PRIVATE absl::function_ref + PRIVATE absl::hash + PRIVATE absl::type_traits @@ -84,7 +82,7 @@ index f652a4055c..2fae60378f 100644 endif() foreach(_hdr -@@ -3791,32 +3796,37 @@ target_include_directories(grpc_unsecure +@@ -3875,31 +3880,36 @@ target_include_directories(grpc_unsecure ${_gRPC_ZLIB_INCLUDE_DIR} ) target_link_libraries(grpc_unsecure @@ -96,13 +94,12 @@ index f652a4055c..2fae60378f 100644 upb_textformat_lib - ${_gRPC_ZLIB_LIBRARIES} - absl::algorithm_container -- absl::config - absl::no_destructor - absl::btree - absl::flat_hash_map - absl::flat_hash_set - absl::inlined_vector -- absl::bind_front +- absl::node_hash_map - absl::function_ref - absl::hash - absl::type_traits @@ -120,13 +117,12 @@ index f652a4055c..2fae60378f 100644 + PRIVATE ${_gRPC_CARES_LIBRARIES} + # external dependencies that need to available at runtime + PRIVATE absl::algorithm_container -+ PRIVATE absl::config + PRIVATE absl::no_destructor + PRIVATE absl::btree + PRIVATE absl::flat_hash_map + PRIVATE absl::flat_hash_set + PRIVATE absl::inlined_vector -+ PRIVATE absl::bind_front ++ PRIVATE absl::node_hash_map + PRIVATE absl::function_ref + PRIVATE absl::hash + PRIVATE absl::type_traits diff --git a/recipe/patches/0006-for-main-targets-set-_DLL_EXPORTS-when-building-and-.patch b/recipe/patches/0006-for-main-targets-set-_DLL_EXPORTS-when-building-and-.patch index 52f60805..a5d25bfe 100644 --- a/recipe/patches/0006-for-main-targets-set-_DLL_EXPORTS-when-building-and-.patch +++ b/recipe/patches/0006-for-main-targets-set-_DLL_EXPORTS-when-building-and-.patch @@ -1,7 +1,7 @@ -From 7ee05652cf15c9d23b634bfe9fc18028d62e32c1 Mon Sep 17 00:00:00 2001 +From c99d9a5abbfa62079b9255137ebe75df8d09e7e1 Mon Sep 17 00:00:00 2001 From: "H. Vetinari" Date: Thu, 29 Feb 2024 20:31:21 +1100 -Subject: [PATCH 06/14] for main targets, set *_DLL_EXPORTS when building and +Subject: [PATCH 06/16] for main targets, set *_DLL_EXPORTS when building and *_DLL_IMPORTS in interface --- @@ -9,10 +9,10 @@ Subject: [PATCH 06/14] for main targets, set *_DLL_EXPORTS when building and 1 file changed, 10 insertions(+), 26 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt -index 2fae60378f..66be39ef73 100644 +index 72fa6688ab..ba7ef5ef67 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -2063,10 +2063,8 @@ if(WIN32 AND MSVC) +@@ -2103,10 +2103,8 @@ if(WIN32 AND MSVC) COMPILE_PDB_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" ) if(BUILD_SHARED_LIBS) @@ -25,7 +25,7 @@ index 2fae60378f..66be39ef73 100644 endif() if(gRPC_INSTALL) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/gpr.pdb -@@ -3042,11 +3040,8 @@ if(WIN32 AND MSVC) +@@ -3110,11 +3108,8 @@ if(WIN32 AND MSVC) COMPILE_PDB_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" ) if(BUILD_SHARED_LIBS) @@ -39,7 +39,7 @@ index 2fae60378f..66be39ef73 100644 endif() if(gRPC_INSTALL) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/grpc.pdb -@@ -3769,11 +3764,8 @@ if(WIN32 AND MSVC) +@@ -3853,11 +3848,8 @@ if(WIN32 AND MSVC) COMPILE_PDB_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" ) if(BUILD_SHARED_LIBS) @@ -53,7 +53,7 @@ index 2fae60378f..66be39ef73 100644 endif() if(gRPC_INSTALL) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/grpc_unsecure.pdb -@@ -4791,12 +4783,8 @@ if(WIN32 AND MSVC) +@@ -4876,12 +4868,8 @@ if(WIN32 AND MSVC) COMPILE_PDB_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" ) if(BUILD_SHARED_LIBS) @@ -68,7 +68,7 @@ index 2fae60378f..66be39ef73 100644 endif() if(gRPC_INSTALL) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/grpc++.pdb -@@ -5531,12 +5519,8 @@ if(WIN32 AND MSVC) +@@ -5620,12 +5608,8 @@ if(WIN32 AND MSVC) COMPILE_PDB_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" ) if(BUILD_SHARED_LIBS) diff --git a/recipe/patches/0007-add-missing-linkages-for-gRPC_BUILD_TESTS-ON.patch b/recipe/patches/0007-add-missing-linkages-for-gRPC_BUILD_TESTS-ON.patch index 27c5e629..044fb3e6 100644 --- a/recipe/patches/0007-add-missing-linkages-for-gRPC_BUILD_TESTS-ON.patch +++ b/recipe/patches/0007-add-missing-linkages-for-gRPC_BUILD_TESTS-ON.patch @@ -1,7 +1,7 @@ -From 318a6ce6b4237af2c46a10d42dec5d292909ac3e Mon Sep 17 00:00:00 2001 +From b529ac5784ffb9e75abbb651bcd81fcdb3482916 Mon Sep 17 00:00:00 2001 From: "H. Vetinari" Date: Tue, 26 Sep 2023 18:25:54 +1100 -Subject: [PATCH 07/14] add missing linkages for gRPC_BUILD_TESTS=ON +Subject: [PATCH 07/16] add missing linkages for gRPC_BUILD_TESTS=ON grpc_event_engine::experimental::MockEndpoint::MockEndpoint() sits in https://github.com/grpc/grpc/blob/v1.73.1/test/core/test_util/mock_endpoint.cc @@ -14,10 +14,10 @@ For some tests, re2 and c-ares have just been forgotten as dependencies. 1 file changed, 11 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt -index 66be39ef73..b0f134790e 100644 +index ba7ef5ef67..a786f5f8ea 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -3229,6 +3229,7 @@ target_link_libraries(grpc_test_util +@@ -3297,6 +3297,7 @@ target_link_libraries(grpc_test_util ${_gRPC_ALLTARGETS_LIBRARIES} absl::failure_signal_handler absl::stacktrace @@ -25,7 +25,7 @@ index 66be39ef73..b0f134790e 100644 absl::symbolize absl::log_initialize grpc -@@ -3304,6 +3305,7 @@ target_link_libraries(grpc_test_util_unsecure +@@ -3371,6 +3372,7 @@ target_link_libraries(grpc_test_util_unsecure ${_gRPC_ALLTARGETS_LIBRARIES} absl::failure_signal_handler absl::stacktrace @@ -33,7 +33,7 @@ index 66be39ef73..b0f134790e 100644 absl::symbolize absl::log_initialize grpc_unsecure -@@ -8335,6 +8337,7 @@ target_include_directories(authorization_matchers_test +@@ -8576,6 +8578,7 @@ target_include_directories(authorization_matchers_test ) target_link_libraries(authorization_matchers_test @@ -41,7 +41,7 @@ index 66be39ef73..b0f134790e 100644 ${_gRPC_ALLTARGETS_LIBRARIES} gtest grpc_test_util -@@ -17316,6 +17319,7 @@ target_include_directories(grpc_authorization_engine_test +@@ -18653,6 +18656,7 @@ target_include_directories(grpc_authorization_engine_test ) target_link_libraries(grpc_authorization_engine_test @@ -49,7 +49,7 @@ index 66be39ef73..b0f134790e 100644 ${_gRPC_ALLTARGETS_LIBRARIES} gtest grpc_test_util -@@ -19776,6 +19780,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) +@@ -20960,6 +20964,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) ) target_link_libraries(httpcli_test @@ -57,7 +57,7 @@ index 66be39ef73..b0f134790e 100644 ${_gRPC_ALLTARGETS_LIBRARIES} gtest grpc++_test_util -@@ -21869,6 +21874,7 @@ target_include_directories(matchers_test +@@ -24545,6 +24550,7 @@ target_include_directories(matchers_test ) target_link_libraries(matchers_test @@ -65,7 +65,7 @@ index 66be39ef73..b0f134790e 100644 ${_gRPC_ALLTARGETS_LIBRARIES} gtest grpc_test_util -@@ -26804,6 +26810,7 @@ target_include_directories(resolve_address_using_ares_resolver_test +@@ -30008,6 +30014,7 @@ target_include_directories(resolve_address_using_ares_resolver_test ) target_link_libraries(resolve_address_using_ares_resolver_test @@ -73,7 +73,7 @@ index 66be39ef73..b0f134790e 100644 ${_gRPC_ALLTARGETS_LIBRARIES} gtest grpc_test_util -@@ -26892,6 +26899,7 @@ target_include_directories(resolve_address_using_native_resolver_test +@@ -30096,6 +30103,7 @@ target_include_directories(resolve_address_using_native_resolver_test ) target_link_libraries(resolve_address_using_native_resolver_test @@ -81,15 +81,15 @@ index 66be39ef73..b0f134790e 100644 ${_gRPC_ALLTARGETS_LIBRARIES} gtest grpc_test_util -@@ -35879,6 +35887,7 @@ target_include_directories(xds_common_types_test +@@ -40710,6 +40718,7 @@ target_include_directories(xds_common_types_test ) target_link_libraries(xds_common_types_test + ${_gRPC_RE2_LIBRARIES} ${_gRPC_ALLTARGETS_LIBRARIES} gtest - grpc++ -@@ -36530,6 +36539,7 @@ target_include_directories(xds_credentials_test + absl::fixed_array +@@ -41364,6 +41373,7 @@ target_include_directories(xds_credentials_test ) target_link_libraries(xds_credentials_test @@ -97,11 +97,11 @@ index 66be39ef73..b0f134790e 100644 ${_gRPC_ALLTARGETS_LIBRARIES} gtest grpc_test_util -@@ -41495,6 +41505,7 @@ target_include_directories(xds_listener_resource_type_test +@@ -46339,6 +46349,7 @@ target_include_directories(xds_listener_resource_type_test ) target_link_libraries(xds_listener_resource_type_test + ${_gRPC_RE2_LIBRARIES} ${_gRPC_ALLTARGETS_LIBRARIES} gtest - grpc++ + absl::fixed_array diff --git a/recipe/patches/0008-add-enable_testing-so-tests-get-run.patch b/recipe/patches/0008-add-enable_testing-so-tests-get-run.patch index ee50c5cf..3166897e 100644 --- a/recipe/patches/0008-add-enable_testing-so-tests-get-run.patch +++ b/recipe/patches/0008-add-enable_testing-so-tests-get-run.patch @@ -1,14 +1,14 @@ -From b63cd1c2f85a9550f71f78034a639674232d328e Mon Sep 17 00:00:00 2001 +From 32f368b544fe98dd5d29d216592be73d042edb68 Mon Sep 17 00:00:00 2001 From: "H. Vetinari" Date: Fri, 28 Feb 2025 22:07:19 +1100 -Subject: [PATCH 08/14] add enable_testing so tests get run +Subject: [PATCH 08/16] add enable_testing so tests get run --- CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt -index b0f134790e..e87b7b557d 100644 +index a786f5f8ea..d5f2483ecf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -51,6 +51,10 @@ option(gRPC_BUILD_TESTS "Build tests" OFF) diff --git a/recipe/patches/0009-unvendor-upb-and-utf8_range-use-protobuf-s-version.patch b/recipe/patches/0009-unvendor-upb-and-utf8_range-use-protobuf-s-version.patch index c69a406b..f4dd20c9 100644 --- a/recipe/patches/0009-unvendor-upb-and-utf8_range-use-protobuf-s-version.patch +++ b/recipe/patches/0009-unvendor-upb-and-utf8_range-use-protobuf-s-version.patch @@ -1,7 +1,7 @@ -From e4ad20aa04bc1eeadd7119b24ed2856e650ccf75 Mon Sep 17 00:00:00 2001 +From 4a56d20dc2f3a4e8359de72a87241c69391a3a30 Mon Sep 17 00:00:00 2001 From: "H. Vetinari" Date: Fri, 28 Feb 2025 15:09:41 +1100 -Subject: [PATCH 09/14] unvendor upb and utf8_range, use protobuf's version +Subject: [PATCH 09/16] unvendor upb and utf8_range, use protobuf's version --- CMakeLists.txt | 696 ++---------------------------------------------- @@ -9,10 +9,10 @@ Subject: [PATCH 09/14] unvendor upb and utf8_range, use protobuf's version 2 files changed, 16 insertions(+), 684 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt -index e87b7b557d..c0d1f6f363 100644 +index d5f2483ecf..072b84ca1a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -352,11 +352,15 @@ else() +@@ -354,11 +354,15 @@ else() set(_gRPC_CORE_NOSTDCXX_FLAGS "") endif() @@ -29,7 +29,7 @@ index e87b7b557d..c0d1f6f363 100644 if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX) find_library(LIBRT rt) if(LIBRT) -@@ -3072,8 +3076,6 @@ target_link_libraries(grpc +@@ -3140,8 +3144,6 @@ target_link_libraries(grpc PRIVATE ${_gRPC_ALLTARGETS_LIBRARIES} # vendored libs PRIVATE ${_gRPC_ADDRESS_SORTING_LIBRARIES} @@ -38,7 +38,7 @@ index e87b7b557d..c0d1f6f363 100644 # external dependencies used within grpc PRIVATE ${_gRPC_CARES_LIBRARIES} PRIVATE ${_gRPC_RE2_LIBRARIES} -@@ -3798,7 +3800,6 @@ target_link_libraries(grpc_unsecure +@@ -3882,7 +3884,6 @@ target_link_libraries(grpc_unsecure PRIVATE ${_gRPC_ALLTARGETS_LIBRARIES} # vendored libs PRIVATE ${_gRPC_ADDRESS_SORTING_LIBRARIES} @@ -46,7 +46,7 @@ index e87b7b557d..c0d1f6f363 100644 # external dependencies used within grpc PRIVATE ${_gRPC_ZLIB_LIBRARIES} PRIVATE ${_gRPC_CARES_LIBRARIES} -@@ -3964,672 +3965,6 @@ target_link_libraries(gtest +@@ -4049,672 +4050,6 @@ target_link_libraries(gtest endif() @@ -719,17 +719,17 @@ index e87b7b557d..c0d1f6f363 100644 if(gRPC_BUILD_TESTS) -@@ -6118,7 +5453,6 @@ target_include_directories(grpc_authorization_provider +@@ -6223,7 +5558,6 @@ target_include_directories(grpc_authorization_provider ) target_link_libraries(grpc_authorization_provider ${_gRPC_ALLTARGETS_LIBRARIES} - upb_textformat_lib ${_gRPC_RE2_LIBRARIES} ${_gRPC_ZLIB_LIBRARIES} - absl::config -@@ -47339,8 +46673,8 @@ generate_pkgconfig( + absl::no_destructor +@@ -53212,8 +52546,8 @@ generate_pkgconfig( "${gRPC_CORE_VERSION}" - "absl_algorithm_container absl_any_invocable absl_base absl_bind_front absl_bits absl_btree absl_check absl_cleanup absl_config absl_cord absl_core_headers absl_flags absl_flags_marshalling absl_flat_hash_map absl_flat_hash_set absl_function_ref absl_hash absl_inlined_vector absl_log absl_log_globals absl_log_severity absl_memory absl_no_destructor absl_optional absl_random_bit_gen_ref absl_random_distributions absl_random_random absl_span absl_status absl_statusor absl_str_format absl_string_view absl_strings absl_synchronization absl_time absl_type_traits absl_utility gpr" + "absl_algorithm_container absl_any_invocable absl_base absl_bind_front absl_bits absl_btree absl_check absl_cleanup absl_config absl_cord absl_core_headers absl_flags absl_flags_marshalling absl_flat_hash_map absl_flat_hash_set absl_function_ref absl_hash absl_inlined_vector absl_log absl_log_globals absl_log_severity absl_memory absl_no_destructor absl_node_hash_map absl_optional absl_random_bit_gen_ref absl_random_distributions absl_random_random absl_span absl_status absl_statusor absl_str_format absl_string_view absl_strings absl_synchronization absl_time absl_type_traits absl_utility gpr" "libcares openssl re2 zlib" - "-lgrpc" - "-laddress_sorting -lupb_textformat_lib -lupb_json_lib -lupb_reflection_lib -lupb_wire_lib -lupb_message_lib -lutf8_range_lib -lupb_mini_descriptor_lib -lupb_mini_table_lib -lupb_hash_lib -lupb_mem_lib -lupb_base_lib -lupb_lex_lib" @@ -738,9 +738,9 @@ index e87b7b557d..c0d1f6f363 100644 "grpc.pc") # grpc_unsecure .pc file -@@ -47350,8 +46684,8 @@ generate_pkgconfig( +@@ -53223,8 +52557,8 @@ generate_pkgconfig( "${gRPC_CORE_VERSION}" - "absl_algorithm_container absl_any_invocable absl_base absl_bind_front absl_bits absl_btree absl_check absl_cleanup absl_config absl_cord absl_core_headers absl_flags absl_flags_marshalling absl_flat_hash_map absl_flat_hash_set absl_function_ref absl_hash absl_inlined_vector absl_log absl_log_globals absl_log_severity absl_memory absl_no_destructor absl_optional absl_random_bit_gen_ref absl_random_distributions absl_random_random absl_span absl_status absl_statusor absl_str_format absl_string_view absl_strings absl_synchronization absl_time absl_type_traits absl_utility gpr" + "absl_algorithm_container absl_any_invocable absl_base absl_bind_front absl_bits absl_btree absl_check absl_cleanup absl_config absl_cord absl_core_headers absl_flags absl_flags_marshalling absl_flat_hash_map absl_flat_hash_set absl_function_ref absl_hash absl_inlined_vector absl_log absl_log_globals absl_log_severity absl_memory absl_no_destructor absl_node_hash_map absl_optional absl_random_bit_gen_ref absl_random_distributions absl_random_random absl_span absl_status absl_statusor absl_str_format absl_string_view absl_strings absl_synchronization absl_time absl_type_traits absl_utility gpr" "libcares zlib" - "-lgrpc_unsecure" - "-laddress_sorting -lupb_textformat_lib -lupb_reflection_lib -lupb_wire_lib -lupb_message_lib -lutf8_range_lib -lupb_mini_descriptor_lib -lupb_mini_table_lib -lupb_hash_lib -lupb_mem_lib -lupb_base_lib -lupb_lex_lib" @@ -749,9 +749,9 @@ index e87b7b557d..c0d1f6f363 100644 "grpc_unsecure.pc") # grpc++ .pc file -@@ -47361,8 +46695,8 @@ generate_pkgconfig( +@@ -53234,8 +52568,8 @@ generate_pkgconfig( "${gRPC_CPP_VERSION}" - "absl_absl_check absl_absl_log absl_algorithm_container absl_any_invocable absl_base absl_bind_front absl_bits absl_btree absl_check absl_cleanup absl_config absl_cord absl_core_headers absl_flags absl_flags_marshalling absl_flat_hash_map absl_flat_hash_set absl_function_ref absl_hash absl_inlined_vector absl_log absl_log_globals absl_log_severity absl_memory absl_no_destructor absl_optional absl_random_bit_gen_ref absl_random_distributions absl_random_random absl_span absl_status absl_statusor absl_str_format absl_string_view absl_strings absl_synchronization absl_time absl_type_traits absl_utility gpr grpc" + "absl_absl_check absl_absl_log absl_algorithm_container absl_any_invocable absl_base absl_bind_front absl_bits absl_btree absl_check absl_cleanup absl_config absl_cord absl_core_headers absl_dynamic_annotations absl_flags absl_flags_marshalling absl_flat_hash_map absl_flat_hash_set absl_function_ref absl_hash absl_inlined_vector absl_layout absl_log absl_log_globals absl_log_severity absl_memory absl_no_destructor absl_node_hash_map absl_optional absl_prefetch absl_random_bit_gen_ref absl_random_distributions absl_random_random absl_span absl_status absl_statusor absl_str_format absl_string_view absl_strings absl_strings_internal absl_synchronization absl_time absl_type_traits absl_utility gpr grpc" "libcares openssl re2 zlib" - "-lgrpc++" - "-laddress_sorting -lupb_textformat_lib -lupb_json_lib -lupb_reflection_lib -lupb_wire_lib -lupb_message_lib -lutf8_range_lib -lupb_mini_descriptor_lib -lupb_mini_table_lib -lupb_hash_lib -lupb_mem_lib -lupb_base_lib -lupb_lex_lib" @@ -760,9 +760,9 @@ index e87b7b557d..c0d1f6f363 100644 "grpc++.pc") # grpc++_unsecure .pc file -@@ -47372,8 +46706,8 @@ generate_pkgconfig( +@@ -53245,8 +52579,8 @@ generate_pkgconfig( "${gRPC_CPP_VERSION}" - "absl_absl_check absl_absl_log absl_algorithm_container absl_any_invocable absl_base absl_bind_front absl_bits absl_btree absl_check absl_cleanup absl_config absl_cord absl_core_headers absl_flags absl_flags_marshalling absl_flat_hash_map absl_flat_hash_set absl_function_ref absl_hash absl_inlined_vector absl_log absl_log_globals absl_log_severity absl_memory absl_no_destructor absl_optional absl_random_bit_gen_ref absl_random_distributions absl_random_random absl_span absl_status absl_statusor absl_str_format absl_string_view absl_strings absl_synchronization absl_time absl_type_traits absl_utility gpr grpc_unsecure" + "absl_absl_check absl_absl_log absl_algorithm_container absl_any_invocable absl_base absl_bind_front absl_bits absl_btree absl_check absl_cleanup absl_config absl_cord absl_core_headers absl_dynamic_annotations absl_flags absl_flags_marshalling absl_flat_hash_map absl_flat_hash_set absl_function_ref absl_hash absl_inlined_vector absl_layout absl_log absl_log_globals absl_log_severity absl_memory absl_no_destructor absl_node_hash_map absl_optional absl_prefetch absl_random_bit_gen_ref absl_random_distributions absl_random_random absl_span absl_status absl_statusor absl_str_format absl_string_view absl_strings absl_strings_internal absl_synchronization absl_time absl_type_traits absl_utility gpr grpc_unsecure" "libcares zlib" - "-lgrpc++_unsecure" - "-laddress_sorting -lupb_textformat_lib -lupb_reflection_lib -lupb_wire_lib -lupb_message_lib -lutf8_range_lib -lupb_mini_descriptor_lib -lupb_mini_table_lib -lupb_hash_lib -lupb_mem_lib -lupb_base_lib -lupb_lex_lib" @@ -771,9 +771,9 @@ index e87b7b557d..c0d1f6f363 100644 "grpc++_unsecure.pc") # grpcpp_otel_plugin .pc file -@@ -47383,6 +46717,6 @@ generate_pkgconfig( +@@ -53256,6 +52590,6 @@ generate_pkgconfig( "${gRPC_CPP_VERSION}" - "absl_absl_check absl_absl_log absl_algorithm_container absl_any_invocable absl_base absl_bind_front absl_bits absl_btree absl_check absl_cleanup absl_config absl_cord absl_core_headers absl_flags absl_flags_marshalling absl_flat_hash_map absl_flat_hash_set absl_function_ref absl_hash absl_inlined_vector absl_log absl_log_globals absl_log_severity absl_memory absl_no_destructor absl_optional absl_random_bit_gen_ref absl_random_distributions absl_random_random absl_span absl_status absl_statusor absl_str_format absl_string_view absl_strings absl_synchronization absl_time absl_type_traits absl_utility gpr grpc grpc++ opentelemetry_api" + "absl_absl_check absl_absl_log absl_algorithm_container absl_any_invocable absl_base absl_bind_front absl_bits absl_btree absl_check absl_cleanup absl_config absl_cord absl_core_headers absl_dynamic_annotations absl_flags absl_flags_marshalling absl_flat_hash_map absl_flat_hash_set absl_function_ref absl_hash absl_inlined_vector absl_layout absl_log absl_log_globals absl_log_severity absl_memory absl_no_destructor absl_node_hash_map absl_optional absl_prefetch absl_random_bit_gen_ref absl_random_distributions absl_random_random absl_span absl_status absl_statusor absl_str_format absl_string_view absl_strings absl_strings_internal absl_synchronization absl_time absl_type_traits absl_utility gpr grpc grpc++ opentelemetry_api" "libcares openssl re2 zlib" - "-lgrpcpp_otel_plugin" - "-laddress_sorting -lupb_textformat_lib -lupb_json_lib -lupb_reflection_lib -lupb_wire_lib -lupb_message_lib -lutf8_range_lib -lupb_mini_descriptor_lib -lupb_mini_table_lib -lupb_hash_lib -lupb_mem_lib -lupb_base_lib -lupb_lex_lib" diff --git a/recipe/patches/0010-reduce-buildtests_cxx-target-to-end2end-tests.patch b/recipe/patches/0010-reduce-buildtests_cxx-target-to-end2end-tests.patch index 1c3eaa3e..ad2b44e8 100644 --- a/recipe/patches/0010-reduce-buildtests_cxx-target-to-end2end-tests.patch +++ b/recipe/patches/0010-reduce-buildtests_cxx-target-to-end2end-tests.patch @@ -1,7 +1,7 @@ -From 0f1d5f1c06deefb09a3a2a6e7e000bd1b5b4f50b Mon Sep 17 00:00:00 2001 +From b419c338c731050c302632750d4211253b92959c Mon Sep 17 00:00:00 2001 From: "H. Vetinari" Date: Sun, 2 Mar 2025 08:22:39 +1100 -Subject: [PATCH 10/14] reduce buildtests_cxx target to end2end tests +Subject: [PATCH 10/16] reduce buildtests_cxx target to end2end tests as of v1.69, the whole set of tests takes extremely long to build (>6h), so reduce it to only "end2end" tests. This has the advantage of being @@ -77,11 +77,11 @@ to compile, compare with the timings below. 2025-08-08T11:22:34.6749979Z [7901/8027] Creating library symlink third_party/benchmark/src/libbenchmark_main.so.1 third_party/benchmark/src/libbenchmark_main.so ``` --- - CMakeLists.txt | 717 +++---------------------------------------------- - 1 file changed, 41 insertions(+), 676 deletions(-) + CMakeLists.txt | 754 +++---------------------------------------------- + 1 file changed, 42 insertions(+), 712 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt -index c0d1f6f363..b44b6fe124 100644 +index 072b84ca1a..c92e808025 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,11 +47,12 @@ set(gRPC_INSTALL_SHAREDIR "share/grpc" CACHE STRING "Installation directory for @@ -98,7 +98,7 @@ index c0d1f6f363..b44b6fe124 100644 enable_testing() endif() -@@ -739,7 +740,7 @@ protobuf_generate_grpc_cpp_with_import_path_correction( +@@ -750,7 +751,7 @@ protobuf_generate_grpc_cpp_with_import_path_correction( # This enables CMake to build the project without requiring submodules # in the third_party directory as long as test builds are disabled. @@ -107,7 +107,7 @@ index c0d1f6f363..b44b6fe124 100644 protobuf_generate_grpc_cpp_with_import_path_correction( src/proto/grpc/testing/benchmark_service.proto src/proto/grpc/testing/benchmark_service.proto ) -@@ -1278,167 +1279,16 @@ endif() +@@ -1280,173 +1281,16 @@ endif() if(gRPC_BUILD_TESTS) add_custom_target(buildtests_c) @@ -212,6 +212,9 @@ index c0d1f6f363..b44b6fe124 100644 - add_dependencies(buildtests_cxx channelz_registry_test) - add_dependencies(buildtests_cxx channelz_service_test) - add_dependencies(buildtests_cxx channelz_test) +- if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) +- add_dependencies(buildtests_cxx channelz_tool_test) +- endif() - add_dependencies(buildtests_cxx channelz_v2_service_test) - add_dependencies(buildtests_cxx check_gcp_environment_linux_test) - add_dependencies(buildtests_cxx check_gcp_environment_windows_test) @@ -233,6 +236,9 @@ index c0d1f6f363..b44b6fe124 100644 - if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) - add_dependencies(buildtests_cxx client_ssl_test) - endif() +- if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) +- add_dependencies(buildtests_cxx client_test) +- endif() - add_dependencies(buildtests_cxx cmdline_test) - add_dependencies(buildtests_cxx codegen_test_full) - add_dependencies(buildtests_cxx codegen_test_minimal) @@ -275,7 +281,7 @@ index c0d1f6f363..b44b6fe124 100644 if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) add_dependencies(buildtests_cxx end2end_chaotic_good_no_logging_test) endif() -@@ -1454,508 +1304,23 @@ if(gRPC_BUILD_TESTS) +@@ -1464,538 +1308,24 @@ if(gRPC_BUILD_TESTS) add_dependencies(buildtests_cxx end2end_posix_no_logging_test) add_dependencies(buildtests_cxx end2end_posix_test) add_dependencies(buildtests_cxx end2end_test) @@ -314,6 +320,7 @@ index c0d1f6f363..b44b6fe124 100644 - add_dependencies(buildtests_cxx filter_fusion_test) - add_dependencies(buildtests_cxx filter_test_test) - add_dependencies(buildtests_cxx flaky_network_test) +- add_dependencies(buildtests_cxx flow_control_manager_test) - add_dependencies(buildtests_cxx flow_control_test) - add_dependencies(buildtests_cxx for_each_test) - if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) @@ -380,6 +387,7 @@ index c0d1f6f363..b44b6fe124 100644 - endif() - add_dependencies(buildtests_cxx http2_settings_test) - add_dependencies(buildtests_cxx http2_status_test) +- add_dependencies(buildtests_cxx http2_transport_test) - add_dependencies(buildtests_cxx http_proxy_mapper_test) - if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) - add_dependencies(buildtests_cxx httpcli_test) @@ -391,10 +399,15 @@ index c0d1f6f363..b44b6fe124 100644 - add_dependencies(buildtests_cxx idle_filter_state_test) - add_dependencies(buildtests_cxx if_list_test) - add_dependencies(buildtests_cxx if_test) +- add_dependencies(buildtests_cxx incoming_metadata_tracker_test) +- if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) +- add_dependencies(buildtests_cxx info_tool_test) +- endif() - add_dependencies(buildtests_cxx init_test) - add_dependencies(buildtests_cxx initial_settings_frame_bad_client_test) - add_dependencies(buildtests_cxx insecure_credentials_test) - add_dependencies(buildtests_cxx insecure_security_connector_test) +- add_dependencies(buildtests_cxx instrument_test) - add_dependencies(buildtests_cxx inter_activity_latch_test) - add_dependencies(buildtests_cxx inter_activity_mutex_test) - add_dependencies(buildtests_cxx inter_activity_pipe_test) @@ -415,6 +428,11 @@ index c0d1f6f363..b44b6fe124 100644 - add_dependencies(buildtests_cxx jwt_verifier_test) - add_dependencies(buildtests_cxx lame_client_test) - add_dependencies(buildtests_cxx latch_test) +- add_dependencies(buildtests_cxx latent_see_service_test) +- add_dependencies(buildtests_cxx latent_see_test) +- if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) +- add_dependencies(buildtests_cxx latent_see_tool_test) +- endif() - add_dependencies(buildtests_cxx layout_test) - add_dependencies(buildtests_cxx lb_get_cpu_stats_test) - add_dependencies(buildtests_cxx lb_load_data_store_test) @@ -544,6 +562,7 @@ index c0d1f6f363..b44b6fe124 100644 - add_dependencies(buildtests_cxx resolve_address_using_native_resolver_test) add_dependencies(buildtests_cxx resource_quota_end2end_stress_test) - add_dependencies(buildtests_cxx resource_quota_test) +- add_dependencies(buildtests_cxx resource_tracker_test) - add_dependencies(buildtests_cxx retry_service_config_test) - add_dependencies(buildtests_cxx retry_throttle_test) - add_dependencies(buildtests_cxx ring_buffer_test) @@ -580,6 +599,7 @@ index c0d1f6f363..b44b6fe124 100644 - add_dependencies(buildtests_cxx server_test) add_dependencies(buildtests_cxx service_config_end2end_test) - add_dependencies(buildtests_cxx service_config_test) +- add_dependencies(buildtests_cxx settings_timeout_manager_test) - add_dependencies(buildtests_cxx settings_timeout_test) - add_dependencies(buildtests_cxx shared_bit_gen_test) - add_dependencies(buildtests_cxx shutdown_test) @@ -593,6 +613,10 @@ index c0d1f6f363..b44b6fe124 100644 - add_dependencies(buildtests_cxx socket_utils_test) - endif() - add_dependencies(buildtests_cxx sorted_pack_test) + add_dependencies(buildtests_cxx spiffe_bundle_map_end2end_test) +- if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) +- add_dependencies(buildtests_cxx spiffe_ssl_transport_security_test) +- endif() - add_dependencies(buildtests_cxx spiffe_utils_test) - add_dependencies(buildtests_cxx spinlock_test) - if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) @@ -610,7 +634,9 @@ index c0d1f6f363..b44b6fe124 100644 - add_dependencies(buildtests_cxx status_flag_test) - add_dependencies(buildtests_cxx status_helper_test) - add_dependencies(buildtests_cxx status_util_test) +- add_dependencies(buildtests_cxx stream_data_queue_test) - add_dependencies(buildtests_cxx stream_leak_with_queued_flow_control_update_test) +- add_dependencies(buildtests_cxx stream_quota_test) - if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) - add_dependencies(buildtests_cxx streaming_throughput_test) - endif() @@ -672,12 +698,16 @@ index c0d1f6f363..b44b6fe124 100644 - add_dependencies(buildtests_cxx tls_key_export_test) - add_dependencies(buildtests_cxx tls_security_connector_test) - add_dependencies(buildtests_cxx too_many_pings_test) +- if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) +- add_dependencies(buildtests_cxx tool_test_test) +- endif() - add_dependencies(buildtests_cxx trace_flags_test) - if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) - add_dependencies(buildtests_cxx traced_buffer_list_test) - endif() - add_dependencies(buildtests_cxx transport_security_common_api_test) - add_dependencies(buildtests_cxx transport_security_test) +- add_dependencies(buildtests_cxx trie_lookup_test) - add_dependencies(buildtests_cxx try_join_test) - add_dependencies(buildtests_cxx try_seq_metadata_test) - add_dependencies(buildtests_cxx try_seq_test) @@ -706,6 +736,7 @@ index c0d1f6f363..b44b6fe124 100644 - if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) - add_dependencies(buildtests_cxx work_serializer_test) - endif() +- add_dependencies(buildtests_cxx writable_streams_test) - add_dependencies(buildtests_cxx write_size_policy_test) - if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) - add_dependencies(buildtests_cxx writes_per_rpc_test) @@ -749,6 +780,8 @@ index c0d1f6f363..b44b6fe124 100644 - add_dependencies(buildtests_cxx xds_http_filters_test) - add_dependencies(buildtests_cxx xds_lb_policy_registry_test) - add_dependencies(buildtests_cxx xds_listener_resource_type_test) +- add_dependencies(buildtests_cxx xds_matcher_parse_test) +- add_dependencies(buildtests_cxx xds_matcher_test) - add_dependencies(buildtests_cxx xds_metadata_test) - if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) - add_dependencies(buildtests_cxx xds_outlier_detection_end2end_test) @@ -774,6 +807,9 @@ index c0d1f6f363..b44b6fe124 100644 - if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) - add_dependencies(buildtests_cxx xds_security_end2end_test) - endif() +- if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) +- add_dependencies(buildtests_cxx xds_security_spiffe_end2end_test) +- endif() - add_dependencies(buildtests_cxx xds_stats_watcher_test) - if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) - add_dependencies(buildtests_cxx xds_wrr_end2end_test) @@ -784,7 +820,7 @@ index c0d1f6f363..b44b6fe124 100644 add_custom_target(buildtests DEPENDS buildtests_c buildtests_cxx) -@@ -3169,7 +2534,7 @@ if(gRPC_INSTALL) +@@ -3238,7 +2568,7 @@ if(gRPC_INSTALL) ) endif() @@ -793,7 +829,7 @@ index c0d1f6f363..b44b6fe124 100644 add_library(grpc_test_util test/core/event_engine/test_init.cc -@@ -3891,7 +3256,7 @@ if(gRPC_INSTALL) +@@ -3976,7 +3306,7 @@ if(gRPC_INSTALL) ) endif() @@ -802,7 +838,7 @@ index c0d1f6f363..b44b6fe124 100644 add_library(gtest third_party/googletest/googlemock/src/gmock-cardinalities.cc -@@ -4613,7 +3978,7 @@ if(gRPC_INSTALL) +@@ -4702,7 +4032,7 @@ if(gRPC_INSTALL) endif() endif() @@ -811,7 +847,7 @@ index c0d1f6f363..b44b6fe124 100644 add_library(grpc++_test src/cpp/client/channel_test_peer.cc -@@ -4686,7 +4051,7 @@ foreach(_hdr +@@ -4775,7 +4105,7 @@ foreach(_hdr endforeach() endif() @@ -820,7 +856,7 @@ index c0d1f6f363..b44b6fe124 100644 add_library(grpc++_test_config test/cpp/util/test_config_cc.cc -@@ -4738,7 +4103,7 @@ target_link_libraries(grpc++_test_config +@@ -4827,7 +4157,7 @@ target_link_libraries(grpc++_test_config endif() @@ -829,7 +865,7 @@ index c0d1f6f363..b44b6fe124 100644 add_library(grpc++_test_util src/core/util/subprocess_posix.cc -@@ -6056,7 +5421,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) +@@ -6245,7 +5575,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) endif() endif() @@ -837,8 +873,8 @@ index c0d1f6f363..b44b6fe124 100644 +if(gRPC_CF_TESTS) add_executable(admin_services_end2end_test - ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/csds.pb.cc -@@ -7472,7 +6837,7 @@ target_link_libraries(arena_test + ${_gRPC_PROTO_GENS_DIR}/envoy/admin/v3/certs.pb.cc +@@ -7713,7 +7043,7 @@ target_link_libraries(arena_test endif() @@ -847,7 +883,7 @@ index c0d1f6f363..b44b6fe124 100644 add_executable(async_end2end_test ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/health/v1/health.pb.cc -@@ -10727,7 +10092,7 @@ target_link_libraries(client_authority_filter_test +@@ -11306,7 +10636,7 @@ target_link_libraries(client_authority_filter_test endif() @@ -856,7 +892,7 @@ index c0d1f6f363..b44b6fe124 100644 add_executable(client_callback_end2end_test ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/echo.pb.cc -@@ -10972,7 +10337,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) +@@ -11551,7 +10881,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) endif() endif() @@ -865,7 +901,7 @@ index c0d1f6f363..b44b6fe124 100644 add_executable(client_interceptors_end2end_test ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/echo.pb.cc -@@ -11049,7 +10414,7 @@ target_link_libraries(client_interceptors_end2end_test +@@ -11628,7 +10958,7 @@ target_link_libraries(client_interceptors_end2end_test endif() @@ -874,7 +910,7 @@ index c0d1f6f363..b44b6fe124 100644 if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) add_executable(client_lb_end2end_test -@@ -11743,7 +11108,7 @@ target_link_libraries(connectivity_state_test +@@ -12380,7 +11710,7 @@ target_link_libraries(connectivity_state_test endif() @@ -883,7 +919,7 @@ index c0d1f6f363..b44b6fe124 100644 add_executable(context_allocator_end2end_test ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/echo.pb.cc -@@ -12599,7 +11964,7 @@ target_link_libraries(duplicate_header_bad_client_test +@@ -13304,7 +12634,7 @@ target_link_libraries(duplicate_header_bad_client_test endif() @@ -892,7 +928,7 @@ index c0d1f6f363..b44b6fe124 100644 if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) add_executable(end2end_chaotic_good_no_logging_test -@@ -12703,7 +12068,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) +@@ -13409,7 +12739,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) endif() endif() @@ -901,7 +937,7 @@ index c0d1f6f363..b44b6fe124 100644 if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) add_executable(end2end_chaotic_good_test -@@ -12895,7 +12260,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) +@@ -13602,7 +12932,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) endif() endif() @@ -910,7 +946,7 @@ index c0d1f6f363..b44b6fe124 100644 add_executable(end2end_http2_no_logging_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.pb.cc -@@ -12997,7 +12362,7 @@ target_link_libraries(end2end_http2_no_logging_test +@@ -13705,7 +13035,7 @@ target_link_libraries(end2end_http2_no_logging_test endif() @@ -919,7 +955,7 @@ index c0d1f6f363..b44b6fe124 100644 add_executable(end2end_http2_security_no_logging_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.pb.cc -@@ -13099,7 +12464,7 @@ target_link_libraries(end2end_http2_security_no_logging_test +@@ -13808,7 +13138,7 @@ target_link_libraries(end2end_http2_security_no_logging_test endif() @@ -928,7 +964,7 @@ index c0d1f6f363..b44b6fe124 100644 add_executable(end2end_http2_security_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.pb.cc -@@ -13289,7 +12654,7 @@ target_link_libraries(end2end_http2_security_test +@@ -13999,7 +13329,7 @@ target_link_libraries(end2end_http2_security_test endif() @@ -937,7 +973,7 @@ index c0d1f6f363..b44b6fe124 100644 add_executable(end2end_http2_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.pb.cc -@@ -13479,7 +12844,7 @@ target_link_libraries(end2end_http2_test +@@ -14190,7 +13520,7 @@ target_link_libraries(end2end_http2_test endif() @@ -946,7 +982,7 @@ index c0d1f6f363..b44b6fe124 100644 add_executable(end2end_inproc_no_logging_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.pb.cc -@@ -13581,7 +12946,7 @@ target_link_libraries(end2end_inproc_no_logging_test +@@ -14293,7 +13623,7 @@ target_link_libraries(end2end_inproc_no_logging_test endif() @@ -955,16 +991,16 @@ index c0d1f6f363..b44b6fe124 100644 add_executable(end2end_inproc_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.pb.cc -@@ -13771,7 +13136,7 @@ target_link_libraries(end2end_inproc_test +@@ -14484,7 +13814,7 @@ target_link_libraries(end2end_inproc_test endif() -if(gRPC_BUILD_TESTS) +if(gRPC_CF_TESTS) - add_executable(end2end_posix_no_logging_test + add_executable(end2end_ph2_no_logging_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.pb.cc -@@ -13873,7 +13238,7 @@ target_link_libraries(end2end_posix_no_logging_test +@@ -14881,7 +14211,7 @@ target_link_libraries(end2end_posix_no_logging_test endif() @@ -973,7 +1009,7 @@ index c0d1f6f363..b44b6fe124 100644 add_executable(end2end_posix_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.pb.cc -@@ -14063,7 +13428,7 @@ target_link_libraries(end2end_posix_test +@@ -15072,7 +14402,7 @@ target_link_libraries(end2end_posix_test endif() @@ -982,7 +1018,7 @@ index c0d1f6f363..b44b6fe124 100644 add_executable(end2end_test ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/duplicate/echo_duplicate.pb.cc -@@ -16201,7 +15566,7 @@ target_link_libraries(gcp_authentication_filter_test +@@ -17538,7 +16868,7 @@ target_link_libraries(gcp_authentication_filter_test endif() @@ -991,7 +1027,7 @@ index c0d1f6f363..b44b6fe124 100644 add_executable(generic_end2end_test ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/duplicate/echo_duplicate.pb.cc -@@ -16708,7 +16073,7 @@ target_link_libraries(grpc_authorization_policy_provider_test +@@ -18045,7 +17375,7 @@ target_link_libraries(grpc_authorization_policy_provider_test endif() @@ -1000,7 +1036,7 @@ index c0d1f6f363..b44b6fe124 100644 add_executable(grpc_authz_end2end_test ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/echo.pb.cc -@@ -17722,7 +17087,7 @@ target_link_libraries(grpclb_api_test +@@ -19065,7 +18395,7 @@ target_link_libraries(grpclb_api_test endif() @@ -1009,7 +1045,7 @@ index c0d1f6f363..b44b6fe124 100644 if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) add_executable(grpclb_end2end_test -@@ -18493,7 +17858,7 @@ target_link_libraries(headers_bad_client_test +@@ -19552,7 +18882,7 @@ target_link_libraries(headers_bad_client_test endif() @@ -1018,7 +1054,7 @@ index c0d1f6f363..b44b6fe124 100644 add_executable(health_service_end2end_test ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/health/v1/health.pb.cc -@@ -19174,7 +18539,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) +@@ -20358,7 +19688,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) endif() endif() @@ -1027,7 +1063,7 @@ index c0d1f6f363..b44b6fe124 100644 add_executable(hybrid_end2end_test ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/duplicate/echo_duplicate.pb.cc -@@ -21306,7 +20671,7 @@ target_link_libraries(memory_quota_test +@@ -23982,7 +23312,7 @@ target_link_libraries(memory_quota_test endif() @@ -1035,8 +1071,8 @@ index c0d1f6f363..b44b6fe124 100644 +if(gRPC_CF_TESTS) add_executable(memory_usage_test - src/core/util/time.cc -@@ -22314,7 +21679,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) + src/core/lib/debug/trace.cc +@@ -24998,7 +24328,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) endif() endif() @@ -1045,7 +1081,7 @@ index c0d1f6f363..b44b6fe124 100644 add_executable(orca_service_end2end_test ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/orca_service.pb.cc -@@ -23717,7 +23082,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) +@@ -26494,7 +25824,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) endif() endif() @@ -1054,7 +1090,7 @@ index c0d1f6f363..b44b6fe124 100644 add_executable(port_sharing_end2end_test ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/echo.pb.cc -@@ -25644,7 +25009,7 @@ target_link_libraries(random_early_detection_test +@@ -28838,7 +28168,7 @@ target_link_libraries(random_early_detection_test endif() @@ -1063,7 +1099,7 @@ index c0d1f6f363..b44b6fe124 100644 add_executable(raw_end2end_test ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/duplicate/echo_duplicate.pb.cc -@@ -26246,7 +25611,7 @@ target_link_libraries(resolve_address_using_native_resolver_test +@@ -29450,7 +28780,7 @@ target_link_libraries(resolve_address_using_native_resolver_test endif() @@ -1072,7 +1108,7 @@ index c0d1f6f363..b44b6fe124 100644 add_executable(resource_quota_end2end_stress_test ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/echo.pb.cc -@@ -26528,7 +25893,7 @@ target_link_libraries(ring_hash_test +@@ -29771,7 +29101,7 @@ target_link_libraries(ring_hash_test endif() @@ -1081,7 +1117,7 @@ index c0d1f6f363..b44b6fe124 100644 add_executable(rls_end2end_test ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/lookup/v1/rls.pb.cc -@@ -27467,7 +26832,7 @@ target_link_libraries(server_early_return_test +@@ -30761,7 +30091,7 @@ target_link_libraries(server_early_return_test endif() @@ -1090,7 +1126,7 @@ index c0d1f6f363..b44b6fe124 100644 add_executable(server_interceptors_end2end_test ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/echo.pb.cc -@@ -27753,7 +27118,7 @@ target_link_libraries(server_test +@@ -31047,7 +30377,7 @@ target_link_libraries(server_test endif() @@ -1099,7 +1135,16 @@ index c0d1f6f363..b44b6fe124 100644 add_executable(service_config_end2end_test ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/duplicate/echo_duplicate.pb.cc -@@ -29609,7 +28974,7 @@ target_link_libraries(test_core_credentials_transport_ssl_ssl_credentials_test +@@ -31713,7 +31043,7 @@ target_link_libraries(sorted_pack_test + + + endif() +-if(gRPC_BUILD_TESTS) ++if(gRPC_BUILD_TESTS OR gRPC_CF_TESTS) + + add_executable(spiffe_bundle_map_end2end_test + ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/echo.pb.cc +@@ -33449,7 +32779,7 @@ target_link_libraries(test_core_credentials_transport_ssl_ssl_credentials_test endif() @@ -1108,7 +1153,7 @@ index c0d1f6f363..b44b6fe124 100644 add_executable(test_core_credentials_transport_tls_tls_credentials_test test/core/credentials/transport/tls/tls_credentials_test.cc -@@ -29971,7 +29336,7 @@ target_link_libraries(test_cpp_client_credentials_test +@@ -33940,7 +33270,7 @@ target_link_libraries(test_cpp_client_credentials_test endif() @@ -1117,7 +1162,7 @@ index c0d1f6f363..b44b6fe124 100644 add_executable(test_cpp_end2end_ssl_credentials_test ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/echo.pb.cc -@@ -30047,7 +29412,7 @@ target_link_libraries(test_cpp_end2end_ssl_credentials_test +@@ -34016,7 +33346,7 @@ target_link_libraries(test_cpp_end2end_ssl_credentials_test endif() diff --git a/recipe/patches/0011-build-grpcio-tools-from-source.patch b/recipe/patches/0011-build-grpcio-tools-from-source.patch index 7de9f136..812ca955 100644 --- a/recipe/patches/0011-build-grpcio-tools-from-source.patch +++ b/recipe/patches/0011-build-grpcio-tools-from-source.patch @@ -1,14 +1,14 @@ -From 503b3c33580670b772bb321dc44a4b1f1e3b1f03 Mon Sep 17 00:00:00 2001 +From de307ec15e9179105ed903a50e206088dd890fa0 Mon Sep 17 00:00:00 2001 From: "H. Vetinari" Date: Tue, 4 Mar 2025 08:53:30 +1100 -Subject: [PATCH 11/14] build grpcio-tools from source +Subject: [PATCH 11/16] build grpcio-tools from source --- - tools/distrib/python/grpcio_tools/setup.py | 43 ++++++++++++++++------ - 1 file changed, 31 insertions(+), 12 deletions(-) + tools/distrib/python/grpcio_tools/setup.py | 47 ++++++++++++++++------ + 1 file changed, 35 insertions(+), 12 deletions(-) diff --git a/tools/distrib/python/grpcio_tools/setup.py b/tools/distrib/python/grpcio_tools/setup.py -index c70bf65192..c005ea6ec0 100644 +index fb6c416c96..c761c3670e 100644 --- a/tools/distrib/python/grpcio_tools/setup.py +++ b/tools/distrib/python/grpcio_tools/setup.py @@ -15,6 +15,7 @@ @@ -19,7 +19,7 @@ index c70bf65192..c005ea6ec0 100644 import platform import re import shlex -@@ -177,12 +178,9 @@ EXTRA_ENV_LINK_ARGS = os.environ.get("GRPC_PYTHON_LDFLAGS", None) +@@ -180,12 +181,9 @@ EXTRA_ENV_LINK_ARGS = os.environ.get("GRPC_PYTHON_LDFLAGS", None) if EXTRA_ENV_COMPILE_ARGS is None: EXTRA_ENV_COMPILE_ARGS = "" if "win32" in sys.platform: @@ -34,7 +34,7 @@ index c70bf65192..c005ea6ec0 100644 elif "linux" in sys.platform: # GCC by defaults uses C17 so only C++17 needs to be specified. EXTRA_ENV_COMPILE_ARGS += " -std=c++17" -@@ -241,14 +239,16 @@ EXTRA_LINK_ARGS = shlex.split(EXTRA_ENV_LINK_ARGS) +@@ -244,14 +242,16 @@ EXTRA_LINK_ARGS = shlex.split(EXTRA_ENV_LINK_ARGS) if BUILD_WITH_STATIC_LIBSTDCXX: EXTRA_LINK_ARGS.append("-static-libstdc++") @@ -54,7 +54,7 @@ index c70bf65192..c005ea6ec0 100644 GRPC_PYTHON_TOOLS_PACKAGE = "grpc_tools" GRPC_PYTHON_PROTO_RESOURCES_NAME = "_proto" -@@ -290,16 +290,34 @@ def package_data(): +@@ -293,16 +293,38 @@ def package_data(): return {GRPC_PYTHON_TOOLS_PACKAGE: proto_files} @@ -81,7 +81,11 @@ index c70bf65192..c005ea6ec0 100644 else: plugin_sources = [os.path.join("grpc_tools", "_protoc_compiler.cpp")] -+ grpc_root = os.environ["SRC_DIR"] ++ # setuptools requires relative paths; calculate it ++ src_dir = pathlib.Path(os.environ["SRC_DIR"]).resolve() ++ setup_dir = pathlib.Path(__file__).resolve().parent ++ # cannot use pathlib's Path.relative_to to go _out_; see https://github.com/python/cpython/issues/88244 ++ grpc_root = pathlib.Path(os.path.relpath(src_dir, setup_dir)).as_posix() plugin_sources += [ os.path.join("grpc_tools", "main.cc"), - os.path.join("grpc_root", "src", "compiler", "python_generator.cc"), @@ -91,7 +95,7 @@ index c70bf65192..c005ea6ec0 100644 ] + CC_FILES plugin_ext = Extension( -@@ -307,10 +325,11 @@ def extension_modules(): +@@ -310,10 +332,11 @@ def extension_modules(): sources=plugin_sources, include_dirs=[ ".", diff --git a/recipe/patches/0012-add-linkage-to-openssl-to-grpc_unsecure.patch b/recipe/patches/0012-add-linkage-to-openssl-to-grpc_unsecure.patch deleted file mode 100644 index f7562ebe..00000000 --- a/recipe/patches/0012-add-linkage-to-openssl-to-grpc_unsecure.patch +++ /dev/null @@ -1,33 +0,0 @@ -From b7eff64d6949288fa94a9d06fca6d222b381d6f4 Mon Sep 17 00:00:00 2001 -From: "H. Vetinari" -Date: Sat, 1 Mar 2025 08:06:28 +1100 -Subject: [PATCH 12/14] add linkage to openssl to grpc_unsecure - -grpc_unsecure actually requires ParsePemCertificateChain / ParsePemPrivateKey -from that TU in ValidatePemKeyCertPair, see -https://github.com/grpc/grpc/blob/v1.69.0/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc#L66 -https://github.com/grpc/grpc/blob/v1.69.0/src/core/tsi/ssl_transport_security_utils.cc#L380 ---- - CMakeLists.txt | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index b44b6fe124..b28c5a7318 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -3091,6 +3091,7 @@ add_library(grpc_unsecure - src/core/tsi/alts/handshaker/transport_security_common_api.cc - src/core/tsi/fake_transport_security.cc - src/core/tsi/local_transport_security.cc -+ src/core/tsi/ssl_transport_security_utils.cc - src/core/tsi/transport_security.cc - src/core/tsi/transport_security_grpc.cc - src/core/util/backoff.cc -@@ -3169,6 +3170,7 @@ target_link_libraries(grpc_unsecure - PRIVATE ${_gRPC_ZLIB_LIBRARIES} - PRIVATE ${_gRPC_CARES_LIBRARIES} - # external dependencies that need to available at runtime -+ PUBLIC ${_gRPC_SSL_LIBRARIES} - PRIVATE absl::algorithm_container - PRIVATE absl::config - PRIVATE absl::no_destructor diff --git a/recipe/patches/0013-reduce-grpc-symbol-explosion-with-autogenerated-expo.patch b/recipe/patches/0012-reduce-grpc-symbol-explosion-with-autogenerated-expo.patch similarity index 61% rename from recipe/patches/0013-reduce-grpc-symbol-explosion-with-autogenerated-expo.patch rename to recipe/patches/0012-reduce-grpc-symbol-explosion-with-autogenerated-expo.patch index 5d3c8c95..bdcdc8b2 100644 --- a/recipe/patches/0013-reduce-grpc-symbol-explosion-with-autogenerated-expo.patch +++ b/recipe/patches/0012-reduce-grpc-symbol-explosion-with-autogenerated-expo.patch @@ -1,7 +1,7 @@ -From bd740a3a220b8a5cf8482fb5de10d48d2a44d8db Mon Sep 17 00:00:00 2001 +From 8ae0edebd28369b16c4ade7b46b1300871534bbf Mon Sep 17 00:00:00 2001 From: "H. Vetinari" Date: Wed, 5 Mar 2025 13:21:01 +1100 -Subject: [PATCH 13/14] reduce grpc symbol explosion with autogenerated export +Subject: [PATCH 12/16] reduce grpc symbol explosion with autogenerated export definitions file Basically, WINDOWS_EXPORT_ALL_SYMBOLS is a nuclear option that includes all symbols @@ -34,14 +34,14 @@ filter as aggressively as possible (e.g. lambdas), because our main goal is to g limit, and indeed, we end up <25k, and we don't want to remove symbols over-zealously if some other consumers end up linking to them. --- - CMakeLists.txt | 24 ++++++++++++++++++++++++ - 1 file changed, 24 insertions(+) + CMakeLists.txt | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 48 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt -index b28c5a7318..53133fe185 100644 +index c92e808025..52694fa702 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -2401,6 +2401,30 @@ add_library(grpc +@@ -2434,6 +2434,30 @@ add_library(grpc src/core/xds/xds_client/xds_client.cc ) @@ -53,11 +53,11 @@ index b28c5a7318..53133fe185 100644 + add_custom_command( + TARGET grpc + PRE_LINK -+ COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/symbols" -+ COMMAND echo "for %%f in () do dumpbin /symbols %%f > ${CMAKE_CURRENT_BINARY_DIR}/symbols/symbols_%%~nf.txt" -+ COMMAND for %%f in ($) do dumpbin /symbols %%f > ${CMAKE_CURRENT_BINARY_DIR}/symbols/symbols_%%~nf.txt -+ COMMAND echo "$ENV{BUILD_PREFIX}/python generate_def.py symbols grpc.def" -+ COMMAND $ENV{BUILD_PREFIX}/python ${CMAKE_SOURCE_DIR}/generate_def.py ${CMAKE_CURRENT_BINARY_DIR}/symbols ${CMAKE_CURRENT_BINARY_DIR}/grpc.def ++ COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/symbols_grpc" ++ COMMAND echo "for %%f in () do dumpbin /symbols %%f > ${CMAKE_CURRENT_BINARY_DIR}/symbols_grpc/symbols_%%~nf.txt" ++ COMMAND for %%f in ($) do dumpbin /symbols %%f > ${CMAKE_CURRENT_BINARY_DIR}/symbols_grpc/symbols_%%~nf.txt ++ COMMAND echo "$ENV{BUILD_PREFIX}/python generate_def.py symbols_grpc grpc.def" ++ COMMAND $ENV{BUILD_PREFIX}/python ${CMAKE_SOURCE_DIR}/generate_def.py ${CMAKE_CURRENT_BINARY_DIR}/symbols_grpc ${CMAKE_CURRENT_BINARY_DIR}/grpc.def + BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/grpc.def + COMMENT "Generating grpc.def from object files" + VERBATIM @@ -72,3 +72,34 @@ index b28c5a7318..53133fe185 100644 target_compile_features(grpc PUBLIC cxx_std_17) set_target_properties(grpc PROPERTIES +@@ -3174,6 +3198,30 @@ add_library(grpc_unsecure + ${gRPC_ADDITIONAL_DLL_SRC} + ) + ++if(WIN32 AND MSVC) ++ # need to turn this off to avoid pulling in enormous amount of transitive symbols ++ set_target_properties(grpc_unsecure PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS OFF) ++ ++ # Add pre-link step to process object files ++ add_custom_command( ++ TARGET grpc_unsecure ++ PRE_LINK ++ COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/symbols_grpc_unsecure" ++ COMMAND echo "for %%f in () do dumpbin /symbols %%f > ${CMAKE_CURRENT_BINARY_DIR}/symbols_grpc_unsecure/symbols_%%~nf.txt" ++ COMMAND for %%f in ($) do dumpbin /symbols %%f > ${CMAKE_CURRENT_BINARY_DIR}/symbols_grpc_unsecure/symbols_%%~nf.txt ++ COMMAND echo "$ENV{BUILD_PREFIX}/python generate_def.py symbols_grpc_unsecure grpc_unsecure.def" ++ COMMAND $ENV{BUILD_PREFIX}/python ${CMAKE_SOURCE_DIR}/generate_def.py ${CMAKE_CURRENT_BINARY_DIR}/symbols_grpc_unsecure ${CMAKE_CURRENT_BINARY_DIR}/grpc_unsecure.def ++ BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/grpc_unsecure.def ++ COMMENT "Generating grpc_unsecure.def from object files" ++ VERBATIM ++ USES_TERMINAL ++ ) ++ # export only filtered list of symbols ++ set_target_properties(grpc_unsecure PROPERTIES ++ LINK_FLAGS "/DEF:${CMAKE_CURRENT_BINARY_DIR}/grpc_unsecure.def" ++ ) ++endif() ++ + target_compile_features(grpc_unsecure PUBLIC cxx_std_17) + + set_target_properties(grpc_unsecure PROPERTIES diff --git a/recipe/patches/0014-update-GRPC_DLL-instances-where-necessary.patch b/recipe/patches/0013-update-GRPC_DLL-instances-where-necessary.patch similarity index 79% rename from recipe/patches/0014-update-GRPC_DLL-instances-where-necessary.patch rename to recipe/patches/0013-update-GRPC_DLL-instances-where-necessary.patch index 3026ff49..14d8f86c 100644 --- a/recipe/patches/0014-update-GRPC_DLL-instances-where-necessary.patch +++ b/recipe/patches/0013-update-GRPC_DLL-instances-where-necessary.patch @@ -1,29 +1,32 @@ -From c7b24ac6a94629e400844e29759af2edb974008a Mon Sep 17 00:00:00 2001 +From e9a4afe16f406e3e5e8826fce49a0d17a8b8fed1 Mon Sep 17 00:00:00 2001 From: "H. Vetinari" Date: Sun, 2 Mar 2025 07:16:19 +1100 -Subject: [PATCH 14/14] update GRPC_DLL instances where necessary +Subject: [PATCH 13/16] update GRPC_DLL instances where necessary --- include/grpc/event_engine/event_engine.h | 2 +- src/core/config/core_configuration.h | 2 +- src/core/credentials/call/json_util.h | 2 +- .../transport/tls/grpc_tls_certificate_provider.h | 2 +- + src/core/credentials/transport/tls/spiffe_utils.h | 4 ++-- src/core/ext/transport/chttp2/server/chttp2_server.h | 2 +- src/core/ext/transport/inproc/inproc_transport.h | 2 +- src/core/lib/channel/channel_args.h | 4 ++-- src/core/lib/debug/trace_flags.h | 2 +- src/core/lib/experiments/config.h | 4 ++-- src/core/lib/iomgr/iomgr.h | 2 +- + src/core/lib/iomgr/socket_mutator.h | 2 +- src/core/lib/promise/activity.h | 2 +- src/core/lib/resource_quota/thread_quota.h | 2 +- src/core/lib/surface/call.h | 4 ++-- src/core/lib/surface/completion_queue.h | 8 ++++---- src/core/transport/auth_context.h | 2 +- + src/core/tsi/ssl_transport_security.h | 2 +- src/core/util/json/json_reader.cc | 2 +- src/core/util/json/json_reader.h | 2 +- src/core/util/load_file.h | 2 +- src/core/util/time.h | 4 ++-- - 19 files changed, 26 insertions(+), 26 deletions(-) + 22 files changed, 30 insertions(+), 30 deletions(-) diff --git a/include/grpc/event_engine/event_engine.h b/include/grpc/event_engine/event_engine.h index d2c91ca596..1abaa7ac6f 100644 @@ -39,10 +42,10 @@ index d2c91ca596..1abaa7ac6f 100644 /// Thin wrapper around a platform-specific sockaddr type. A sockaddr struct /// exists on all platforms that gRPC supports. diff --git a/src/core/config/core_configuration.h b/src/core/config/core_configuration.h -index b3522d9294..c71eec8655 100644 +index a169f3efc2..64ec1c6964 100644 --- a/src/core/config/core_configuration.h +++ b/src/core/config/core_configuration.h -@@ -39,7 +39,7 @@ namespace grpc_core { +@@ -40,7 +40,7 @@ namespace grpc_core { // Global singleton that stores library configuration - factories, etc... // that plugins might choose to extend. @@ -65,10 +68,10 @@ index da7ff0a771..d1f6a52fdf 100644 grpc_error_handle* error); diff --git a/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h b/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h -index d69aa6e7d5..9514cf6275 100644 +index d46f61853e..60fc8ed3b2 100644 --- a/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +++ b/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h -@@ -106,7 +106,7 @@ class StaticDataCertificateProvider final +@@ -107,7 +107,7 @@ class StaticDataCertificateProvider final UniqueTypeName type() const override; @@ -77,11 +80,33 @@ index d69aa6e7d5..9514cf6275 100644 private: struct WatcherInfo { +diff --git a/src/core/credentials/transport/tls/spiffe_utils.h b/src/core/credentials/transport/tls/spiffe_utils.h +index 9bf4b6dd59..f4cdb63489 100644 +--- a/src/core/credentials/transport/tls/spiffe_utils.h ++++ b/src/core/credentials/transport/tls/spiffe_utils.h +@@ -80,7 +80,7 @@ class SpiffeBundleKey final { + // https://github.com/spiffe/spiffe/blob/main/standards/SPIFFE_Trust_Domain_and_Bundle.md#3-spiffe-bundles + // https://github.com/grpc/proposal/blob/master/A87-mtls-spiffe-support.md + // Not thread-safe +-class SpiffeBundle final { ++GRPC_DLL class SpiffeBundle final { + public: + // Do not use - only exists to work with the JSON library. + // SpiffeBundles should be used by loading a SpiffeBundleMap via +@@ -125,7 +125,7 @@ class SpiffeBundle final { + // https://github.com/grpc/proposal/blob/master/A87-mtls-spiffe-support.md + // Only configuring X509 roots is supported. + // Not thread-safe +-class SpiffeBundleMap final { ++GRPC_DLL class SpiffeBundleMap final { + public: + static const JsonLoaderInterface* JsonLoader(const JsonArgs&); + void JsonPostLoad(const Json& json, const JsonArgs&, diff --git a/src/core/ext/transport/chttp2/server/chttp2_server.h b/src/core/ext/transport/chttp2/server/chttp2_server.h -index 14d62cb513..90f2fb2252 100644 +index f0f50f9ff2..193105a427 100644 --- a/src/core/ext/transport/chttp2/server/chttp2_server.h +++ b/src/core/ext/transport/chttp2/server/chttp2_server.h -@@ -235,7 +235,7 @@ class PassiveListenerImpl final : public PassiveListener { +@@ -234,7 +234,7 @@ class PassiveListenerImpl final : public PassiveListener { std::unique_ptr endpoint) override ABSL_LOCKS_EXCLUDED(mu_); @@ -104,7 +129,7 @@ index 05030d6e40..b1a9fe8e9a 100644 void* reserved); diff --git a/src/core/lib/channel/channel_args.h b/src/core/lib/channel/channel_args.h -index 0184ead9fb..b6f20dd50d 100644 +index 24ee039ded..cc4404516d 100644 --- a/src/core/lib/channel/channel_args.h +++ b/src/core/lib/channel/channel_args.h @@ -413,8 +413,8 @@ class ChannelArgs { @@ -119,7 +144,7 @@ index 0184ead9fb..b6f20dd50d 100644 ChannelArgs& operator=(const ChannelArgs&); ChannelArgs(ChannelArgs&&) noexcept; diff --git a/src/core/lib/debug/trace_flags.h b/src/core/lib/debug/trace_flags.h -index 6d4fffe037..41a64c2627 100644 +index b6a39f3dde..599f6047bc 100644 --- a/src/core/lib/debug/trace_flags.h +++ b/src/core/lib/debug/trace_flags.h @@ -50,7 +50,7 @@ extern DebugOnlyTraceFlag work_serializer_trace; @@ -166,8 +191,21 @@ index 280471fae8..506c6e3682 100644 /// Returns true if the caller is a worker thread for any background poller. bool grpc_iomgr_is_any_background_poller_thread(); +diff --git a/src/core/lib/iomgr/socket_mutator.h b/src/core/lib/iomgr/socket_mutator.h +index 9ce180b345..17f484660c 100644 +--- a/src/core/lib/iomgr/socket_mutator.h ++++ b/src/core/lib/iomgr/socket_mutator.h +@@ -67,7 +67,7 @@ void grpc_socket_mutator_init(grpc_socket_mutator* mutator, + const grpc_socket_mutator_vtable* vtable); + + /// Wrap \a mutator as a grpc_arg +-grpc_arg grpc_socket_mutator_to_arg(grpc_socket_mutator* mutator); ++GRPC_DLL grpc_arg grpc_socket_mutator_to_arg(grpc_socket_mutator* mutator); + + /// Perform the file descriptor mutation operation of \a mutator on \a fd + bool grpc_socket_mutator_mutate_fd(grpc_socket_mutator* mutator, int fd, diff --git a/src/core/lib/promise/activity.h b/src/core/lib/promise/activity.h -index f3aa85925a..673a5beca2 100644 +index 9de57809a5..9f63417587 100644 --- a/src/core/lib/promise/activity.h +++ b/src/core/lib/promise/activity.h @@ -75,7 +75,7 @@ struct Unwakeable final : public Wakeable { @@ -180,7 +218,7 @@ index f3aa85925a..673a5beca2 100644 static Unwakeable* unwakeable() { return NoDestructSingleton::Get(); diff --git a/src/core/lib/resource_quota/thread_quota.h b/src/core/lib/resource_quota/thread_quota.h -index 18a6e13e7f..83594ba83b 100644 +index 35a0514089..98bd1e68c1 100644 --- a/src/core/lib/resource_quota/thread_quota.h +++ b/src/core/lib/resource_quota/thread_quota.h @@ -45,7 +45,7 @@ class ThreadQuota : public RefCounted { @@ -193,10 +231,10 @@ index 18a6e13e7f..83594ba83b 100644 private: Mutex mu_; diff --git a/src/core/lib/surface/call.h b/src/core/lib/surface/call.h -index bc7220ac60..baec12c33c 100644 +index 459ade1827..af7867ada8 100644 --- a/src/core/lib/surface/call.h +++ b/src/core/lib/surface/call.h -@@ -302,9 +302,9 @@ grpc_compression_algorithm grpc_call_compression_for_level( +@@ -310,9 +310,9 @@ grpc_compression_algorithm grpc_call_compression_for_level( // Did this client call receive a trailers-only response // TODO(markdroth): This is currently available only to the C++ API. // Move to surface API if requested by other languages. @@ -238,7 +276,7 @@ index d99c7a248c..d68ce75f8c 100644 void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg, grpc_cq_completion* storage, diff --git a/src/core/transport/auth_context.h b/src/core/transport/auth_context.h -index e603660042..2b0ba4cc07 100644 +index 33c6dc6057..22a61a1a99 100644 --- a/src/core/transport/auth_context.h +++ b/src/core/transport/auth_context.h @@ -49,7 +49,7 @@ struct grpc_auth_property_array { @@ -250,8 +288,20 @@ index e603660042..2b0ba4cc07 100644 #define GRPC_AUTH_CONTEXT_ARG "grpc.auth_context" +diff --git a/src/core/tsi/ssl_transport_security.h b/src/core/tsi/ssl_transport_security.h +index 8379e49296..73d512b27f 100644 +--- a/src/core/tsi/ssl_transport_security.h ++++ b/src/core/tsi/ssl_transport_security.h +@@ -448,6 +448,6 @@ tsi_result tsi_ssl_extract_x509_subject_names_from_pem_cert( + tsi_result tsi_ssl_get_cert_chain_contents(STACK_OF(X509) * peer_chain, + tsi_peer_property* property); + +-bool IsRootCertInfoEmpty(const RootCertInfo* root_cert_info); ++GRPC_DLL bool IsRootCertInfoEmpty(const RootCertInfo* root_cert_info); + + #endif // GRPC_SRC_CORE_TSI_SSL_TRANSPORT_SECURITY_H diff --git a/src/core/util/json/json_reader.cc b/src/core/util/json/json_reader.cc -index 5b437af925..d9c2a609c6 100644 +index f1458ff14a..63d2f91d04 100644 --- a/src/core/util/json/json_reader.cc +++ b/src/core/util/json/json_reader.cc @@ -946,7 +946,7 @@ absl::StatusOr JsonReader::Parse(absl::string_view input) { @@ -264,7 +314,7 @@ index 5b437af925..d9c2a609c6 100644 } diff --git a/src/core/util/json/json_reader.h b/src/core/util/json/json_reader.h -index 127b380880..864857dab1 100644 +index 7ba5220a5e..c92f9c2d7c 100644 --- a/src/core/util/json/json_reader.h +++ b/src/core/util/json/json_reader.h @@ -26,7 +26,7 @@ @@ -277,7 +327,7 @@ index 127b380880..864857dab1 100644 } // namespace grpc_core diff --git a/src/core/util/load_file.h b/src/core/util/load_file.h -index 980e0c11af..d5206b0534 100644 +index 26163f5100..8efaf085e6 100644 --- a/src/core/util/load_file.h +++ b/src/core/util/load_file.h @@ -26,7 +26,7 @@ namespace grpc_core { diff --git a/recipe/patches/0014-use-protobuf-s-libutf8_range.patch b/recipe/patches/0014-use-protobuf-s-libutf8_range.patch new file mode 100644 index 00000000..84327ab1 --- /dev/null +++ b/recipe/patches/0014-use-protobuf-s-libutf8_range.patch @@ -0,0 +1,22 @@ +From b55af7374bd39b75cb7a598ef7cac6db17c648be Mon Sep 17 00:00:00 2001 +From: "H. Vetinari" +Date: Sat, 10 Jan 2026 20:43:11 +1100 +Subject: [PATCH 14/16] use protobuf's libutf8_range + +--- + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 52694fa702..a1fe2a5656 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -5066,7 +5066,7 @@ target_include_directories(grpc_plugin_support + ) + target_link_libraries(grpc_plugin_support + ${_gRPC_ALLTARGETS_LIBRARIES} +- utf8_range_lib ++ utf8_range + ${_gRPC_ZLIB_LIBRARIES} + absl::algorithm_container + absl::base diff --git a/recipe/patches/0015-disable-grpc-_unsecure.patch b/recipe/patches/0015-disable-grpc-_unsecure.patch new file mode 100644 index 00000000..45b3fe2e --- /dev/null +++ b/recipe/patches/0015-disable-grpc-_unsecure.patch @@ -0,0 +1,178 @@ +From a2bd84cb1484a775e7b934d4b3568d0185b4e838 Mon Sep 17 00:00:00 2001 +From: "H. Vetinari" +Date: Sun, 11 Jan 2026 22:45:25 +1100 +Subject: [PATCH 15/16] disable grpc{,++}_unsecure + +there's no reason to ship the unsecure version (which has almost fully duplicated sources to grpc, +except the parts that pull in openssl etc.) if we always bundle the full variant anyway. Same for +grpc++_unsecure vs. grpc++. + +more concretely, as of v1.78.0-pre1, grpc_unsecure has a link error +``` +grpc_tls_certificate_provider.cc.obj : error LNK2001: unresolved external symbol "bool __cdecl IsRootCertInfoEmpty(class std::variant,class std::allocator >,class grpc_core::SpiffeBundleMap> const *)" (?IsRootCertInfoEmpty@@YA_NPEBV?$variant@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@VSpiffeBundleMap@grpc_core@@@std@@@Z) +``` +and the symbol in question (`IsRootCertInfoEmpty`) is in a file (`src/core/tsi/ssl_transport_security.cc`) +that is explicitly excluded from `grpc_unsecure`, because that's one of the files that depends on openssl, +the avoidance of which is the entire point of `grpc_unsecure`. +--- + CMakeLists.txt | 28 ++++++++++++++++++---------- + 1 file changed, 18 insertions(+), 10 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index a1fe2a5656..40143e3b12 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -2668,7 +2668,7 @@ endif() + + + endif() +-if(gRPC_BUILD_TESTS) ++if(FALSE) + + add_library(grpc_test_util_unsecure + test/core/event_engine/test_init.cc +@@ -2744,6 +2744,7 @@ endif() + + endif() + ++if(False) + add_library(grpc_unsecure + src/core/call/call_arena_allocator.cc + src/core/call/call_filters.cc +@@ -3288,6 +3289,7 @@ target_link_libraries(grpc_unsecure + if(_gRPC_PLATFORM_IOS OR _gRPC_PLATFORM_MAC) + target_link_libraries(grpc_unsecure PUBLIC "-framework CoreFoundation") + endif() ++endif() + + foreach(_hdr + include/grpc/byte_buffer.h +@@ -3345,7 +3347,7 @@ foreach(_hdr + endforeach() + + +-if(gRPC_INSTALL) ++if(FALSE) + install(TARGETS grpc_unsecure EXPORT gRPCTargets + RUNTIME DESTINATION ${gRPC_INSTALL_BINDIR} + BUNDLE DESTINATION ${gRPC_INSTALL_BINDIR} +@@ -4270,6 +4272,7 @@ target_link_libraries(grpc++_test_util + + endif() + ++if(FALSE) + add_library(grpc++_unsecure + src/cpp/client/call_credentials.cc + src/cpp/client/channel_cc.cc +@@ -4362,6 +4365,7 @@ target_link_libraries(grpc++_unsecure + grpc_unsecure + ${_gRPC_PROTOBUF_LIBRARIES} + ) ++endif() + + foreach(_hdr + include/grpc++/alarm.h +@@ -4582,7 +4586,7 @@ foreach(_hdr + endforeach() + + +-if(gRPC_INSTALL) ++if(FALSE) + install(TARGETS grpc++_unsecure EXPORT gRPCTargets + RUNTIME DESTINATION ${gRPC_INSTALL_BINDIR} + BUNDLE DESTINATION ${gRPC_INSTALL_BINDIR} +@@ -5571,7 +5575,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) + + endif() + endif() +-if(gRPC_BUILD_TESTS) ++if(FALSE) + if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) + + add_executable(address_sorting_test_unsecure +@@ -6186,7 +6190,7 @@ target_link_libraries(admin_services_end2end_test + + + endif() +-if(gRPC_BUILD_TESTS) ++if(FALSE) + if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) + + add_executable(alarm_test +@@ -15953,7 +15957,7 @@ target_link_libraries(filter_fusion_test + + + endif() +-if(gRPC_BUILD_TESTS) ++if(FALSE) + + add_executable(filter_test_test + ${_gRPC_PROTO_GENS_DIR}/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.pb.cc +@@ -25242,7 +25246,7 @@ target_link_libraries(parser_test + + + endif() +-if(gRPC_BUILD_TESTS) ++if(FALSE) + if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) + + add_executable(party_mpsc_test +@@ -25286,7 +25290,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) + + endif() + endif() +-if(gRPC_BUILD_TESTS) ++if(FALSE) + + add_executable(party_test + test/core/promise/party_test.cc +@@ -29736,7 +29740,7 @@ target_link_libraries(server_builder_plugin_test + + + endif() +-if(gRPC_BUILD_TESTS) ++if(FALSE) + if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) + + add_executable(server_builder_test +@@ -29816,7 +29820,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) + + endif() + endif() +-if(gRPC_BUILD_TESTS) ++if(FALSE) + if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX) + + add_executable(server_builder_with_socket_mutator_test +@@ -51928,6 +51932,7 @@ generate_pkgconfig( + "-laddress_sorting" + "grpc.pc") + ++if(FALSE) + # grpc_unsecure .pc file + generate_pkgconfig( + "gRPC unsecure" +@@ -51938,6 +51943,7 @@ generate_pkgconfig( + "-lgrpc_unsecure -lupb" + "-laddress_sorting" + "grpc_unsecure.pc") ++endif() + + # grpc++ .pc file + generate_pkgconfig( +@@ -51950,6 +51956,7 @@ generate_pkgconfig( + "-laddress_sorting" + "grpc++.pc") + ++if(FALSE) + # grpc++_unsecure .pc file + generate_pkgconfig( + "gRPC++ unsecure" +@@ -51960,6 +51967,7 @@ generate_pkgconfig( + "-lgrpc++_unsecure -lupb" + "-laddress_sorting" + "grpc++_unsecure.pc") ++endif() + + # grpcpp_otel_plugin .pc file + generate_pkgconfig( diff --git a/recipe/patches/0016-Fix-Compiler-Plugins-fall-back-to-the-edition-2023-f.patch b/recipe/patches/0016-Fix-Compiler-Plugins-fall-back-to-the-edition-2023-f.patch new file mode 100644 index 00000000..13bc1fbc --- /dev/null +++ b/recipe/patches/0016-Fix-Compiler-Plugins-fall-back-to-the-edition-2023-f.patch @@ -0,0 +1,132 @@ +From cd51e47fa9bb8ffd7167374b9fe83b842b918f4b Mon Sep 17 00:00:00 2001 +From: Sergii Tkachenko +Date: Wed, 7 Jan 2026 12:37:00 -0800 +Subject: [PATCH 16/16] [Fix][Compiler] Plugins fall back to the edition 2023 + for older protobuf (#41357) + +Fixes the issue with gRPC protobuf plugins declaring the support for `protobuf::Edition::EDITION_2024`, which is higher than the one supported by the protobuf we're using at the moment: `EDITION_2023` at google/protobuf@74211c0dfc2777318ab53c2cd2c317a2ef9012de. + +Related: +- Effectively undoes #40957 + +Closes #41357 + +COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/41357 from sergiitk:fix/compiler/protobuf-edition-2023 c3d7b9b27ead199e5e4c66052d4d91d32a7370c6 +PiperOrigin-RevId: 853371790 +--- + src/compiler/cpp_plugin.h | 6 ++++++ + src/compiler/csharp_plugin.cc | 6 ++++++ + src/compiler/objective_c_plugin.cc | 6 ++++++ + src/compiler/php_plugin.cc | 6 ++++++ + src/compiler/python_generator.h | 6 ++++++ + src/compiler/ruby_plugin.cc | 6 ++++++ + 6 files changed, 36 insertions(+) + +diff --git a/src/compiler/cpp_plugin.h b/src/compiler/cpp_plugin.h +index 21e9dc899e..2cccbe6fb7 100644 +--- a/src/compiler/cpp_plugin.h ++++ b/src/compiler/cpp_plugin.h +@@ -45,7 +45,13 @@ class CppGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator { + return grpc::protobuf::Edition::EDITION_PROTO2; + } + grpc::protobuf::Edition GetMaximumEdition() const override { ++ // TODO(yuanweiz): Remove when the protobuf is updated to a version ++ // that supports edition 2024. ++#if !defined(GOOGLE_PROTOBUF_VERSION) || GOOGLE_PROTOBUF_VERSION >= 6032000 + return grpc::protobuf::Edition::EDITION_2024; ++#else ++ return grpc::protobuf::Edition::EDITION_2023; ++#endif + } + #endif + +diff --git a/src/compiler/csharp_plugin.cc b/src/compiler/csharp_plugin.cc +index 6625919f7e..6281bf08c0 100644 +--- a/src/compiler/csharp_plugin.cc ++++ b/src/compiler/csharp_plugin.cc +@@ -42,7 +42,13 @@ class CSharpGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator { + return grpc::protobuf::Edition::EDITION_PROTO2; + } + grpc::protobuf::Edition GetMaximumEdition() const override { ++ // TODO(yuanweiz): Remove when the protobuf is updated to a version ++ // that supports edition 2024. ++#if !defined(GOOGLE_PROTOBUF_VERSION) || GOOGLE_PROTOBUF_VERSION >= 6032000 + return grpc::protobuf::Edition::EDITION_2024; ++#else ++ return grpc::protobuf::Edition::EDITION_2023; ++#endif + } + #endif + +diff --git a/src/compiler/objective_c_plugin.cc b/src/compiler/objective_c_plugin.cc +index 8aa66cf801..d6b35e06d6 100644 +--- a/src/compiler/objective_c_plugin.cc ++++ b/src/compiler/objective_c_plugin.cc +@@ -93,7 +93,13 @@ class ObjectiveCGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator { + return grpc::protobuf::Edition::EDITION_PROTO2; + } + grpc::protobuf::Edition GetMaximumEdition() const override { ++ // TODO(yuanweiz): Remove when the protobuf is updated to a version ++ // that supports edition 2024. ++#if !defined(GOOGLE_PROTOBUF_VERSION) || GOOGLE_PROTOBUF_VERSION >= 6032000 + return grpc::protobuf::Edition::EDITION_2024; ++#else ++ return grpc::protobuf::Edition::EDITION_2023; ++#endif + } + #endif + +diff --git a/src/compiler/php_plugin.cc b/src/compiler/php_plugin.cc +index b3fa2c2145..06fccfe562 100644 +--- a/src/compiler/php_plugin.cc ++++ b/src/compiler/php_plugin.cc +@@ -46,7 +46,13 @@ class PHPGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator { + return grpc::protobuf::Edition::EDITION_PROTO2; + } + grpc::protobuf::Edition GetMaximumEdition() const override { ++ // TODO(yuanweiz): Remove when the protobuf is updated to a version ++ // that supports edition 2024. ++#if !defined(GOOGLE_PROTOBUF_VERSION) || GOOGLE_PROTOBUF_VERSION >= 6032000 + return grpc::protobuf::Edition::EDITION_2024; ++#else ++ return grpc::protobuf::Edition::EDITION_2023; ++#endif + } + #endif + +diff --git a/src/compiler/python_generator.h b/src/compiler/python_generator.h +index 0d5a785ef2..10ac03b008 100644 +--- a/src/compiler/python_generator.h ++++ b/src/compiler/python_generator.h +@@ -59,7 +59,13 @@ class PythonGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator { + return grpc::protobuf::Edition::EDITION_PROTO2; + } + grpc::protobuf::Edition GetMaximumEdition() const override { ++ // TODO(yuanweiz): Remove when the protobuf is updated to a version ++ // that supports edition 2024. ++#if !defined(GOOGLE_PROTOBUF_VERSION) || GOOGLE_PROTOBUF_VERSION >= 6032000 + return grpc::protobuf::Edition::EDITION_2024; ++#else ++ return grpc::protobuf::Edition::EDITION_2023; ++#endif + } + #endif + +diff --git a/src/compiler/ruby_plugin.cc b/src/compiler/ruby_plugin.cc +index 51ed178eab..b5f1d497be 100644 +--- a/src/compiler/ruby_plugin.cc ++++ b/src/compiler/ruby_plugin.cc +@@ -42,7 +42,13 @@ class RubyGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator { + return grpc::protobuf::Edition::EDITION_PROTO2; + } + grpc::protobuf::Edition GetMaximumEdition() const override { ++ // TODO(yuanweiz): Remove when the protobuf is updated to a version ++ // that supports edition 2024. ++#if !defined(GOOGLE_PROTOBUF_VERSION) || GOOGLE_PROTOBUF_VERSION >= 6032000 + return grpc::protobuf::Edition::EDITION_2024; ++#else ++ return grpc::protobuf::Edition::EDITION_2023; ++#endif + } + #endif +