This is an automated email from the ASF dual-hosted git repository.
kou 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 99ca031f46 GH-48766: [CI][Packaging] Delete conan related packaging
jobs and CI (#49647)
99ca031f46 is described below
commit 99ca031f46208f2ae040df6883bd6e1181a6263a
Author: Raúl Cumplido <[email protected]>
AuthorDate: Thu Apr 2 15:04:59 2026 +0200
GH-48766: [CI][Packaging] Delete conan related packaging jobs and CI
(#49647)
### Rationale for this change
The conan CI jobs have been failing for 4+ months. The main problem is that
conan deprecated the repository they used to build the Docker files we were
using:
> ⛔ This repository is now deprecated. The Docker recipes and images
provided by this repository are no longer used by ConanCenterIndex CI. Users
are encouraged to explore alternative solutions for their Docker image needs.
see:
https://github.com/conan-io/conan-docker-tools#readme
### What changes are included in this PR?
Remove all conan related Arrow CI. The integration will have to be managed
upstream when we build the PRs to conan. This might required patches and take
longer but having the CI jobs broken for 4+ months without a clear guideline on
how to proceed should be fixed.
### Are these changes tested?
No
### Are there any user-facing changes?
No
* GitHub Issue: #48766
Authored-by: Raúl Cumplido <[email protected]>
Signed-off-by: Sutou Kouhei <[email protected]>
---
.env | 6 -
.pre-commit-config.yaml | 3 -
LICENSE.txt | 24 -
ci/conan/.gitignore | 18 -
ci/conan/all/conan_cmake_project_include.cmake | 35 --
ci/conan/all/conandata.yml | 84 ---
ci/conan/all/conanfile.py | 590 ---------------------
ci/conan/all/patches/11.0.0-0001-fix-cmake.patch | 64 ---
ci/conan/all/patches/16.0.0-0001-fix-cmake.patch | 84 ---
ci/conan/all/patches/18.0.0-0001-fix-cmake.patch | 81 ---
ci/conan/all/patches/19.0.1-0001-fix-cmake.patch | 79 ---
.../19.0.1-0002-fix-downloaded-mimalloc.patch | 37 --
.../20.0.0-0001-fix-downloaded-mimalloc.patch | 37 --
ci/conan/all/test_package/CMakeLists.txt | 40 --
ci/conan/all/test_package/conanfile.py | 49 --
ci/conan/all/test_package/test_package.cpp | 190 -------
ci/conan/config.yml | 39 --
ci/conan/merge_status.sh | 18 -
ci/conan/merge_upstream.sh | 47 --
ci/scripts/conan_build.sh | 84 ---
ci/scripts/conan_setup.sh | 22 -
compose.yaml | 25 -
dev/tasks/tasks.yml | 33 --
23 files changed, 1689 deletions(-)
diff --git a/.env b/.env
index 3f866fc4c0..456c45b065 100644
--- a/.env
+++ b/.env
@@ -100,9 +100,3 @@ VCPKG="66c0373dc7fca549e5803087b9487edfe3aca0a1" #
2026.01.16 Release
# use pulled built images in dev/tasks/python-wheels/github.windows.yml.
PYTHON_WHEEL_WINDOWS_IMAGE_REVISION=2026-03-04
PYTHON_WHEEL_WINDOWS_TEST_IMAGE_REVISION=2026-03-04
-
-# Use conanio/${CONAN_BASE}:{CONAN_VERSION} for "docker compose run --rm
conan".
-# See https://github.com/conan-io/conan-docker-tools#readme and
-# https://hub.docker.com/u/conanio for available images.
-CONAN_BASE=gcc11-ubuntu16.04
-CONAN_VERSION=2.12.1
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 67fb3f34f2..1a1267d32c 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -268,7 +268,6 @@ repos:
)
exclude: >-
(
- ?^ci/conan/all/.*CMakeLists\.txt$|
?^cpp/cmake_modules/FindNumPy\.cmake$|
?^cpp/cmake_modules/FindPythonLibsNew\.cmake$|
?^cpp/cmake_modules/UseCython\.cmake$|
@@ -299,8 +298,6 @@ repos:
?^ci/scripts/c_glib_build\.sh$|
?^ci/scripts/c_glib_test\.sh$|
?^ci/scripts/ccache_setup\.sh$|
- ?^ci/scripts/conan_build\.sh$|
- ?^ci/scripts/conan_setup\.sh$|
?^ci/scripts/cpp_test\.sh$|
?^ci/scripts/download_tz_database\.sh$|
?^ci/scripts/install_azurite\.sh$|
diff --git a/LICENSE.txt b/LICENSE.txt
index 794ee9ea37..5382ddfa5d 100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -2087,30 +2087,6 @@ SPDX-License-Identifier: Apache-2.0
--------------------------------------------------------------------------------
-ci/conan/ is based on code from Conan Package and Dependency Manager.
-
-Copyright (c) 2019 Conan.io
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
---------------------------------------------------------------------------------
-
3rdparty dependency UCX is redistributed as a dynamically linked shared
library in certain binary distributions. UCX has the following license:
diff --git a/ci/conan/.gitignore b/ci/conan/.gitignore
deleted file mode 100644
index 0c6872560b..0000000000
--- a/ci/conan/.gitignore
+++ /dev/null
@@ -1,18 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-/all/test_package/build/
diff --git a/ci/conan/all/conan_cmake_project_include.cmake
b/ci/conan/all/conan_cmake_project_include.cmake
deleted file mode 100644
index a6dee0c434..0000000000
--- a/ci/conan/all/conan_cmake_project_include.cmake
+++ /dev/null
@@ -1,35 +0,0 @@
-# MIT License
-#
-# Copyright (c) 2019 Conan.io
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
all
-# copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-
-if(ARROW_S3)
- find_package(AWSSDK REQUIRED)
- # Fix issue where scripts expect a variable called "AWSSDK_LINK_LIBRARIES"
- # which is not defined by the generated AWSSDKConfig.cmake
- if(NOT DEFINED AWSSDK_LINK_LIBRARIES)
- set(AWSSDK_LINK_LIBRARIES "${AWSSDK_LIBRARIES}")
- endif()
-
- # Causes logic used for generated .pc file to not run
- # avoiding instropection of target `aws-cpp-sdk::aws-cpp-sdk`
- # This is fine because the generated .pc file is not of use
- set(AWSSDK_SOURCE "conan")
-endif()
diff --git a/ci/conan/all/conandata.yml b/ci/conan/all/conandata.yml
deleted file mode 100644
index 3bd3ec61eb..0000000000
--- a/ci/conan/all/conandata.yml
+++ /dev/null
@@ -1,84 +0,0 @@
-# MIT License
-#
-# Copyright (c) 2019 Conan.io
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
all
-# copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-
-sources:
- "20.0.0":
- url:
"https://www.apache.org/dyn/closer.lua/arrow/arrow-20.0.0/apache-arrow-20.0.0.tar.gz?action=download"
- sha256: "89efbbf852f5a1f79e9c99ab4c217e2eb7f991837c005cba2d4a2fbd35fad212"
- "19.0.1":
- url:
"https://www.apache.org/dyn/closer.lua/arrow/arrow-19.0.1/apache-arrow-19.0.1.tar.gz?action=download"
- sha256: "acb76266e8b0c2fbb7eb15d542fbb462a73b3fd1e32b80fad6c2fafd95a51160"
- "18.1.0":
- url:
"https://www.apache.org/dyn/closer.lua/arrow/arrow-18.1.0/apache-arrow-18.1.0.tar.gz?action=download"
- sha256: "2dc8da5f8796afe213ecc5e5aba85bb82d91520eff3cf315784a52d0fa61d7fc"
- "18.0.0":
- url:
"https://www.apache.org/dyn/closer.lua/arrow/arrow-18.0.0/apache-arrow-18.0.0.tar.gz?action=download"
- sha256: "abcf1934cd0cdddd33664e9f2d9a251d6c55239d1122ad0ed223b13a583c82a9"
- "17.0.0":
- url:
"https://www.apache.org/dyn/closer.lua/arrow/arrow-17.0.0/apache-arrow-17.0.0.tar.gz?action=download"
- sha256: "9d280d8042e7cf526f8c28d170d93bfab65e50f94569f6a790982a878d8d898d"
- "16.1.0":
- url:
"https://www.apache.org/dyn/closer.lua/arrow/arrow-16.1.0/apache-arrow-16.1.0.tar.gz?action=download"
- sha256: "c9e60c7e87e59383d21b20dc874b17153729ee153264af6d21654b7dff2c60d7"
- "15.0.0":
- url:
"https://www.apache.org/dyn/closer.lua/arrow/arrow-15.0.0/apache-arrow-15.0.0.tar.gz?action=download"
- sha256: "01dd3f70e85d9b5b933ec92c0db8a4ef504a5105f78d2d8622e84279fb45c25d"
- "14.0.2":
- url:
"https://www.apache.org/dyn/closer.lua/arrow/arrow-14.0.2/apache-arrow-14.0.2.tar.gz?action=download"
- sha256: "1304dedb41896008b89fe0738c71a95d9b81752efc77fa70f264cb1da15d9bc2"
-patches:
- "20.0.0":
- - patch_file: "patches/20.0.0-0001-fix-downloaded-mimalloc.patch"
- patch_description: "use cci package"
- patch_type: "conan"
- "19.0.1":
- - patch_file: "patches/19.0.1-0001-fix-cmake.patch"
- patch_description: "use cci package"
- patch_type: "conan"
- - patch_file: "patches/19.0.1-0002-fix-downloaded-mimalloc.patch"
- patch_description: "use cci package"
- patch_type: "conan"
- "18.1.0":
- - patch_file: "patches/18.0.0-0001-fix-cmake.patch"
- patch_description: "use cci package"
- patch_type: "conan"
- "18.0.0":
- - patch_file: "patches/18.0.0-0001-fix-cmake.patch"
- patch_description: "use cci package"
- patch_type: "conan"
- "17.0.0":
- - patch_file: "patches/16.0.0-0001-fix-cmake.patch"
- patch_description: "use cci package"
- patch_type: "conan"
- "16.1.0":
- - patch_file: "patches/16.0.0-0001-fix-cmake.patch"
- patch_description: "use cci package"
- patch_type: "conan"
- "15.0.0":
- - patch_file: "patches/11.0.0-0001-fix-cmake.patch"
- patch_description: "use cci package"
- patch_type: "conan"
- "14.0.2":
- - patch_file: "patches/11.0.0-0001-fix-cmake.patch"
- patch_description: "use cci package"
- patch_type: "conan"
-
diff --git a/ci/conan/all/conanfile.py b/ci/conan/all/conanfile.py
deleted file mode 100644
index b9999e5005..0000000000
--- a/ci/conan/all/conanfile.py
+++ /dev/null
@@ -1,590 +0,0 @@
-# MIT License
-#
-# Copyright (c) 2019 Conan.io
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
all
-# copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-
-import os
-
-from conan import ConanFile
-from conan.errors import ConanInvalidConfiguration, ConanException
-from conan.tools.build import check_min_cppstd, cross_building
-from conan.tools.cmake import CMake, CMakeDeps, CMakeToolchain, cmake_layout
-from conan.tools.files import apply_conandata_patches, copy,
export_conandata_patches, get, rmdir
-from conan.tools.microsoft import is_msvc, is_msvc_static_runtime
-from conan.tools.scm import Version
-
-required_conan_version = ">=2.1.0"
-
-
-class ArrowConan(ConanFile):
- name = "arrow"
- description = "Apache Arrow is a cross-language development platform for
in-memory data"
- license = ("Apache-2.0",)
- url = "https://github.com/conan-io/conan-center-index"
- homepage = "https://arrow.apache.org/"
- topics = ("memory", "gandiva", "parquet", "skyhook", "acero", "hdfs",
"csv", "cuda", "gcs", "json", "hive", "s3", "grpc")
- package_type = "library"
- settings = "os", "arch", "compiler", "build_type"
- options = {
- "shared": [True, False],
- "fPIC": [True, False],
- "gandiva": [True, False],
- "parquet": ["auto", True, False],
- "substrait": [True, False],
- "skyhook": [True, False],
- "acero": [True, False],
- "cli": [True, False],
- "compute": ["auto", True, False],
- "dataset_modules": ["auto", True, False],
- "deprecated": [True, False],
- "encryption": [True, False],
- "filesystem_layer": [True, False],
- "hdfs_bridgs": [True, False],
- "plasma": [True, False, "deprecated"],
- "simd_level": [None, "default", "sse4_2", "avx2", "avx512", "neon", ],
- "runtime_simd_level": [None, "sse4_2", "avx2", "avx512", "max"],
- "with_backtrace": [True, False],
- "with_boost": ["auto", True, False],
- "with_csv": [True, False],
- "with_cuda": [True, False],
- "with_flight_rpc": ["auto", True, False],
- "with_flight_sql": [True, False],
- "with_gcs": [True, False],
- "with_gflags": ["auto", True, False],
- "with_glog": ["auto", True, False],
- "with_grpc": ["auto", True, False],
- "with_jemalloc": ["auto", True, False],
- "with_mimalloc": [True, False],
- "with_json": [True, False],
- "with_thrift": ["auto", True, False],
- "with_llvm": ["auto", True, False],
- "with_openssl": ["auto", True, False],
- "with_opentelemetry": [True, False],
- "with_orc": [True, False],
- "with_protobuf": ["auto", True, False],
- "with_re2": ["auto", True, False],
- "with_s3": [True, False],
- "with_utf8proc": ["auto", True, False],
- "with_brotli": [True, False],
- "with_bz2": [True, False],
- "with_lz4": [True, False],
- "with_snappy": [True, False],
- "with_zlib": [True, False],
- "with_zstd": [True, False],
- }
- default_options = {
- "shared": False,
- "fPIC": True,
- "gandiva": False,
- "parquet": True,
- "skyhook": False,
- "substrait": False,
- "acero": False,
- "cli": False,
- "compute": False,
- "dataset_modules": False,
- "deprecated": True,
- "encryption": False,
- "filesystem_layer": True,
- "hdfs_bridgs": False,
- "plasma": "deprecated",
- "simd_level": "default",
- "runtime_simd_level": "max",
- "with_backtrace": False,
- "with_boost": True,
- "with_brotli": False,
- "with_bz2": False,
- "with_csv": False,
- "with_cuda": False,
- "with_flight_rpc": False,
- "with_flight_sql": False,
- "with_gcs": False,
- "with_gflags": False,
- "with_jemalloc": False,
- "with_mimalloc": False,
- "with_glog": False,
- "with_grpc": False,
- "with_json": False,
- "with_thrift": True,
- "with_llvm": False,
- "with_openssl": False,
- "with_opentelemetry": False,
- "with_orc": False,
- "with_protobuf": False,
- "with_re2": False,
- "with_s3": False,
- "with_utf8proc": False,
- "with_lz4": False,
- "with_snappy": False,
- "with_zlib": True,
- "with_zstd": False,
- }
- short_paths = True
-
- @property
- def _min_cppstd(self):
- # arrow >= 10.0.0 requires C++17.
- # https://github.com/apache/arrow/pull/13991
- return "17"
-
- def export_sources(self):
- export_conandata_patches(self)
- copy(self, "conan_cmake_project_include.cmake", self.recipe_folder,
os.path.join(self.export_sources_folder, "src"))
-
- def config_options(self):
- if self.settings.os == "Windows":
- del self.options.fPIC
- if is_msvc(self):
- self.options.with_boost = True
- if Version(self.version) >= "19.0.0":
- self.options.with_mimalloc = True
-
- def configure(self):
- if self.options.shared:
- self.options.rm_safe("fPIC")
-
- def layout(self):
- cmake_layout(self, src_folder="src")
-
- def _requires_rapidjson(self):
- return self.options.with_json or self.options.encryption
-
- def requirements(self):
- if self.options.with_thrift:
- self.requires("thrift/0.20.0")
- if self.options.with_protobuf:
- self.requires("protobuf/3.21.12")
- if self.options.with_jemalloc:
- self.requires("jemalloc/5.3.0")
- if self.options.with_mimalloc:
- self.requires("mimalloc/1.7.6")
- if self.options.with_boost:
- self.requires("boost/1.85.0")
- if self.options.with_gflags:
- self.requires("gflags/2.2.2")
- if self.options.with_glog:
- self.requires("glog/0.6.0")
- if self.options.get_safe("with_gcs"):
- self.requires("google-cloud-cpp/1.40.1")
- if self.options.with_grpc:
- self.requires("grpc/1.50.0")
- if self._requires_rapidjson():
- self.requires("rapidjson/1.1.0")
- if self.options.with_llvm:
- self.requires("llvm-core/13.0.0")
- if self.options.with_openssl:
- # aws-sdk-cpp requires openssl/1.1.1. it uses deprecated functions
in openssl/3.0.0
- if self.options.with_s3:
- self.requires("openssl/1.1.1w")
- else:
- self.requires("openssl/[>=1.1 <4]")
- if self.options.get_safe("with_opentelemetry"):
- self.requires("opentelemetry-cpp/1.7.0")
- if self.options.with_s3:
- self.requires("aws-sdk-cpp/1.9.234")
- if self.options.with_brotli:
- self.requires("brotli/1.1.0")
- if self.options.with_bz2:
- self.requires("bzip2/1.0.8")
- if self.options.with_lz4:
- self.requires("lz4/1.9.4")
- if self.options.with_snappy:
- self.requires("snappy/1.1.9")
- if self.options.get_safe("simd_level") is not None or \
- self.options.get_safe("runtime_simd_level") is not None:
- self.requires("xsimd/14.0.0")
- if self.options.with_zlib:
- self.requires("zlib/[>=1.2.11 <2]")
- if self.options.with_zstd:
- self.requires("zstd/[>=1.5 <1.6]")
- if self.options.with_re2:
- self.requires("re2/20230301")
- if self.options.with_utf8proc:
- self.requires("utf8proc/2.8.0")
- if self.options.with_backtrace:
- self.requires("libbacktrace/cci.20210118")
- if self.options.with_orc:
- self.requires("orc/2.0.0")
-
- def validate(self):
- # Do not allow options with 'auto' value
- # TODO: Remove "auto" from the possible values for these options
- auto_options = [option for option, value in self.options.items() if
value == "auto"]
- if auto_options:
- raise ConanException("Options with value 'auto' are deprecated.
Please set them true/false or use its default value."
- f" Please change the following options:
{auto_options}")
-
- # From
https://github.com/conan-io/conan-center-index/pull/23163#issuecomment-2039808851
- if self.options.gandiva:
- if not self.options.with_re2:
- raise ConanException("'with_re2' option should be True when
'gandiva=True'")
- if not self.options.with_boost:
- raise ConanException("'with_boost' option should be True when
'gandiva=True'")
- if not self.options.with_utf8proc:
- raise ConanException("'with_utf8proc' option should be True
when 'gandiva=True'")
- if self.options.with_orc:
- if not self.options.with_lz4:
- raise ConanException("'with_lz4' option should be True when
'orc=True'")
- if not self.options.with_snappy:
- raise ConanException("'with_snappy' option should be True when
'orc=True'")
- if not self.options.with_zlib:
- raise ConanException("'with_zlib' option should be True when
'orc=True'")
- if not self.options.with_zstd:
- raise ConanException("'with_zstd' option should be True when
'orc=True'")
- if self.options.with_thrift and not self.options.with_boost:
- raise ConanException("'with_boost' option should be True when
'thrift=True'")
- if self.options.parquet:
- if not self.options.with_thrift:
- raise ConanException("'with_thrift' option should be True when
'parquet=True'")
- if self.options.with_flight_rpc and not self.options.with_protobuf:
- raise ConanException("'with_protobuf' option should be True when
'with_flight_rpc=True'")
-
- check_min_cppstd(self, self._min_cppstd)
-
- if self.options.get_safe("skyhook", False):
- raise ConanInvalidConfiguration("CCI has no librados recipe (yet)")
- if self.options.with_cuda:
- raise ConanInvalidConfiguration("CCI has no cuda recipe (yet)")
- if self.options.with_s3 and not
self.dependencies["aws-sdk-cpp"].options.config:
- raise ConanInvalidConfiguration("arrow:with_s3 requires
aws-sdk-cpp:config is True.")
-
- if self.options.shared and self.options.with_jemalloc:
- if self.dependencies["jemalloc"].options.enable_cxx:
- raise ConanInvalidConfiguration("jemmalloc.enable_cxx of a
static jemalloc must be disabled")
-
- if self.options.with_thrift and not self.options.with_zlib:
- raise ConanInvalidConfiguration("arrow:with_thrift requires
arrow:with_zlib")
-
- if self.options.parquet and not self.options.with_thrift:
- raise ConanInvalidConfiguration("arrow:parquet requires
arrow:with_thrift")
-
- def build_requirements(self):
- if Version(self.version) >= "20.0.0":
- self.tool_requires("cmake/[>=3.25 <4]")
- else:
- self.tool_requires("cmake/[>=3.16 <4]")
-
- def source(self):
- # START
- # This block should be removed when we update upstream:
- #
https://github.com/conan-io/conan-center-index/tree/master/recipes/arrow/
- if not self.version in self.conan_data.get("sources", {}):
- import shutil
- top_level = os.environ.get("ARROW_HOME")
- shutil.copytree(os.path.join(top_level, "cpp"),
- os.path.join(self.source_folder, "cpp"))
- shutil.copytree(os.path.join(top_level, "format"),
- os.path.join(self.source_folder, "format"))
- top_level_files = [
- ".env",
- "LICENSE.txt",
- "NOTICE.txt",
- ]
- for top_level_file in top_level_files:
- shutil.copy(os.path.join(top_level, top_level_file),
- self.source_folder)
- return
- # END
- get(self, **self.conan_data["sources"][self.version],
- filename=f"apache-arrow-{self.version}.tar.gz", strip_root=True)
- self._patch_sources()
-
- def generate(self):
- tc = CMakeToolchain(self)
- if cross_building(self):
- cmake_system_processor = {
- "armv8": "aarch64",
- "armv8.3": "aarch64",
- }.get(str(self.settings.arch), str(self.settings.arch))
- if cmake_system_processor == "aarch64":
- tc.variables["ARROW_CPU_FLAG"] = "armv8"
- if is_msvc(self):
- tc.variables["ARROW_USE_STATIC_CRT"] = is_msvc_static_runtime(self)
- tc.variables["ARROW_DEPENDENCY_SOURCE"] = "SYSTEM"
- tc.variables["ARROW_PACKAGE_KIND"] = "conan" # See
https://github.com/conan-io/conan-center-index/pull/14903/files#r1057938314 for
details
- tc.variables["ARROW_GANDIVA"] = bool(self.options.gandiva)
- tc.variables["ARROW_PARQUET"] = self.options.parquet
- tc.variables["ARROW_SUBSTRAIT"] =
bool(self.options.get_safe("substrait", False))
- tc.variables["ARROW_ACERO"] = bool(self.options.acero)
- tc.variables["ARROW_DATASET"] = self.options.dataset_modules
- tc.variables["ARROW_FILESYSTEM"] = bool(self.options.filesystem_layer)
- tc.variables["PARQUET_REQUIRE_ENCRYPTION"] =
bool(self.options.encryption)
- tc.variables["ARROW_HDFS"] = bool(self.options.hdfs_bridgs)
- tc.variables["ARROW_VERBOSE_THIRDPARTY_BUILD"] = True
- tc.variables["ARROW_BUILD_SHARED"] = bool(self.options.shared)
- tc.variables["ARROW_BUILD_STATIC"] = not bool(self.options.shared)
- tc.variables["ARROW_NO_DEPRECATED_API"] = not
bool(self.options.deprecated)
- tc.variables["ARROW_FLIGHT"] = self.options.with_flight_rpc
- tc.variables["ARROW_FLIGHT_SQL"] =
bool(self.options.get_safe("with_flight_sql", False))
- tc.variables["ARROW_COMPUTE"] = bool(self.options.compute)
- tc.variables["ARROW_CSV"] = bool(self.options.with_csv)
- tc.variables["ARROW_CUDA"] = bool(self.options.with_cuda)
- tc.variables["ARROW_JEMALLOC"] = self.options.with_jemalloc
- tc.variables["jemalloc_SOURCE"] = "SYSTEM"
- tc.variables["ARROW_MIMALLOC"] = bool(self.options.with_mimalloc)
- tc.variables["ARROW_JSON"] = bool(self.options.with_json)
- tc.variables["google_cloud_cpp_SOURCE"] = "SYSTEM"
- tc.variables["ARROW_GCS"] = bool(self.options.get_safe("with_gcs",
False))
- tc.variables["BOOST_SOURCE"] = "SYSTEM"
- tc.variables["Protobuf_SOURCE"] = "SYSTEM"
- if self.options.with_protobuf:
- tc.variables["ARROW_PROTOBUF_USE_SHARED"] =
bool(self.dependencies["protobuf"].options.shared)
- tc.variables["gRPC_SOURCE"] = "SYSTEM"
- if self.options.with_grpc:
- tc.variables["ARROW_GRPC_USE_SHARED"] =
bool(self.dependencies["grpc"].options.shared)
-
- tc.variables["ARROW_USE_GLOG"] = self.options.with_glog
- tc.variables["GLOG_SOURCE"] = "SYSTEM"
- tc.variables["ARROW_WITH_BACKTRACE"] =
bool(self.options.with_backtrace)
- tc.variables["ARROW_WITH_BROTLI"] = bool(self.options.with_brotli)
- tc.variables["ARROW_WITH_RE2"] = bool(self.options.with_re2)
- tc.variables["brotli_SOURCE"] = "SYSTEM"
- if self.options.with_brotli:
- tc.variables["ARROW_BROTLI_USE_SHARED"] =
bool(self.dependencies["brotli"].options.shared)
- tc.variables["gflags_SOURCE"] = "SYSTEM"
- if self.options.with_gflags:
- tc.variables["ARROW_GFLAGS_USE_SHARED"] =
bool(self.dependencies["gflags"].options.shared)
- tc.variables["ARROW_WITH_BZ2"] = bool(self.options.with_bz2)
- tc.variables["BZip2_SOURCE"] = "SYSTEM"
- if self.options.with_bz2:
- tc.variables["ARROW_BZ2_USE_SHARED"] =
bool(self.dependencies["bzip2"].options.shared)
- tc.variables["ARROW_WITH_LZ4"] = bool(self.options.with_lz4)
- tc.variables["lz4_SOURCE"] = "SYSTEM"
- if self.options.with_lz4:
- tc.variables["ARROW_LZ4_USE_SHARED"] =
bool(self.dependencies["lz4"].options.shared)
- tc.variables["ARROW_WITH_SNAPPY"] = bool(self.options.with_snappy)
- tc.variables["RapidJSON_SOURCE"] = "SYSTEM"
- tc.variables["Snappy_SOURCE"] = "SYSTEM"
- if self.options.with_snappy:
- tc.variables["ARROW_SNAPPY_USE_SHARED"] =
bool(self.dependencies["snappy"].options.shared)
- tc.variables["ARROW_WITH_ZLIB"] = bool(self.options.with_zlib)
- tc.variables["re2_SOURCE"] = "SYSTEM"
- tc.variables["ZLIB_SOURCE"] = "SYSTEM"
- tc.variables["xsimd_SOURCE"] = "SYSTEM"
- tc.variables["ARROW_WITH_ZSTD"] = bool(self.options.with_zstd)
- tc.variables["zstd_SOURCE"] = "SYSTEM"
- tc.variables["ARROW_SIMD_LEVEL"] = str(self.options.simd_level).upper()
- tc.variables["ARROW_RUNTIME_SIMD_LEVEL"] =
str(self.options.runtime_simd_level).upper()
- if self.options.with_zstd:
- tc.variables["ARROW_ZSTD_USE_SHARED"] =
bool(self.dependencies["zstd"].options.shared)
- tc.variables["ORC_SOURCE"] = "SYSTEM"
- tc.variables["ARROW_ORC"] = bool(self.options.with_orc)
- tc.variables["ARROW_WITH_THRIFT"] = bool(self.options.with_thrift)
- tc.variables["ARROW_THRIFT"] = bool(self.options.with_thrift)
- tc.variables["Thrift_SOURCE"] = "SYSTEM"
- if self.options.with_thrift:
- tc.variables["ARROW_THRIFT"] = True
- tc.variables["THRIFT_VERSION"] =
bool(self.dependencies["thrift"].ref.version) # a recent thrift does not
require boost
- tc.variables["ARROW_THRIFT_USE_SHARED"] =
bool(self.dependencies["thrift"].options.shared)
- tc.variables["ARROW_USE_OPENSSL"] = self.options.with_openssl
- if self.options.with_openssl:
- tc.variables["OPENSSL_ROOT_DIR"] =
self.dependencies["openssl"].package_folder.replace("\\", "/")
- tc.variables["ARROW_OPENSSL_USE_SHARED"] =
bool(self.dependencies["openssl"].options.shared)
- if self.options.with_boost:
- tc.variables["ARROW_USE_BOOST"] = True
- tc.variables["ARROW_BOOST_USE_SHARED"] =
bool(self.dependencies["boost"].options.shared)
- tc.variables["ARROW_S3"] = bool(self.options.with_s3)
- tc.variables["AWSSDK_SOURCE"] = "SYSTEM"
- tc.variables["ARROW_BUILD_UTILITIES"] = bool(self.options.cli)
- tc.variables["ARROW_BUILD_INTEGRATION"] = False
- tc.variables["ARROW_INSTALL_NAME_RPATH"] = True
- tc.variables["ARROW_BUILD_EXAMPLES"] = False
- tc.variables["ARROW_BUILD_TESTS"] = False
- tc.variables["ARROW_ENABLE_TIMING_TESTS"] = False
- tc.variables["ARROW_BUILD_BENCHMARKS"] = False
- tc.variables["LLVM_SOURCE"] = "SYSTEM"
- tc.variables["ARROW_WITH_UTF8PROC"] = self.options.with_utf8proc
- tc.variables["ARROW_BOOST_REQUIRED"] = self.options.with_boost
- tc.variables["utf8proc_SOURCE"] = "SYSTEM"
- if self.options.with_utf8proc:
- tc.variables["ARROW_UTF8PROC_USE_SHARED"] =
bool(self.dependencies["utf8proc"].options.shared)
- tc.variables["BUILD_WARNING_LEVEL"] = "PRODUCTION"
- if is_msvc(self):
- tc.variables["ARROW_USE_STATIC_CRT"] = is_msvc_static_runtime(self)
- if self.options.with_llvm:
- tc.variables["LLVM_DIR"] =
self.dependencies["llvm-core"].package_folder.replace("\\", "/")
-
- tc.cache_variables["CMAKE_PROJECT_arrow_INCLUDE"] =
os.path.join(self.source_folder, "conan_cmake_project_include.cmake")
- tc.generate()
-
- deps = CMakeDeps(self)
- deps.set_property("mimalloc", "cmake_target_name",
"mimalloc::mimalloc")
- deps.generate()
-
- def _patch_sources(self):
- apply_conandata_patches(self)
-
- def build(self):
- cmake = CMake(self)
- cmake.configure(build_script_folder=os.path.join(self.source_folder,
"cpp"))
- cmake.build()
-
- def package(self):
- copy(self, pattern="LICENSE.txt",
dst=os.path.join(self.package_folder, "licenses"), src=self.source_folder)
- copy(self, pattern="NOTICE.txt", dst=os.path.join(self.package_folder,
"licenses"), src=self.source_folder)
- cmake = CMake(self)
- cmake.install()
-
- rmdir(self, os.path.join(self.package_folder, "lib", "cmake"))
- rmdir(self, os.path.join(self.package_folder, "lib", "pkgconfig"))
- rmdir(self, os.path.join(self.package_folder, "share"))
-
- def package_info(self):
- # FIXME: fix CMake targets of components
-
- self.cpp_info.set_property("cmake_file_name", "Arrow")
-
- suffix = "_static" if is_msvc(self) and not self.options.shared else ""
- cmake_suffix = "shared" if self.options.shared else "static"
-
- self.cpp_info.components["libarrow"].set_property("pkg_config_name",
"arrow")
- self.cpp_info.components["libarrow"].set_property("cmake_target_name",
f"Arrow::arrow_{cmake_suffix}")
- self.cpp_info.components["libarrow"].libs = [f"arrow{suffix}"]
- if not self.options.shared:
- self.cpp_info.components["libarrow"].defines = ["ARROW_STATIC"]
- if self.settings.os in ["Linux", "FreeBSD"]:
- self.cpp_info.components["libarrow"].system_libs = ["pthread",
"m", "dl", "rt"]
-
- if self.options.parquet:
-
self.cpp_info.components["libparquet"].set_property("pkg_config_name",
"parquet")
-
self.cpp_info.components["libparquet"].set_property("cmake_target_name",
f"Parquet::parquet_{cmake_suffix}")
- self.cpp_info.components["libparquet"].libs = [f"parquet{suffix}"]
- self.cpp_info.components["libparquet"].requires = ["libarrow"]
- if not self.options.shared:
- self.cpp_info.components["libparquet"].defines =
["PARQUET_STATIC"]
-
- if self.options.get_safe("substrait"):
-
self.cpp_info.components["libarrow_substrait"].set_property("pkg_config_name",
"arrow_substrait")
-
self.cpp_info.components["libarrow_substrait"].set_property("cmake_target_name",
f"Arrow::arrow_substrait_{cmake_suffix}")
- self.cpp_info.components["libarrow_substrait"].libs =
[f"arrow_substrait{suffix}"]
- self.cpp_info.components["libarrow_substrait"].requires =
["libparquet", "dataset"]
-
- # Plasma was deprecated in Arrow 12.0.0
- del self.options.plasma
-
- if self.options.acero:
-
self.cpp_info.components["libacero"].set_property("pkg_config_name", "acero")
-
self.cpp_info.components["libacero"].set_property("cmake_target_name",
f"Acero::arrow_acero_{cmake_suffix}")
- self.cpp_info.components["libacero"].libs =
[f"arrow_acero{suffix}"]
- self.cpp_info.components["libacero"].names["cmake_find_package"] =
"acero"
-
self.cpp_info.components["libacero"].names["cmake_find_package_multi"] = "acero"
- self.cpp_info.components["libacero"].names["pkg_config"] = "acero"
- self.cpp_info.components["libacero"].requires = ["libarrow"]
-
- if self.options.gandiva:
-
self.cpp_info.components["libgandiva"].set_property("pkg_config_name",
"gandiva")
-
self.cpp_info.components["libgandiva"].set_property("cmake_target_name",
f"Gandiva::gandiva_{cmake_suffix}")
- self.cpp_info.components["libgandiva"].libs = [f"gandiva{suffix}"]
- self.cpp_info.components["libgandiva"].requires = ["libarrow"]
- if not self.options.shared:
- self.cpp_info.components["libgandiva"].defines =
["GANDIVA_STATIC"]
-
- if self.options.with_flight_rpc:
-
self.cpp_info.components["libarrow_flight"].set_property("pkg_config_name",
"flight_rpc")
-
self.cpp_info.components["libarrow_flight"].set_property("cmake_target_name",
f"ArrowFlight::arrow_flight_{cmake_suffix}")
- self.cpp_info.components["libarrow_flight"].libs =
[f"arrow_flight{suffix}"]
- self.cpp_info.components["libarrow_flight"].requires = ["libarrow"]
- #
https://github.com/apache/arrow/pull/43137#pullrequestreview-2267476893
- if Version(self.version) >= "18.0.0" and self.options.with_openssl:
-
self.cpp_info.components["libarrow_flight"].requires.append("openssl::openssl")
-
- if self.options.get_safe("with_flight_sql"):
-
self.cpp_info.components["libarrow_flight_sql"].set_property("pkg_config_name",
"flight_sql")
-
self.cpp_info.components["libarrow_flight_sql"].set_property("cmake_target_name",
f"ArrowFlightSql::arrow_flight_sql_{cmake_suffix}")
- self.cpp_info.components["libarrow_flight_sql"].libs =
[f"arrow_flight_sql{suffix}"]
- self.cpp_info.components["libarrow_flight_sql"].requires =
["libarrow", "libarrow_flight"]
-
- if self.options.dataset_modules:
- self.cpp_info.components["dataset"].libs = ["arrow_dataset"]
- if self.options.parquet:
- self.cpp_info.components["dataset"].requires = ["libparquet"]
- if self.options.acero and Version(self.version) >= "19.0.0":
- self.cpp_info.components["dataset"].requires = ["libacero"]
-
- if self.options.cli and (self.options.with_cuda or
self.options.with_flight_rpc or self.options.parquet):
- binpath = os.path.join(self.package_folder, "bin")
- self.output.info(f"Appending PATH env var: {binpath}")
- self.env_info.PATH.append(binpath)
-
- if self.options.with_boost:
- if self.options.gandiva:
- # FIXME: only filesystem component is used
-
self.cpp_info.components["libgandiva"].requires.append("boost::boost")
- if self.options.parquet and self.settings.compiler == "gcc" and
self.settings.compiler.version < Version("4.9"):
-
self.cpp_info.components["libparquet"].requires.append("boost::boost")
- # FIXME: only headers components is used
-
self.cpp_info.components["libarrow"].requires.append("boost::boost")
- if self.options.with_openssl:
-
self.cpp_info.components["libarrow"].requires.append("openssl::openssl")
- if self.options.with_gflags:
-
self.cpp_info.components["libarrow"].requires.append("gflags::gflags")
- if self.options.with_glog:
- self.cpp_info.components["libarrow"].requires.append("glog::glog")
- if self.options.with_jemalloc:
-
self.cpp_info.components["libarrow"].requires.append("jemalloc::jemalloc")
- if self.options.with_mimalloc:
-
self.cpp_info.components["libarrow"].requires.append("mimalloc::mimalloc")
- if self.options.with_re2:
- if self.options.gandiva:
-
self.cpp_info.components["libgandiva"].requires.append("re2::re2")
- if self.options.parquet:
-
self.cpp_info.components["libparquet"].requires.append("re2::re2")
- self.cpp_info.components["libarrow"].requires.append("re2::re2")
- if self.options.with_llvm:
-
self.cpp_info.components["libgandiva"].requires.append("llvm-core::llvm-core")
- if self.options.with_protobuf:
-
self.cpp_info.components["libarrow"].requires.append("protobuf::protobuf")
- if self.options.with_utf8proc:
-
self.cpp_info.components["libarrow"].requires.append("utf8proc::utf8proc")
- if self.options.with_thrift:
-
self.cpp_info.components["libarrow"].requires.append("thrift::thrift")
- if self.options.with_backtrace:
-
self.cpp_info.components["libarrow"].requires.append("libbacktrace::libbacktrace")
- if self.options.with_cuda:
- self.cpp_info.components["libarrow"].requires.append("cuda::cuda")
- if self._requires_rapidjson():
-
self.cpp_info.components["libarrow"].requires.append("rapidjson::rapidjson")
- if self.options.with_s3:
- #
https://github.com/apache/arrow/blob/6b268f62a8a172249ef35f093009c740c32e1f36/cpp/src/arrow/CMakeLists.txt#L98
-
self.cpp_info.components["libarrow"].requires.extend([f"aws-sdk-cpp::{x}" for x
in ["cognito-identity", "core", "identity-management", "s3", "sts"]])
- if self.options.get_safe("with_gcs"):
-
self.cpp_info.components["libarrow"].requires.append("google-cloud-cpp::storage")
- if self.options.with_orc:
- self.cpp_info.components["libarrow"].requires.append("orc::orc")
- if self.options.get_safe("with_opentelemetry"):
-
self.cpp_info.components["libarrow"].requires.append("opentelemetry-cpp::opentelemetry-cpp")
- if self.options.with_brotli:
-
self.cpp_info.components["libarrow"].requires.append("brotli::brotli")
- if self.options.with_bz2:
-
self.cpp_info.components["libarrow"].requires.append("bzip2::bzip2")
- if self.options.with_lz4:
- self.cpp_info.components["libarrow"].requires.append("lz4::lz4")
- if self.options.with_snappy:
-
self.cpp_info.components["libarrow"].requires.append("snappy::snappy")
- if self.options.get_safe("simd_level") != None or
self.options.get_safe("runtime_simd_level") != None:
-
self.cpp_info.components["libarrow"].requires.append("xsimd::xsimd")
- if self.options.with_zlib:
- self.cpp_info.components["libarrow"].requires.append("zlib::zlib")
- if self.options.with_zstd:
- self.cpp_info.components["libarrow"].requires.append("zstd::zstd")
- if self.options.with_grpc:
- self.cpp_info.components["libarrow"].requires.append("grpc::grpc")
- if self.options.with_flight_rpc:
-
self.cpp_info.components["libarrow_flight"].requires.append("protobuf::protobuf")
diff --git a/ci/conan/all/patches/11.0.0-0001-fix-cmake.patch
b/ci/conan/all/patches/11.0.0-0001-fix-cmake.patch
deleted file mode 100644
index 37f36f99a0..0000000000
--- a/ci/conan/all/patches/11.0.0-0001-fix-cmake.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-MIT License
-
-Copyright (c) 2019 Conan.io
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
-diff --git a/cpp/cmake_modules/FindThriftAlt.cmake
b/cpp/cmake_modules/FindThriftAlt.cmake
-index f3e49021d..95177c2a6 100644
---- a/cpp/cmake_modules/FindThriftAlt.cmake
-+++ b/cpp/cmake_modules/FindThriftAlt.cmake
-@@ -45,22 +45,21 @@ endif()
- # * https://github.com/apache/thrift/pull/2725
- # * https://github.com/apache/thrift/pull/2726
- # * https://github.com/conda-forge/thrift-cpp-feedstock/issues/68
--if(NOT WIN32)
-- set(find_package_args "")
-- if(ThriftAlt_FIND_VERSION)
-- list(APPEND find_package_args ${ThriftAlt_FIND_VERSION})
-- endif()
-- if(ThriftAlt_FIND_QUIETLY)
-- list(APPEND find_package_args QUIET)
-- endif()
-- find_package(Thrift ${find_package_args})
-- if(Thrift_FOUND)
-- set(ThriftAlt_FOUND TRUE)
-- add_executable(thrift::compiler IMPORTED)
-- set_target_properties(thrift::compiler PROPERTIES IMPORTED_LOCATION
-- "${THRIFT_COMPILER}")
-- return()
-- endif()
-+
-+set(find_package_args "")
-+if(ThriftAlt_FIND_VERSION)
-+ list(APPEND find_package_args ${ThriftAlt_FIND_VERSION})
-+endif()
-+if(ThriftAlt_FIND_QUIETLY)
-+ list(APPEND find_package_args QUIET)
-+endif()
-+find_package(Thrift ${find_package_args})
-+if(Thrift_FOUND)
-+ set(ThriftAlt_FOUND TRUE)
-+ add_executable(thrift::compiler IMPORTED)
-+ set_target_properties(thrift::compiler PROPERTIES IMPORTED_LOCATION
-+ "${THRIFT_COMPILER}")
-+ return()
- endif()
-
- function(extract_thrift_version)
diff --git a/ci/conan/all/patches/16.0.0-0001-fix-cmake.patch
b/ci/conan/all/patches/16.0.0-0001-fix-cmake.patch
deleted file mode 100644
index 6077237139..0000000000
--- a/ci/conan/all/patches/16.0.0-0001-fix-cmake.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-MIT License
-
-Copyright (c) 2019 Conan.io
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
-diff --git a/cpp/cmake_modules/FindThriftAlt.cmake
b/cpp/cmake_modules/FindThriftAlt.cmake
-index f3e49021d..3e63f1edf 100644
---- a/cpp/cmake_modules/FindThriftAlt.cmake
-+++ b/cpp/cmake_modules/FindThriftAlt.cmake
-@@ -45,23 +45,23 @@ endif()
- # * https://github.com/apache/thrift/pull/2725
- # * https://github.com/apache/thrift/pull/2726
- # * https://github.com/conda-forge/thrift-cpp-feedstock/issues/68
--if(NOT WIN32)
-- set(find_package_args "")
-- if(ThriftAlt_FIND_VERSION)
-- list(APPEND find_package_args ${ThriftAlt_FIND_VERSION})
-- endif()
-- if(ThriftAlt_FIND_QUIETLY)
-- list(APPEND find_package_args QUIET)
-- endif()
-- find_package(Thrift ${find_package_args})
-- if(Thrift_FOUND)
-- set(ThriftAlt_FOUND TRUE)
-- add_executable(thrift::compiler IMPORTED)
-- set_target_properties(thrift::compiler PROPERTIES IMPORTED_LOCATION
-- "${THRIFT_COMPILER}")
-- return()
-- endif()
-+
-+set(find_package_args "")
-+if(ThriftAlt_FIND_VERSION)
-+ list(APPEND find_package_args ${ThriftAlt_FIND_VERSION})
-+endif()
-+if(ThriftAlt_FIND_QUIETLY)
-+ list(APPEND find_package_args QUIET)
- endif()
-+find_package(Thrift ${find_package_args})
-+if(Thrift_FOUND)
-+ set(ThriftAlt_FOUND TRUE)
-+ add_executable(thrift::compiler IMPORTED)
-+ set_target_properties(thrift::compiler PROPERTIES IMPORTED_LOCATION
-+ "${THRIFT_COMPILER}")
-+ return()
-+endif()
-+
-
- function(extract_thrift_version)
- if(ThriftAlt_INCLUDE_DIR)
-diff --git a/cpp/src/parquet/CMakeLists.txt b/cpp/src/parquet/CMakeLists.txt
-index 93f2e72d8..e00f73f7d 100644
---- a/cpp/src/parquet/CMakeLists.txt
-+++ b/cpp/src/parquet/CMakeLists.txt
-@@ -262,11 +262,11 @@ if(NOT PARQUET_MINIMAL_DEPENDENCY)
-
- # These are libraries that we will link privately with parquet_shared (as
they
- # do not need to be linked transitively by other linkers)
-- list(APPEND PARQUET_SHARED_PRIVATE_LINK_LIBS thrift::thrift)
-+ list(APPEND PARQUET_SHARED_PRIVATE_LINK_LIBS Boost::headers thrift::thrift)
-
- # Link publicly with parquet_static (because internal users need to
- # transitively link all dependencies)
-- list(APPEND PARQUET_STATIC_LINK_LIBS thrift::thrift)
-+ list(APPEND PARQUET_STATIC_LINK_LIBS Boost::headers thrift::thrift)
- if(NOT THRIFT_VENDORED)
- list(APPEND PARQUET_STATIC_INSTALL_INTERFACE_LIBS thrift::thrift)
- endif()
diff --git a/ci/conan/all/patches/18.0.0-0001-fix-cmake.patch
b/ci/conan/all/patches/18.0.0-0001-fix-cmake.patch
deleted file mode 100644
index 9abff332e4..0000000000
--- a/ci/conan/all/patches/18.0.0-0001-fix-cmake.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-MIT License
-
-Copyright (c) 2019 Conan.io
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
-diff --git a/cpp/cmake_modules/FindThriftAlt.cmake
b/cpp/cmake_modules/FindThriftAlt.cmake
-index 98a706d..edf195e 100644
---- a/cpp/cmake_modules/FindThriftAlt.cmake
-+++ b/cpp/cmake_modules/FindThriftAlt.cmake
-@@ -45,22 +45,20 @@ endif()
- # * https://github.com/apache/thrift/pull/2725
- # * https://github.com/apache/thrift/pull/2726
- # * https://github.com/conda-forge/thrift-cpp-feedstock/issues/68
--if(NOT WIN32)
-- set(find_package_args "")
-- if(ThriftAlt_FIND_VERSION)
-- list(APPEND find_package_args ${ThriftAlt_FIND_VERSION})
-- endif()
-- if(ThriftAlt_FIND_QUIETLY)
-- list(APPEND find_package_args QUIET)
-- endif()
-- find_package(Thrift ${find_package_args})
-- if(Thrift_FOUND)
-- set(ThriftAlt_FOUND TRUE)
-- add_executable(thrift::compiler IMPORTED)
-- set_target_properties(thrift::compiler PROPERTIES IMPORTED_LOCATION
-- "${THRIFT_COMPILER}")
-- return()
-- endif()
-+set(find_package_args "")
-+if(ThriftAlt_FIND_VERSION)
-+ list(APPEND find_package_args ${ThriftAlt_FIND_VERSION})
-+endif()
-+if(ThriftAlt_FIND_QUIETLY)
-+ list(APPEND find_package_args QUIET)
-+endif()
-+find_package(Thrift ${find_package_args})
-+if(Thrift_FOUND)
-+ set(ThriftAlt_FOUND TRUE)
-+ add_executable(thrift::compiler IMPORTED)
-+ set_target_properties(thrift::compiler PROPERTIES IMPORTED_LOCATION
-+ "${THRIFT_COMPILER}")
-+ return()
- endif()
-
- function(extract_thrift_version)
-diff --git a/cpp/src/parquet/CMakeLists.txt b/cpp/src/parquet/CMakeLists.txt
-index b984ef7..429fc6d 100644
---- a/cpp/src/parquet/CMakeLists.txt
-+++ b/cpp/src/parquet/CMakeLists.txt
-@@ -263,11 +263,11 @@ if(NOT PARQUET_MINIMAL_DEPENDENCY)
-
- # These are libraries that we will link privately with parquet_shared (as
they
- # do not need to be linked transitively by other linkers)
-- list(APPEND PARQUET_SHARED_PRIVATE_LINK_LIBS thrift::thrift)
-+ list(APPEND PARQUET_SHARED_PRIVATE_LINK_LIBS Boost::headers thrift::thrift)
-
- # Link publicly with parquet_static (because internal users need to
- # transitively link all dependencies)
-- list(APPEND PARQUET_STATIC_LINK_LIBS thrift::thrift)
-+ list(APPEND PARQUET_STATIC_LINK_LIBS Boost::headers thrift::thrift)
- if(NOT THRIFT_VENDORED)
- list(APPEND PARQUET_STATIC_INSTALL_INTERFACE_LIBS thrift::thrift)
- endif()
diff --git a/ci/conan/all/patches/19.0.1-0001-fix-cmake.patch
b/ci/conan/all/patches/19.0.1-0001-fix-cmake.patch
deleted file mode 100644
index 0d37465a0e..0000000000
--- a/ci/conan/all/patches/19.0.1-0001-fix-cmake.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-MIT License
-
-Copyright (c) 2025 Conan.io
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
-diff --git a/cpp/cmake_modules/FindThriftAlt.cmake
b/cpp/cmake_modules/FindThriftAlt.cmake
-index 98a706d..edf195e 100644
---- a/cpp/cmake_modules/FindThriftAlt.cmake
-+++ b/cpp/cmake_modules/FindThriftAlt.cmake
-@@ -45,22 +45,20 @@ endif()
- # * https://github.com/apache/thrift/pull/2725
- # * https://github.com/apache/thrift/pull/2726
- # * https://github.com/conda-forge/thrift-cpp-feedstock/issues/68
--if(NOT WIN32)
-- set(find_package_args "")
-- if(ThriftAlt_FIND_VERSION)
-- list(APPEND find_package_args ${ThriftAlt_FIND_VERSION})
-- endif()
-- if(ThriftAlt_FIND_QUIETLY)
-- list(APPEND find_package_args QUIET)
-- endif()
-- find_package(Thrift ${find_package_args})
-- if(Thrift_FOUND)
-- set(ThriftAlt_FOUND TRUE)
-- add_executable(thrift::compiler IMPORTED)
-- set_target_properties(thrift::compiler PROPERTIES IMPORTED_LOCATION
-- "${THRIFT_COMPILER}")
-- return()
-- endif()
-+set(find_package_args "")
-+if(ThriftAlt_FIND_VERSION)
-+ list(APPEND find_package_args ${ThriftAlt_FIND_VERSION})
-+endif()
-+if(ThriftAlt_FIND_QUIETLY)
-+ list(APPEND find_package_args QUIET)
-+endif()
-+find_package(Thrift ${find_package_args})
-+if(Thrift_FOUND)
-+ set(ThriftAlt_FOUND TRUE)
-+ add_executable(thrift::compiler IMPORTED)
-+ set_target_properties(thrift::compiler PROPERTIES IMPORTED_LOCATION
-+ "${THRIFT_COMPILER}")
-+ return()
- endif()
-
- function(extract_thrift_version)
-diff --git a/cpp/src/parquet/size_statistics.cc
b/cpp/src/parquet/size_statistics.cc
-index 1ce6c937a..e45eef3f0 100644
---- a/cpp/src/parquet/size_statistics.cc
-+++ b/cpp/src/parquet/size_statistics.cc
-@@ -18,9 +18,11 @@
- #include "parquet/size_statistics.h"
-
- #include <algorithm>
-+#include <array>
- #include <numeric>
- #include <ostream>
- #include <string_view>
-+#include <vector>
-
- #include "arrow/util/logging.h"
- #include "parquet/exception.h"
diff --git a/ci/conan/all/patches/19.0.1-0002-fix-downloaded-mimalloc.patch
b/ci/conan/all/patches/19.0.1-0002-fix-downloaded-mimalloc.patch
deleted file mode 100644
index d49f14dcc8..0000000000
--- a/ci/conan/all/patches/19.0.1-0002-fix-downloaded-mimalloc.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-MIT License
-
-Copyright (c) 2025 Conan.io
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
-diff --git a/cpp/cmake_modules/ThirdpartyToolchain.cmake
b/cpp/cmake_modules/ThirdpartyToolchain.cmake
-index abfe6d2..cc0f3c5 100644
---- a/cpp/cmake_modules/ThirdpartyToolchain.cmake
-+++ b/cpp/cmake_modules/ThirdpartyToolchain.cmake
-@@ -2259,6 +2259,10 @@ endif()
- # mimalloc - Cross-platform high-performance allocator, from Microsoft
-
- if(ARROW_MIMALLOC)
-+ find_package(mimalloc REQUIRED CONFIG)
-+endif()
-+
-+if(0)
- if(NOT ARROW_ENABLE_THREADING)
- message(FATAL_ERROR "Can't use mimalloc with ARROW_ENABLE_THREADING=OFF")
- endif()
diff --git a/ci/conan/all/patches/20.0.0-0001-fix-downloaded-mimalloc.patch
b/ci/conan/all/patches/20.0.0-0001-fix-downloaded-mimalloc.patch
deleted file mode 100644
index 44b1691bdb..0000000000
--- a/ci/conan/all/patches/20.0.0-0001-fix-downloaded-mimalloc.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-MIT License
-
-Copyright (c) 2019 Conan.io
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
-diff --git a/cpp/cmake_modules/ThirdpartyToolchain.cmake
b/cpp/cmake_modules/ThirdpartyToolchain.cmake
-index 63bdd4ab76..9744f01b1e 100644
---- a/cpp/cmake_modules/ThirdpartyToolchain.cmake
-+++ b/cpp/cmake_modules/ThirdpartyToolchain.cmake
-@@ -2268,1 +2268,1 @@ endif()
- # mimalloc - Cross-platform high-performance allocator, from Microsoft
-
- if(ARROW_MIMALLOC)
-+ find_package(mimalloc REQUIRED CONFIG)
-+endif()
-+
-+if(0)
- if(NOT ARROW_ENABLE_THREADING)
- message(FATAL_ERROR "Can't use mimalloc with ARROW_ENABLE_THREADING=OFF")
- endif()
diff --git a/ci/conan/all/test_package/CMakeLists.txt
b/ci/conan/all/test_package/CMakeLists.txt
deleted file mode 100644
index d85120a662..0000000000
--- a/ci/conan/all/test_package/CMakeLists.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-# MIT License
-#
-# Copyright (c) 2019 Conan.io
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
all
-# copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-
-cmake_minimum_required(VERSION 3.15)
-project(test_package LANGUAGES CXX)
-
-find_package(Arrow REQUIRED CONFIG)
-
-add_executable(${PROJECT_NAME} test_package.cpp)
-
-if (TARGET Arrow::arrow_shared)
- target_link_libraries(${PROJECT_NAME} PRIVATE Arrow::arrow_shared)
-else()
- target_link_libraries(${PROJECT_NAME} PRIVATE Arrow::arrow_static)
-endif()
-
-if (${Arrow_VERSION} VERSION_LESS "10.0.0")
- target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_11)
-else()
- target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_17)
-endif()
diff --git a/ci/conan/all/test_package/conanfile.py
b/ci/conan/all/test_package/conanfile.py
deleted file mode 100644
index ce24052acb..0000000000
--- a/ci/conan/all/test_package/conanfile.py
+++ /dev/null
@@ -1,49 +0,0 @@
-# MIT License
-#
-# Copyright (c) 2019 Conan.io
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
all
-# copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-
-from conan import ConanFile
-from conan.tools.build import can_run
-from conan.tools.cmake import cmake_layout, CMake
-import os
-
-
-# It will become the standard on Conan 2.x
-class TestPackageConan(ConanFile):
- settings = "os", "arch", "compiler", "build_type"
- generators = "CMakeDeps", "CMakeToolchain", "VirtualRunEnv"
- test_type = "explicit"
-
- def requirements(self):
- self.requires(self.tested_reference_str)
-
- def layout(self):
- cmake_layout(self)
-
- def build(self):
- cmake = CMake(self)
- cmake.configure()
- cmake.build()
-
- def test(self):
- if can_run(self):
- bin_path = os.path.join(self.cpp.build.bindirs[0], "test_package")
- self.run(bin_path, env="conanrun")
diff --git a/ci/conan/all/test_package/test_package.cpp
b/ci/conan/all/test_package/test_package.cpp
deleted file mode 100644
index fb54b040f4..0000000000
--- a/ci/conan/all/test_package/test_package.cpp
+++ /dev/null
@@ -1,190 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-#include <cstdint>
-#include <iostream>
-#include <vector>
-
-#include <arrow/api.h>
-
-using arrow::DoubleBuilder;
-using arrow::Int64Builder;
-using arrow::ListBuilder;
-
-// While we want to use columnar data structures to build efficient
operations, we
-// often receive data in a row-wise fashion from other systems. In the
following,
-// we want give a brief introduction into the classes provided by Apache Arrow
by
-// showing how to transform row-wise data into a columnar table.
-//
-// The data in this example is stored in the following struct:
-struct data_row {
- int64_t id;
- double cost;
- std::vector<double> cost_components;
-};
-
-// Transforming a vector of structs into a columnar Table.
-//
-// The final representation should be an `arrow::Table` which in turn
-// is made up of an `arrow::Schema` and a list of
-// `arrow::ChunkedArray` instances. As the first step, we will iterate
-// over the data and build up the arrays incrementally. For this
-// task, we provide `arrow::ArrayBuilder` classes that help in the
-// construction of the final `arrow::Array` instances.
-//
-// For each type, Arrow has a specially typed builder class. For the primitive
-// values `id` and `cost` we can use the respective `arrow::Int64Builder` and
-// `arrow::DoubleBuilder`. For the `cost_components` vector, we need to have
two
-// builders, a top-level `arrow::ListBuilder` that builds the array of offsets
and
-// a nested `arrow::DoubleBuilder` that constructs the underlying values array
that
-// is referenced by the offsets in the former array.
-arrow::Status VectorToColumnarTable(const std::vector<struct data_row>& rows,
- std::shared_ptr<arrow::Table>* table) {
- // The builders are more efficient using
- // arrow::jemalloc::MemoryPool::default_pool() as this can increase the size
of
- // the underlying memory regions in-place. At the moment, arrow::jemalloc is
only
- // supported on Unix systems, not Windows.
- arrow::MemoryPool* pool = arrow::default_memory_pool();
-
- Int64Builder id_builder(pool);
- DoubleBuilder cost_builder(pool);
- ListBuilder components_builder(pool, std::make_shared<DoubleBuilder>(pool));
- // The following builder is owned by components_builder.
- DoubleBuilder& cost_components_builder =
- *(static_cast<DoubleBuilder*>(components_builder.value_builder()));
-
- // Now we can loop over our existing data and insert it into the builders.
The
- // `Append` calls here may fail (e.g. we cannot allocate enough additional
memory).
- // Thus we need to check their return values. For more information on these
values,
- // check the documentation about `arrow::Status`.
- for (const data_row& row : rows) {
- ARROW_RETURN_NOT_OK(id_builder.Append(row.id));
- ARROW_RETURN_NOT_OK(cost_builder.Append(row.cost));
-
- // Indicate the start of a new list row. This will memorise the current
- // offset in the values builder.
- ARROW_RETURN_NOT_OK(components_builder.Append());
- // Store the actual values. The final nullptr argument tells the underlying
- // builder that all added values are valid, i.e. non-null.
-
ARROW_RETURN_NOT_OK(cost_components_builder.AppendValues(row.cost_components.data(),
-
row.cost_components.size()));
- }
-
- // At the end, we finalise the arrays, declare the (type) schema and combine
them
- // into a single `arrow::Table`:
- std::shared_ptr<arrow::Array> id_array;
- ARROW_RETURN_NOT_OK(id_builder.Finish(&id_array));
- std::shared_ptr<arrow::Array> cost_array;
- ARROW_RETURN_NOT_OK(cost_builder.Finish(&cost_array));
- // No need to invoke cost_components_builder.Finish because it is implied by
- // the parent builder's Finish invocation.
- std::shared_ptr<arrow::Array> cost_components_array;
- ARROW_RETURN_NOT_OK(components_builder.Finish(&cost_components_array));
-
- std::vector<std::shared_ptr<arrow::Field>> schema_vector = {
- arrow::field("id", arrow::int64()), arrow::field("cost",
arrow::float64()),
- arrow::field("cost_components", arrow::list(arrow::float64()))};
-
- auto schema = std::make_shared<arrow::Schema>(schema_vector);
-
- // The final `table` variable is the one we then can pass on to other
functions
- // that can consume Apache Arrow memory structures. This object has
ownership of
- // all referenced data, thus we don't have to care about undefined
references once
- // we leave the scope of the function building the table and its underlying
arrays.
- *table = arrow::Table::Make(schema, {id_array, cost_array,
cost_components_array});
-
- return arrow::Status::OK();
-}
-
-arrow::Status ColumnarTableToVector(const std::shared_ptr<arrow::Table>& table,
- std::vector<struct data_row>* rows) {
- // To convert an Arrow table back into the same row-wise representation as
in the
- // above section, we first will check that the table conforms to our expected
- // schema and then will build up the vector of rows incrementally.
- //
- // For the check if the table is as expected, we can utilise solely its
schema.
- std::vector<std::shared_ptr<arrow::Field>> schema_vector = {
- arrow::field("id", arrow::int64()), arrow::field("cost",
arrow::float64()),
- arrow::field("cost_components", arrow::list(arrow::float64()))};
- auto expected_schema = std::make_shared<arrow::Schema>(schema_vector);
-
- if (!expected_schema->Equals(*table->schema())) {
- // The table doesn't have the expected schema thus we cannot directly
- // convert it to our target representation.
- return arrow::Status::Invalid("Schemas are not matching!");
- }
-
- // As we have ensured that the table has the expected structure, we can
unpack the
- // underlying arrays. For the primitive columns `id` and `cost` we can use
the high
- // level functions to get the values whereas for the nested column
- // `cost_components` we need to access the C-pointer to the data to copy its
- // contents into the resulting `std::vector<double>`. Here we need to be
care to
- // also add the offset to the pointer. This offset is needed to enable
zero-copy
- // slicing operations. While this could be adjusted automatically for double
- // arrays, this cannot be done for the accompanying bitmap as often the
slicing
- // border would be inside a byte.
-
- auto ids =
- std::static_pointer_cast<arrow::Int64Array>(table->column(0)->chunk(0));
- auto costs =
- std::static_pointer_cast<arrow::DoubleArray>(table->column(1)->chunk(0));
- auto cost_components =
- std::static_pointer_cast<arrow::ListArray>(table->column(2)->chunk(0));
- auto cost_components_values =
- std::static_pointer_cast<arrow::DoubleArray>(cost_components->values());
- // To enable zero-copy slices, the native values pointer might need to
account
- // for this slicing offset. This is not needed for the higher level functions
- // like Value(…) that already account for this offset internally.
- const double* ccv_ptr = cost_components_values->data()->GetValues<double>(1);
-
- for (int64_t i = 0; i < table->num_rows(); i++) {
- // Another simplification in this example is that we assume that there are
- // no null entries, e.g. each row is fill with valid values.
- int64_t id = ids->Value(i);
- double cost = costs->Value(i);
- const double* first = ccv_ptr + cost_components->value_offset(i);
- const double* last = ccv_ptr + cost_components->value_offset(i + 1);
- std::vector<double> components_vec(first, last);
- rows->push_back({id, cost, components_vec});
- }
-
- return arrow::Status::OK();
-}
-
-#define EXIT_ON_FAILURE(expr) \
- do { \
- arrow::Status status_ = (expr); \
- if (!status_.ok()) { \
- std::cerr << status_.message() << std::endl; \
- return EXIT_FAILURE; \
- } \
- } while (0);
-
-int main(int argc, char** argv) {
- std::vector<data_row> rows = {
- {1, 1.0, {1.0}}, {2, 2.0, {1.0, 2.0}}, {3, 3.0, {1.0, 2.0, 3.0}}};
-
- std::shared_ptr<arrow::Table> table;
- EXIT_ON_FAILURE(VectorToColumnarTable(rows, &table));
-
- std::vector<data_row> expected_rows;
- EXIT_ON_FAILURE(ColumnarTableToVector(table, &expected_rows));
-
- assert(rows.size() == expected_rows.size());
-
- return EXIT_SUCCESS;
-}
diff --git a/ci/conan/config.yml b/ci/conan/config.yml
deleted file mode 100644
index 02100ba9d4..0000000000
--- a/ci/conan/config.yml
+++ /dev/null
@@ -1,39 +0,0 @@
-# MIT License
-#
-# Copyright (c) 2019 Conan.io
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
all
-# copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-
-versions:
- "20.0.0":
- folder: all
- "19.0.1":
- folder: all
- "18.1.0":
- folder: all
- "18.0.0":
- folder: all
- "17.0.0":
- folder: all
- "16.1.0":
- folder: all
- "15.0.0":
- folder: all
- "14.0.2":
- folder: all
\ No newline at end of file
diff --git a/ci/conan/merge_status.sh b/ci/conan/merge_status.sh
deleted file mode 100644
index 295f6a3708..0000000000
--- a/ci/conan/merge_status.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-UPSTREAM_REVISION=2cf8d725f6387f65be58a13435896328b36a14b9
diff --git a/ci/conan/merge_upstream.sh b/ci/conan/merge_upstream.sh
deleted file mode 100755
index 76af58f70d..0000000000
--- a/ci/conan/merge_upstream.sh
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/usr/bin/env bash
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-set -eu
-
-source_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
-
-if [ "$#" -ne 1 ]; then
- echo "Usage: $0 CONAN_CENTER_INDEX_WORK_DIRECTORY"
- echo " e.g.: $0 ~/work/conan/conan-center-index"
- exit 1
-fi
-
-conan_center_index="$1"
-
-. "${source_dir}/merge_status.sh"
-
-UPSTREAM_HEAD=$(git -C "${conan_center_index}" log -n1 --format=%H)
-git \
- -C "${conan_center_index}" \
- diff \
- ${UPSTREAM_REVISION}..${UPSTREAM_HEAD} \
- recipes/arrow | \
- (cd "${source_dir}" && patch -p3 || :)
-
-sed \
- -i.bak \
- -E \
- -e "s/^(UPSTREAM_REVISION)=.*$/\\1=${UPSTREAM_HEAD}/g" \
- "${source_dir}/merge_status.sh"
-rm "${source_dir}/merge_status.sh.bak"
diff --git a/ci/scripts/conan_build.sh b/ci/scripts/conan_build.sh
deleted file mode 100755
index 15c73d9d25..0000000000
--- a/ci/scripts/conan_build.sh
+++ /dev/null
@@ -1,84 +0,0 @@
-#!/usr/bin/env bash
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-set -eux
-
-source_dir=${1}
-shift
-build_dir=${1}
-shift
-
-export ARROW_HOME=${source_dir}
-
-conan_args=()
-conan_args+=(--build=missing)
-if [ -n "${ARROW_CONAN_PARQUET:-}" ]; then
- conan_args+=(--options "arrow/*:parquet=${ARROW_CONAN_PARQUET}")
- conan_args+=(--options "arrow/*:with_boost=${ARROW_CONAN_PARQUET}")
- conan_args+=(--options "arrow/*:with_json=${ARROW_CONAN_PARQUET}")
- conan_args+=(--options "arrow/*:with_thrift=${ARROW_CONAN_PARQUET}")
-else
- conan_args+=(--options "arrow/*:parquet=False")
-fi
-if [ -n "${ARROW_CONAN_WITH_BROTLI:-}" ]; then
- conan_args+=(--options "arrow/*:with_brotli=${ARROW_CONAN_WITH_BROTLI}")
-fi
-if [ -n "${ARROW_CONAN_WITH_BZ2:-}" ]; then
- conan_args+=(--options "arrow/*:with_bz2=${ARROW_CONAN_WITH_BZ2}")
-fi
-if [ -n "${ARROW_CONAN_WITH_FLIGHT_RPC:-}" ]; then
- conan_args+=(--options
"arrow/*:with_flight_rpc=${ARROW_CONAN_WITH_FLIGHT_RPC}")
- conan_args+=(--options "arrow/*:with_grpc=${ARROW_CONAN_WITH_FLIGHT_RPC}")
- conan_args+=(--options
"arrow/*:with_protobuf=${ARROW_CONAN_WITH_FLIGHT_RPC}")
- conan_args+=(--options "arrow/*:with_re2=${ARROW_CONAN_WITH_FLIGHT_RPC}")
-fi
-if [ -n "${ARROW_CONAN_WITH_GLOG:-}" ]; then
- conan_args+=(--options "arrow/*:with_glog=${ARROW_CONAN_WITH_GLOG}")
-fi
-if [ -n "${ARROW_CONAN_WITH_JEMALLOC:-}" ]; then
- conan_args+=(--options "arrow/*:with_jemalloc=${ARROW_CONAN_WITH_JEMALLOC}")
-fi
-if [ -n "${ARROW_CONAN_WITH_JSON:-}" ]; then
- conan_args+=(--options "arrow/*:with_json=${ARROW_CONAN_WITH_JSON}")
-fi
-if [ -n "${ARROW_CONAN_WITH_LZ4:-}" ]; then
- conan_args+=(--options "arrow/*:with_lz4=${ARROW_CONAN_WITH_LZ4}")
-fi
-if [ -n "${ARROW_CONAN_WITH_SNAPPY:-}" ]; then
- conan_args+=(--options "arrow/*:with_snappy=${ARROW_CONAN_WITH_SNAPPY}")
-fi
-if [ -n "${ARROW_CONAN_WITH_ZSTD:-}" ]; then
- conan_args+=(--options "arrow/*:with_zstd=${ARROW_CONAN_WITH_ZSTD}")
-fi
-
-version=$(grep '^set(ARROW_VERSION ' "${ARROW_HOME}/cpp/CMakeLists.txt" | \
- grep -E -o '([0-9.]*)')
-conan_args+=(--version "${version}")
-
-rm -rf ~/.conan/data/arrow/
-rm -rf "${build_dir}/conan" || sudo rm -rf "${build_dir}/conan"
-mkdir -p "${build_dir}/conan" || sudo mkdir -p "${build_dir}/conan"
-if [ -w "${build_dir}" ]; then
- cp -a "${source_dir}"/ci/conan/* "${build_dir}/conan/"
-else
- sudo cp -a "${source_dir}"/ci/conan/* "${build_dir}/conan/"
- sudo chown -R "$(id -u):$(id -g)" "${build_dir}/conan/"
-fi
-cd "${build_dir}/conan/all"
-conan create . "${conan_args[@]}" "$@"
diff --git a/ci/scripts/conan_setup.sh b/ci/scripts/conan_setup.sh
deleted file mode 100755
index d665ce5436..0000000000
--- a/ci/scripts/conan_setup.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/usr/bin/env bash
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-set -eux
-
-conan profile detect
diff --git a/compose.yaml b/compose.yaml
index 47d135face..17e08ad117 100644
--- a/compose.yaml
+++ b/compose.yaml
@@ -129,7 +129,6 @@ x-hierarchy:
- conda-python-no-numpy
- conda-python-spark
- conda-verify-rc
- - conan
- cpp-jni
- debian-cpp:
- debian-c-glib:
@@ -757,30 +756,6 @@ services:
- ${DOCKER_VOLUME_PREFIX}fedora-ccache:/ccache:delegated
command: *cpp-command
- conan:
- # Base service for Conan.
- #
- # Usage:
- # docker compose run --rm conan
- # Parameters:
- # CONAN_BASE: gcc11-ubuntu16.04, ...
- # CONAN_VERSION: 2.12.1, ...
- # See https://github.com/conan-io/conan-docker-tools#readme for
- # available images.
- image: conanio/${CONAN_BASE}:${CONAN_VERSION}
- user: root:root
- shm_size: *shm-size
- ulimits: *ulimits
- environment:
- <<: [*common, *sccache]
- volumes:
- - .:/arrow:delegated
- command: >-
- /bin/bash -c "
- sudo /arrow/ci/scripts/install_sccache.sh unknown-linux-musl
/usr/local/bin &&
- /arrow/ci/scripts/conan_setup.sh &&
- /arrow/ci/scripts/conan_build.sh /arrow /build"
-
cpp-jni:
# Test for the build configuration for JNI.
#
diff --git a/dev/tasks/tasks.yml b/dev/tasks/tasks.yml
index 97843d2ef0..282a8c83f4 100644
--- a/dev/tasks/tasks.yml
+++ b/dev/tasks/tasks.yml
@@ -21,9 +21,6 @@ groups:
{############################# Packaging tasks ###############################}
- conan:
- - conan-*
-
wheel:
- wheel-*
- python-sdist
@@ -32,7 +29,6 @@ groups:
- homebrew-*
packaging:
- - conan-*
- matlab
- python-sdist
- r-binary-packages
@@ -101,7 +97,6 @@ groups:
nightly:
- verify-rc-source-*
- - conan-*
- homebrew-cpp
- test-*
- example-*
@@ -113,7 +108,6 @@ groups:
- example-*
nightly-packaging:
- - conan-*
- homebrew-cpp
- wheel-*
- python-sdist
@@ -131,33 +125,6 @@ tasks:
# e.g.:
# - pyarrow-{no_rc_version}-py38(h[a-z0-9]+)_0-linux-64.tar.bz2
- ############################## Conan ##################################
-
- conan-minimum:
- ci: github
- template: docker-tests/github.linux.yml
- params:
- image: conan
- push: false
-
- conan-maximum:
- ci: github
- template: docker-tests/github.linux.yml
- params:
- flags: >-
- -e ARROW_CONAN_PARQUET=True
- -e ARROW_CONAN_WITH_BROTLI=True
- -e ARROW_CONAN_WITH_BZ2=True
- -e ARROW_CONAN_WITH_FLIGHT_RPC=True
- -e ARROW_CONAN_WITH_GLOG=True
- -e ARROW_CONAN_WITH_JEMALLOC=True
- -e ARROW_CONAN_WITH_JSON=True
- -e ARROW_CONAN_WITH_LZ4=True
- -e ARROW_CONAN_WITH_SNAPPY=True
- -e ARROW_CONAN_WITH_ZSTD=True
- image: conan
- push: false
-
########################### Python Minimal ############################
{% for kind in ["fedora-conda", "ubuntu-venv"] %}