Skip to content

GH-55165: [C++] Force newer versions of Brotli - #55167

Open
CurtHagenlocher wants to merge 6 commits into
apache:mainfrom
CurtHagenlocher:newer_brotli
Open

CurtHagenlocher wants to merge 6 commits into
apache:mainfrom
CurtHagenlocher:newer_brotli

Conversation

@CurtHagenlocher

@CurtHagenlocher CurtHagenlocher commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

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:

  • Human
  • AI

Reviewed before submission by:

  • Human
  • AI
  • Not reviewed

Copilot AI balanced review requested due to automatic review settings October 23, 2026 23:40
@github-actions

Copy link
Copy Markdown

⚠️ GitHub issue #55165 has been automatically assigned in GitHub to PR creator.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 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

Comment thread ci/vcpkg/ports.patch Outdated
Copilot AI balanced review requested due to automatic review settings October 23, 2026 23:51

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Compatibility of the new patch with the inaccessible pinned vcpkg port remains unverified and needs CI or human confirmation.

No open issues 🎉

1 resolved since last review

Review effort: Balanced

@CurtHagenlocher

Copy link
Copy Markdown
Contributor Author

@github-actions crossbow submit wheel-windows-*

@github-actions

Copy link
Copy Markdown

Revision: 747092e

Submitted crossbow builds: ursacomputing/crossbow @ actions-41b08c9f7f

Task Status
wheel-windows-cp311-cp311-amd64 GitHub Actions
wheel-windows-cp312-cp312-amd64 GitHub Actions
wheel-windows-cp313-cp313-amd64 GitHub Actions
wheel-windows-cp314-cp314-amd64 GitHub Actions
wheel-windows-cp314-cp314t-amd64 GitHub Actions
wheel-windows-cp315-cp315-amd64 GitHub Actions
wheel-windows-cp315-cp315t-amd64 GitHub Actions

@github-actions github-actions Bot added awaiting merge Awaiting merge and removed awaiting review Awaiting review labels Oct 24, 2026
magifd2 added a commit to nlink-jp/data-toolbox-mcp that referenced this pull request Oct 25, 2026
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 <[email protected]>

@raulcd raulcd left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for pushing this @CurtHagenlocher

Comment thread ci/vcpkg/ports.patch Outdated
Comment thread cpp/subprojects/packagefiles/google-brotli/LICENSE.build Outdated
Comment thread cpp/thirdparty/versions.txt Outdated
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

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@github-actions github-actions Bot added awaiting changes Awaiting changes and removed awaiting merge Awaiting merge labels Oct 26, 2026
Copilot AI balanced review requested due to automatic review settings October 26, 2026 12:24
@github-actions github-actions Bot added Component: GLib and removed awaiting changes Awaiting changes labels Oct 26, 2026
@github-actions github-actions Bot added the awaiting change review Awaiting change review label Oct 26, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Compatibility of the broader vcpkg update with the remaining local port patches is unverified and needs human confirmation.

No open issues 🎉

Review effort: Balanced

@hiyasichuka

Copy link
Copy Markdown

Could we rerun the Crossbow Windows wheel builds for the latest revision (8f4c06d)? The results linked above are for 747092e, before the vcpkg baseline update. It would be helpful to verify the latest wheel build and confirm that it includes Brotli 1.2.1.

Copilot AI balanced review requested due to automatic review settings October 27, 2026 16:45
CurtHagenlocher and others added 4 commits October 27, 2026 17:46
…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 <[email protected]>
- 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 <[email protected]>
@github-actions github-actions Bot added awaiting change review Awaiting change review and removed awaiting changes Awaiting changes labels Oct 27, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The broad vcpkg refresh and platform-specific build and linkage changes require cross-platform CI validation and human review.

No open issues 🎉

1 resolved since last review

Review effort: Balanced

@raulcd

raulcd commented Oct 27, 2026

Copy link
Copy Markdown
Member

