diff --git a/.azure-pipelines/azure-pipelines-osx.yml b/.azure-pipelines/azure-pipelines-osx.yml
index 3c3d6ba8..bfe94b16 100755
--- a/.azure-pipelines/azure-pipelines-osx.yml
+++ b/.azure-pipelines/azure-pipelines-osx.yml
@@ -13,13 +13,19 @@ jobs:
UPLOAD_PACKAGES: 'True'
VMIMAGE: macOS-15
build_workspace_dir: ~/miniforge3/conda-bld
+ free_disk_space: skip
+ pagefile_size: 0
+ resize_partitions: false
store_build_artifacts: false
tools_install_dir: ~/miniforge3
osx_arm64_:
CONFIG: osx_arm64_
UPLOAD_PACKAGES: 'True'
- VMIMAGE: macOS-15
+ VMIMAGE: macOS-15-arm64
build_workspace_dir: ~/miniforge3/conda-bld
+ free_disk_space: skip
+ pagefile_size: 0
+ resize_partitions: false
store_build_artifacts: false
tools_install_dir: ~/miniforge3
timeoutInMinutes: 360
@@ -28,15 +34,15 @@ jobs:
steps:
# TODO: Fast finish on azure pipelines?
- script: |
- export MINIFORGE_HOME=$(tools_install_dir)
- export CONDA_BLD_PATH=$(build_workspace_dir)
export CI=azure
+ export CONDA_BLD_PATH=$(build_workspace_dir)
+ export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
+ export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
+ export MINIFORGE_HOME=$(tools_install_dir)
+ export OSX_FORCE_SDK_DOWNLOAD="1"
export flow_run_id=azure_$(Build.BuildNumber).$(System.JobAttempt)
export remote_url=$(Build.Repository.Uri)
export sha=$(Build.SourceVersion)
- export OSX_FORCE_SDK_DOWNLOAD="1"
- export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
- export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
if [[ "${BUILD_REASON:-}" == "PullRequest" ]]; then
export IS_PR_BUILD="True"
else
diff --git a/.azure-pipelines/azure-pipelines-win.yml b/.azure-pipelines/azure-pipelines-win.yml
index cf75adb2..f533bda6 100755
--- a/.azure-pipelines/azure-pipelines-win.yml
+++ b/.azure-pipelines/azure-pipelines-win.yml
@@ -12,6 +12,9 @@ jobs:
CONFIG: win_64_
UPLOAD_PACKAGES: 'True'
build_workspace_dir: D:\\bld\\
+ free_disk_space: skip
+ pagefile_size: 0
+ resize_partitions: false
store_build_artifacts: false
tools_install_dir: D:\Miniforge
timeoutInMinutes: 360
@@ -19,21 +22,20 @@ jobs:
UPLOAD_TEMP: D:\\tmp
steps:
-
- script: |
call ".scripts\run_win_build.bat"
displayName: Run Windows build
env:
- MINIFORGE_HOME: $(tools_install_dir)
+ CI: azure
+ CONFIG: $(CONFIG)
CONDA_BLD_PATH: $(build_workspace_dir)
+ MINIFORGE_HOME: $(tools_install_dir)
PYTHONUNBUFFERED: 1
- CONFIG: $(CONFIG)
- CI: azure
+ UPLOAD_PACKAGES: $(UPLOAD_PACKAGES)
+ UPLOAD_TEMP: $(UPLOAD_TEMP)
flow_run_id: azure_$(Build.BuildNumber).$(System.JobAttempt)
remote_url: $(Build.Repository.Uri)
sha: $(Build.SourceVersion)
- UPLOAD_PACKAGES: $(UPLOAD_PACKAGES)
- UPLOAD_TEMP: $(UPLOAD_TEMP)
BINSTAR_TOKEN: $(BINSTAR_TOKEN)
FEEDSTOCK_TOKEN: $(FEEDSTOCK_TOKEN)
STAGING_BINSTAR_TOKEN: $(STAGING_BINSTAR_TOKEN)
diff --git a/.ci_support/linux_64_.yaml b/.ci_support/linux_64_.yaml
index 6bf5d00b..ae1bbbed 100644
--- a/.ci_support/linux_64_.yaml
+++ b/.ci_support/linux_64_.yaml
@@ -19,11 +19,11 @@ cxx_compiler_version:
docker_image:
- quay.io/condaforge/linux-anvil-x86_64:alma9
libabseil:
-- '20260107'
+- '20260526'
libgrpc:
-- '1.78'
+- '1.82'
libprotobuf:
-- 6.33.5
+- 7.35.1
openssl:
- '3.5'
pin_run_as_build:
diff --git a/.ci_support/linux_aarch64_.yaml b/.ci_support/linux_aarch64_.yaml
index abfa4770..8e2606bf 100644
--- a/.ci_support/linux_aarch64_.yaml
+++ b/.ci_support/linux_aarch64_.yaml
@@ -17,13 +17,13 @@ cxx_compiler:
cxx_compiler_version:
- '14'
docker_image:
-- quay.io/condaforge/linux-anvil-x86_64:alma9
+- quay.io/condaforge/linux-anvil-aarch64:alma9
libabseil:
-- '20260107'
+- '20260526'
libgrpc:
-- '1.78'
+- '1.82'
libprotobuf:
-- 6.33.5
+- 7.35.1
openssl:
- '3.5'
pin_run_as_build:
diff --git a/.ci_support/linux_ppc64le_.yaml b/.ci_support/linux_ppc64le_.yaml
index 3db68ba5..470d1bfe 100644
--- a/.ci_support/linux_ppc64le_.yaml
+++ b/.ci_support/linux_ppc64le_.yaml
@@ -19,11 +19,11 @@ cxx_compiler_version:
docker_image:
- quay.io/condaforge/linux-anvil-x86_64:alma9
libabseil:
-- '20260107'
+- '20260526'
libgrpc:
-- '1.78'
+- '1.82'
libprotobuf:
-- 6.33.5
+- 7.35.1
openssl:
- '3.5'
pin_run_as_build:
diff --git a/.ci_support/migrations/absl_grpc_proto_26Q2.yaml b/.ci_support/migrations/absl_grpc_proto_26Q2.yaml
new file mode 100644
index 00000000..7ebd5268
--- /dev/null
+++ b/.ci_support/migrations/absl_grpc_proto_26Q2.yaml
@@ -0,0 +1,34 @@
+__migrator:
+ build_number: 1
+ commit_message: |
+ Rebuild for libabseil 20260526, libgrpc 1.82 & libprotobuf 7.35.1
+
+ grpc v1.82 is currently in pre-release and thus not published yet.
+ Therefore, it is expected that feedstocks depending on libgrpc will
+ see resolver errors for now.
+ kind: version
+ migration_number: 1
+ exclude:
+ # core deps
+ - abseil-cpp
+ - grpc-cpp
+ - libprotobuf
+ # required for building/testing
+ - protobuf
+ - re2
+ # bazel stack
+ - bazel
+ - grpc_java_plugin
+ - singlejar
+ # built manually beforehand due to enormous build time
+ - pytorch-cpu
+libabseil:
+- 20260526
+libgrpc:
+- "1.82"
+libprotobuf:
+- 7.35.1
+# https://github.com/protocolbuffers/protobuf/commit/66a9ea7540ad7d3d0822ace6fc8d9ba6cd088c4d
+c_stdlib_version: # [osx]
+ - 12.0 # [osx]
+migrator_ts: 1775539322.336586
diff --git a/.ci_support/osx_64_.yaml b/.ci_support/osx_64_.yaml
index b9123cb5..0a854ad1 100644
--- a/.ci_support/osx_64_.yaml
+++ b/.ci_support/osx_64_.yaml
@@ -1,7 +1,7 @@
MACOSX_DEPLOYMENT_TARGET:
-- '11.0'
+- '12.0'
MACOSX_SDK_VERSION:
-- '11.0'
+- '12.0'
c_ares:
- '1'
c_compiler:
@@ -11,7 +11,7 @@ c_compiler_version:
c_stdlib:
- macosx_deployment_target
c_stdlib_version:
-- '11.0'
+- '12.0'
channel_sources:
- conda-forge
channel_targets:
@@ -21,11 +21,11 @@ cxx_compiler:
cxx_compiler_version:
- '19'
libabseil:
-- '20260107'
+- '20260526'
libgrpc:
-- '1.78'
+- '1.82'
libprotobuf:
-- 6.33.5
+- 7.35.1
macos_machine:
- x86_64-apple-darwin13.4.0
openssl:
diff --git a/.ci_support/osx_arm64_.yaml b/.ci_support/osx_arm64_.yaml
index 80184e7a..325bd0e6 100644
--- a/.ci_support/osx_arm64_.yaml
+++ b/.ci_support/osx_arm64_.yaml
@@ -1,7 +1,7 @@
MACOSX_DEPLOYMENT_TARGET:
-- '11.0'
+- '12.0'
MACOSX_SDK_VERSION:
-- '11.0'
+- '12.0'
c_ares:
- '1'
c_compiler:
@@ -11,7 +11,7 @@ c_compiler_version:
c_stdlib:
- macosx_deployment_target
c_stdlib_version:
-- '11.0'
+- '12.0'
channel_sources:
- conda-forge
channel_targets:
@@ -21,11 +21,11 @@ cxx_compiler:
cxx_compiler_version:
- '19'
libabseil:
-- '20260107'
+- '20260526'
libgrpc:
-- '1.78'
+- '1.82'
libprotobuf:
-- 6.33.5
+- 7.35.1
macos_machine:
- arm64-apple-darwin20.0.0
openssl:
diff --git a/.ci_support/win_64_.yaml b/.ci_support/win_64_.yaml
index 808619d0..32653520 100644
--- a/.ci_support/win_64_.yaml
+++ b/.ci_support/win_64_.yaml
@@ -11,11 +11,11 @@ channel_targets:
cxx_compiler:
- vs2022
libabseil:
-- '20260107'
+- '20260526'
libgrpc:
-- '1.78'
+- '1.82'
libprotobuf:
-- 6.33.5
+- 7.35.1
openssl:
- '3.5'
pin_run_as_build:
diff --git a/.github/workflows/conda-build.yml b/.github/workflows/conda-build.yml
index dcec2cbd..f8b1efab 100644
--- a/.github/workflows/conda-build.yml
+++ b/.github/workflows/conda-build.yml
@@ -23,98 +23,130 @@ jobs:
matrix:
include:
- CONFIG: linux_64_
+ DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9
STORE_BUILD_ARTIFACTS: False
UPLOAD_PACKAGES: True
+ build_workspace_dir: build_artifacts
+ docker_run_args:
+ free_disk_space: quick
os: ubuntu
+ pagefile_size: 10
+ resize_partitions: False
runs_on: ['ubuntu-latest']
- DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9
tools_install_dir: ~/miniforge3
- build_workspace_dir: build_artifacts
- docker_run_args:
- CONFIG: linux_aarch64_
+ DOCKER_IMAGE: quay.io/condaforge/linux-anvil-aarch64:alma9
STORE_BUILD_ARTIFACTS: False
UPLOAD_PACKAGES: True
- os: ubuntu
- runs_on: ['ubuntu-latest']
- DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9
- tools_install_dir: ~/miniforge3
build_workspace_dir: build_artifacts
docker_run_args:
+ free_disk_space: quick
+ os: ubuntu
+ pagefile_size: 10
+ resize_partitions: False
+ runs_on: ['ubuntu-24.04-arm']
+ tools_install_dir: ~/miniforge3
- CONFIG: linux_ppc64le_
+ DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9
STORE_BUILD_ARTIFACTS: False
UPLOAD_PACKAGES: True
+ build_workspace_dir: build_artifacts
+ docker_run_args:
+ free_disk_space: quick
os: ubuntu
+ pagefile_size: 10
+ resize_partitions: False
runs_on: ['ubuntu-latest']
- DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9
tools_install_dir: ~/miniforge3
- build_workspace_dir: build_artifacts
- docker_run_args:
steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - name: Manage disk space
+ env:
+ FREE_DISK_SPACE: ${{ matrix.free_disk_space }}
+ OS: ${{ matrix.os }}
+ shell: bash
+ run: |
+ .scripts/free_disk_space.sh "${FREE_DISK_SPACE}"
+
+ - name: Configure page file on Linux
+ if: matrix.os == 'ubuntu' && matrix.pagefile_size > 0
+ shell: bash
+ env:
+ PAGEFILE_SIZE: ${{ matrix.pagefile_size }}
+ GHA_RUNS_ON: ${{ join(matrix.runs_on, ' ') }}
+ run: |
+ .scripts/create_pagefile.sh "${PAGEFILE_SIZE}"
+ - name: Configure binfmt_misc
+ if: matrix.os == 'ubuntu'
+ shell: bash
+ run: |
+ if [[ "$(uname -m)" == "x86_64" ]]; then
+ docker run --rm --privileged multiarch/qemu-user-static:register --reset --credential yes
+ fi
+
- name: Build on Linux
id: build-linux
if: matrix.os == 'ubuntu'
env:
- MINIFORGE_HOME: ${{ matrix.tools_install_dir }}
+ CI: github_actions
CONDA_BLD_PATH: ${{ matrix.build_workspace_dir }}
+ CONDA_FORGE_DOCKER_RUN_ARGS: ${{ matrix.docker_run_args }}
CONFIG: ${{ matrix.CONFIG }}
- UPLOAD_PACKAGES: ${{ matrix.UPLOAD_PACKAGES }}
+ MINIFORGE_HOME: ${{ matrix.tools_install_dir }}
DOCKER_IMAGE: ${{ matrix.DOCKER_IMAGE }}
- CI: github_actions
- CONDA_FORGE_DOCKER_RUN_ARGS: "${{ matrix.docker_run_args }}"
+ UPLOAD_PACKAGES: ${{ matrix.UPLOAD_PACKAGES }}
+ RATTLER_BUILD_COLOR: always
+ RATTLER_BUILD_ENABLE_GITHUB_INTEGRATION: 'true'
BINSTAR_TOKEN: ${{ secrets.BINSTAR_TOKEN }}
FEEDSTOCK_TOKEN: ${{ secrets.FEEDSTOCK_TOKEN }}
STAGING_BINSTAR_TOKEN: ${{ secrets.STAGING_BINSTAR_TOKEN }}
shell: bash
run: |
- if [[ "$(uname -m)" == "x86_64" ]]; then
- echo "::group::Configure binfmt_misc"
- docker run --rm --privileged multiarch/qemu-user-static:register --reset --credential yes
- fi
+ export CONDA_BLD_PATH="${CONDA_BLD_PATH/#~/${HOME}}"
+ export FEEDSTOCK_NAME="$(basename $GITHUB_REPOSITORY)"
+ export GIT_BRANCH="$(basename $GITHUB_REF)"
+ export MINIFORGE_HOME="${MINIFORGE_HOME/#~/${HOME}}"
export flow_run_id="github_$GITHUB_RUN_ID"
export remote_url="https://github.com/$GITHUB_REPOSITORY"
export sha="$GITHUB_SHA"
- export FEEDSTOCK_NAME="$(basename $GITHUB_REPOSITORY)"
- export GIT_BRANCH="$(basename $GITHUB_REF)"
if [[ "${GITHUB_EVENT_NAME}" == "pull_request" ]]; then
export IS_PR_BUILD="True"
else
export IS_PR_BUILD="False"
fi
- export MINIFORGE_HOME="${MINIFORGE_HOME/#~/${HOME}}"
- export CONDA_BLD_PATH="${CONDA_BLD_PATH/#~/${HOME}}"
- echo "::endgroup::"
./.scripts/run_docker_build.sh
- name: Build on macOS
id: build-macos
if: matrix.os == 'macos'
env:
- MINIFORGE_HOME: ${{ matrix.tools_install_dir }}
+ CI: github_actions
CONDA_BLD_PATH: ${{ matrix.build_workspace_dir }}
CONFIG: ${{ matrix.CONFIG }}
+ MINIFORGE_HOME: ${{ matrix.tools_install_dir }}
UPLOAD_PACKAGES: ${{ matrix.UPLOAD_PACKAGES }}
- CI: github_actions
+ RATTLER_BUILD_COLOR: always
+ RATTLER_BUILD_ENABLE_GITHUB_INTEGRATION: 'true'
BINSTAR_TOKEN: ${{ secrets.BINSTAR_TOKEN }}
FEEDSTOCK_TOKEN: ${{ secrets.FEEDSTOCK_TOKEN }}
STAGING_BINSTAR_TOKEN: ${{ secrets.STAGING_BINSTAR_TOKEN }}
shell: bash
run: |
+ export CONDA_BLD_PATH="${CONDA_BLD_PATH/#~/${HOME}}"
+ export FEEDSTOCK_NAME="$(basename $GITHUB_REPOSITORY)"
+ export GIT_BRANCH="$(basename $GITHUB_REF)"
+ export MINIFORGE_HOME="${MINIFORGE_HOME/#~/${HOME}}"
export flow_run_id="github_$GITHUB_RUN_ID"
export remote_url="https://github.com/$GITHUB_REPOSITORY"
export sha="$GITHUB_SHA"
- export FEEDSTOCK_NAME="$(basename $GITHUB_REPOSITORY)"
- export GIT_BRANCH="$(basename $GITHUB_REF)"
if [[ "${GITHUB_EVENT_NAME}" == "pull_request" ]]; then
export IS_PR_BUILD="True"
else
export IS_PR_BUILD="False"
fi
- export MINIFORGE_HOME="${MINIFORGE_HOME/#~/${HOME}}"
- export CONDA_BLD_PATH="${CONDA_BLD_PATH/#~/${HOME}}"
./.scripts/run_osx_build.sh
- name: Build on windows
@@ -127,12 +159,14 @@ jobs:
set "sha=%GITHUB_SHA%"
call ".scripts\run_win_build.bat"
env:
- MINIFORGE_HOME: ${{ matrix.tools_install_dir }}
+ CI: github_actions
CONDA_BLD_PATH: ${{ matrix.build_workspace_dir }}
- PYTHONUNBUFFERED: 1
CONFIG: ${{ matrix.CONFIG }}
- CI: github_actions
+ MINIFORGE_HOME: ${{ matrix.tools_install_dir }}
+ PYTHONUNBUFFERED: 1
UPLOAD_PACKAGES: ${{ matrix.UPLOAD_PACKAGES }}
+ RATTLER_BUILD_COLOR: always
+ RATTLER_BUILD_ENABLE_GITHUB_INTEGRATION: 'true'
BINSTAR_TOKEN: ${{ secrets.BINSTAR_TOKEN }}
FEEDSTOCK_TOKEN: ${{ secrets.FEEDSTOCK_TOKEN }}
STAGING_BINSTAR_TOKEN: ${{ secrets.STAGING_BINSTAR_TOKEN }}
\ No newline at end of file
diff --git a/.scripts/build_steps.sh b/.scripts/build_steps.sh
index c83e212f..5c97f744 100755
--- a/.scripts/build_steps.sh
+++ b/.scripts/build_steps.sh
@@ -61,18 +61,33 @@ if [[ -f "${FEEDSTOCK_ROOT}/LICENSE.txt" ]]; then
fi
if [[ "${BUILD_WITH_CONDA_DEBUG:-0}" == 1 ]]; then
- if [[ "x${BUILD_OUTPUT_ID:-}" != "x" ]]; then
- EXTRA_CB_OPTIONS="${EXTRA_CB_OPTIONS:-} --output-id ${BUILD_OUTPUT_ID}"
- fi
- conda debug "${RECIPE_ROOT}" -m "${CI_SUPPORT}/${CONFIG}.yaml" \
+ # differences between conda-build vs. rattler-build
+ # - 1 step (conda debug + manually open shell) vs. 2 step (rb debug {setup, shell})
+ # - recipe is positional vs. --recipe "${RECIPE_ROOT}"
+ # - --output-id vs. --output-name
+ # - --clobber-file vs. none
+ # - none vs. --target-platform
+ conda debug \
+ "${RECIPE_ROOT}" \
+ -m "${CI_SUPPORT}/${CONFIG}.yaml" \
${EXTRA_CB_OPTIONS:-} \
+ ${BUILD_OUTPUT_ID:+--output-id "${BUILD_OUTPUT_ID}"} \
--clobber-file "${CI_SUPPORT}/clobber_${CONFIG}.yaml"
# Drop into an interactive shell
/bin/bash
else
- conda-build "${RECIPE_ROOT}" -m "${CI_SUPPORT}/${CONFIG}.yaml" \
- --suppress-variables ${EXTRA_CB_OPTIONS:-} \
+ # differences between conda-build vs. rattler-build
+ # - recipe is positional vs. --recipe "${RECIPE_ROOT}"
+ # - --suppress-variables vs. none
+ # - --clobber-file vs. none
+ # - none vs. --target-platform
+ # - --extra-meta a=b c=d vs. --extra-meta a=b --extra-meta c=d
+ conda-build \
+ "${RECIPE_ROOT}" \
+ -m "${CI_SUPPORT}/${CONFIG}.yaml" \
+ ${EXTRA_CB_OPTIONS:-} \
+ --suppress-variables \
--clobber-file "${CI_SUPPORT}/clobber_${CONFIG}.yaml" \
--extra-meta flow_run_id="${flow_run_id:-}" remote_url="${remote_url:-}" sha="${sha:-}"
( startgroup "Inspecting artifacts" ) 2> /dev/null
diff --git a/.scripts/create_pagefile.sh b/.scripts/create_pagefile.sh
new file mode 100755
index 00000000..693a27a4
--- /dev/null
+++ b/.scripts/create_pagefile.sh
@@ -0,0 +1,20 @@
+#!/usr/bin/env bash
+
+set -ex
+
+PAGEFILE_SIZE=${1}
+
+SWAPFILE=/swapfile
+if [[ ${GHA_RUNS_ON} == *namespace-profile-* ]]; then
+ SWAPFILE=/namespace/scratch/swapfile
+fi
+# If there is already a swapfile, disable it and remove it
+if swapon --show | grep -q "^${SWAPFILE}"; then
+ sudo swapoff "${SWAPFILE}" || true
+fi
+[[ -f ${SWAPFILE} ]] && sudo rm -f "${SWAPFILE}"
+
+sudo fallocate -l "${PAGEFILE_SIZE}GiB" "${SWAPFILE}"
+sudo chmod 600 "${SWAPFILE}"
+sudo mkswap "${SWAPFILE}"
+sudo swapon "${SWAPFILE}"
diff --git a/.scripts/free_disk_space.sh b/.scripts/free_disk_space.sh
new file mode 100755
index 00000000..5c716a94
--- /dev/null
+++ b/.scripts/free_disk_space.sh
@@ -0,0 +1,62 @@
+#!/usr/bin/env bash
+
+set -ex
+
+FREE_DISK_SPACE=${1}
+
+if [[ ${FREE_DISK_SPACE} == skip ]]; then
+ exit 0
+fi
+
+df -h
+
+case ${OS} in
+ ubuntu)
+ DIRS_TO_REMOVE=(
+ /opt/ghc
+ /opt/hostedtoolcache
+ /usr/lib/jvm
+ /usr/local/.ghcup
+ /usr/local/lib/android
+ /usr/local/share/powershell
+ /usr/share/dotnet
+ /usr/share/swift
+ )
+
+ sudo rm -rf "${DIRS_TO_REMOVE[@]}"
+
+ if type apt-get; then
+ BROWSERS="firefox google-chrome-stable microsoft-edge-stable"
+ BROWSERS_TO_REMOVE=$(dpkg --get-selections $BROWSERS 2>/dev/null | awk '{print $1}')
+ if [[ -n ${BROWSERS_TO_REMOVE} ]]; then
+ sudo apt-get remove --purge -y $BROWSERS_TO_REMOVE
+ fi
+
+ sudo apt-get autoremove -y >& /dev/null
+ sudo apt-get autoclean -y >& /dev/null
+ fi
+
+ if [[ ${FREE_DISK_SPACE} == max ]] && type docker; then
+ sudo docker image prune --all --force
+ fi
+ ;;
+ macos)
+ DIRS_TO_REMOVE=(
+ /Users/runner/Library/Android
+ /Users/runner/.dotnet
+ /Users/runner/hostedtoolcache
+ )
+ rm -rf "${DIRS_TO_REMOVE[@]}"
+ ;;
+ windows)
+ DIRS_TO_REMOVE=(
+ C:/hostedtoolcache/windows
+ C:/Android
+ )
+
+ # rm is one of the fastest methods to remove files on Windows
+ rm -rf "${DIRS_TO_REMOVE[@]}"
+ ;;
+esac
+
+df -h
diff --git a/.scripts/run_docker_build.sh b/.scripts/run_docker_build.sh
index 10d6a2af..17d983f1 100755
--- a/.scripts/run_docker_build.sh
+++ b/.scripts/run_docker_build.sh
@@ -96,6 +96,14 @@ if [ "${DOCKER_EXECUTABLE}" = "podman" ]; then
fi
fi
+# When running on GitHub Actions, mount the step summary file into the container
+# and point GITHUB_STEP_SUMMARY at it so that rattler-build's GitHub integration
+# can write its summary. GitHub writes the file out to the job summary after the
+# step finishes.
+if [[ -n "${GITHUB_STEP_SUMMARY:-}" ]]; then
+ DOCKER_RUN_ARGS="${DOCKER_RUN_ARGS} -v ${GITHUB_STEP_SUMMARY}:/home/conda/github_step_summary:rw${VOLUME_SUFFIX},delegated -e GITHUB_STEP_SUMMARY=/home/conda/github_step_summary"
+fi
+
( endgroup "Configure Docker" ) 2> /dev/null
( startgroup "Start Docker" ) 2> /dev/null
@@ -107,17 +115,20 @@ ${DOCKER_EXECUTABLE} pull "${DOCKER_IMAGE}"
${DOCKER_EXECUTABLE} run ${DOCKER_RUN_ARGS} \
-v "${RECIPE_ROOT}":/home/conda/recipe_root:rw${VOLUME_SUFFIX},delegated \
-v "${FEEDSTOCK_ROOT}":/home/conda/feedstock_root:rw${VOLUME_SUFFIX},delegated \
+ -e BUILD_OUTPUT_ID \
+ -e BUILD_WITH_CONDA_DEBUG \
+ -e CI \
-e CONFIG \
+ -e CPU_COUNT \
+ -e FEEDSTOCK_NAME \
+ -e GIT_BRANCH \
+ -e GITHUB_ACTIONS \
-e HOST_USER_ID \
- -e UPLOAD_PACKAGES \
-e IS_PR_BUILD \
- -e GIT_BRANCH \
+ -e RATTLER_BUILD_COLOR \
+ -e RATTLER_BUILD_ENABLE_GITHUB_INTEGRATION \
-e UPLOAD_ON_BRANCH \
- -e CI \
- -e FEEDSTOCK_NAME \
- -e CPU_COUNT \
- -e BUILD_WITH_CONDA_DEBUG \
- -e BUILD_OUTPUT_ID \
+ -e UPLOAD_PACKAGES \
-e flow_run_id \
-e remote_url \
-e sha \
diff --git a/README.md b/README.md
index b212affc..4b17d1fc 100644
--- a/README.md
+++ b/README.md
@@ -53,6 +53,13 @@ Current build status
+
| win_64 |
diff --git a/build-locally.py b/build-locally.py
index 05493e4d..3beb68cc 100755
--- a/build-locally.py
+++ b/build-locally.py
@@ -98,7 +98,10 @@ def main(args=None):
p.add_argument(
"--debug",
action="store_true",
- help="Setup debug environment using `conda debug`",
+ help=(
+ "Setup debug environment using `conda debug` "
+ "(or `rattler-build debug` for rattler-build recipes)"
+ ),
)
p.add_argument("--output-id", help="If running debug, specify the output to setup.")
diff --git a/conda-forge.yml b/conda-forge.yml
index fe62a582..85e1333a 100644
--- a/conda-forge.yml
+++ b/conda-forge.yml
@@ -1,15 +1,19 @@
-azure:
- free_disk_space: true
- settings_linux:
- swapfile_size: 10GiB
build_platform:
- linux_aarch64: linux_64
linux_ppc64le: linux_64
- osx_arm64: osx_64
conda_build:
pkg_format: '2'
conda_forge_output_validation: true
github:
branch_name: main
tooling_branch_name: main
+provider:
+ linux_aarch64: default
+ osx_arm64: default
test: native_and_emulated
+workflow_settings:
+ free_disk_space:
+ - value: quick
+ os: linux
+ pagefile_size:
+ - value: 10
+ os: linux
diff --git a/recipe/meta.yaml b/recipe/meta.yaml
index f093de4e..c375310b 100644
--- a/recipe/meta.yaml
+++ b/recipe/meta.yaml
@@ -1,4 +1,4 @@
-{% set version = "1.81.1" %}
+{% set version = "1.82.0" %}
# core package & vendored libs use different version scheme than CPP libs, see
# top of https://github.com/grpc/grpc/blob/v{{ version }}/CMakeLists.txt
@@ -19,7 +19,7 @@ package:
source:
- url: https://github.com/grpc/grpc/archive/v{{ version.replace(".pre", "-pre") }}.tar.gz
- sha256: 48ae0d05f87206112d9e9144a923191ee1e482141a70686ec58dc86d0b40fddc
+ sha256: d6851f59b9c4edb3218d2659a3abf1138e5bb4d2871c9e89c9330ed71756ed0b
patches:
- patches/0001-windows-ssl-lib-names.patch
- patches/0002-fix-win-setup-cmds.patch
@@ -48,12 +48,10 @@ source:
- patches/0015-disable-grpc-_unsecure.patch
# backport https://github.com/grpc/grpc/pull/41909
- patches/0016-break-out-_initialize_absl-into-separate-cython-modu.patch
- # backport https://github.com/grpc/grpc/pull/41910
- - patches/0017-fix-double-metric-registration-across-shared-librari.patch
# silence absl::MutexLock(Mutex*) deprecation warnings on newer abseil
- - patches/0018-silence-absl-MutexLock-pointer-deprecation-warnings.patch
+ - patches/0017-silence-absl-MutexLock-pointer-deprecation-warnings.patch
# silence absl::Mutex::Lock()/Unlock() deprecation warnings on newer abseil
- - patches/0019-silence-absl-Mutex-Lock-Unlock-deprecation-warnings.patch
+ - patches/0018-silence-absl-Mutex-Lock-Unlock-deprecation-warnings.patch
{% if build_platform == target_platform and not win %}
- folder: third_party/benchmark
diff --git a/recipe/patches/0001-windows-ssl-lib-names.patch b/recipe/patches/0001-windows-ssl-lib-names.patch
index b259341f..e418c63e 100644
--- a/recipe/patches/0001-windows-ssl-lib-names.patch
+++ b/recipe/patches/0001-windows-ssl-lib-names.patch
@@ -1,7 +1,7 @@
-From 415c093f41f56d8bf3f30b706225a46a90eb7459 Mon Sep 17 00:00:00 2001
+From e0c670d9544c7e8524cb94cbde5c58bc92f0cd4e Mon Sep 17 00:00:00 2001
From: Jonathan Helmus
Date: Mon, 17 Feb 2020 15:45:06 -0600
-Subject: [PATCH 01/17] windows ssl lib names
+Subject: [PATCH 01/18] 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 28860ec..7f46c44 100644
+index 28860ecf65..7f46c442b9 100644
--- a/setup.py
+++ b/setup.py
@@ -381,10 +381,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 a57bbf9c..71457998 100644
--- a/recipe/patches/0002-fix-win-setup-cmds.patch
+++ b/recipe/patches/0002-fix-win-setup-cmds.patch
@@ -1,7 +1,7 @@
-From 3e90c94d389edbecd9508835db9fc9c135b27ae3 Mon Sep 17 00:00:00 2001
+From 429b0243e5c15a4eff433b81cde7a1ae796eb380 Mon Sep 17 00:00:00 2001
From: Mike Sarahan
Date: Tue, 18 Feb 2020 13:53:05 -0600
-Subject: [PATCH 02/17] fix win setup cmds
+Subject: [PATCH 02/18] fix win setup cmds
Co-Authored-By: Julien Schueller
Co-Authored-By: Nicholas Bollweg
@@ -12,7 +12,7 @@ Co-Authored-By: H. Vetinari
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/setup.py b/setup.py
-index 7f46c44..d8e9bc2 100644
+index 7f46c442b9..d8e9bc256d 100644
--- a/setup.py
+++ b/setup.py
@@ -201,6 +201,9 @@ ENABLE_DOCUMENTATION_BUILD = _env_bool_value(
diff --git a/recipe/patches/0003-Link-against-grpc-and-abseil.patch b/recipe/patches/0003-Link-against-grpc-and-abseil.patch
index 5f5591b9..db224144 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 7be184117e1de7960b3b82d742291eaa15592da7 Mon Sep 17 00:00:00 2001
+From 052c25e71a78bbac932126284bf34bfce051dfb0 Mon Sep 17 00:00:00 2001
From: Marius van Niekerk
Date: Mon, 13 Jun 2022 17:13:07 -0400
-Subject: [PATCH 03/17] Link against grpc and abseil
+Subject: [PATCH 03/18] Link against grpc and abseil
Co-Authored-By: H. Vetinari
---
@@ -9,7 +9,7 @@ Co-Authored-By: H. Vetinari
1 file changed, 19 insertions(+), 5 deletions(-)
diff --git a/setup.py b/setup.py
-index d8e9bc2..dbd69dc 100644
+index d8e9bc256d..dbd69dc50e 100644
--- a/setup.py
+++ b/setup.py
@@ -172,6 +172,8 @@ BUILD_WITH_STATIC_LIBSTDCXX = _env_bool_value(
diff --git a/recipe/patches/0004-force-protoc-executable.patch b/recipe/patches/0004-force-protoc-executable.patch
index 471f99ac..05901eaf 100644
--- a/recipe/patches/0004-force-protoc-executable.patch
+++ b/recipe/patches/0004-force-protoc-executable.patch
@@ -1,14 +1,14 @@
-From 9628c406c965112ef13dd35d41496a9ac2b2fb98 Mon Sep 17 00:00:00 2001
+From 1ea83128612eaed263855136d742d2b51251bbc8 Mon Sep 17 00:00:00 2001
From: "Uwe L. Korn"
Date: Fri, 11 Sep 2020 14:20:04 +0200
-Subject: [PATCH 04/17] force protoc executable
+Subject: [PATCH 04/18] force protoc executable
---
cmake/protobuf.cmake | 17 ++---------------
1 file changed, 2 insertions(+), 15 deletions(-)
diff --git a/cmake/protobuf.cmake b/cmake/protobuf.cmake
-index ad80ca6..7bae8d9 100644
+index ad80ca6e46..7bae8d95bd 100644
--- a/cmake/protobuf.cmake
+++ b/cmake/protobuf.cmake
@@ -70,21 +70,8 @@ elseif(gRPC_PROTOBUF_PROVIDER STREQUAL "package")
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 51745706..46969471 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 6f2e3fcbfcbba0f49e89c7fbf51b6eda012caaa0 Mon Sep 17 00:00:00 2001
+From 938868cc0b2208ec882e7c41d48024b6d466808d Mon Sep 17 00:00:00 2001
From: "H. Vetinari"
Date: Tue, 23 Aug 2022 11:45:20 +0200
-Subject: [PATCH 05/17] mark linkages of grpc{,_unsecure} as private
+Subject: [PATCH 05/18] mark linkages of grpc{,_unsecure} as private
except openssl & gpr, which are needed by dependents
@@ -13,10 +13,10 @@ Co-Authored-By: Mark Harfouche
1 file changed, 58 insertions(+), 48 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 6825714..691f64f 100644
+index 27bb372c2e..46cdc6d35f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -3174,34 +3174,39 @@ target_include_directories(grpc
+@@ -3182,34 +3182,39 @@ target_include_directories(grpc
${_gRPC_ZLIB_INCLUDE_DIR}
)
target_link_libraries(grpc
@@ -82,7 +82,7 @@ index 6825714..691f64f 100644
endif()
foreach(_hdr
-@@ -3915,31 +3920,36 @@ target_include_directories(grpc_unsecure
+@@ -3924,31 +3929,36 @@ target_include_directories(grpc_unsecure
${_gRPC_ZLIB_INCLUDE_DIR}
)
target_link_libraries(grpc_unsecure
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 bbbac2a4..7fe3c9d2 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 db63969f75605b00a074b2bed288e799d28c21bb Mon Sep 17 00:00:00 2001
+From eed04ec3db636c7d34728ad8662dd41db45f3106 Mon Sep 17 00:00:00 2001
From: "H. Vetinari"
Date: Thu, 29 Feb 2024 20:31:21 +1100
-Subject: [PATCH 06/17] for main targets, set *_DLL_EXPORTS when building and
+Subject: [PATCH 06/18] for main targets, set *_DLL_EXPORTS when building and
*_DLL_IMPORTS in interface
---
@@ -9,10 +9,10 @@ Subject: [PATCH 06/17] 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 691f64f..aaec62d 100644
+index 46cdc6d35f..7972c30b19 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -2119,10 +2119,8 @@ if(WIN32 AND MSVC)
+@@ -2125,10 +2125,8 @@ if(WIN32 AND MSVC)
COMPILE_PDB_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
)
if(BUILD_SHARED_LIBS)
@@ -25,7 +25,7 @@ index 691f64f..aaec62d 100644
endif()
if(gRPC_INSTALL)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/gpr.pdb
-@@ -3147,11 +3145,8 @@ if(WIN32 AND MSVC)
+@@ -3155,11 +3153,8 @@ if(WIN32 AND MSVC)
COMPILE_PDB_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
)
if(BUILD_SHARED_LIBS)
@@ -39,7 +39,7 @@ index 691f64f..aaec62d 100644
endif()
if(gRPC_INSTALL)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/grpc.pdb
-@@ -3893,11 +3888,8 @@ if(WIN32 AND MSVC)
+@@ -3902,11 +3897,8 @@ if(WIN32 AND MSVC)
COMPILE_PDB_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
)
if(BUILD_SHARED_LIBS)
@@ -53,7 +53,7 @@ index 691f64f..aaec62d 100644
endif()
if(gRPC_INSTALL)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/grpc_unsecure.pdb
-@@ -5008,12 +5000,8 @@ if(WIN32 AND MSVC)
+@@ -5018,12 +5010,8 @@ if(WIN32 AND MSVC)
COMPILE_PDB_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
)
if(BUILD_SHARED_LIBS)
@@ -68,7 +68,7 @@ index 691f64f..aaec62d 100644
endif()
if(gRPC_INSTALL)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/grpc++.pdb
-@@ -5756,12 +5744,8 @@ if(WIN32 AND MSVC)
+@@ -5767,12 +5755,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 dd9c2e86..409bc7dc 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 d2a9b89177b47388abad8a9d1c49941c8baa7453 Mon Sep 17 00:00:00 2001
+From 918ee89ce55a1b0b44265f3c24845768f574cdd1 Mon Sep 17 00:00:00 2001
From: "H. Vetinari"
Date: Tue, 26 Sep 2023 18:25:54 +1100
-Subject: [PATCH 07/17] add missing linkages for gRPC_BUILD_TESTS=ON
+Subject: [PATCH 07/18] 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 aaec62d..616885f 100644
+index 7972c30b19..ce9fa4c402 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -3337,6 +3337,7 @@ target_link_libraries(grpc_test_util
+@@ -3345,6 +3345,7 @@ target_link_libraries(grpc_test_util
${_gRPC_ALLTARGETS_LIBRARIES}
absl::failure_signal_handler
absl::stacktrace
@@ -25,7 +25,7 @@ index aaec62d..616885f 100644
absl::symbolize
absl::log_initialize
grpc
-@@ -3411,6 +3412,7 @@ target_link_libraries(grpc_test_util_unsecure
+@@ -3419,6 +3420,7 @@ target_link_libraries(grpc_test_util_unsecure
${_gRPC_ALLTARGETS_LIBRARIES}
absl::failure_signal_handler
absl::stacktrace
@@ -33,7 +33,7 @@ index aaec62d..616885f 100644
absl::symbolize
absl::log_initialize
grpc_unsecure
-@@ -8698,6 +8700,7 @@ target_include_directories(authorization_matchers_test
+@@ -8713,6 +8715,7 @@ target_include_directories(authorization_matchers_test
)
target_link_libraries(authorization_matchers_test
@@ -41,7 +41,7 @@ index aaec62d..616885f 100644
${_gRPC_ALLTARGETS_LIBRARIES}
gtest
grpc_test_util
-@@ -19208,6 +19211,7 @@ target_include_directories(grpc_authorization_engine_test
+@@ -19567,6 +19570,7 @@ target_include_directories(grpc_authorization_engine_test
)
target_link_libraries(grpc_authorization_engine_test
@@ -49,7 +49,7 @@ index aaec62d..616885f 100644
${_gRPC_ALLTARGETS_LIBRARIES}
gtest
grpc_test_util
-@@ -21477,6 +21481,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
+@@ -21833,6 +21837,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
)
target_link_libraries(httpcli_test
@@ -57,7 +57,7 @@ index aaec62d..616885f 100644
${_gRPC_ALLTARGETS_LIBRARIES}
gtest
grpc++_test_util
-@@ -24784,6 +24789,7 @@ target_include_directories(matchers_test
+@@ -25092,6 +25097,7 @@ target_include_directories(matchers_test
)
target_link_libraries(matchers_test
@@ -65,7 +65,7 @@ index aaec62d..616885f 100644
${_gRPC_ALLTARGETS_LIBRARIES}
gtest
grpc_test_util
-@@ -30272,6 +30278,7 @@ target_include_directories(resolve_address_using_ares_resolver_test
+@@ -30726,6 +30732,7 @@ target_include_directories(resolve_address_using_ares_resolver_test
)
target_link_libraries(resolve_address_using_ares_resolver_test
@@ -73,7 +73,7 @@ index aaec62d..616885f 100644
${_gRPC_ALLTARGETS_LIBRARIES}
gtest
grpc_test_util
-@@ -30360,6 +30367,7 @@ target_include_directories(resolve_address_using_native_resolver_test
+@@ -30814,6 +30821,7 @@ target_include_directories(resolve_address_using_native_resolver_test
)
target_link_libraries(resolve_address_using_native_resolver_test
@@ -81,7 +81,7 @@ index aaec62d..616885f 100644
${_gRPC_ALLTARGETS_LIBRARIES}
gtest
grpc_test_util
-@@ -41436,6 +41444,7 @@ target_include_directories(xds_common_types_test
+@@ -41964,6 +41972,7 @@ target_include_directories(xds_common_types_test
)
target_link_libraries(xds_common_types_test
@@ -89,7 +89,7 @@ index aaec62d..616885f 100644
${_gRPC_ALLTARGETS_LIBRARIES}
gtest
absl::fixed_array
-@@ -42665,6 +42674,7 @@ target_include_directories(xds_credentials_test
+@@ -43192,6 +43201,7 @@ target_include_directories(xds_credentials_test
)
target_link_libraries(xds_credentials_test
@@ -97,7 +97,7 @@ index aaec62d..616885f 100644
${_gRPC_ALLTARGETS_LIBRARIES}
gtest
grpc_test_util
-@@ -47852,6 +47862,7 @@ target_include_directories(xds_listener_resource_type_test
+@@ -48378,6 +48388,7 @@ target_include_directories(xds_listener_resource_type_test
)
target_link_libraries(xds_listener_resource_type_test
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 5db9cae4..23f15d1d 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 abc9e8ed02fa0fed4e3c21f53260755b39a6c836 Mon Sep 17 00:00:00 2001
+From e42f2aaceb00e6f76cf1cf1ba7c3cafe4bf66d93 Mon Sep 17 00:00:00 2001
From: "H. Vetinari"
Date: Fri, 28 Feb 2025 22:07:19 +1100
-Subject: [PATCH 08/17] add enable_testing so tests get run
+Subject: [PATCH 08/18] add enable_testing so tests get run
---
CMakeLists.txt | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 616885f..c2975ee 100644
+index ce9fa4c402..60e0b95f8a 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 8d018564..338fe13e 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,15 +1,15 @@
-From ef63d7d57e382570cde0a76a05400fa6235b57f6 Mon Sep 17 00:00:00 2001
+From 761d2f637a516d585a89c0b32fe81e20a1a534b7 Mon Sep 17 00:00:00 2001
From: "H. Vetinari"
Date: Fri, 28 Feb 2025 15:09:41 +1100
-Subject: [PATCH 09/17] unvendor upb and utf8_range, use protobuf's version
+Subject: [PATCH 09/18] unvendor upb and utf8_range, use protobuf's version
---
- CMakeLists.txt | 696 ++----------------------------------------------
+ CMakeLists.txt | 789 +-----------------------------------------------
cmake/upb.cmake | 4 +-
- 2 files changed, 16 insertions(+), 684 deletions(-)
+ 2 files changed, 16 insertions(+), 777 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index c2975ee..8b170fb 100644
+index 60e0b95f8a..8b4b1cce9d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -354,11 +354,15 @@ else()
@@ -29,7 +29,7 @@ index c2975ee..8b170fb 100644
if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX)
find_library(LIBRT rt)
if(LIBRT)
-@@ -3177,8 +3181,6 @@ target_link_libraries(grpc
+@@ -3185,8 +3189,6 @@ target_link_libraries(grpc
PRIVATE ${_gRPC_ALLTARGETS_LIBRARIES}
# vendored libs
PRIVATE ${_gRPC_ADDRESS_SORTING_LIBRARIES}
@@ -38,7 +38,7 @@ index c2975ee..8b170fb 100644
# external dependencies used within grpc
PRIVATE ${_gRPC_CARES_LIBRARIES}
PRIVATE ${_gRPC_RE2_LIBRARIES}
-@@ -3922,7 +3924,6 @@ target_link_libraries(grpc_unsecure
+@@ -3931,7 +3933,6 @@ target_link_libraries(grpc_unsecure
PRIVATE ${_gRPC_ALLTARGETS_LIBRARIES}
# vendored libs
PRIVATE ${_gRPC_ADDRESS_SORTING_LIBRARIES}
@@ -46,7 +46,7 @@ index c2975ee..8b170fb 100644
# external dependencies used within grpc
PRIVATE ${_gRPC_ZLIB_LIBRARIES}
PRIVATE ${_gRPC_CARES_LIBRARIES}
-@@ -4092,763 +4093,6 @@ target_link_libraries(gtest
+@@ -4101,765 +4102,6 @@ target_link_libraries(gtest
endif()
@@ -510,6 +510,7 @@ index c2975ee..8b170fb 100644
-
-add_library(upb_mini_table_lib
- third_party/upb/upb/mini_table/extension_registry.c
+- third_party/upb/upb/mini_table/generated_registry.c
- third_party/upb/upb/mini_table/internal/message.c
- third_party/upb/upb/mini_table/message.c
-)
@@ -807,10 +808,11 @@ index c2975ee..8b170fb 100644
- ARCHIVE DESTINATION ${gRPC_INSTALL_LIBDIR}
- )
-endif()
-
+-
if(gRPC_BUILD_TESTS)
-@@ -6362,7 +5606,6 @@ target_include_directories(grpc_authorization_provider
+ if(gRPC_BUILD_CODEGEN)
+@@ -6374,7 +5616,6 @@ target_include_directories(grpc_authorization_provider
)
target_link_libraries(grpc_authorization_provider
${_gRPC_ALLTARGETS_LIBRARIES}
@@ -818,7 +820,7 @@ index c2975ee..8b170fb 100644
${_gRPC_RE2_LIBRARIES}
${_gRPC_ZLIB_LIBRARIES}
absl::no_destructor
-@@ -54968,8 +54211,8 @@ generate_pkgconfig(
+@@ -55492,8 +54733,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_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"
@@ -829,7 +831,7 @@ index c2975ee..8b170fb 100644
"grpc.pc")
# grpc_unsecure .pc file
-@@ -54979,8 +54222,8 @@ generate_pkgconfig(
+@@ -55503,8 +54744,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_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"
@@ -840,9 +842,9 @@ index c2975ee..8b170fb 100644
"grpc_unsecure.pc")
# grpc++ .pc file
-@@ -54990,8 +54233,8 @@ generate_pkgconfig(
+@@ -55514,8 +54755,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_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"
+ "absl_absl_check absl_absl_log absl_algorithm_container absl_any_invocable absl_base absl_bind_front absl_bits absl_btree absl_charset 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_descriptor_lib -lupb_mini_descriptor_lib -lupb_mini_table_lib -lupb_hash_lib -lupb_mem_lib -lupb_base_lib -lupb_lex_lib"
@@ -851,9 +853,9 @@ index c2975ee..8b170fb 100644
"grpc++.pc")
# grpc++_unsecure .pc file
-@@ -55001,8 +54244,8 @@ generate_pkgconfig(
+@@ -55525,8 +54766,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_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"
+ "absl_absl_check absl_absl_log absl_algorithm_container absl_any_invocable absl_base absl_bind_front absl_bits absl_btree absl_charset 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_descriptor_lib -lupb_mini_descriptor_lib -lupb_mini_table_lib -lupb_hash_lib -lupb_mem_lib -lupb_base_lib -lupb_lex_lib"
@@ -862,9 +864,9 @@ index c2975ee..8b170fb 100644
"grpc++_unsecure.pc")
if(gRPC_BUILD_GRPCPP_OTEL_PLUGIN)
-@@ -55013,7 +54256,7 @@ if(gRPC_BUILD_GRPCPP_OTEL_PLUGIN)
+@@ -55537,7 +54778,7 @@ if(gRPC_BUILD_GRPCPP_OTEL_PLUGIN)
"${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_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"
+ "absl_absl_check absl_absl_log absl_algorithm_container absl_any_invocable absl_base absl_bind_front absl_bits absl_btree absl_charset 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_descriptor_lib -lupb_mini_descriptor_lib -lupb_mini_table_lib -lupb_hash_lib -lupb_mem_lib -lupb_base_lib -lupb_lex_lib"
@@ -873,7 +875,7 @@ index c2975ee..8b170fb 100644
"grpcpp_otel_plugin.pc")
endif()
diff --git a/cmake/upb.cmake b/cmake/upb.cmake
-index 9156e5f..e6fa819 100644
+index 9156e5f48f..e6fa81932d 100644
--- a/cmake/upb.cmake
+++ b/cmake/upb.cmake
@@ -12,9 +12,7 @@
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 f5c65eef..2d66f9c7 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 40705cb0f14004e68be6599ebc94ade173453fe0 Mon Sep 17 00:00:00 2001
+From 1146932c40c9d42b8b2c0a34f067228abad36c66 Mon Sep 17 00:00:00 2001
From: "H. Vetinari"
Date: Sun, 2 Mar 2025 08:22:39 +1100
-Subject: [PATCH 10/17] reduce buildtests_cxx target to end2end tests
+Subject: [PATCH 10/18] 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 | 767 +++----------------------------------------------
- 1 file changed, 43 insertions(+), 724 deletions(-)
+ CMakeLists.txt | 784 +++----------------------------------------------
+ 1 file changed, 46 insertions(+), 738 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 8b170fb..49be44f 100644
+index 8b4b1cce9d..5b089f177f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -47,11 +47,12 @@ set(gRPC_INSTALL_SHAREDIR "share/grpc" CACHE STRING "Installation directory for
@@ -107,7 +107,7 @@ index 8b170fb..49be44f 100644
protobuf_generate_grpc_cpp_with_import_path_correction(
src/proto/grpc/testing/benchmark_service.proto src/proto/grpc/testing/benchmark_service.proto
)
-@@ -1276,173 +1277,16 @@ endif()
+@@ -1276,174 +1277,16 @@ endif()
if(gRPC_BUILD_TESTS)
add_custom_target(buildtests_c)
@@ -229,6 +229,7 @@ index 8b170fb..49be44f 100644
- if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
- add_dependencies(buildtests_cxx client_fork_test)
- endif()
+- add_dependencies(buildtests_cxx client_initial_metadata_outstanding_token_test)
add_dependencies(buildtests_cxx client_interceptors_end2end_test)
if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
add_dependencies(buildtests_cxx client_lb_end2end_test)
@@ -281,10 +282,10 @@ index 8b170fb..49be44f 100644
if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
add_dependencies(buildtests_cxx end2end_chaotic_good_no_logging_test)
endif()
-@@ -1460,558 +1304,25 @@ if(gRPC_BUILD_TESTS)
- add_dependencies(buildtests_cxx end2end_posix_no_logging_test)
- add_dependencies(buildtests_cxx end2end_posix_test)
+@@ -1463,561 +1306,26 @@ if(gRPC_BUILD_TESTS)
add_dependencies(buildtests_cxx end2end_test)
+ add_dependencies(buildtests_cxx end2end_vrpc_no_logging_test)
+ add_dependencies(buildtests_cxx end2end_vrpc_test)
- add_dependencies(buildtests_cxx endpoint_addresses_test)
- add_dependencies(buildtests_cxx endpoint_config_test)
- add_dependencies(buildtests_cxx endpoint_pair_test)
@@ -400,7 +401,6 @@ index 8b170fb..49be44f 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()
@@ -464,6 +464,7 @@ index 8b170fb..49be44f 100644
- add_dependencies(buildtests_cxx metrics_test)
- add_dependencies(buildtests_cxx minimal_stack_is_minimal_test)
- add_dependencies(buildtests_cxx miscompile_with_no_unique_address_test)
+- add_dependencies(buildtests_cxx mitigation_engine_provider_test)
- add_dependencies(buildtests_cxx mock_stream_test)
- add_dependencies(buildtests_cxx mock_test)
- if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
@@ -548,8 +549,10 @@ index 8b170fb..49be44f 100644
add_dependencies(buildtests_cxx raw_end2end_test)
- add_dependencies(buildtests_cxx rbac_service_config_parser_test)
- add_dependencies(buildtests_cxx rbac_translator_test)
+- add_dependencies(buildtests_cxx read_context_test)
- add_dependencies(buildtests_cxx ref_counted_ptr_test)
- add_dependencies(buildtests_cxx ref_counted_test)
+- add_dependencies(buildtests_cxx regional_access_boundary_fetcher_test)
- if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
- add_dependencies(buildtests_cxx remove_stream_from_stalled_lists_test)
- endif()
@@ -602,6 +605,7 @@ index 8b170fb..49be44f 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 session_end2end_test)
- add_dependencies(buildtests_cxx session_endpoint_test)
- add_dependencies(buildtests_cxx settings_timeout_manager_test)
- add_dependencies(buildtests_cxx settings_timeout_test)
@@ -840,7 +844,7 @@ index 8b170fb..49be44f 100644
add_custom_target(buildtests
DEPENDS buildtests_c buildtests_cxx)
-@@ -3278,7 +2589,7 @@ if(gRPC_INSTALL)
+@@ -3286,7 +2594,7 @@ if(gRPC_INSTALL)
)
endif()
@@ -849,7 +853,7 @@ index 8b170fb..49be44f 100644
add_library(grpc_test_util
test/core/event_engine/test_init.cc
-@@ -4019,7 +3330,7 @@ if(gRPC_INSTALL)
+@@ -4028,7 +3336,7 @@ if(gRPC_INSTALL)
)
endif()
@@ -858,7 +862,7 @@ index 8b170fb..49be44f 100644
add_library(gtest
third_party/googletest/googlemock/src/gmock-cardinalities.cc
-@@ -4745,7 +4056,7 @@ if(gRPC_INSTALL)
+@@ -4754,7 +4062,7 @@ if(gRPC_INSTALL)
endif()
endif()
@@ -867,7 +871,7 @@ index 8b170fb..49be44f 100644
add_library(grpc++_test
src/cpp/client/channel_test_peer.cc
-@@ -4818,7 +4129,7 @@ foreach(_hdr
+@@ -4827,7 +4135,7 @@ foreach(_hdr
endforeach()
endif()
@@ -876,7 +880,7 @@ index 8b170fb..49be44f 100644
add_library(grpc++_test_config
test/cpp/util/test_config_cc.cc
-@@ -4870,7 +4181,7 @@ target_link_libraries(grpc++_test_config
+@@ -4879,7 +4187,7 @@ target_link_libraries(grpc++_test_config
endif()
@@ -885,7 +889,7 @@ index 8b170fb..49be44f 100644
add_library(grpc++_test_util
src/core/util/subprocess_posix.cc
-@@ -6257,7 +5568,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
+@@ -6269,7 +5577,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
endif()
endif()
@@ -894,7 +898,7 @@ index 8b170fb..49be44f 100644
add_executable(admin_services_end2end_test
${_gRPC_PROTO_GENS_DIR}/cel/expr/checked.pb.cc
-@@ -7748,7 +7059,7 @@ target_link_libraries(arena_test
+@@ -7760,7 +7068,7 @@ target_link_libraries(arena_test
endif()
@@ -903,7 +907,7 @@ index 8b170fb..49be44f 100644
add_executable(async_end2end_test
${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/health/v1/health.pb.cc
-@@ -11787,7 +11098,7 @@ target_link_libraries(client_authority_filter_test
+@@ -11801,7 +11109,7 @@ target_link_libraries(client_authority_filter_test
endif()
@@ -912,16 +916,16 @@ index 8b170fb..49be44f 100644
add_executable(client_callback_end2end_test
${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/echo.pb.cc
-@@ -12024,7 +11335,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
+@@ -12038,7 +11346,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
endif()
endif()
-if(gRPC_BUILD_TESTS)
+if(gRPC_CF_TESTS)
- add_executable(client_interceptors_end2end_test
- ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/echo.pb.cc
-@@ -12097,7 +11408,7 @@ target_link_libraries(client_interceptors_end2end_test
+ add_executable(client_initial_metadata_outstanding_token_test
+ test/core/transport/client_initial_metadata_outstanding_token_test.cc
+@@ -12153,7 +11461,7 @@ target_link_libraries(client_interceptors_end2end_test
endif()
@@ -930,7 +934,7 @@ index 8b170fb..49be44f 100644
if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
add_executable(client_lb_end2end_test
-@@ -12854,7 +12165,7 @@ target_link_libraries(connectivity_state_test
+@@ -12910,7 +12218,7 @@ target_link_libraries(connectivity_state_test
endif()
@@ -939,7 +943,7 @@ index 8b170fb..49be44f 100644
add_executable(context_allocator_end2end_test
${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/echo.pb.cc
-@@ -13773,7 +13084,7 @@ target_link_libraries(duplicate_header_bad_client_test
+@@ -13829,7 +13137,7 @@ target_link_libraries(duplicate_header_bad_client_test
endif()
@@ -948,7 +952,7 @@ index 8b170fb..49be44f 100644
if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
add_executable(end2end_chaotic_good_no_logging_test
-@@ -13878,7 +13189,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
+@@ -13934,7 +13242,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
endif()
endif()
@@ -957,7 +961,7 @@ index 8b170fb..49be44f 100644
if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
add_executable(end2end_chaotic_good_test
-@@ -14072,7 +13383,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
+@@ -14128,7 +13436,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
endif()
endif()
@@ -966,7 +970,7 @@ index 8b170fb..49be44f 100644
add_executable(end2end_http2_no_logging_test
${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.pb.cc
-@@ -14175,7 +13486,7 @@ target_link_libraries(end2end_http2_no_logging_test
+@@ -14231,7 +13539,7 @@ target_link_libraries(end2end_http2_no_logging_test
endif()
@@ -975,7 +979,7 @@ index 8b170fb..49be44f 100644
add_executable(end2end_http2_security_no_logging_test
${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.pb.cc
-@@ -14278,7 +13589,7 @@ target_link_libraries(end2end_http2_security_no_logging_test
+@@ -14334,7 +13642,7 @@ target_link_libraries(end2end_http2_security_no_logging_test
endif()
@@ -984,7 +988,7 @@ index 8b170fb..49be44f 100644
add_executable(end2end_http2_security_test
${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.pb.cc
-@@ -14470,7 +13781,7 @@ target_link_libraries(end2end_http2_security_test
+@@ -14526,7 +13834,7 @@ target_link_libraries(end2end_http2_security_test
endif()
@@ -993,7 +997,7 @@ index 8b170fb..49be44f 100644
add_executable(end2end_http2_test
${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.pb.cc
-@@ -14662,7 +13973,7 @@ target_link_libraries(end2end_http2_test
+@@ -14718,7 +14026,7 @@ target_link_libraries(end2end_http2_test
endif()
@@ -1002,7 +1006,7 @@ index 8b170fb..49be44f 100644
add_executable(end2end_inproc_no_logging_test
${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.pb.cc
-@@ -14765,7 +14076,7 @@ target_link_libraries(end2end_inproc_no_logging_test
+@@ -14821,7 +14129,7 @@ target_link_libraries(end2end_inproc_no_logging_test
endif()
@@ -1011,7 +1015,7 @@ index 8b170fb..49be44f 100644
add_executable(end2end_inproc_test
${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.pb.cc
-@@ -14957,7 +14268,7 @@ target_link_libraries(end2end_inproc_test
+@@ -15013,7 +14321,7 @@ target_link_libraries(end2end_inproc_test
endif()
@@ -1020,7 +1024,7 @@ index 8b170fb..49be44f 100644
add_executable(end2end_ph2_no_logging_test
${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.pb.cc
-@@ -15355,7 +14666,7 @@ target_link_libraries(end2end_posix_no_logging_test
+@@ -15411,7 +14719,7 @@ target_link_libraries(end2end_posix_no_logging_test
endif()
@@ -1029,7 +1033,7 @@ index 8b170fb..49be44f 100644
add_executable(end2end_posix_test
${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.pb.cc
-@@ -15547,7 +14858,7 @@ target_link_libraries(end2end_posix_test
+@@ -15603,7 +14911,7 @@ target_link_libraries(end2end_posix_test
endif()
@@ -1038,7 +1042,25 @@ index 8b170fb..49be44f 100644
add_executable(end2end_test
${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/duplicate/echo_duplicate.pb.cc
-@@ -18006,7 +17317,7 @@ target_link_libraries(gcp_authentication_filter_test
+@@ -15680,7 +14988,7 @@ target_link_libraries(end2end_test
+
+
+ endif()
+-if(gRPC_BUILD_TESTS)
++if(gRPC_CF_TESTS)
+
+ add_executable(end2end_vrpc_no_logging_test
+ ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.pb.cc
+@@ -15784,7 +15092,7 @@ target_link_libraries(end2end_vrpc_no_logging_test
+
+
+ endif()
+-if(gRPC_BUILD_TESTS)
++if(gRPC_CF_TESTS)
+
+ add_executable(end2end_vrpc_test
+ ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.pb.cc
+@@ -18363,7 +17671,7 @@ target_link_libraries(gcp_authentication_filter_test
endif()
@@ -1047,7 +1069,7 @@ index 8b170fb..49be44f 100644
add_executable(generic_end2end_test
${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/duplicate/echo_duplicate.pb.cc
-@@ -18509,7 +17820,7 @@ target_link_libraries(grpc_authorization_policy_provider_test
+@@ -18866,7 +18174,7 @@ target_link_libraries(grpc_authorization_policy_provider_test
endif()
@@ -1056,7 +1078,7 @@ index 8b170fb..49be44f 100644
add_executable(grpc_authz_end2end_test
${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/echo.pb.cc
-@@ -19521,7 +18832,7 @@ target_link_libraries(grpclb_api_test
+@@ -19876,7 +19184,7 @@ target_link_libraries(grpclb_api_test
endif()
@@ -1065,7 +1087,7 @@ index 8b170fb..49be44f 100644
if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
add_executable(grpclb_end2end_test
-@@ -20011,7 +19322,7 @@ target_link_libraries(headers_bad_client_test
+@@ -20366,7 +19674,7 @@ target_link_libraries(headers_bad_client_test
endif()
@@ -1074,7 +1096,7 @@ index 8b170fb..49be44f 100644
add_executable(health_service_end2end_test
${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/health/v1/health.pb.cc
-@@ -20784,7 +20095,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
+@@ -21138,7 +20446,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
endif()
endif()
@@ -1083,7 +1105,7 @@ index 8b170fb..49be44f 100644
add_executable(hybrid_end2end_test
${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/duplicate/echo_duplicate.pb.cc
-@@ -24130,7 +23441,7 @@ target_link_libraries(memory_quota_test
+@@ -24436,7 +23744,7 @@ target_link_libraries(memory_quota_test
endif()
@@ -1092,7 +1114,7 @@ index 8b170fb..49be44f 100644
add_executable(memory_usage_test
src/core/lib/debug/trace.cc
-@@ -25137,7 +24448,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
+@@ -25485,7 +24793,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
endif()
endif()
@@ -1101,7 +1123,7 @@ index 8b170fb..49be44f 100644
add_executable(orca_service_end2end_test
${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/orca_service.pb.cc
-@@ -26613,7 +25924,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
+@@ -26962,7 +26270,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
endif()
endif()
@@ -1110,7 +1132,7 @@ index 8b170fb..49be44f 100644
add_executable(port_sharing_end2end_test
${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/echo.pb.cc
-@@ -29015,7 +28326,7 @@ target_link_libraries(random_early_detection_test
+@@ -29364,7 +28672,7 @@ target_link_libraries(random_early_detection_test
endif()
@@ -1119,7 +1141,7 @@ index 8b170fb..49be44f 100644
add_executable(raw_end2end_test
${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/duplicate/echo_duplicate.pb.cc
-@@ -29623,7 +28934,7 @@ target_link_libraries(resolve_address_using_native_resolver_test
+@@ -30075,7 +29383,7 @@ target_link_libraries(resolve_address_using_native_resolver_test
endif()
@@ -1128,7 +1150,7 @@ index 8b170fb..49be44f 100644
add_executable(resource_quota_end2end_stress_test
${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/echo.pb.cc
-@@ -29940,7 +29251,7 @@ target_link_libraries(ring_hash_test
+@@ -30392,7 +29700,7 @@ target_link_libraries(ring_hash_test
endif()
@@ -1137,7 +1159,7 @@ index 8b170fb..49be44f 100644
add_executable(rls_end2end_test
${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/lookup/v1/rls.pb.cc
-@@ -30950,7 +30261,7 @@ target_link_libraries(server_early_return_test
+@@ -31402,7 +30710,7 @@ target_link_libraries(server_early_return_test
endif()
@@ -1146,7 +1168,7 @@ index 8b170fb..49be44f 100644
add_executable(server_interceptors_end2end_test
${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/echo.pb.cc
-@@ -31228,7 +30539,7 @@ target_link_libraries(server_test
+@@ -31680,7 +30988,7 @@ target_link_libraries(server_test
endif()
@@ -1155,7 +1177,16 @@ index 8b170fb..49be44f 100644
add_executable(service_config_end2end_test
${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/duplicate/echo_duplicate.pb.cc
-@@ -31929,7 +31240,7 @@ target_link_libraries(sorted_pack_test
+@@ -31798,7 +31106,7 @@ target_link_libraries(service_config_test
+
+
+ endif()
+-if(gRPC_BUILD_TESTS)
++if(gRPC_CF_TESTS)
+
+ add_executable(session_end2end_test
+ ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/echo.pb.cc
+@@ -32453,7 +31761,7 @@ target_link_libraries(sorted_pack_test
endif()
@@ -1164,7 +1195,7 @@ index 8b170fb..49be44f 100644
add_executable(spiffe_bundle_map_end2end_test
${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/echo.pb.cc
-@@ -33703,7 +33014,7 @@ target_link_libraries(test_core_credentials_transport_ssl_ssl_credentials_test
+@@ -34228,7 +33536,7 @@ target_link_libraries(test_core_credentials_transport_ssl_ssl_credentials_test
endif()
@@ -1173,7 +1204,7 @@ index 8b170fb..49be44f 100644
add_executable(test_core_credentials_transport_tls_tls_credentials_test
test/core/credentials/transport/tls/tls_credentials_test.cc
-@@ -34282,7 +33593,7 @@ target_link_libraries(test_cpp_client_credentials_test
+@@ -34807,7 +34115,7 @@ target_link_libraries(test_cpp_client_credentials_test
endif()
@@ -1182,7 +1213,7 @@ index 8b170fb..49be44f 100644
add_executable(test_cpp_end2end_ssl_credentials_test
${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/echo.pb.cc
-@@ -34354,7 +33665,7 @@ target_link_libraries(test_cpp_end2end_ssl_credentials_test
+@@ -34879,7 +34187,7 @@ target_link_libraries(test_cpp_end2end_ssl_credentials_test
endif()
@@ -1191,7 +1222,7 @@ index 8b170fb..49be44f 100644
add_executable(test_cpp_end2end_tls_credentials_test
${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/echo.pb.cc
-@@ -35350,7 +34661,7 @@ target_link_libraries(tls_key_export_test
+@@ -35875,7 +35183,7 @@ target_link_libraries(tls_key_export_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 e929dd10..faa5993f 100644
--- a/recipe/patches/0011-build-grpcio-tools-from-source.patch
+++ b/recipe/patches/0011-build-grpcio-tools-from-source.patch
@@ -1,7 +1,7 @@
-From a794018ce987609c5be112b1c4a28ba6371fd97b Mon Sep 17 00:00:00 2001
+From fb360213b69720f63b31ccf4f091e5f461b544e6 Mon Sep 17 00:00:00 2001
From: "H. Vetinari"
Date: Tue, 4 Mar 2025 08:53:30 +1100
-Subject: [PATCH 11/17] build grpcio-tools from source
+Subject: [PATCH 11/18] build grpcio-tools from source
---
.../python/grpcio_tools/protoc_lib_deps.py | 30 ++++++------
@@ -9,10 +9,10 @@ Subject: [PATCH 11/17] build grpcio-tools from source
2 files changed, 51 insertions(+), 28 deletions(-)
diff --git a/tools/distrib/python/grpcio_tools/protoc_lib_deps.py b/tools/distrib/python/grpcio_tools/protoc_lib_deps.py
-index 21245be..8aeb7eb 100644
+index 8a42929c90..40ec0fc61d 100644
--- a/tools/distrib/python/grpcio_tools/protoc_lib_deps.py
+++ b/tools/distrib/python/grpcio_tools/protoc_lib_deps.py
-@@ -383,21 +383,21 @@ CC_FILES=[
+@@ -387,21 +387,21 @@ CC_FILES=[
]
PROTO_FILES=[
@@ -49,53 +49,8 @@ index 21245be..8aeb7eb 100644
]
CC_INCLUDES=[
-diff --git a/tools/distrib/python/grpcio_tools/protoc_lib_deps.py.rej b/tools/distrib/python/grpcio_tools/protoc_lib_deps.py.rej
-new file mode 100644
-index 0000000..e2a9c30
---- /dev/null
-+++ b/tools/distrib/python/grpcio_tools/protoc_lib_deps.py.rej
-@@ -0,0 +1,39 @@
-+--- tools/distrib/python/grpcio_tools/protoc_lib_deps.py
-++++ tools/distrib/python/grpcio_tools/protoc_lib_deps.py
-+@@ -383,21 +383,21 @@ CC_FILES=[
-+ ]
-+
-+ PROTO_FILES=[
-+- 'go/google/protobuf/go_features.proto',
-+- 'java/core/src/main/resources/google/protobuf/java_features.proto',
-+- 'src/google/protobuf/any.proto',
-+- 'src/google/protobuf/api.proto',
-+- 'src/google/protobuf/compiler/plugin.proto',
-+- 'src/google/protobuf/cpp_features.proto',
-+- 'src/google/protobuf/descriptor.proto',
-+- 'src/google/protobuf/duration.proto',
-+- 'src/google/protobuf/empty.proto',
-+- 'src/google/protobuf/field_mask.proto',
-+- 'src/google/protobuf/source_context.proto',
-+- 'src/google/protobuf/struct.proto',
-+- 'src/google/protobuf/timestamp.proto',
-+- 'src/google/protobuf/type.proto',
-+- 'src/google/protobuf/wrappers.proto'
-++ 'google/protobuf/go_features.proto',
-++ 'google/protobuf/java_features.proto',
-++ 'google/protobuf/any.proto',
-++ 'google/protobuf/api.proto',
-++ 'google/protobuf/compiler/plugin.proto',
-++ 'google/protobuf/cpp_features.proto',
-++ 'google/protobuf/descriptor.proto',
-++ 'google/protobuf/duration.proto',
-++ 'google/protobuf/empty.proto',
-++ 'google/protobuf/field_mask.proto',
-++ 'google/protobuf/source_context.proto',
-++ 'google/protobuf/struct.proto',
-++ 'google/protobuf/timestamp.proto',
-++ 'google/protobuf/type.proto',
-++ 'google/protobuf/wrappers.proto'
-+ ]
-+
-+ CC_INCLUDES=[
diff --git a/tools/distrib/python/grpcio_tools/setup.py b/tools/distrib/python/grpcio_tools/setup.py
-index 7370e97..3a8bb79 100644
+index f0d759dafb..32b5a4c92a 100644
--- a/tools/distrib/python/grpcio_tools/setup.py
+++ b/tools/distrib/python/grpcio_tools/setup.py
@@ -15,6 +15,7 @@
diff --git a/recipe/patches/0012-reduce-grpc-symbol-explosion-with-autogenerated-expo.patch b/recipe/patches/0012-reduce-grpc-symbol-explosion-with-autogenerated-expo.patch
index f6a89ea9..733809f3 100644
--- a/recipe/patches/0012-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 3edfe3048d631b8c52acd5bf1b3233874c82482d Mon Sep 17 00:00:00 2001
+From 9a8b13be8849b73dd4547fcd5ab106749b15b3b7 Mon Sep 17 00:00:00 2001
From: "H. Vetinari"
Date: Wed, 5 Mar 2025 13:21:01 +1100
-Subject: [PATCH 12/17] reduce grpc symbol explosion with autogenerated export
+Subject: [PATCH 12/18] reduce grpc symbol explosion with autogenerated export
definitions file
Basically, WINDOWS_EXPORT_ALL_SYMBOLS is a nuclear option that includes all symbols
@@ -38,10 +38,10 @@ other consumers end up linking to them.
1 file changed, 48 insertions(+)
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 49be44f..e2d21c6 100644
+index 5b089f177f..64088d2a54 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -2452,6 +2452,30 @@ add_library(grpc
+@@ -2457,6 +2457,30 @@ add_library(grpc
src/core/xds/xds_client/xds_client.cc
)
@@ -72,7 +72,7 @@ index 49be44f..e2d21c6 100644
target_compile_features(grpc PUBLIC cxx_std_17)
set_target_properties(grpc PROPERTIES
-@@ -3195,6 +3219,30 @@ add_library(grpc_unsecure
+@@ -3201,6 +3225,30 @@ add_library(grpc_unsecure
${gRPC_ADDITIONAL_DLL_SRC}
)
diff --git a/recipe/patches/0013-update-GRPC_DLL-instances-where-necessary.patch b/recipe/patches/0013-update-GRPC_DLL-instances-where-necessary.patch
index 576d8bdb..d36c0f6f 100644
--- a/recipe/patches/0013-update-GRPC_DLL-instances-where-necessary.patch
+++ b/recipe/patches/0013-update-GRPC_DLL-instances-where-necessary.patch
@@ -1,34 +1,35 @@
-From f2ebeb0672b8185fc0bd99f97bb1fc027f4f69b4 Mon Sep 17 00:00:00 2001
+From 3e53dcb2a4aa7fe835bb264db2f9bf8222680020 Mon Sep 17 00:00:00 2001
From: "H. Vetinari"
Date: Sun, 2 Mar 2025 07:16:19 +1100
-Subject: [PATCH 13/17] update GRPC_DLL instances where necessary
+Subject: [PATCH 13/18] 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 +-
- 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 +-
+ include/grpc/event_engine/event_engine.h | 2 +-
+ src/core/config/core_configuration.h | 2 +-
+ src/core/credentials/call/json_util.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 | 12 ++++++------
- src/core/lib/iomgr/endpoint.h | 2 +-
- 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 ++--
- 22 files changed, 37 insertions(+), 37 deletions(-)
+ src/core/lib/debug/trace_flags.h | 2 +-
+ src/core/lib/experiments/config.h | 4 ++--
+ src/core/lib/iomgr/endpoint.h | 2 +-
+ 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 ++--
+ 22 files changed, 34 insertions(+), 34 deletions(-)
+
diff --git a/include/grpc/event_engine/event_engine.h b/include/grpc/event_engine/event_engine.h
-index 47bdc8f..db74428 100644
+index 47bdc8f7d7..db7442832c 100644
--- a/include/grpc/event_engine/event_engine.h
+++ b/include/grpc/event_engine/event_engine.h
@@ -148,7 +148,7 @@ class EventEngine : public std::enable_shared_from_this,
@@ -41,7 +42,7 @@ index 47bdc8f..db74428 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 a169f3e..64ec1c6 100644
+index a169f3efc2..64ec1c6964 100644
--- a/src/core/config/core_configuration.h
+++ b/src/core/config/core_configuration.h
@@ -40,7 +40,7 @@ namespace grpc_core {
@@ -54,7 +55,7 @@ index a169f3e..64ec1c6 100644
CoreConfiguration(const CoreConfiguration&) = delete;
CoreConfiguration& operator=(const CoreConfiguration&) = delete;
diff --git a/src/core/credentials/call/json_util.h b/src/core/credentials/call/json_util.h
-index da7ff0a..d1f6a52 100644
+index da7ff0a771..d1f6a52fdf 100644
--- a/src/core/credentials/call/json_util.h
+++ b/src/core/credentials/call/json_util.h
@@ -31,7 +31,7 @@
@@ -67,7 +68,7 @@ index da7ff0a..d1f6a52 100644
grpc_error_handle* error);
diff --git a/src/core/credentials/transport/tls/spiffe_utils.h b/src/core/credentials/transport/tls/spiffe_utils.h
-index 9bf4b6d..f4cdb63 100644
+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 {
@@ -89,10 +90,10 @@ index 9bf4b6d..f4cdb63 100644
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 f0f50f9..193105a 100644
+index d1416b76dd..8880edc9c4 100644
--- a/src/core/ext/transport/chttp2/server/chttp2_server.h
+++ b/src/core/ext/transport/chttp2/server/chttp2_server.h
-@@ -234,7 +234,7 @@ class PassiveListenerImpl final : public PassiveListener {
+@@ -243,7 +243,7 @@ class PassiveListenerImpl final : public PassiveListener {
std::unique_ptr
endpoint) override ABSL_LOCKS_EXCLUDED(mu_);
@@ -102,7 +103,7 @@ index f0f50f9..193105a 100644
void ListenerDestroyed() ABSL_LOCKS_EXCLUDED(mu_);
diff --git a/src/core/ext/transport/inproc/inproc_transport.h b/src/core/ext/transport/inproc/inproc_transport.h
-index 05030d6..b1a9fe8 100644
+index 05030d6e40..b1a9fe8e9a 100644
--- a/src/core/ext/transport/inproc/inproc_transport.h
+++ b/src/core/ext/transport/inproc/inproc_transport.h
@@ -21,7 +21,7 @@
@@ -115,10 +116,10 @@ index 05030d6..b1a9fe8 100644
void* reserved);
diff --git a/src/core/lib/channel/channel_args.h b/src/core/lib/channel/channel_args.h
-index cfbc1b1..ee4414d 100644
+index 6450a9fa6a..727e938df4 100644
--- a/src/core/lib/channel/channel_args.h
+++ b/src/core/lib/channel/channel_args.h
-@@ -413,12 +413,12 @@ class ChannelArgs {
+@@ -419,12 +419,12 @@ class ChannelArgs {
using CPtr =
std::unique_ptr;
@@ -138,7 +139,7 @@ index cfbc1b1..ee4414d 100644
static ChannelArgs FromC(const grpc_channel_args* args);
static ChannelArgs FromC(const grpc_channel_args& args) {
diff --git a/src/core/lib/debug/trace_flags.h b/src/core/lib/debug/trace_flags.h
-index 362f44a..a2be3f6 100644
+index 362f44ab25..a2be3f6080 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;
@@ -151,7 +152,7 @@ index 362f44a..a2be3f6 100644
extern TraceFlag bdp_estimator_trace;
extern TraceFlag call_trace;
diff --git a/src/core/lib/experiments/config.h b/src/core/lib/experiments/config.h
-index e74f7c6..8262e87 100644
+index e74f7c6b71..8262e87816 100644
--- a/src/core/lib/experiments/config.h
+++ b/src/core/lib/experiments/config.h
@@ -64,7 +64,7 @@ class ExperimentFlags {
@@ -173,7 +174,7 @@ index e74f7c6..8262e87 100644
// Return true if experiment \a experiment_id is enabled.
diff --git a/src/core/lib/iomgr/endpoint.h b/src/core/lib/iomgr/endpoint.h
-index 77fb0d3..0497388 100644
+index 77fb0d3731..049738860b 100644
--- a/src/core/lib/iomgr/endpoint.h
+++ b/src/core/lib/iomgr/endpoint.h
@@ -87,7 +87,7 @@ void grpc_endpoint_write(
@@ -186,7 +187,7 @@ index 77fb0d3..0497388 100644
// Add an endpoint to a pollset or pollset_set, so that when the pollset is
// polled, events from this endpoint are considered
diff --git a/src/core/lib/iomgr/iomgr.h b/src/core/lib/iomgr/iomgr.h
-index 280471f..506c6e3 100644
+index 280471fae8..506c6e3682 100644
--- a/src/core/lib/iomgr/iomgr.h
+++ b/src/core/lib/iomgr/iomgr.h
@@ -42,7 +42,7 @@ void grpc_iomgr_shutdown_background_closure();
@@ -199,7 +200,7 @@ index 280471f..506c6e3 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 9ce180b..17f4846 100644
+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,
@@ -212,7 +213,7 @@ index 9ce180b..17f4846 100644
/// 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 9de5780..9f63417 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 {
@@ -225,7 +226,7 @@ index 9de5780..9f63417 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 35a0514..98bd1e6 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 {
@@ -238,10 +239,10 @@ index 35a0514..98bd1e6 100644
private:
Mutex mu_;
diff --git a/src/core/lib/surface/call.h b/src/core/lib/surface/call.h
-index 76a9476..ec6d7f5 100644
+index 348b2f71b2..ae19026c3c 100644
--- a/src/core/lib/surface/call.h
+++ b/src/core/lib/surface/call.h
-@@ -316,9 +316,9 @@ grpc_compression_algorithm grpc_call_compression_for_level(
+@@ -325,9 +325,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.
@@ -254,7 +255,7 @@ index 76a9476..ec6d7f5 100644
#endif // GRPC_SRC_CORE_LIB_SURFACE_CALL_H
diff --git a/src/core/lib/surface/completion_queue.h b/src/core/lib/surface/completion_queue.h
-index d99c7a2..d68ce75 100644
+index d99c7a248c..d68ce75f8c 100644
--- a/src/core/lib/surface/completion_queue.h
+++ b/src/core/lib/surface/completion_queue.h
@@ -55,8 +55,8 @@ void grpc_cq_internal_unref(grpc_completion_queue* cq, const char* reason,
@@ -283,7 +284,7 @@ index d99c7a2..d68ce75 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 33c6dc6..22a61a1 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 {
@@ -296,7 +297,7 @@ index 33c6dc6..22a61a1 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 7626a43..cddc0f9 100644
+index 7626a4313e..cddc0f9ddc 100644
--- a/src/core/tsi/ssl_transport_security.h
+++ b/src/core/tsi/ssl_transport_security.h
@@ -461,7 +461,7 @@ tsi_result tsi_ssl_get_cert_chain_contents(STACK_OF(X509) * peer_chain,
@@ -309,7 +310,7 @@ index 7626a43..cddc0f9 100644
#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 d422cbb..795e355 100644
+index d422cbb26a..795e355b57 100644
--- a/src/core/util/json/json_reader.cc
+++ b/src/core/util/json/json_reader.cc
@@ -942,7 +942,7 @@ absl::StatusOr JsonReader::Parse(absl::string_view input) {
@@ -322,7 +323,7 @@ index d422cbb..795e355 100644
}
diff --git a/src/core/util/json/json_reader.h b/src/core/util/json/json_reader.h
-index 7ba5220..c92f9c2 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 @@
@@ -335,7 +336,7 @@ index 7ba5220..c92f9c2 100644
} // namespace grpc_core
diff --git a/src/core/util/load_file.h b/src/core/util/load_file.h
-index 26163f5..8efaf08 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 {
@@ -348,7 +349,7 @@ index 26163f5..8efaf08 100644
} // namespace grpc_core
diff --git a/src/core/util/time.h b/src/core/util/time.h
-index 1de2b4f..209f23a 100644
+index 1de2b4ff99..209f23af56 100644
--- a/src/core/util/time.h
+++ b/src/core/util/time.h
@@ -104,7 +104,7 @@ class Timestamp {
diff --git a/recipe/patches/0014-use-protobuf-s-libutf8_range.patch b/recipe/patches/0014-use-protobuf-s-libutf8_range.patch
index fab082e3..22f75dec 100644
--- a/recipe/patches/0014-use-protobuf-s-libutf8_range.patch
+++ b/recipe/patches/0014-use-protobuf-s-libutf8_range.patch
@@ -1,17 +1,17 @@
-From 6bf924a082559c50deb89c55d89e134c8ec59006 Mon Sep 17 00:00:00 2001
+From 98a8a881d8db626762e5e7f4e7810b2327d8aaef Mon Sep 17 00:00:00 2001
From: "H. Vetinari"
Date: Sat, 10 Jan 2026 20:43:11 +1100
-Subject: [PATCH 14/17] use protobuf's libutf8_range
+Subject: [PATCH 14/18] use protobuf's libutf8_range
---
CMakeLists.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index e2d21c6..a9acf34 100644
+index 64088d2a54..65b5e0a6ab 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -5098,7 +5098,7 @@ target_include_directories(grpc_plugin_support
+@@ -5105,7 +5105,7 @@ target_include_directories(grpc_plugin_support
)
target_link_libraries(grpc_plugin_support
${_gRPC_ALLTARGETS_LIBRARIES}
diff --git a/recipe/patches/0015-disable-grpc-_unsecure.patch b/recipe/patches/0015-disable-grpc-_unsecure.patch
index f028e4b9..8ddc5849 100644
--- a/recipe/patches/0015-disable-grpc-_unsecure.patch
+++ b/recipe/patches/0015-disable-grpc-_unsecure.patch
@@ -1,7 +1,7 @@
-From 16f407dec4dc5d01d22f88a52673dd62811cdb38 Mon Sep 17 00:00:00 2001
+From c3ce73eca20b3e10dcb1a809816e287ace93f40b Mon Sep 17 00:00:00 2001
From: "H. Vetinari"
Date: Sun, 11 Jan 2026 22:45:25 +1100
-Subject: [PATCH 15/17] disable grpc{,++}_unsecure
+Subject: [PATCH 15/18] 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
@@ -19,10 +19,10 @@ the avoidance of which is the entire point of `grpc_unsecure`.
1 file changed, 18 insertions(+), 10 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index a9acf34..59cb355 100644
+index 65b5e0a6ab..0832c74900 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -2689,7 +2689,7 @@ endif()
+@@ -2694,7 +2694,7 @@ endif()
endif()
@@ -31,7 +31,7 @@ index a9acf34..59cb355 100644
add_library(grpc_test_util_unsecure
test/core/event_engine/test_init.cc
-@@ -2765,6 +2765,7 @@ endif()
+@@ -2770,6 +2770,7 @@ endif()
endif()
@@ -39,7 +39,7 @@ index a9acf34..59cb355 100644
add_library(grpc_unsecure
src/core/call/call_arena_allocator.cc
src/core/call/call_filters.cc
-@@ -3309,6 +3310,7 @@ target_link_libraries(grpc_unsecure
+@@ -3315,6 +3316,7 @@ target_link_libraries(grpc_unsecure
if(_gRPC_PLATFORM_IOS OR _gRPC_PLATFORM_MAC)
target_link_libraries(grpc_unsecure PUBLIC "-framework CoreFoundation")
endif()
@@ -47,7 +47,7 @@ index a9acf34..59cb355 100644
foreach(_hdr
include/grpc/byte_buffer.h
-@@ -3369,7 +3371,7 @@ foreach(_hdr
+@@ -3375,7 +3377,7 @@ foreach(_hdr
endforeach()
@@ -56,7 +56,7 @@ index a9acf34..59cb355 100644
install(TARGETS grpc_unsecure EXPORT gRPCTargets
RUNTIME DESTINATION ${gRPC_INSTALL_BINDIR}
BUNDLE DESTINATION ${gRPC_INSTALL_BINDIR}
-@@ -4294,6 +4296,7 @@ target_link_libraries(grpc++_test_util
+@@ -4300,6 +4302,7 @@ target_link_libraries(grpc++_test_util
endif()
@@ -64,7 +64,7 @@ index a9acf34..59cb355 100644
add_library(grpc++_unsecure
src/core/client_channel/virtual_channel.cc
src/cpp/client/call_context_registry.cc
-@@ -4388,6 +4391,7 @@ target_link_libraries(grpc++_unsecure
+@@ -4395,6 +4398,7 @@ target_link_libraries(grpc++_unsecure
grpc_unsecure
${_gRPC_PROTOBUF_LIBRARIES}
)
@@ -72,7 +72,7 @@ index a9acf34..59cb355 100644
foreach(_hdr
include/grpc++/alarm.h
-@@ -4610,7 +4614,7 @@ foreach(_hdr
+@@ -4617,7 +4621,7 @@ foreach(_hdr
endforeach()
@@ -81,7 +81,7 @@ index a9acf34..59cb355 100644
install(TARGETS grpc++_unsecure EXPORT gRPCTargets
RUNTIME DESTINATION ${gRPC_INSTALL_BINDIR}
BUNDLE DESTINATION ${gRPC_INSTALL_BINDIR}
-@@ -5564,7 +5568,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
+@@ -5573,7 +5577,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
endif()
endif()
@@ -90,7 +90,7 @@ index a9acf34..59cb355 100644
if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
add_executable(address_sorting_test_unsecure
-@@ -6195,7 +6199,7 @@ target_link_libraries(admin_services_end2end_test
+@@ -6204,7 +6208,7 @@ target_link_libraries(admin_services_end2end_test
endif()
@@ -99,7 +99,7 @@ index a9acf34..59cb355 100644
if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
add_executable(alarm_test
-@@ -16406,7 +16410,7 @@ target_link_libraries(filter_fusion_test
+@@ -16756,7 +16760,7 @@ target_link_libraries(filter_fusion_test
endif()
@@ -108,7 +108,7 @@ index a9acf34..59cb355 100644
add_executable(filter_test_test
${_gRPC_PROTO_GENS_DIR}/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.pb.cc
-@@ -25342,7 +25346,7 @@ target_link_libraries(parser_test
+@@ -25687,7 +25691,7 @@ target_link_libraries(parser_test
endif()
@@ -117,7 +117,7 @@ index a9acf34..59cb355 100644
if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
add_executable(party_mpsc_test
-@@ -25386,7 +25390,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
+@@ -25731,7 +25735,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
endif()
endif()
@@ -126,7 +126,7 @@ index a9acf34..59cb355 100644
add_executable(party_test
test/core/promise/party_test.cc
-@@ -29920,7 +29924,7 @@ target_link_libraries(server_builder_plugin_test
+@@ -30369,7 +30373,7 @@ target_link_libraries(server_builder_plugin_test
endif()
@@ -135,7 +135,7 @@ index a9acf34..59cb355 100644
if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
add_executable(server_builder_test
-@@ -29995,7 +29999,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
+@@ -30444,7 +30448,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
endif()
endif()
@@ -144,7 +144,7 @@ index a9acf34..59cb355 100644
if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
add_executable(server_builder_with_socket_mutator_test
-@@ -53574,6 +53578,7 @@ generate_pkgconfig(
+@@ -54093,6 +54097,7 @@ generate_pkgconfig(
"-laddress_sorting"
"grpc.pc")
@@ -152,7 +152,7 @@ index a9acf34..59cb355 100644
# grpc_unsecure .pc file
generate_pkgconfig(
"gRPC unsecure"
-@@ -53584,6 +53589,7 @@ generate_pkgconfig(
+@@ -54103,6 +54108,7 @@ generate_pkgconfig(
"-lgrpc_unsecure -lupb"
"-laddress_sorting"
"grpc_unsecure.pc")
@@ -160,7 +160,7 @@ index a9acf34..59cb355 100644
# grpc++ .pc file
generate_pkgconfig(
-@@ -53596,6 +53602,7 @@ generate_pkgconfig(
+@@ -54115,6 +54121,7 @@ generate_pkgconfig(
"-laddress_sorting"
"grpc++.pc")
@@ -168,7 +168,7 @@ index a9acf34..59cb355 100644
# grpc++_unsecure .pc file
generate_pkgconfig(
"gRPC++ unsecure"
-@@ -53606,6 +53613,7 @@ generate_pkgconfig(
+@@ -54125,6 +54132,7 @@ generate_pkgconfig(
"-lgrpc++_unsecure -lupb"
"-laddress_sorting"
"grpc++_unsecure.pc")
diff --git a/recipe/patches/0016-break-out-_initialize_absl-into-separate-cython-modu.patch b/recipe/patches/0016-break-out-_initialize_absl-into-separate-cython-modu.patch
index d2a3e983..f97492f1 100644
--- a/recipe/patches/0016-break-out-_initialize_absl-into-separate-cython-modu.patch
+++ b/recipe/patches/0016-break-out-_initialize_absl-into-separate-cython-modu.patch
@@ -1,7 +1,7 @@
-From 422f418559090eb91ff1609b2a7547ff9fee8b9a Mon Sep 17 00:00:00 2001
+From 9506087de3c749a0b081eb8518eba341ac4d9e98 Mon Sep 17 00:00:00 2001
From: "H. Vetinari"
Date: Sat, 21 Feb 2026 14:29:28 +1100
-Subject: [PATCH 16/17] break out _initialize_absl into separate cython module
+Subject: [PATCH 16/18] break out _initialize_absl into separate cython module
---
setup.py | 3 ++-
@@ -15,7 +15,7 @@ Subject: [PATCH 16/17] break out _initialize_absl into separate cython module
rename src/python/grpcio/grpc/_cython/{_cygrpc/absl.pyx.pxi => cygrpc_absl_init.pyx} (98%)
diff --git a/setup.py b/setup.py
-index dbd69dc..ed32051 100644
+index dbd69dc50e..ed32051472 100644
--- a/setup.py
+++ b/setup.py
@@ -308,7 +308,7 @@ if BUILD_WITH_STATIC_LIBSTDCXX:
@@ -36,12 +36,12 @@ index dbd69dc..ed32051 100644
libraries=list(EXTENSION_LIBRARIES),
define_macros=list(DEFINE_MACROS),
diff --git a/src/python/grpcio/grpc/__init__.py b/src/python/grpcio/grpc/__init__.py
-index e053e4f..5cbf218 100644
+index efee8bcfcb..3d872c73dc 100644
--- a/src/python/grpcio/grpc/__init__.py
+++ b/src/python/grpcio/grpc/__init__.py
-@@ -19,6 +19,9 @@ import enum
- import logging
- import sys
+@@ -21,6 +21,9 @@ import sys
+ import typing
+ from typing import Any, Protocol
+# ensure _initialize_absl() gets called before anything else, c.f. #38703
+import grpc._cython.cygrpc_absl_init
@@ -50,7 +50,7 @@ index e053e4f..5cbf218 100644
from grpc._cython import cygrpc as _cygrpc
from grpc._runtime_protos import protos
diff --git a/src/python/grpcio/grpc/_cython/cygrpc.pxd b/src/python/grpcio/grpc/_cython/cygrpc.pxd
-index 2cf29d0..38d5500 100644
+index 2cf29d0816..38d5500ae4 100644
--- a/src/python/grpcio/grpc/_cython/cygrpc.pxd
+++ b/src/python/grpcio/grpc/_cython/cygrpc.pxd
@@ -17,8 +17,6 @@ cimport cpython
@@ -63,7 +63,7 @@ index 2cf29d0..38d5500 100644
include "_cygrpc/call.pxd.pxi"
include "_cygrpc/channel.pxd.pxi"
diff --git a/src/python/grpcio/grpc/_cython/cygrpc.pyx b/src/python/grpcio/grpc/_cython/cygrpc.pyx
-index b3acae4..79cd0f8 100644
+index b3acae4aa3..79cd0f878d 100644
--- a/src/python/grpcio/grpc/_cython/cygrpc.pyx
+++ b/src/python/grpcio/grpc/_cython/cygrpc.pyx
@@ -37,7 +37,6 @@ _LOGGER = logging.getLogger(__name__)
@@ -82,7 +82,7 @@ diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/absl.pyx.pxi b/src/python/gr
similarity index 98%
rename from src/python/grpcio/grpc/_cython/_cygrpc/absl.pyx.pxi
rename to src/python/grpcio/grpc/_cython/cygrpc_absl_init.pyx
-index f38a8f5..859bd06 100644
+index f38a8f5b57..859bd062f1 100644
--- a/src/python/grpcio/grpc/_cython/_cygrpc/absl.pyx.pxi
+++ b/src/python/grpcio/grpc/_cython/cygrpc_absl_init.pyx
@@ -12,6 +12,7 @@
diff --git a/recipe/patches/0017-fix-double-metric-registration-across-shared-librari.patch b/recipe/patches/0017-fix-double-metric-registration-across-shared-librari.patch
deleted file mode 100644
index 17d86dc9..00000000
--- a/recipe/patches/0017-fix-double-metric-registration-across-shared-librari.patch
+++ /dev/null
@@ -1,156 +0,0 @@
-From 9d23935a1162f212cb94752525bc644d742b27b9 Mon Sep 17 00:00:00 2001
-From: "H. Vetinari"
-Date: Fri, 20 Mar 2026 16:40:03 +1100
-Subject: [PATCH 17/17] fix double metric registration across shared libraries
- (libgrpc/libgrpc++)
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-ResourceQuotaDomain's 5 metrics were defined as `static inline` data
-members in telemetry.h. Each DSO that transitively includes this header
-(via memory_quota.h) gets its own copy of the initializers, causing
-duplicate registration in InstrumentIndex when both libgrpc.so and
-libgrpc++.so are loaded — even though libgrpc++ never uses the metrics.
-
-Convert to function-local statics (Meyers singletons), which are only
-initialized on first call. Since libgrpc++ never calls these methods,
-no registration occurs there.
-
-Co-Authored-By: Claude Opus 4.6
----
- .../chttp2/transport/chttp2_transport.cc | 4 +-
- .../ext/transport/chttp2/transport/parsing.cc | 2 +-
- src/core/lib/resource_quota/memory_quota.cc | 4 +-
- src/core/lib/resource_quota/telemetry.h | 67 ++++++++++++-------
- 4 files changed, 49 insertions(+), 28 deletions(-)
-
-diff --git a/src/core/ext/transport/chttp2/transport/chttp2_transport.cc b/src/core/ext/transport/chttp2/transport/chttp2_transport.cc
-index 0a7828b..6744f46 100644
---- a/src/core/ext/transport/chttp2/transport/chttp2_transport.cc
-+++ b/src/core/ext/transport/chttp2/transport/chttp2_transport.cc
-@@ -3431,7 +3431,7 @@ static void benign_reclaimer_locked(
- // Channel with no active streams: send a goaway to try and make it
- // disconnect cleanly
- t->resource_quota_telemetry_storage->Increment(
-- grpc_core::ResourceQuotaDomain::kConnectionsDropped);
-+ grpc_core::ResourceQuotaDomain::kConnectionsDropped());
- GRPC_TRACE_LOG(resource_quota, INFO)
- << "HTTP2: " << t->peer_string.as_string_view()
- << " - send goaway to free memory";
-@@ -3463,7 +3463,7 @@ static void destructive_reclaimer_locked(
- << "HTTP2: " << t->peer_string.as_string_view()
- << " - abandon stream id " << s->id;
- t->resource_quota_telemetry_storage->Increment(
-- grpc_core::ResourceQuotaDomain::kCallsDropped);
-+ grpc_core::ResourceQuotaDomain::kCallsDropped());
- grpc_chttp2_cancel_stream(
- t.get(), s,
- grpc_error_set_int(
-diff --git a/src/core/ext/transport/chttp2/transport/parsing.cc b/src/core/ext/transport/chttp2/transport/parsing.cc
-index 46d4419..05696d8 100644
---- a/src/core/ext/transport/chttp2/transport/parsing.cc
-+++ b/src/core/ext/transport/chttp2/transport/parsing.cc
-@@ -676,7 +676,7 @@ static grpc_error_handle init_header_frame_parser(grpc_chttp2_transport* t,
- // We have more streams allocated than we'd like, so apply some pushback
- // by refusing this stream.
- t->memory_owner.telemetry_storage()->Increment(
-- grpc_core::ResourceQuotaDomain::kCallsRejected);
-+ grpc_core::ResourceQuotaDomain::kCallsRejected());
- ++t->num_pending_induced_frames;
- grpc_slice_buffer_add(
- &t->qbuf, grpc_chttp2_rst_stream_create(
-diff --git a/src/core/lib/resource_quota/memory_quota.cc b/src/core/lib/resource_quota/memory_quota.cc
-index 3f2521a..4e06f9d 100644
---- a/src/core/lib/resource_quota/memory_quota.cc
-+++ b/src/core/lib/resource_quota/memory_quota.cc
-@@ -717,9 +717,9 @@ BasicMemoryQuota::PressureInfo BasicMemoryQuota::GetPressureInfo() {
-
- void BasicMemoryQuota::PopulateGaugeData(GaugeSink& sink) {
- auto pressure_info = GetPressureInfo();
-- sink.Set(ResourceQuotaDomain::kInstantaneousMemoryPressure,
-+ sink.Set(ResourceQuotaDomain::kInstantaneousMemoryPressure(),
- pressure_info.instantaneous_pressure);
-- sink.Set(ResourceQuotaDomain::kMemoryPressureControlValue,
-+ sink.Set(ResourceQuotaDomain::kMemoryPressureControlValue(),
- pressure_info.pressure_control_value);
- }
-
-diff --git a/src/core/lib/resource_quota/telemetry.h b/src/core/lib/resource_quota/telemetry.h
-index 058471e..e16bb53 100644
---- a/src/core/lib/resource_quota/telemetry.h
-+++ b/src/core/lib/resource_quota/telemetry.h
-@@ -25,29 +25,50 @@ class ResourceQuotaDomain final : public InstrumentDomain {
- using Backend = HighContentionBackend;
- static constexpr absl::string_view kName = "resource_quota";
-
-- static inline const auto kCallsDropped = RegisterCounter(
-- "grpc.resource_quota.calls_dropped",
-- "EXPERIMENTAL. Number of calls dropped due to resource quota "
-- "exceeded",
-- "calls");
-- static inline const auto kCallsRejected = RegisterCounter(
-- "grpc.resource_quota.calls_rejected",
-- "EXPERIMENTAL. Number of calls rejected due to resource quota "
-- "exceeded",
-- "calls");
-- static inline const auto kConnectionsDropped = RegisterCounter(
-- "grpc.resource_quota.connections_dropped",
-- "EXPERIMENTAL. Number of connections dropped due to resource quota "
-- "exceeded",
-- "connections");
-- static inline const auto kInstantaneousMemoryPressure = RegisterDoubleGauge(
-- "grpc.resource_quota.instantaneous_memory_pressure",
-- "The current instantaneously measured memory pressure.", "ratio");
-- static inline const auto kMemoryPressureControlValue = RegisterDoubleGauge(
-- "grpc.resource_quota.memory_pressure_control_value",
-- "A control value that can be used to scale buffer sizes up or down to "
-- "adjust memory pressure to our target set point.",
-- "ratio");
-+ // Use function-local statics (Meyers singletons) instead of static inline
-+ // data members to ensure lazy initialization on first use. This avoids
-+ // duplicate metric registration when the header is transitively included by
-+ // translation units compiled into different shared libraries (e.g. libgrpc
-+ // and libgrpc++), where each DSO's .init_array would otherwise run its own
-+ // copy of the static inline initializers.
-+ static const auto& kCallsDropped() {
-+ static const auto handle = RegisterCounter(
-+ "grpc.resource_quota.calls_dropped",
-+ "EXPERIMENTAL. Number of calls dropped due to resource quota "
-+ "exceeded",
-+ "calls");
-+ return handle;
-+ }
-+ static const auto& kCallsRejected() {
-+ static const auto handle = RegisterCounter(
-+ "grpc.resource_quota.calls_rejected",
-+ "EXPERIMENTAL. Number of calls rejected due to resource quota "
-+ "exceeded",
-+ "calls");
-+ return handle;
-+ }
-+ static const auto& kConnectionsDropped() {
-+ static const auto handle = RegisterCounter(
-+ "grpc.resource_quota.connections_dropped",
-+ "EXPERIMENTAL. Number of connections dropped due to resource quota "
-+ "exceeded",
-+ "connections");
-+ return handle;
-+ }
-+ static const auto& kInstantaneousMemoryPressure() {
-+ static const auto handle = RegisterDoubleGauge(
-+ "grpc.resource_quota.instantaneous_memory_pressure",
-+ "The current instantaneously measured memory pressure.", "ratio");
-+ return handle;
-+ }
-+ static const auto& kMemoryPressureControlValue() {
-+ static const auto handle = RegisterDoubleGauge(
-+ "grpc.resource_quota.memory_pressure_control_value",
-+ "A control value that can be used to scale buffer sizes up or down to "
-+ "adjust memory pressure to our target set point.",
-+ "ratio");
-+ return handle;
-+ }
- };
-
- } // namespace grpc_core
diff --git a/recipe/patches/0018-silence-absl-MutexLock-pointer-deprecation-warnings.patch b/recipe/patches/0017-silence-absl-MutexLock-pointer-deprecation-warnings.patch
similarity index 91%
rename from recipe/patches/0018-silence-absl-MutexLock-pointer-deprecation-warnings.patch
rename to recipe/patches/0017-silence-absl-MutexLock-pointer-deprecation-warnings.patch
index 888dbcfa..9866a89e 100644
--- a/recipe/patches/0018-silence-absl-MutexLock-pointer-deprecation-warnings.patch
+++ b/recipe/patches/0017-silence-absl-MutexLock-pointer-deprecation-warnings.patch
@@ -1,7 +1,7 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From 43cce39c1c324528114b2bd7b35e332a021272fa Mon Sep 17 00:00:00 2001
From: Julien Jerphanion
-Date: Mon, 9 Jun 2026 12:00:00 +0000
-Subject: [PATCH 18/18] silence absl MutexLock pointer deprecation warnings
+Date: Tue, 9 Jun 2026 12:00:00 +0000
+Subject: [PATCH 17/18] silence absl MutexLock pointer deprecation warnings
Newer abseil versions deprecate absl::MutexLock(Mutex*) in favor of
MutexLock(Mutex&). gRPC still uses the pointer form in hundreds of
@@ -10,9 +10,9 @@ places, which spams -Wdeprecated-declarations during test builds.
Provide thin grpc_core/grpc::internal wrappers that accept Mutex* but
delegate to absl's reference-taking constructors.
---
- include/grpcpp/impl/sync.h | 31 +++++++++++++++++++++++++++++--
- src/core/util/sync.h | 31 +++++++++++++++++++++++++++++--
- 2 files changed, 58 insertions(+), 4 deletions(-)
+ include/grpcpp/impl/sync.h | 33 +++++++++++++++++++++++++++++++--
+ src/core/util/sync.h | 33 +++++++++++++++++++++++++++++++--
+ 2 files changed, 62 insertions(+), 4 deletions(-)
diff --git a/include/grpcpp/impl/sync.h b/include/grpcpp/impl/sync.h
index dcd4dcd1e8..66001ec63e 100644
diff --git a/recipe/patches/0019-silence-absl-Mutex-Lock-Unlock-deprecation-warnings.patch b/recipe/patches/0018-silence-absl-Mutex-Lock-Unlock-deprecation-warnings.patch
similarity index 88%
rename from recipe/patches/0019-silence-absl-Mutex-Lock-Unlock-deprecation-warnings.patch
rename to recipe/patches/0018-silence-absl-Mutex-Lock-Unlock-deprecation-warnings.patch
index 716c5f09..5f77883b 100644
--- a/recipe/patches/0019-silence-absl-Mutex-Lock-Unlock-deprecation-warnings.patch
+++ b/recipe/patches/0018-silence-absl-Mutex-Lock-Unlock-deprecation-warnings.patch
@@ -1,7 +1,7 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From 2c846440f40e63a3ad7dbbec286fbe41e7e6feb9 Mon Sep 17 00:00:00 2001
From: Julien Jerphanion
-Date: Mon, 9 Jun 2026 12:30:00 +0000
-Subject: [PATCH 19/19] silence absl Mutex Lock/Unlock deprecation warnings
+Date: Tue, 9 Jun 2026 12:30:00 +0000
+Subject: [PATCH 18/18] silence absl Mutex Lock/Unlock deprecation warnings
Newer abseil versions deprecate absl::Mutex::Lock()/Unlock()/TryLock() in
favor of lock()/unlock()/try_lock(). gRPC still uses the CamelCase names
@@ -18,7 +18,7 @@ gpr_mu compatibility layer.
3 files changed, 26 insertions(+), 5 deletions(-)
diff --git a/include/grpcpp/impl/sync.h b/include/grpcpp/impl/sync.h
-index 66001ec63e..a1b2c3d4e5 100644
+index 66001ec63e..148ccc3d14 100644
--- a/include/grpcpp/impl/sync.h
+++ b/include/grpcpp/impl/sync.h
@@ -47,7 +47,16 @@ namespace internal {
@@ -40,7 +40,7 @@ index 66001ec63e..a1b2c3d4e5 100644
// absl deprecated MutexLock(Mutex*) in favor of MutexLock(Mutex&), but grpc
diff --git a/src/core/util/sync.h b/src/core/util/sync.h
-index 33c7c13a73..b2c3d4e5f6 100644
+index 33c7c13a73..2d8d8ab136 100644
--- a/src/core/util/sync.h
+++ b/src/core/util/sync.h
@@ -43,7 +43,19 @@ namespace grpc_core {
@@ -65,10 +65,12 @@ index 33c7c13a73..b2c3d4e5f6 100644
// absl deprecated MutexLock(Mutex*) in favor of MutexLock(Mutex&), but grpc
diff --git a/src/core/util/sync_abseil.cc b/src/core/util/sync_abseil.cc
-index 1234567890..abcdef1234 100644
+index d1cd7f71a3..8a38a24497 100644
--- a/src/core/util/sync_abseil.cc
+++ b/src/core/util/sync_abseil.cc
-@@ -45,11 +45,11 @@ void gpr_mu_destroy(gpr_mu* mu) {
+@@ -43,15 +43,15 @@ void gpr_mu_destroy(gpr_mu* mu) {
+ }
+
void gpr_mu_lock(gpr_mu* mu) ABSL_NO_THREAD_SAFETY_ANALYSIS {
- reinterpret_cast(mu)->Lock();
+ reinterpret_cast(mu)->lock();
@@ -83,3 +85,5 @@ index 1234567890..abcdef1234 100644
- return reinterpret_cast(mu)->TryLock();
+ return reinterpret_cast(mu)->try_lock();
}
+
+ //----------------------------------------
|