From 33cdae4dd95d78447760f360620fe5686b589167 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?JB=20Onofr=C3=A9?= Date: Thu, 7 May 2026 14:23:41 +0200 Subject: [PATCH 1/6] MINOR: Fix Gandiva JNI build against Arrow C++ 24.0.0 arrow::decimal() was removed in Arrow C++ 24.0.0; replace with arrow::decimal128(). --- gandiva/src/main/cpp/jni_common.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gandiva/src/main/cpp/jni_common.cc b/gandiva/src/main/cpp/jni_common.cc index 2851250072..ec4888a512 100644 --- a/gandiva/src/main/cpp/jni_common.cc +++ b/gandiva/src/main/cpp/jni_common.cc @@ -221,7 +221,7 @@ DataTypePtr ProtoTypeToDataType(const gandiva::types::ExtGandivaType& ext_type) return arrow::date64(); case gandiva::types::DECIMAL: // TODO: error handling - return arrow::decimal(ext_type.precision(), ext_type.scale()); + return arrow::decimal128(ext_type.precision(), ext_type.scale()); case gandiva::types::TIME32: return ProtoTypeToTime32(ext_type); case gandiva::types::TIME64: From 18b8d4659a494bfd17da91f94a70ca6ed441d240 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?JB=20Onofr=C3=A9?= Date: Thu, 7 May 2026 16:01:37 +0200 Subject: [PATCH 2/6] MINOR: Install xsimd via vcpkg before building Arrow C++ 24.0.0 Arrow C++ 24.0.0 introduced xsimd >= 14.0.0 as a required dependency. The base Docker image was built for an older Arrow C++ release and does not have xsimd pre-installed, causing the Linux JNI cmake configuration to fail. Explicitly install it via vcpkg before the cmake step. --- ci/scripts/jni_manylinux_build.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ci/scripts/jni_manylinux_build.sh b/ci/scripts/jni_manylinux_build.sh index 3577c37ab3..6e45bf56c6 100755 --- a/ci/scripts/jni_manylinux_build.sh +++ b/ci/scripts/jni_manylinux_build.sh @@ -68,6 +68,9 @@ export ARROW_PARQUET=ON export AWS_EC2_METADATA_DISABLED=TRUE +# Arrow C++ 24.0.0 requires xsimd >= 14.0.0 which may not be pre-installed in the base image +"${VCPKG_ROOT}/vcpkg" install "xsimd:${VCPKG_TARGET_TRIPLET}" + install_dir="${build_dir}/cpp-install" cmake \ From 156fe706e73b0882b52fc92afb8cd27d71f6c166 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?JB=20Onofr=C3=A9?= Date: Thu, 7 May 2026 16:42:55 +0200 Subject: [PATCH 3/6] MINOR: Pass vcpkg toolchain to Arrow C++ CMake configure step The xsimd installation via vcpkg was not visible to CMake because the vcpkg toolchain file was not passed to the Arrow C++ configure step. --- ci/scripts/jni_manylinux_build.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ci/scripts/jni_manylinux_build.sh b/ci/scripts/jni_manylinux_build.sh index 6e45bf56c6..cd45b79e47 100755 --- a/ci/scripts/jni_manylinux_build.sh +++ b/ci/scripts/jni_manylinux_build.sh @@ -77,7 +77,9 @@ cmake \ -S "${arrow_dir}/cpp" \ -B "${build_dir}/cpp" \ --preset=ninja-release-jni-linux \ - -DCMAKE_INSTALL_PREFIX="${install_dir}" + -DCMAKE_INSTALL_PREFIX="${install_dir}" \ + -DCMAKE_TOOLCHAIN_FILE="${VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" \ + -DVCPKG_TARGET_TRIPLET="${VCPKG_TARGET_TRIPLET}" cmake --build "${build_dir}/cpp" cmake --install "${build_dir}/cpp" github_actions_group_end From c9bbc7964ab8a02449da8ba815ea9f3b57092634 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?JB=20Onofr=C3=A9?= Date: Thu, 7 May 2026 18:03:59 +0200 Subject: [PATCH 4/6] MINOR: Use Arrow bundled xsimd 14.0.0 instead of stale vcpkg registry The Docker image's vcpkg registry only has xsimd 13.2.0 but Arrow C++ 24.0.0 requires >= 14.0.0. Override xsimd_SOURCE=BUNDLED so Arrow downloads and uses xsimd 14.0.0 directly. --- ci/scripts/jni_manylinux_build.sh | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/ci/scripts/jni_manylinux_build.sh b/ci/scripts/jni_manylinux_build.sh index cd45b79e47..b1956b3665 100755 --- a/ci/scripts/jni_manylinux_build.sh +++ b/ci/scripts/jni_manylinux_build.sh @@ -68,9 +68,6 @@ export ARROW_PARQUET=ON export AWS_EC2_METADATA_DISABLED=TRUE -# Arrow C++ 24.0.0 requires xsimd >= 14.0.0 which may not be pre-installed in the base image -"${VCPKG_ROOT}/vcpkg" install "xsimd:${VCPKG_TARGET_TRIPLET}" - install_dir="${build_dir}/cpp-install" cmake \ @@ -79,7 +76,8 @@ cmake \ --preset=ninja-release-jni-linux \ -DCMAKE_INSTALL_PREFIX="${install_dir}" \ -DCMAKE_TOOLCHAIN_FILE="${VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" \ - -DVCPKG_TARGET_TRIPLET="${VCPKG_TARGET_TRIPLET}" + -DVCPKG_TARGET_TRIPLET="${VCPKG_TARGET_TRIPLET}" \ + -Dxsimd_SOURCE=BUNDLED cmake --build "${build_dir}/cpp" cmake --install "${build_dir}/cpp" github_actions_group_end From 6ef05938557a51723e987ccad053dcfdb194b1fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?JB=20Onofr=C3=A9?= Date: Fri, 8 May 2026 06:18:17 +0200 Subject: [PATCH 5/6] Update vcpkg --- .env | 2 +- ci/scripts/jni_manylinux_build.sh | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/.env b/.env index 2bd7255476..51daa0406c 100644 --- a/.env +++ b/.env @@ -53,4 +53,4 @@ MAVEN=3.9.9 # Versions for various dependencies used to build artifacts # Keep in sync with apache/arrow ARROW_REPO_ROOT=./arrow -VCPKG="4334d8b4c8916018600212ab4dd4bbdc343065d1" # 2025.09.17 Release +VCPKG="66c0373dc7fca549e5803087b9487edfe3aca0a1" # 2026.01.16 Release diff --git a/ci/scripts/jni_manylinux_build.sh b/ci/scripts/jni_manylinux_build.sh index b1956b3665..3577c37ab3 100755 --- a/ci/scripts/jni_manylinux_build.sh +++ b/ci/scripts/jni_manylinux_build.sh @@ -74,10 +74,7 @@ cmake \ -S "${arrow_dir}/cpp" \ -B "${build_dir}/cpp" \ --preset=ninja-release-jni-linux \ - -DCMAKE_INSTALL_PREFIX="${install_dir}" \ - -DCMAKE_TOOLCHAIN_FILE="${VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" \ - -DVCPKG_TARGET_TRIPLET="${VCPKG_TARGET_TRIPLET}" \ - -Dxsimd_SOURCE=BUNDLED + -DCMAKE_INSTALL_PREFIX="${install_dir}" cmake --build "${build_dir}/cpp" cmake --install "${build_dir}/cpp" github_actions_group_end From 2961cc78b00d8d0b36e28ff57d8a35bc4d0554e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?JB=20Onofr=C3=A9?= Date: Sat, 9 May 2026 07:51:36 +0200 Subject: [PATCH 6/6] MINOR: Fix vcpkg-jni Docker command to use explicit bash invocation The new Arrow C++ manylinux image (66c0373d vcpkg baseline) changed the manylinux-entrypoint to exec "$@" directly, treating the whole command string as a filename instead of running it through a shell. Pass /bin/bash -c explicitly so && is properly interpreted. --- compose.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/compose.yaml b/compose.yaml index fb290b22fe..4fd825e5a5 100644 --- a/compose.yaml +++ b/compose.yaml @@ -109,5 +109,6 @@ services: ARROW_JAVA_CDATA: "ON" CCACHE_DIR: "/ccache" command: - ["git config --global --add safe.directory /arrow-java && \ + ["/bin/bash", "-c", + "git config --global --add safe.directory /arrow-java && /arrow-java/ci/scripts/jni_manylinux_build.sh /arrow-java /arrow /build/java /arrow-java/jni"]