@CurtHagenlocher let me know if I can follow this up. I have a local rebase with main fixing the conflict but I obviously don't want to force push on your branch without your explicit ok :) After the conflict is resolved I'd like to exercise the R binaries jobs.

@CurtHagenlocher

Copy link
Copy Markdown
Contributor Author

@CurtHagenlocher let me know if I can follow this up. I have a local rebase with main fixing the conflict but I obviously don't want to force push on your branch without your explicit ok :) After the conflict is resolved I'd like to exercise the R binaries jobs.

Please do whatever is needed to deliver this fix!

Copilot AI balanced review requested due to automatic review settings October 27, 2026 19:41
@raulcd

raulcd commented Oct 27, 2026

Copy link
Copy Markdown
Member

@github-actions crossbow submit -g r

@github-actions

Copy link
Copy Markdown

Revision: b93d56b

Submitted crossbow builds: ursacomputing/crossbow @ actions-d486ac7b81

Task Status
r-binary-packages GitHub Actions
r-recheck-most GitHub Actions
test-r-alpine-linux-cran GitHub Actions
test-r-arrow-backwards-compatibility GitHub Actions
test-r-depsource-system GitHub Actions
test-r-dev-duckdb GitHub Actions
test-r-devdocs GitHub Actions
test-r-extra-packages GitHub Actions
test-r-fedora-clang GitHub Actions
test-r-gcc-11 GitHub Actions
test-r-gcc-12 GitHub Actions
test-r-install-local GitHub Actions
test-r-install-local-minsizerel GitHub Actions
test-r-linux-as-cran GitHub Actions
test-r-linux-rchk GitHub Actions
test-r-linux-sanitizers GitHub Actions
test-r-linux-valgrind GitHub Actions
test-r-m1-san GitHub Actions
test-r-macos-as-cran GitHub Actions
test-r-offline-maximal GitHub Actions
test-r-ubuntu-22.04 GitHub Actions
test-r-versions GitHub Actions
test-r-wasm GitHub Actions

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The broader vcpkg update and cross-platform linking changes need CI and human validation of compatibility with the pinned upstream ports.

No open issues 🎉

Review effort: Balanced

Copilot AI balanced review requested due to automatic review settings October 27, 2026 20:21
@raulcd

raulcd commented Oct 27, 2026

Copy link
Copy Markdown
Member

@github-actions crossbow submit wheel-cp313

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The broad vcpkg refresh and platform-specific dependency changes require cross-platform CI confirmation and human validation.

No open issues 🎉

Review effort: Balanced

@github-actions

Copy link
Copy Markdown

Revision: 7ec72cf

Submitted crossbow builds: ursacomputing/crossbow @ actions-8c50bab9e5

Task Status
wheel-macos-monterey-cp313-cp313-amd64 GitHub Actions
wheel-macos-monterey-cp313-cp313-arm64 GitHub Actions
wheel-manylinux-2-28-cp313-cp313-amd64 GitHub Actions
wheel-manylinux-2-28-cp313-cp313-arm64 GitHub Actions
wheel-musllinux-1-2-cp313-cp313-amd64 GitHub Actions
wheel-musllinux-1-2-cp313-cp313-arm64 GitHub Actions
wheel-windows-cp313-cp313-amd64 GitHub Actions

@raulcd

raulcd commented Oct 28, 2026

Copy link
Copy Markdown
Member

@github-actions crossbow submit -g wheel

@raulcd raulcd left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@kou this is ready for review can you take a look?
None of the current failures for R are related.
I'll start preparing the milestone once this is merged.

@github-actions github-actions Bot added awaiting merge Awaiting merge and removed awaiting change review Awaiting change review labels Oct 28, 2026
@github-actions

Copy link
Copy Markdown

Revision: 7ec72cf

Submitted crossbow builds: ursacomputing/crossbow @ actions-24c5287719

Task Status
python-sdist GitHub Actions
wheel-macos-monterey-cp311-cp311-amd64 GitHub Actions
wheel-macos-monterey-cp311-cp311-arm64 GitHub Actions
wheel-macos-monterey-cp312-cp312-amd64 GitHub Actions
wheel-macos-monterey-cp312-cp312-arm64 GitHub Actions
wheel-macos-monterey-cp313-cp313-amd64 GitHub Actions
wheel-macos-monterey-cp313-cp313-arm64 GitHub Actions
wheel-macos-monterey-cp314-cp314-amd64 GitHub Actions
wheel-macos-monterey-cp314-cp314-arm64 GitHub Actions
wheel-macos-monterey-cp314-cp314t-amd64 GitHub Actions
wheel-macos-monterey-cp314-cp314t-arm64 GitHub Actions
wheel-macos-monterey-cp315-cp315-amd64 GitHub Actions
wheel-macos-monterey-cp315-cp315-arm64 GitHub Actions
wheel-macos-monterey-cp315-cp315t-amd64 GitHub Actions
wheel-macos-monterey-cp315-cp315t-arm64 GitHub Actions
wheel-manylinux-2-28-cp311-cp311-amd64 GitHub Actions
wheel-manylinux-2-28-cp311-cp311-arm64 GitHub Actions
wheel-manylinux-2-28-cp312-cp312-amd64 GitHub Actions
wheel-manylinux-2-28-cp312-cp312-arm64 GitHub Actions
wheel-manylinux-2-28-cp313-cp313-amd64 GitHub Actions
wheel-manylinux-2-28-cp313-cp313-arm64 GitHub Actions
wheel-manylinux-2-28-cp314-cp314-amd64 GitHub Actions
wheel-manylinux-2-28-cp314-cp314-arm64 GitHub Actions
wheel-manylinux-2-28-cp314-cp314t-amd64 GitHub Actions
wheel-manylinux-2-28-cp314-cp314t-arm64 GitHub Actions
wheel-manylinux-2-28-cp315-cp315-amd64 GitHub Actions
wheel-manylinux-2-28-cp315-cp315-arm64 GitHub Actions
wheel-manylinux-2-28-cp315-cp315t-amd64 GitHub Actions
wheel-manylinux-2-28-cp315-cp315t-arm64 GitHub Actions
wheel-musllinux-1-2-cp311-cp311-amd64 GitHub Actions
wheel-musllinux-1-2-cp311-cp311-arm64 GitHub Actions
wheel-musllinux-1-2-cp312-cp312-amd64 GitHub Actions
wheel-musllinux-1-2-cp312-cp312-arm64 GitHub Actions
wheel-musllinux-1-2-cp313-cp313-amd64 GitHub Actions
wheel-musllinux-1-2-cp313-cp313-arm64 GitHub Actions
wheel-musllinux-1-2-cp314-cp314-amd64 GitHub Actions
wheel-musllinux-1-2-cp314-cp314-arm64 GitHub Actions
wheel-musllinux-1-2-cp314-cp314t-amd64 GitHub Actions
wheel-musllinux-1-2-cp314-cp314t-arm64 GitHub Actions
wheel-musllinux-1-2-cp315-cp315-amd64 GitHub Actions
wheel-musllinux-1-2-cp315-cp315-arm64 GitHub Actions
wheel-musllinux-1-2-cp315-cp315t-amd64 GitHub Actions
wheel-musllinux-1-2-cp315-cp315t-arm64 GitHub Actions
wheel-windows-cp311-cp311-amd64 GitHub Actions
wheel-windows-cp312-cp312-amd64 GitHub Actions
wheel-windows-cp313-cp313-amd64 GitHub Actions
wheel-windows-cp314-cp314-amd64 GitHub Actions
wheel-windows-cp314-cp314t-amd64 GitHub Actions
wheel-windows-cp315-cp315-amd64 GitHub Actions
wheel-windows-cp315-cp315t-amd64 GitHub Actions

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants