Skip to content

Add arrow 25.0.0 with new dependencies lz4, snappy, libutf8proc - #40

Merged
jeroen merged 8 commits into
masterfrom
arrow
Jul 27, 2026
Merged

Add arrow 25.0.0 with new dependencies lz4, snappy, libutf8proc#40
jeroen merged 8 commits into
masterfrom
arrow

Conversation

@jeroen

@jeroen jeroen commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

This adds mingw-w64-arrow 25.0.0, based on the upstream apache/arrow rtools recipe (ci/scripts/PKGBUILD @ apache-arrow-25.0.0). The build configuration (cmake flags, static-only libs, bundled AWS SDK and Thrift, -DCURL_STATICLIB/-DUTF8PROC_STATIC flags) is kept identical to upstream so that this can eventually be upstreamed, with only the CI-specific hacks removed:

  • Builds from the official release tarball (sha256 verified against apache dist) instead of a local $ARROW_HOME checkout, so the pkgver() check against r/DESCRIPTION is dropped
  • Uses ${MINGW_PREFIX}/bin/cmake instead of the hardcoded C:\Program Files\CMake path
  • pkgrel=80001, dropped the ccache makedepend
  • Added a license install step

Also adds the three arrow dependencies that were missing from this repo, copied verbatim from msys2/MINGW-packages:

  • mingw-w64-lz4 1.10.0
  • mingw-w64-snappy 1.2.2 (incl. the msys2 pkgconfig/dual-libs patches)
  • mingw-w64-libutf8proc 2.11.3

The remaining arrow depends (bzip2, curl, re2, zlib, zstd, brotli) already exist in this repo.

🤖 Generated with Claude Code

jeroen and others added 4 commits July 27, 2026 16:02
Arrow with ARROW_GCS=ON vendors abseil via FetchContent, but the vendored
copy conflicts with the system abseil 20220623 that pacman installs as a
dependency of re2 20231101: google-cloud-cpp resolves the system absl
cmake config, whose headers predate absl/crc. Upstream rtools builds work
precisely because their re2 (2020-08-01) predates the abseil dependency,
so no system abseil exists during the arrow build.

Downgrade re2 to 2023-03-01 (the last release without abseil, recipe from
msys2 history) to replicate that: abseil is now only installed while
building grpc, which keeps its own direct abseil-cpp dependency. Bump
grpc pkgrel to rebuild it against the downgraded re2.

Note that pacman version 20230301 is lower than the previously published
20231101; CI installs the freshly built package directly so builds are
unaffected.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The bundled google-cloud-cpp also uses the MD5, SHA256 and HMAC-SHA256
BCrypt algorithm pseudo-handles (not just RSA), so define all of them in
bcrypt-compat.h. BCryptHash itself is declared even in old mingw-w64
headers, so the macros are sufficient.

On clangarm64, the xsimd 14.2.0 pinned by arrow includes the MSVC-only
arm64_neon.h header on any Windows aarch64 target. This was fixed
upstream in xsimd 14.3.0 (include arm_neon.h unless MSVC), so bump the
version in cpp/thirdparty/versions.txt during prepare().

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
clang 20 promoted -Wmissing-template-arg-list-after-template-kw to an
error by default, which rejects 'Traits::template CallSeqFactory(...)'
in src/core/lib/promise/detail/basic_seq.h. Drop the template keyword,
matching the fix in newer upstream grpc.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The pinned winpthreads 11.0.1 emits a reference to _gnu_exception_handler
in the SEH data of its thread startup code, but current mingw-w64 deleted
crt_handler.c from the CRT, so any executable linking the static
winpthreads (e.g. the grpc codegen plugins) now fails with an undefined
reference. Compile the old crt_handler.c (public domain, verbatim from
mingw-w64 v11.0.1) and inject the object into libpthread.a/libwinpthread.a
before building. Guarded so it is skipped if the CRT provides the symbol
again.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
jeroen and others added 3 commits July 27, 2026 18:28
The freshly built grpc_cpp_plugin.exe fails with
STATUS_ENTRYPOINT_NOT_FOUND when protoc invokes it during the build,
because it dynamically links libstdc++-6.dll and the msys2 gcc-libs
DLLs installed in the build environment come from a newer gcc that is
not ABI compatible on Windows (PE has no symbol versioning). Link
libgcc/libstdc++ statically, in line with the existing 'standalone
plugin' intent of this recipe.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The toolchain repos now provide a crt package pinned at the same
mingw-w64 commit as headers-git and winpthreads (r-windows/gcc-13#1,
r-windows/llvm-19#2), which restores _gnu_exception_handler that the
11.0.1 static winpthreads references. Install it explicitly, since the
runner image comes with the newer msys2 crt preinstalled. This replaces
the crt_handler.c workaround.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@jeroen
jeroen merged commit 6c964aa into master Jul 27, 2026
4 checks passed
@jeroen
jeroen deleted the arrow branch July 27, 2026 17:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant