diff --git a/.env b/.env index 3f866fc4c02f..456c45b06589 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 67fb3f34f2ef..1a1267d32cf0 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 794ee9ea37fb..5382ddfa5d1e 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 0c6872560be1..000000000000 --- 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 a6dee0c43461..000000000000 --- 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 3bd3ec61eb9f..000000000000 --- 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 b9999e50050d..000000000000 --- 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 37f36f99a0c3..000000000000 --- 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 6077237139d4..000000000000 --- 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 9abff332e4b6..000000000000 --- 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 0d37465a0eb6..000000000000 --- 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 -+#include - #include - #include - #include -+#include - - #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 d49f14dcc8d8..000000000000 --- 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 44b1691bdb38..000000000000 --- 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 d85120a66265..000000000000 --- 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 ce24052acb4e..000000000000 --- 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 fb54b040f44e..000000000000 --- 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 -#include -#include - -#include - -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 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& rows, - std::shared_ptr* 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(pool)); - // The following builder is owned by components_builder. - DoubleBuilder& cost_components_builder = - *(static_cast(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 id_array; - ARROW_RETURN_NOT_OK(id_builder.Finish(&id_array)); - std::shared_ptr 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 cost_components_array; - ARROW_RETURN_NOT_OK(components_builder.Finish(&cost_components_array)); - - std::vector> 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(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& table, - std::vector* 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> 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(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`. 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(table->column(0)->chunk(0)); - auto costs = - std::static_pointer_cast(table->column(1)->chunk(0)); - auto cost_components = - std::static_pointer_cast(table->column(2)->chunk(0)); - auto cost_components_values = - std::static_pointer_cast(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(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 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 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 table; - EXIT_ON_FAILURE(VectorToColumnarTable(rows, &table)); - - std::vector 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 02100ba9d4ca..000000000000 --- 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 295f6a37087d..000000000000 --- 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 76af58f70df5..000000000000 --- 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 15c73d9d25a7..000000000000 --- 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 d665ce5436b2..000000000000 --- 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 47d135face8b..17e08ad1173e 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 97843d2ef0cb..282a8c83f4de 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"] %}