diff --git a/ci/conan/all/conan_cmake_project_include.cmake b/ci/conan/all/conan_cmake_project_include.cmake index a6dee0c4346..1bf900def3e 100644 --- a/ci/conan/all/conan_cmake_project_include.cmake +++ b/ci/conan/all/conan_cmake_project_include.cmake @@ -1,25 +1,3 @@ -# 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" diff --git a/ci/conan/all/conandata.yml b/ci/conan/all/conandata.yml index a13b31c2e82..a370e59e006 100644 --- a/ci/conan/all/conandata.yml +++ b/ci/conan/all/conandata.yml @@ -1,26 +1,7 @@ -# 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: + "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" @@ -40,6 +21,13 @@ sources: 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: + "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" diff --git a/ci/conan/all/conanfile.py b/ci/conan/all/conanfile.py index 5db9fe35672..7aef9d284d6 100644 --- a/ci/conan/all/conanfile.py +++ b/ci/conan/all/conanfile.py @@ -1,24 +1,4 @@ -# 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 @@ -28,11 +8,9 @@ from conan.tools.microsoft import is_msvc, is_msvc_static_runtime from conan.tools.scm import Version -import os -import glob - required_conan_version = ">=2.1.0" + class ArrowConan(ConanFile): name = "arrow" description = "Apache Arrow is a cross-language development platform for in-memory data" @@ -102,7 +80,7 @@ class ArrowConan(ConanFile): "dataset_modules": False, "deprecated": True, "encryption": False, - "filesystem_layer": False, + "filesystem_layer": True, "hdfs_bridgs": False, "plasma": "deprecated", "simd_level": "default", @@ -142,7 +120,7 @@ class ArrowConan(ConanFile): def _min_cppstd(self): # arrow >= 10.0.0 requires C++17. # https://github.com/apache/arrow/pull/13991 - return "11" if Version(self.version) < "10.0.0" else "17" + return "17" def export_sources(self): export_conandata_patches(self) @@ -151,10 +129,10 @@ def export_sources(self): def config_options(self): if self.settings.os == "Windows": del self.options.fPIC - if Version(self.version) < "8.0.0": - del self.options.substrait 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: @@ -209,9 +187,6 @@ def requirements(self): self.requires("snappy/1.1.9") if self.options.get_safe("simd_level") != None or \ self.options.get_safe("runtime_simd_level") != None: - if Version(self.version) < 8: - self.requires("xsimd/9.0.1") - else: self.requires("xsimd/13.0.0") if self.options.with_zlib: self.requires("zlib/[>=1.2.11 <2]") @@ -253,15 +228,6 @@ def validate(self): if self.settings.compiler.get_safe("cppstd"): check_min_cppstd(self, self._min_cppstd) - if ( - Version(self.version) < "10.0.0" - and self.settings.compiler == "clang" - and Version(self.settings.compiler.version) < "3.9" - ): - raise ConanInvalidConfiguration( - f"{self.ref} requires C++11, which needs at least clang-3.9" - ) - if self.options.get_safe("skyhook", False): raise ConanInvalidConfiguration("CCI has no librados recipe (yet)") if self.options.with_cuda: @@ -284,26 +250,6 @@ def build_requirements(self): 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) @@ -425,28 +371,11 @@ def generate(self): tc.generate() deps = CMakeDeps(self) + deps.set_property("mimalloc", "cmake_target_name", "mimalloc::mimalloc") deps.generate() def _patch_sources(self): apply_conandata_patches(self) - if Version(self.version) < "10.0.0": - for filename in glob.glob(os.path.join(self.source_folder, "cpp", "cmake_modules", "Find*.cmake")): - if os.path.basename(filename) not in [ - "FindArrow.cmake", - "FindArrowAcero.cmake", - "FindArrowCUDA.cmake", - "FindArrowDataset.cmake", - "FindArrowFlight.cmake", - "FindArrowFlightSql.cmake", - "FindArrowFlightTesting.cmake", - "FindArrowPython.cmake", - "FindArrowPythonFlight.cmake", - "FindArrowSubstrait.cmake", - "FindArrowTesting.cmake", - "FindGandiva.cmake", - "FindParquet.cmake", - ]: - os.remove(filename) def build(self): self._patch_sources() @@ -464,29 +393,6 @@ def package(self): rmdir(self, os.path.join(self.package_folder, "lib", "pkgconfig")) rmdir(self, os.path.join(self.package_folder, "share")) - cmake_suffix = "shared" if self.options.shared else "static" - - alias_map = { f"Arrow::arrow_{cmake_suffix}": f"arrow::arrow_{cmake_suffix}" } - - if self.options.parquet: - alias_map[f"Parquet::parquet_{cmake_suffix}"] = f"arrow::parquet_{cmake_suffix}" - - if self.options.get_safe("substrait"): - alias_map[f"Arrow::arrow_substrait_{cmake_suffix}"] = f"arrow::arrow_substrait_{cmake_suffix}" - - if self.options.acero: - alias_map[f"Arrow::arrow_acero_{cmake_suffix}"] = f"arrow::arrow_acero_{cmake_suffix}" - - if self.options.gandiva: - alias_map[f"Gandiva::gandiva_{cmake_suffix}"] = f"arrow::gandiva_{cmake_suffix}" - - if self.options.with_flight_rpc: - alias_map[f"ArrowFlight::arrow_flight_sql_{cmake_suffix}"] = f"arrow::arrow_flight_sql_{cmake_suffix}" - - @property - def _module_subfolder(self): - return os.path.join("lib", "cmake") - def package_info(self): # FIXME: fix CMake targets of components @@ -556,6 +462,8 @@ def package_info(self): 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") 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 index 37f36f99a0c..1d5a752548e 100644 --- a/ci/conan/all/patches/11.0.0-0001-fix-cmake.patch +++ b/ci/conan/all/patches/11.0.0-0001-fix-cmake.patch @@ -1,25 +1,3 @@ -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 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 index 6077237139d..8c11ce258bb 100644 --- a/ci/conan/all/patches/16.0.0-0001-fix-cmake.patch +++ b/ci/conan/all/patches/16.0.0-0001-fix-cmake.patch @@ -1,25 +1,3 @@ -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 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 index 9abff332e4b..1000d42f4af 100644 --- a/ci/conan/all/patches/18.0.0-0001-fix-cmake.patch +++ b/ci/conan/all/patches/18.0.0-0001-fix-cmake.patch @@ -1,25 +1,3 @@ -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 diff --git a/ci/conan/all/test_package/CMakeLists.txt b/ci/conan/all/test_package/CMakeLists.txt index b25c8e889cb..62e6d3f928d 100644 --- a/ci/conan/all/test_package/CMakeLists.txt +++ b/ci/conan/all/test_package/CMakeLists.txt @@ -1,26 +1,4 @@ -# 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.8) +cmake_minimum_required(VERSION 3.15) project(test_package LANGUAGES CXX) find_package(Arrow REQUIRED CONFIG) diff --git a/ci/conan/all/test_package/conanfile.py b/ci/conan/all/test_package/conanfile.py index ce24052acb4..a9fb96656f2 100644 --- a/ci/conan/all/test_package/conanfile.py +++ b/ci/conan/all/test_package/conanfile.py @@ -1,32 +1,9 @@ -# 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" diff --git a/ci/conan/all/test_package/test_package.cpp b/ci/conan/all/test_package/test_package.cpp index fb54b040f44..42cab6cc76e 100644 --- a/ci/conan/all/test_package/test_package.cpp +++ b/ci/conan/all/test_package/test_package.cpp @@ -78,7 +78,7 @@ arrow::Status VectorToColumnarTable(const std::vector& rows, // 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 + // Store the actual values. The final nullptr argument tells the underyling // 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())); diff --git a/ci/conan/config.yml b/ci/conan/config.yml index cbb2fce0547..6c7e62f82a6 100644 --- a/ci/conan/config.yml +++ b/ci/conan/config.yml @@ -1,26 +1,6 @@ -# 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: + "19.0.1": + folder: all "18.1.0": folder: all "18.0.0":