Repository navigation
GH-55165: [C++] Force newer versions of Brotli - #55167
CurtHagenlocher wants to merge 3 commits into
Conversation
|
|
There was a problem hiding this comment.
🟡 Changes recommended
The Windows wheel image revision must also change to prevent cached images from bypassing the Brotli upgrade.
1 open issue
What changed in this PR
This PR updates bundled Brotli versions across Arrow’s C++ build paths, addressing GH-55165.
Changes:
- Updates the CMake dependency pin to Brotli 1.0.10 and its checksum.
- Updates the Meson fallback to Brotli 1.1.1 with local build definitions and licensing.
- Patches vcpkg to use Brotli 1.2.1 with an updated checksum.
| File | Description |
|---|---|
cpp/thirdparty/versions.txt |
Updates the bundled Brotli version and checksum. |
cpp/subprojects/packagefiles/google-brotli/meson.build |
Adds local Meson build definitions for Brotli. |
cpp/subprojects/packagefiles/google-brotli/LICENSE.build |
Includes licensing for the Meson build definitions. |
cpp/subprojects/google-brotli.wrap |
Updates the source archive and selects the local build overlay. |
ci/vcpkg/ports.patch |
Updates the vcpkg Brotli version and checksum. |
Review effort: Balanced
…image - Apply meson-fmt to the vendored google-brotli meson.build (whitespace only). - Bump PYTHON_WHEEL_WINDOWS_IMAGE_REVISION so Windows wheel CI rebuilds its cached image with the patched vcpkg brotli 1.2.1 port instead of reusing the existing image built with 1.2.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@github-actions crossbow submit wheel-windows-* |
|
Revision: 747092e Submitted crossbow builds: ursacomputing/crossbow @ actions-41b08c9f7f |
CVE-2026-111497 (Brotli decoder out-of-bounds write) affects the Brotli 1.0.9 that Arrow 18 bundles. Apache Arrow ships fixes only in new major versions — the Brotli update (apache/arrow#55167, unmerged) targets main — so `pyarrow~=18.0` could never take it. pyarrow is now `>=18.0`; a rebuild installs 26.0.0 today (not fixed yet either) and the first fixed major on the rebuild after it ships. The manifest advertises the same constraint. The other packages keep `~=`: pandas 3, polars 2, DuckDB 2 and Pillow 13 change the API LLM-written code uses. With pyarrow 26.0.0, pandas 2.3.3, polars 1.44.2 and DuckDB 1.5.6, `pip check` is clean and parquet / DataFrame / DuckDB round-trips match pyarrow 18.1.0. ADR-0007 is amended and records what this release does not fix: DuckDB's vendored Brotli 1.1.0 (upstream fix unmerged) and Pillow's bundled libbrotlidec (WOFF2 only, not reached here). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
raulcd
left a comment
There was a problem hiding this comment.
Thanks for pushing this @CurtHagenlocher
| @@ -1,3 +1,28 @@ | |||
| diff --git a/ports/brotli/portfile.cmake b/ports/brotli/portfile.cmake | |||
| index e55c69c3d1..7d7cb1d67e 100644 | |||
| --- a/ports/brotli/portfile.cmake | |||
There was a problem hiding this comment.
This is not necessary. We can bump the vcpkg version used on .env and avoid this patch.
| @@ -0,0 +1,19 @@ | |||
| Copyright (c) 2021 The Meson development team | |||
There was a problem hiding this comment.
None of this chanegs under cpp/subprojects/google-brotli seem necessary to me.
| ARROW_BOOST_BUILD_SHA256_CHECKSUM=f51707c27359a0df0cac1beada86de31bb5eed5e8285592dadec384df99c2984 | ||
| ARROW_BROTLI_BUILD_VERSION=v1.0.9 | ||
| ARROW_BROTLI_BUILD_SHA256_CHECKSUM=f9e8d81d0405ba66d181529af42a3354f838c939095ff99930da6aa9cdf6fe46 | ||
| ARROW_BROTLI_BUILD_VERSION=v1.0.10 |
There was a problem hiding this comment.
Is there any reason we don't bump to something newer here? Given that we are bumping our bundle dependency we could try and bump to latest (1.2.1) unless other dependencies have other constraints.
There was a problem hiding this comment.
A basic conservatism, I suppose. Given that 1.0, 1.1 and 1.2 were all patched, it seemed possible that there were some incompatibilities between them. We could try 1.2.1 and see if anything breaks.
- Bump the vcpkg pin (.env, cpp/vcpkg.json, c_glib/vcpkg.json) to 61d7eaeb, the upstream commit that updates the brotli port to 1.2.1, and drop the brotli hunk from ci/vcpkg/ports.patch. - Drop the llvm hunk from ci/vcpkg/ports.patch: upstream restructured the port and the hunk no longer applies. - Revert the PYTHON_WHEEL_WINDOWS_IMAGE_REVISION bump; the image tag already changes with VCPKG. - Bump the bundled Brotli to v1.2.1. Brotli >= 1.1.0 names static libraries without the "-static" suffix and installs normally on Emscripten, so update build_brotli accordingly and stop building the CLI tool and tests. - Revert the Meson wrap changes; the C++ Meson build isn't used for any released artifact, so keep tracking WrapDB. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Rationale for this change
It seemed like a good time for a change.
What changes are included in this PR?
Newer versions of the Brotli dependency are forced by the build.
Are these changes tested?
Presumably the relevant code paths already have tests.
Are there any user-facing changes?
No.
Was AI used for this PR?
PR code and description written by:
Reviewed before submission by: