This is an automated email from the ASF dual-hosted git repository.
raulcd pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow.git
The following commit(s) were added to refs/heads/main by this push:
new cde3f6a1e2 GH-47614: [CI] Upgrade vcpkg on our CI (#47627)
cde3f6a1e2 is described below
commit cde3f6a1e21f9f77a73aab4ecc59dbb6e7feb112
Author: Raúl Cumplido <[email protected]>
AuthorDate: Fri Oct 3 09:45:17 2025 +0200
GH-47614: [CI] Upgrade vcpkg on our CI (#47627)
### Rationale for this change
Our vcpkg version used for the wheels is a really old version. Some wheels
like the macOS ones have started failing due to really old dependencies using
unsupported cake versions.
### What changes are included in this PR?
- Update the vcpkg version to the latest released
- Update minio version to solve failure due to newer aws-sdk
- Remove unnecessary vcpkg patches
- Add patch to ORC vcpkg to solve issue with exception not being propagated
on std::run_once on musllinux.
- Avoid adding some flight sources on Windows unity builds that cause
windows headers clashing.
### Are these changes tested?
Yes, via archery on CI.
### Are there any user-facing changes?
No
* GitHub Issue: #43416
* GitHub Issue: #47614
Authored-by: Raúl Cumplido <[email protected]>
Signed-off-by: Raúl Cumplido <[email protected]>
---
.env | 2 +-
...ython-wheel-windows-test-vs2022-base.dockerfile | 2 +-
ci/scripts/python_wheel_windows_build.bat | 4 +-
ci/vcpkg/ports.patch | 149 ++++++++-------------
cpp/src/arrow/flight/CMakeLists.txt | 13 ++
dev/tasks/python-wheels/github.linux.yml | 2 +-
dev/tasks/python-wheels/github.osx.yml | 1 -
7 files changed, 73 insertions(+), 100 deletions(-)
diff --git a/.env b/.env
index 8c1a115024..1735b7163b 100644
--- a/.env
+++ b/.env
@@ -92,7 +92,7 @@ TZ=UTC
# Used through docker-compose.yml 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="f7423ee180c4b7f40d43402c2feb3859161ef625" # 2024.06.15 Release
+VCPKG="4334d8b4c8916018600212ab4dd4bbdc343065d1" # 2025.09.17 Release
# This must be updated when we update
# ci/docker/python-*-windows-*.dockerfile or the vcpkg config.
diff --git a/ci/docker/python-wheel-windows-test-vs2022-base.dockerfile
b/ci/docker/python-wheel-windows-test-vs2022-base.dockerfile
index fbdcdaf99b..bd1da7b14b 100644
--- a/ci/docker/python-wheel-windows-test-vs2022-base.dockerfile
+++ b/ci/docker/python-wheel-windows-test-vs2022-base.dockerfile
@@ -51,7 +51,7 @@ SHELL ["cmd", "/S", "/C"]
# Install git, wget, minio
RUN choco install --no-progress -r -y git wget
-RUN curl
https://dl.min.io/server/minio/release/windows-amd64/archive/minio.RELEASE.2024-09-13T20-26-02Z
`
+RUN curl
https://dl.min.io/server/minio/release/windows-amd64/archive/minio.RELEASE.2025-01-20T14-49-07Z
`
--output "C:\Windows\Minio.exe"
# Install the GCS testbench using a well-known Python version.
diff --git a/ci/scripts/python_wheel_windows_build.bat
b/ci/scripts/python_wheel_windows_build.bat
index 00b0071641..c01f833ce6 100644
--- a/ci/scripts/python_wheel_windows_build.bat
+++ b/ci/scripts/python_wheel_windows_build.bat
@@ -60,7 +60,7 @@ set CMAKE_GENERATOR=Visual Studio 17 2022
set CMAKE_PLATFORM=x64
set VCPKG_ROOT=C:\vcpkg
set VCPKG_FEATURE_FLAGS=-manifests
-set VCGPK_TARGET_TRIPLET=amd64-windows-static-md-%CMAKE_BUILD_TYPE%
+set VCPKG_TARGET_TRIPLET=amd64-windows-static-md-%CMAKE_BUILD_TYPE%
mkdir C:\arrow-build
pushd C:\arrow-build
@@ -100,7 +100,7 @@ cmake ^
-DMSVC_LINK_VERBOSE=ON ^
-DPARQUET_REQUIRE_ENCRYPTION=%PARQUET_REQUIRE_ENCRYPTION% ^
-DVCPKG_MANIFEST_MODE=OFF ^
- -DVCPKG_TARGET_TRIPLET=%VCGPK_TARGET_TRIPLET% ^
+ -DVCPKG_TARGET_TRIPLET=%VCPKG_TARGET_TRIPLET% ^
-Dxsimd_SOURCE=BUNDLED ^
-G "%CMAKE_GENERATOR%" ^
-A "%CMAKE_PLATFORM%" ^
diff --git a/ci/vcpkg/ports.patch b/ci/vcpkg/ports.patch
index 39b51874b1..27e97a5b24 100644
--- a/ci/vcpkg/ports.patch
+++ b/ci/vcpkg/ports.patch
@@ -1,25 +1,26 @@
diff --git a/ports/curl/portfile.cmake b/ports/curl/portfile.cmake
-index 7cab6f726..697ab1bb4 100644
+index 6788bc7b7f..6b689dedf0 100644
--- a/ports/curl/portfile.cmake
+++ b/ports/curl/portfile.cmake
-@@ -84,9 +84,12 @@ vcpkg_cmake_configure(
- -DBUILD_TESTING=OFF
+@@ -83,10 +83,13 @@ vcpkg_cmake_configure(
-DENABLE_CURL_MANUAL=OFF
- -DCURL_CA_FALLBACK=ON
+ -DIMPORT_LIB_SUFFIX= # empty
+ -DSHARE_LIB_OBJECT=OFF
+ -DCURL_CA_PATH=none
+ -DCURL_CA_BUNDLE=none
+ -DCURL_USE_PKGCONFIG=ON
-DCMAKE_DISABLE_FIND_PACKAGE_Perl=ON
- OPTIONS_DEBUG
- -DENABLE_DEBUG=ON
+ MAYBE_UNUSED_VARIABLES
+ PKG_CONFIG_EXECUTABLE
+ ${EXTRA_ARGS_DEBUG}
)
vcpkg_cmake_install()
vcpkg_copy_pdbs()
diff --git a/ports/llvm/portfile.cmake b/ports/llvm/portfile.cmake
-index a79c72a59..6b7fa6a66 100644
+index 7764357a6d..da7374ecec 100644
--- a/ports/llvm/portfile.cmake
+++ b/ports/llvm/portfile.cmake
-@@ -292,6 +292,8 @@ vcpkg_cmake_configure(
+@@ -302,6 +302,8 @@ vcpkg_cmake_configure(
${FEATURE_OPTIONS}
MAYBE_UNUSED_VARIABLES
COMPILER_RT_ENABLE_IOS
@@ -28,92 +29,52 @@ index a79c72a59..6b7fa6a66 100644
)
vcpkg_cmake_install(ADD_BIN_TO_PATH)
-diff --git a/ports/snappy/portfile.cmake b/ports/snappy/portfile.cmake
-index 0312b2ae1..fdb576b5f 100644
---- a/ports/snappy/portfile.cmake
-+++ b/ports/snappy/portfile.cmake
-@@ -8,5 +8,6 @@ vcpkg_from_github(
- fix_clang-cl_build.patch
- no-werror.patch
- pkgconfig.diff
-+ "snappy-disable-bmi.patch"
- )
- file(COPY "${CURRENT_PORT_DIR}/snappy.pc.in" DESTINATION "${SOURCE_PATH}")
-diff --git a/ports/snappy/snappy-disable-bmi.patch
b/ports/snappy/snappy-disable-bmi.patch
+diff --git a/ports/orc/orc-fix-exception-propagation.diff
b/ports/orc/orc-fix-exception-propagation.diff
new file mode 100644
-index 000000000..e839c93a4
+index 0000000000..25568e70cd
--- /dev/null
-+++ b/ports/snappy/snappy-disable-bmi.patch
-@@ -0,0 +1,19 @@
-+diff --git a/snappy.cc b/snappy.cc
-+index d414718..7b49d2a 100644
-+--- a/snappy.cc
-++++ b/snappy.cc
-+@@ -1014,14 +1014,10 @@ static inline void Report(const char *algorithm,
size_t compressed_size,
-+ static inline uint32_t ExtractLowBytes(const uint32_t& v, int n) {
-+ assert(n >= 0);
-+ assert(n <= 4);
-+-#if SNAPPY_HAVE_BMI2
-+- return _bzhi_u32(v, 8 * n);
-+-#else
-+ // This needs to be wider than uint32_t otherwise `mask << 32` will be
-+ // undefined.
-+ uint64_t mask = 0xffffffff;
-+ return v & ~(mask << (8 * n));
-+-#endif
-+ }
++++ b/ports/orc/orc-fix-exception-propagation.diff
+@@ -0,0 +1,30 @@
++diff --git a/c++/src/Timezone.cc b/c++/src/Timezone.cc
++index 384f8ea99..07c75e0a7 100644
++--- a/c++/src/Timezone.cc
+++++ b/c++/src/Timezone.cc
++@@ -696,12 +696,21 @@ namespace orc {
++ std::string filename_;
++ mutable std::unique_ptr<TimezoneImpl> impl_;
++ mutable std::once_flag initialized_;
+++ mutable std::exception_ptr init_exception_;
++
++ TimezoneImpl* getImpl() const {
++- std::call_once(initialized_, [&]() {
++- auto buffer = loadTZDB(filename_);
++- impl_ = std::make_unique<TimezoneImpl>(filename_, std::move(buffer));
++- });
+++ std::call_once(initialized_, [&]() {
+++ try {
+++ auto buffer = loadTZDB(filename_);
+++ impl_ = std::make_unique<TimezoneImpl>(filename_,
std::move(buffer));
+++ } catch (...) {
+++ // If initialization failed, re-throw the exception
+++ init_exception_ = std::current_exception();
+++ }
+++ });
+++ if (init_exception_) {
+++ std::rethrow_exception(init_exception_);
+++ }
++ return impl_.get();
++ }
+
-+ static inline bool LeftShiftOverflows(uint8_t value, uint32_t shift) {
-diff --git a/ports/thrift/portfile.cmake b/ports/thrift/portfile.cmake
-index 1501782..71d2147 100644
---- a/ports/thrift/portfile.cmake
-+++ b/ports/thrift/portfile.cmake
-@@ -12,7 +12,7 @@ vcpkg_find_acquire_program(BISON)
- vcpkg_from_github(
- OUT_SOURCE_PATH SOURCE_PATH
- REPO apache/thrift
-- REF "${VERSION}"
-+ REF "v${VERSION}"
- SHA512
5e4ee9870b30fe5ba484d39781c435716f7f3903793dc8aae96594ca813b1a5a73363b84719038ca8fa3ab8ef0a419a28410d936ff7b3bbadf36fc085a6883ae
- HEAD_REF master
- PATCHES
-diff --git a/ports/thrift/vcpkg.json b/ports/thrift/vcpkg.json
-index 2d5a854..9ff49ec 100644
---- a/ports/thrift/vcpkg.json
-+++ b/ports/thrift/vcpkg.json
-@@ -1,6 +1,7 @@
- {
- "name": "thrift",
- "version": "0.20.0",
-+ "port-version": 1,
- "description": "Apache Thrift is a software project spanning a variety of
programming languages and use cases. Our goal is to make reliable, performant
communication and data serialization across languages as efficient and seamless
as possible.",
- "homepage": "https://github.com/apache/thrift",
- "license": "Apache-2.0",
-diff --git a/versions/baseline.json b/versions/baseline.json
-index c6ce736..9ad1d63 100644
---- a/versions/baseline.json
-+++ b/versions/baseline.json
-@@ -8622,7 +8622,7 @@
- },
- "thrift": {
- "baseline": "0.20.0",
-- "port-version": 0
-+ "port-version": 1
- },
- "tidy-html5": {
- "baseline": "5.8.0",
-diff --git a/versions/t-/thrift.json b/versions/t-/thrift.json
-index 3db38c5..7464bde 100644
---- a/versions/t-/thrift.json
-+++ b/versions/t-/thrift.json
-@@ -1,5 +1,10 @@
- {
- "versions": [
-+ {
-+ "git-tree": "13757a6b05741cf3c9c39e3a1dcc5e5cd685e025",
-+ "version": "0.20.0",
-+ "port-version": 1
-+ },
- {
- "git-tree": "6855be1ce96497811d4eb0a9879baf6cf1b3610c",
- "version": "0.20.0",
+diff --git a/ports/orc/portfile.cmake b/ports/orc/portfile.cmake
+index 77ebf41ec3..4d065594a7 100644
+--- a/ports/orc/portfile.cmake
++++ b/ports/orc/portfile.cmake
+@@ -6,6 +6,8 @@ vcpkg_from_github(
+ REF "v${VERSION}"
+ SHA512
eabee16a6e984452a8cb715d0524041b20dd1bd88d78bb32534db93e5dbdd786aa4df8c05975406cb0728241eb3025a506c4fefb8c334ef0d8a27e6cb920d44c
+ HEAD_REF master
++ PATCHES
++ orc-fix-exception-propagation.diff
+ )
+
+ file(REMOVE "${SOURCE_PATH}/cmake_modules/FindGTest.cmake")
diff --git a/cpp/src/arrow/flight/CMakeLists.txt
b/cpp/src/arrow/flight/CMakeLists.txt
index a827a7307f..d6edbcefcf 100644
--- a/cpp/src/arrow/flight/CMakeLists.txt
+++ b/cpp/src/arrow/flight/CMakeLists.txt
@@ -189,6 +189,19 @@ set(ARROW_FLIGHT_SRCS
transport/grpc/util_internal.cc
types.cc)
+# Handle Unity build header conflicts on Windows.
+if(CMAKE_UNITY_BUILD AND WIN32)
+ set_source_files_properties(client.cc
+ cookie_internal.cc
+ serialization_internal.cc
+ server.cc
+ transport/grpc/serialization_internal.cc
+ transport/grpc/protocol_grpc_internal.cc
+ transport/grpc/util_internal.cc
+ types.cc
+ PROPERTIES SKIP_UNITY_BUILD_INCLUSION TRUE)
+endif()
+
if(ARROW_WITH_OPENTELEMETRY)
list(APPEND ARROW_FLIGHT_SRCS otel_logging.cc)
endif()
diff --git a/dev/tasks/python-wheels/github.linux.yml
b/dev/tasks/python-wheels/github.linux.yml
index b0bae05f91..09822ed2ff 100644
--- a/dev/tasks/python-wheels/github.linux.yml
+++ b/dev/tasks/python-wheels/github.linux.yml
@@ -32,7 +32,7 @@ jobs:
{% endif %}
env:
{% if linux_wheel_kind == "musllinux" and linux_wheel_version == "1-2" %}
- ALPINE_LINUX: "3.21"
+ ALPINE_LINUX: "3.22"
{% endif %}
# archery uses these environment variables
{% if arch == "amd64" %}
diff --git a/dev/tasks/python-wheels/github.osx.yml
b/dev/tasks/python-wheels/github.osx.yml
index f6f4cc2c96..140971626b 100644
--- a/dev/tasks/python-wheels/github.osx.yml
+++ b/dev/tasks/python-wheels/github.osx.yml
@@ -136,7 +136,6 @@ jobs:
$PYTHON -m venv test-env
source test-env/bin/activate
pip install --upgrade pip wheel
- arch -{{ arch }} pip install -r
arrow/python/requirements-wheel-test.txt
arch -{{ arch }} arrow/ci/scripts/python_wheel_unix_test.sh
$(pwd)/arrow
{{
macros.github_upload_releases("arrow/python/repaired_wheels/*.whl")|indent }}