diff --git a/.env b/.env index 4be5d436f2d..f0884e6b748 100644 --- a/.env +++ b/.env @@ -92,7 +92,7 @@ TZ=UTC # Used through compose.yaml and serves as the default version for the # ci/scripts/install_vcpkg.sh script. Prefer to use short SHAs to keep the # docker tags more readable. -VCPKG="9b965a116838c6cdcd36bca60d1b81b030c8ab8d" # 2026.05.27 (not release, upstream commit) +VCPKG="61d7eaeb094a6acbc23d9c2e54de9208175fda47" # 2026.10.24 (not release, upstream commit) # This must be updated when we update # ci/docker/python-*-windows-*.dockerfile or the vcpkg config. diff --git a/c_glib/vcpkg.json b/c_glib/vcpkg.json index 522e6acf4f5..30d3e29bbc4 100644 --- a/c_glib/vcpkg.json +++ b/c_glib/vcpkg.json @@ -7,5 +7,5 @@ "pkgconf" ], "$comment": "We can update builtin-baseline by 'vcpkg x-update-baseline'", - "builtin-baseline": "9b965a116838c6cdcd36bca60d1b81b030c8ab8d" + "builtin-baseline": "61d7eaeb094a6acbc23d9c2e54de9208175fda47" } diff --git a/ci/scripts/PKGBUILD b/ci/scripts/PKGBUILD index 56d90355c57..6ca0c2e59d1 100644 --- a/ci/scripts/PKGBUILD +++ b/ci/scripts/PKGBUILD @@ -31,8 +31,7 @@ depends=("${MINGW_PACKAGE_PREFIX}-bzip2" "${MINGW_PACKAGE_PREFIX}-snappy" "${MINGW_PACKAGE_PREFIX}-zlib" "${MINGW_PACKAGE_PREFIX}-lz4" - "${MINGW_PACKAGE_PREFIX}-zstd" - "${MINGW_PACKAGE_PREFIX}-brotli") + "${MINGW_PACKAGE_PREFIX}-zstd") makedepends=("${MINGW_PACKAGE_PREFIX}-ccache" "${MINGW_PACKAGE_PREFIX}-gcc") options=("staticlibs" "strip" "!buildflags") @@ -96,6 +95,9 @@ build() { # But one on rtools packages doesn't have the fix. So we can't use # the MINGW one. + # We use the bundled Brotli instead of the MINGW one because the one + # on rtools packages is unmaintained and stuck at 1.0.9. + # MSYS2_ARG_CONV_EXCL is needed to prevent autoconverting CMAKE_INSTALL_PREFIX # to Windows paths. See https://www.msys2.org/docs/filesystem-paths/#process-arguments @@ -137,6 +139,7 @@ build() { -DARROW_ZSTD_USE_SHARED=OFF \ -DARROW_CXXFLAGS="${CPPFLAGS}" \ -DAWSSDK_SOURCE=BUNDLED \ + -DBrotli_SOURCE=BUNDLED \ -DCMAKE_BUILD_TYPE="release" \ -DCMAKE_DISABLE_PRECOMPILE_HEADERS=ON \ -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \ diff --git a/ci/scripts/r_windows_build.sh b/ci/scripts/r_windows_build.sh index 7eb8c0c2b55..eec1fb5bd6e 100755 --- a/ci/scripts/r_windows_build.sh +++ b/ci/scripts/r_windows_build.sh @@ -65,7 +65,7 @@ if [ -d mingw64/lib/ ]; then # Move the 64-bit versions of libarrow into the expected location mv mingw64/lib/*.a "${DST_DIR}/lib/x64" # These are from https://dl.bintray.com/rtools/mingw{32,64}/ - cp "${MSYS_LIB_DIR}"/mingw64/lib/lib{snappy,zstd,lz4,brotli*,bz2,crypto,curl,ss*,utf8proc,re2,nghttp2}.a "${DST_DIR}/lib/x64" + cp "${MSYS_LIB_DIR}"/mingw64/lib/lib{snappy,zstd,lz4,bz2,crypto,curl,ss*,utf8proc,re2,nghttp2}.a "${DST_DIR}/lib/x64" fi # Same for the 32-bit versions @@ -73,7 +73,7 @@ if [ -d mingw32/lib/ ]; then ls "${MSYS_LIB_DIR}/mingw32/lib/" mkdir -p "${DST_DIR}/lib/i386" mv mingw32/lib/*.a "${DST_DIR}/lib/i386" - cp "${MSYS_LIB_DIR}"/mingw32/lib/lib{snappy,zstd,lz4,brotli*,bz2,crypto,curl,ss*,utf8proc,re2,nghttp2}.a "${DST_DIR}/lib/i386" + cp "${MSYS_LIB_DIR}"/mingw32/lib/lib{snappy,zstd,lz4,bz2,crypto,curl,ss*,utf8proc,re2,nghttp2}.a "${DST_DIR}/lib/i386" fi # Do the same also for ucrt64 @@ -81,7 +81,7 @@ if [ -d ucrt64/lib/ ]; then ls "${MSYS_LIB_DIR}/ucrt64/lib/" mkdir -p "${DST_DIR}/lib/x64-ucrt" mv ucrt64/lib/*.a "${DST_DIR}/lib/x64-ucrt" - cp "${MSYS_LIB_DIR}"/ucrt64/lib/lib{snappy,zstd,lz4,brotli*,bz2,crypto,curl,ss*,utf8proc,re2,nghttp2}.a "$DST_DIR"/lib/x64-ucrt + cp "${MSYS_LIB_DIR}"/ucrt64/lib/lib{snappy,zstd,lz4,bz2,crypto,curl,ss*,utf8proc,re2,nghttp2}.a "$DST_DIR"/lib/x64-ucrt fi # Create build artifact diff --git a/ci/vcpkg/ports.patch b/ci/vcpkg/ports.patch index db38c25de3f..dd62862d192 100644 --- a/ci/vcpkg/ports.patch +++ b/ci/vcpkg/ports.patch @@ -19,19 +19,6 @@ index 73f5aece46..68cdb3966f 100644 ) vcpkg_cmake_install() vcpkg_copy_pdbs() -diff --git a/ports/llvm/portfile.cmake b/ports/llvm/portfile.cmake -index 7764357a6d..da7374ecec 100644 ---- a/ports/llvm/portfile.cmake -+++ b/ports/llvm/portfile.cmake -@@ -302,6 +302,8 @@ vcpkg_cmake_configure( - ${FEATURE_OPTIONS} - MAYBE_UNUSED_VARIABLES - COMPILER_RT_ENABLE_IOS -+ BOLT_TOOLS_INSTALL_DIR -+ LIBOMP_INSTALL_ALIASES - ) - - vcpkg_cmake_install(ADD_BIN_TO_PATH) diff --git a/ports/orc/orc-fix-exception-propagation.diff b/ports/orc/orc-fix-exception-propagation.diff new file mode 100644 index 0000000000..25568e70cd @@ -114,3 +101,72 @@ index 5df5e94..225e5fb 100644 ) if("tool" IN_LIST FEATURES) +diff --git a/ports/nanoarrow/portfile.cmake b/ports/nanoarrow/portfile.cmake +index 34f113f..10ca500 100644 +--- a/ports/nanoarrow/portfile.cmake ++++ b/ports/nanoarrow/portfile.cmake +@@ -24,6 +24,10 @@ vcpkg_cmake_configure( + OPTIONS + -DNANOARROW_INSTALL_SHARED=${NANOARROW_INSTALL_SHARED} + -DNANOARROW_DEBUG_EXTRA_WARNINGS=OFF ++ # Prefix the C symbols so that consumers linking nanoarrow ++ # statically (e.g. azure-storage-blobs-cpp inside libarrow) do ++ # not export or clash on plain Arrow* names. ++ -DNANOARROW_NAMESPACE=VcpkgNanoarrow + ${FEATURE_OPTIONS} + ${FLATCCRT_OPTIONS} + ) +@@ -36,12 +40,12 @@ vcpkg_cmake_config_fixup( + DO_NOT_DELETE_PARENT_CONFIG_PATH + ) + +-# Fix bare "flatccrt" in INTERFACE_LINK_LIBRARIES - Windows needs the full path ++# Fix bare "flatccrt" in INTERFACE_LINK_LIBRARIES - consumers need the full path + # Tracked upstream at https://github.com/apache/arrow-nanoarrow/issues/922 +-if ("ipc" IN_LIST FEATURES AND VCPKG_TARGET_IS_WINDOWS) ++if ("ipc" IN_LIST FEATURES) + vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/nanoarrow/nanoarrow-targets.cmake" + [[\$]] +- [[\$]] ++ "\\\$" + ) + endif() + +diff --git a/ports/protobuf/fix-msvc-global-empty-string.patch b/ports/protobuf/fix-msvc-global-empty-string.patch +new file mode 100644 +index 0000000..da1d995 +--- /dev/null ++++ b/ports/protobuf/fix-msvc-global-empty-string.patch +@@ -0,0 +1,20 @@ ++diff --git a/src/google/protobuf/port.h b/src/google/protobuf/port.h ++index 7347203..a587be8 100644 ++--- a/src/google/protobuf/port.h +++++ b/src/google/protobuf/port.h ++@@ -876,9 +876,14 @@ class alignas(8) GlobalEmptyStringConstexpr { ++ // evaluation, not that a constant evaluated instance can leak into runtime. ++ // Memory allocated during constant evaluation can't be used for runtime ++ // objects. ++-#if !defined(__XTENSA__) +++#if !defined(__XTENSA__) && !defined(_MSC_VER) ++ // Disable the optimization for Xtensa. ++ // Compilation fails on Xtensa: b/467129751 +++ // Disable the optimization for MSVC too, as protobuf 33.x did. +++ // MSVC mangles the type of fixed_address_empty_string into its symbol +++ // name, so libprotobuf and generated code built with different C++ +++ // standards (C++17 vs C++20) fail to link. +++ // See https://github.com/microsoft/vcpkg/issues/54654 ++ template < ++ typename Alloc = NonConstexprAllocator, ++ int = std::basic_string, Alloc>().size()> +diff --git a/ports/protobuf/portfile.cmake b/ports/protobuf/portfile.cmake +index 74570d4..ae656fc 100644 +--- a/ports/protobuf/portfile.cmake ++++ b/ports/protobuf/portfile.cmake +@@ -11,6 +11,7 @@ vcpkg_from_github( + fix-install-dirs.patch + fix-constinit-with-clang-cl.patch + fix-upb.patch ++ fix-msvc-global-empty-string.patch + ) + + string(COMPARE EQUAL "${TARGET_TRIPLET}" "${HOST_TRIPLET}" protobuf_BUILD_PROTOC_BINARIES) diff --git a/cpp/cmake_modules/ThirdpartyToolchain.cmake b/cpp/cmake_modules/ThirdpartyToolchain.cmake index 61b00f24d3d..12e8ba3d82b 100644 --- a/cpp/cmake_modules/ThirdpartyToolchain.cmake +++ b/cpp/cmake_modules/ThirdpartyToolchain.cmake @@ -1552,36 +1552,19 @@ macro(build_brotli) set(BROTLI_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/brotli_ep/src/brotli_ep-install") set(BROTLI_INCLUDE_DIR "${BROTLI_PREFIX}/include") set(BROTLI_LIB_DIR "${BROTLI_PREFIX}/lib") + # Brotli >= 1.1.0 names its static libraries without a "-static" + # suffix when BUILD_SHARED_LIBS=OFF. set(BROTLI_STATIC_LIBRARY_ENC - "${BROTLI_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}brotlienc-static${CMAKE_STATIC_LIBRARY_SUFFIX}" + "${BROTLI_LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}brotlienc${CMAKE_STATIC_LIBRARY_SUFFIX}" ) set(BROTLI_STATIC_LIBRARY_DEC - "${BROTLI_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}brotlidec-static${CMAKE_STATIC_LIBRARY_SUFFIX}" + "${BROTLI_LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}brotlidec${CMAKE_STATIC_LIBRARY_SUFFIX}" ) set(BROTLI_STATIC_LIBRARY_COMMON - "${BROTLI_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}brotlicommon-static${CMAKE_STATIC_LIBRARY_SUFFIX}" + "${BROTLI_LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}brotlicommon${CMAKE_STATIC_LIBRARY_SUFFIX}" ) - set(BROTLI_CMAKE_ARGS ${EP_COMMON_CMAKE_ARGS} "-DCMAKE_INSTALL_PREFIX=${BROTLI_PREFIX}") - - set(BROTLI_EP_OPTIONS) - if(CMAKE_SYSTEM_NAME STREQUAL "Emscripten") - # "cmake install" is disabled for Brotli on Emscripten, so the - # default INSTALL_COMMAND fails. We need to disable the default - # INSTALL_COMMAND. - list(APPEND - BROTLI_EP_OPTIONS - INSTALL_COMMAND - ${CMAKE_COMMAND} - -E - true) - - set(BROTLI_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/brotli_ep-prefix/src/brotli_ep-build) - set(BROTLI_BUILD_LIBS - "${BROTLI_BUILD_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}brotlienc-static${CMAKE_STATIC_LIBRARY_SUFFIX}" - "${BROTLI_BUILD_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}brotlidec-static${CMAKE_STATIC_LIBRARY_SUFFIX}" - "${BROTLI_BUILD_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}brotlicommon-static${CMAKE_STATIC_LIBRARY_SUFFIX}" - ) - endif() + set(BROTLI_CMAKE_ARGS ${EP_COMMON_CMAKE_ARGS} "-DCMAKE_INSTALL_PREFIX=${BROTLI_PREFIX}" + -DBROTLI_BUILD_TOOLS=OFF -DBROTLI_DISABLE_TESTS=ON) externalproject_add(brotli_ep ${EP_COMMON_OPTIONS} @@ -1590,22 +1573,8 @@ macro(build_brotli) BUILD_BYPRODUCTS "${BROTLI_STATIC_LIBRARY_ENC}" "${BROTLI_STATIC_LIBRARY_DEC}" "${BROTLI_STATIC_LIBRARY_COMMON}" - ${BROTLI_BUILD_BYPRODUCTS} CMAKE_ARGS ${BROTLI_CMAKE_ARGS} - STEP_TARGETS headers_copy ${BROTLI_EP_OPTIONS}) - - if(CMAKE_SYSTEM_NAME STREQUAL "Emscripten") - # Copy the libraries to our install directory manually. - set(BROTLI_BUILD_INCLUDE_DIR - ${CMAKE_CURRENT_BINARY_DIR}/brotli_ep-prefix/src/brotli_ep/c/include/brotli) - add_custom_command(TARGET brotli_ep - POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different - ${BROTLI_BUILD_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}*${CMAKE_STATIC_LIBRARY_SUFFIX} - ${BROTLI_LIB_DIR} - COMMAND ${CMAKE_COMMAND} -E copy_directory - ${BROTLI_BUILD_INCLUDE_DIR} ${BROTLI_INCLUDE_DIR}/brotli) - endif() + STEP_TARGETS headers_copy) file(MAKE_DIRECTORY "${BROTLI_INCLUDE_DIR}") diff --git a/cpp/thirdparty/versions.txt b/cpp/thirdparty/versions.txt index 79a14cacb74..89565f88cb2 100644 --- a/cpp/thirdparty/versions.txt +++ b/cpp/thirdparty/versions.txt @@ -58,8 +58,8 @@ ARROW_AZURE_SDK_BUILD_VERSION=azure-identity_1.9.0 ARROW_AZURE_SDK_BUILD_SHA256_CHECKSUM=97065bfc971ac8df450853ce805f820f52b59457bd7556510186a1569502e4a1 ARROW_BOOST_BUILD_VERSION=1.92.0 ARROW_BOOST_BUILD_SHA256_CHECKSUM=f51707c27359a0df0cac1beada86de31bb5eed5e8285592dadec384df99c2984 -ARROW_BROTLI_BUILD_VERSION=v1.0.9 -ARROW_BROTLI_BUILD_SHA256_CHECKSUM=f9e8d81d0405ba66d181529af42a3354f838c939095ff99930da6aa9cdf6fe46 +ARROW_BROTLI_BUILD_VERSION=v1.2.1 +ARROW_BROTLI_BUILD_SHA256_CHECKSUM=98d35d11a78dc453aebb7d10c3748f3f73ff78c8267c0dc697b8631f67bf7e8f ARROW_BZIP2_BUILD_VERSION=1.0.8 ARROW_BZIP2_BUILD_SHA256_CHECKSUM=ab5a03176ee106d3f0fa90e381da478ddae405918153cca248e682cd0c4a2269 ARROW_CARES_BUILD_VERSION=1.34.6 diff --git a/cpp/vcpkg.json b/cpp/vcpkg.json index 5d1d5c019e0..f4d4d742f30 100644 --- a/cpp/vcpkg.json +++ b/cpp/vcpkg.json @@ -59,5 +59,5 @@ "zstd" ], "$comment": "We can update builtin-baseline by 'vcpkg x-update-baseline'", - "builtin-baseline": "9b965a116838c6cdcd36bca60d1b81b030c8ab8d" + "builtin-baseline": "61d7eaeb094a6acbc23d9c2e54de9208175fda47" } diff --git a/r/configure.win b/r/configure.win index e90d585e3b4..44b8ff9c0b3 100755 --- a/r/configure.win +++ b/r/configure.win @@ -60,7 +60,6 @@ function configure_binaries() { OPENSSL_LIBS="-lcrypto -lcrypt32" MIMALLOC_LIBS="-lbcrypt -lpsapi" - BROTLI_LIBS="-lbrotlienc -lbrotlidec -lbrotlicommon" # Common goes last since dec and enc depend on it # We build aws-sdk-cpp bundled now, so the AWS libs are included in arrow_bundled_dependencies # but we also need to include these Windows system libraries AWS_LIBS="-luserenv -lversion -lws2_32 -lbcrypt -lwininet -lwinhttp -lsecur32 -lshlwapi -lncrypt" @@ -91,7 +90,7 @@ function configure_binaries() { PKG_LIBS="$PKG_LIBS -L${RWINLIB}/lib"'$(R_ARCH)$(CRT) ' PKG_LIBS="$PKG_LIBS -larrow_dataset -larrow_acero -lparquet -larrow_compute -larrow_s3 \ -larrow_gcs -larrow -larrow_bundled_dependencies \ - -lutf8proc -lsnappy -lz -lzstd -llz4 -lbz2 ${BROTLI_LIBS} -lole32 \ + -lutf8proc -lsnappy -lz -lzstd -llz4 -lbz2 -lole32 \ ${MIMALLOC_LIBS} ${OPENSSL_LIBS} -lre2 ${AWS_LIBS} ${GCS_LIBS}" # ${AZURE_LIBS} }