From 0ffcc5939ed9fc0a4ca23492d68d2df0661f2bf9 Mon Sep 17 00:00:00 2001 From: Sutou Kouhei Date: Sat, 6 Aug 2022 22:00:17 +0900 Subject: [PATCH] ARROW-17251: [CI][Conan] Enable Flight (#13761) This also applies upstream changes. Authored-by: Sutou Kouhei Signed-off-by: Sutou Kouhei --- ci/conan/all/conandata.yml | 32 +- ci/conan/all/conanfile.py | 161 ++++- .../7.0.0-0004-remove-find-modules.patch | 638 ------------------ .../patches/7.0.0-0005-use-find-package.patch | 117 +++- .../patches/7.0.0-0006-install-utils.patch | 39 ++ ci/conan/all/patches/8.0.0-0001-cmake.patch | 35 + .../all/patches/8.0.0-0002-jemalloc.patch | 48 ++ .../8.0.0-0003-mallctl-takes-size_t.patch | 35 + .../patches/8.0.0-0004-use-find-package.patch | 401 +++++++++++ .../patches/8.0.0-0005-install-utils.patch | 65 ++ ci/conan/all/test_package/CMakeLists.txt | 6 +- ci/conan/config.yml | 4 + ci/scripts/conan_build.sh | 3 + cpp/cmake_modules/ThirdpartyToolchain.cmake | 17 +- dev/tasks/tasks.yml | 1 + 15 files changed, 898 insertions(+), 704 deletions(-) create mode 100644 ci/conan/all/patches/7.0.0-0006-install-utils.patch create mode 100644 ci/conan/all/patches/8.0.0-0001-cmake.patch create mode 100644 ci/conan/all/patches/8.0.0-0002-jemalloc.patch create mode 100644 ci/conan/all/patches/8.0.0-0003-mallctl-takes-size_t.patch create mode 100644 ci/conan/all/patches/8.0.0-0004-use-find-package.patch create mode 100644 ci/conan/all/patches/8.0.0-0005-install-utils.patch diff --git a/ci/conan/all/conandata.yml b/ci/conan/all/conandata.yml index 1e32a6f44688a..942a3eba7a6c6 100644 --- a/ci/conan/all/conandata.yml +++ b/ci/conan/all/conandata.yml @@ -21,6 +21,12 @@ # SOFTWARE. sources: + "8.0.1": + url: "https://github.com/apache/arrow/archive/apache-arrow-8.0.1.tar.gz" + sha256: "e4c86329be769f2c8778aacc8d6220a9a13c90d59d4988f9349d51299dacbd11" + "8.0.0": + url: "https://github.com/apache/arrow/archive/apache-arrow-8.0.0.tar.gz" + sha256: "19ece12de48e51ce4287d2dee00dc358fbc5ff02f41629d16076f77b8579e272" "7.0.0": url: "https://github.com/apache/arrow/archive/apache-arrow-7.0.0.tar.gz" sha256: "57e13c62f27b710e1de54fd30faed612aefa22aa41fa2c0c3bacd204dd18a8f3" @@ -31,6 +37,28 @@ sources: url: "https://github.com/apache/arrow/archive/apache-arrow-1.0.0.tar.gz" sha256: "08fbd4c633c08939850d619ca0224c75d7a0526467c721c0838b8aa7efccb270" patches: + "8.0.1": + - base_path: "source_subfolder" + patch_file: "patches/8.0.0-0001-cmake.patch" + - base_path: "source_subfolder" + patch_file: "patches/8.0.0-0002-jemalloc.patch" + - base_path: "source_subfolder" + patch_file: "patches/8.0.0-0003-mallctl-takes-size_t.patch" + - base_path: "source_subfolder" + patch_file: "patches/8.0.0-0004-use-find-package.patch" + - base_path: "source_subfolder" + patch_file: "patches/8.0.0-0005-install-utils.patch" + "8.0.0": + - base_path: "source_subfolder" + patch_file: "patches/8.0.0-0001-cmake.patch" + - base_path: "source_subfolder" + patch_file: "patches/8.0.0-0002-jemalloc.patch" + - base_path: "source_subfolder" + patch_file: "patches/8.0.0-0003-mallctl-takes-size_t.patch" + - base_path: "source_subfolder" + patch_file: "patches/8.0.0-0004-use-find-package.patch" + - base_path: "source_subfolder" + patch_file: "patches/8.0.0-0005-install-utils.patch" "7.0.0": - base_path: "source_subfolder" patch_file: "patches/7.0.0-0001-cmake.patch" @@ -38,10 +66,10 @@ patches: patch_file: "patches/7.0.0-0002-jemalloc.patch" - base_path: "source_subfolder" patch_file: "patches/7.0.0-0003-mallctl-takes-size_t.patch" - - base_path: "source_subfolder" - patch_file: "patches/7.0.0-0004-remove-find-modules.patch" - base_path: "source_subfolder" patch_file: "patches/7.0.0-0005-use-find-package.patch" + - base_path: "source_subfolder" + patch_file: "patches/7.0.0-0006-install-utils.patch" "2.0.0": - base_path: "source_subfolder" patch_file: "patches/2.0.0-0001-cmake.patch" diff --git a/ci/conan/all/conanfile.py b/ci/conan/all/conanfile.py index 110f9bd93537a..a87478d6e40de 100644 --- a/ci/conan/all/conanfile.py +++ b/ci/conan/all/conanfile.py @@ -23,7 +23,7 @@ from conans import ConanFile, tools, CMake from conans.errors import ConanInvalidConfiguration import os - +import glob required_conan_version = ">=1.33.0" @@ -31,21 +31,22 @@ class ArrowConan(ConanFile): name = "arrow" description = "Apache Arrow is a cross-language development platform for in-memory data" - topics = ("arrow", "memory") + license = ("Apache-2.0",) url = "https://github.com/conan-io/conan-center-index" homepage = "https://arrow.apache.org/" - license = ("Apache-2.0",) - generators = "cmake", "cmake_find_package_multi" - settings = "os", "compiler", "build_type", "arch" + topics = ("memory", "gandiva", "parquet", "skyhook", "plasma", "hdfs", "csv", "cuda", "gcs", "json", "hive", "s3", "grpc") + settings = "os", "arch", "compiler", "build_type" options = { "shared": [True, False], "fPIC": [True, False], "gandiva": [True, False], - "parquet": [True, False], + "parquet": ["auto", True, False], + "substrait": [True, False], + "skyhook": [True, False], "plasma": [True, False], "cli": [True, False], "compute": ["auto", True, False], - "dataset_modules": [True, False], + "dataset_modules": ["auto", True, False], "deprecated": [True, False], "encryption": [True, False], "filesystem_layer": [True, False], @@ -56,7 +57,9 @@ class ArrowConan(ConanFile): "with_boost": ["auto", True, False], "with_csv": [True, False], "with_cuda": [True, False], - "with_flight_rpc": [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], @@ -64,6 +67,7 @@ class ArrowConan(ConanFile): "with_json": [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], @@ -80,11 +84,13 @@ class ArrowConan(ConanFile): "shared": False, "fPIC": True, "gandiva": False, - "parquet": False, + "parquet": "auto", + "skyhook": False, + "substrait": False, "plasma": False, "cli": False, "compute": "auto", - "dataset_modules": False, + "dataset_modules": "auto", "deprecated": True, "encryption": False, "filesystem_layer": False, @@ -97,7 +103,9 @@ class ArrowConan(ConanFile): "with_bz2": False, "with_csv": False, "with_cuda": False, - "with_flight_rpc": False, + "with_flight_rpc": "auto", + "with_flight_sql": False, + "with_gcs": False, "with_gflags": "auto", "with_jemalloc": "auto", "with_glog": "auto", @@ -105,6 +113,7 @@ class ArrowConan(ConanFile): "with_json": False, "with_llvm": "auto", "with_openssl": "auto", + "with_opentelemetry": False, "with_orc": False, "with_protobuf": "auto", "with_re2": "auto", @@ -115,6 +124,8 @@ class ArrowConan(ConanFile): "with_zlib": False, "with_zstd": False, } + generators = "cmake", "cmake_find_package_multi" + short_paths = True _cmake = None @@ -135,6 +146,14 @@ def config_options(self): del self.options.runtime_simd_level elif tools.Version(self.version) < "6.0.0": self.options.simd_level = "sse4_2" + if tools.Version(self.version) < "6.0.0": + del self.options.with_gcs + if tools.Version(self.version) < "7.0.0": + del self.options.skyhook + del self.options.with_flight_sql + del self.options.with_opentelemetry + if tools.Version(self.version) < "8.0.0": + del self.options.substrait def validate(self): if self.settings.compiler == "clang" and self.settings.compiler.version <= tools.Version("3.9"): @@ -144,6 +163,12 @@ def validate(self): del self.options.fPIC if self.options.compute == False and not self._compute(True): raise ConanInvalidConfiguration("compute options is required (or choose auto)") + if self.options.parquet == False and self._parquet(True): + raise ConanInvalidConfiguration("parquet options is required (or choose auto)") + if self.options.dataset_modules == False and self._dataset_modules(True): + raise ConanInvalidConfiguration("dataset_modules options is required (or choose auto)") + if self.options.get_safe("skyhook", False): + raise ConanInvalidConfiguration("CCI has no librados recipe (yet)") if self.options.with_jemalloc == False and self._with_jemalloc(True): raise ConanInvalidConfiguration("with_jemalloc option is required (or choose auto)") if self.options.with_re2 == False and self._with_re2(True): @@ -152,6 +177,8 @@ def validate(self): raise ConanInvalidConfiguration("with_protobuf option is required (or choose auto)") if self.options.with_gflags == False and self._with_gflags(True): raise ConanInvalidConfiguration("with_gflags options is required (or choose auto)") + if self.options.with_flight_rpc == False and self._with_flight_rpc(True): + raise ConanInvalidConfiguration("with_flight_rpc options is required (or choose auto)") if self.options.with_grpc == False and self._with_grpc(True): raise ConanInvalidConfiguration("with_grpc options is required (or choose auto)") if self.options.with_boost == False and self._with_boost(True): @@ -176,10 +203,22 @@ def validate(self): def _compute(self, required=False): if required or self.options.compute == "auto": - return bool(self.options.dataset_modules) or bool(self.options.parquet) + return bool(self._parquet()) or bool(self._dataset_modules()) or bool(self.options.get_safe("substrait", False)) else: return bool(self.options.compute) + def _parquet(self, required=False): + if required or self.options.parquet == "auto": + return bool(self.options.get_safe("substrait", False)) + else: + return bool(self.options.parquet) + + def _dataset_modules(self, required=False): + if required or self.options.dataset_modules == "auto": + return bool(self.options.get_safe("substrait", False)) + else: + return bool(self.options.dataset_modules) + def _with_jemalloc(self, required=False): if required or self.options.with_jemalloc == "auto": return bool("BSD" in str(self.settings.os)) @@ -194,10 +233,16 @@ def _with_re2(self, required=False): def _with_protobuf(self, required=False): if required or self.options.with_protobuf == "auto": - return bool(self.options.gandiva or self.options.with_flight_rpc or self.options.with_orc) + return bool(self.options.gandiva or self._with_flight_rpc() or self.options.with_orc or self.options.get_safe("substrait", False)) else: return bool(self.options.with_protobuf) + def _with_flight_rpc(self, required=False): + if required or self.options.with_flight_rpc == "auto": + return bool(self.options.get_safe("with_flight_sql", False)) + else: + return bool(self.options.with_flight_rpc) + def _with_gflags(self, required=False): if required or self.options.with_gflags == "auto": return bool(self.options.plasma or self._with_glog() or self._with_grpc()) @@ -212,7 +257,7 @@ def _with_glog(self, required=False): def _with_grpc(self, required=False): if required or self.options.with_grpc == "auto": - return bool(self.options.with_flight_rpc) + return self._with_flight_rpc() else: return bool(self.options.with_grpc) @@ -222,7 +267,7 @@ def _with_boost(self, required=False): return True version = tools.Version(self.version) if version.major == "1": - if self.options.parquet and self.settings.compiler == "gcc" and self.settings.compiler.version < tools.Version("4.9"): + if self._parquet() and self.settings.compiler == "gcc" and self.settings.compiler.version < tools.Version("4.9"): return True elif version.major >= "2": if self.settings.compiler == "Visual Studio": @@ -233,7 +278,7 @@ def _with_boost(self, required=False): def _with_thrift(self, required=False): # No self.options.with_thift exists - return bool(required or self.options.parquet) + return bool(required or self._parquet()) def _with_utf8proc(self, required=False): if required or self.options.with_utf8proc == "auto": @@ -245,19 +290,19 @@ def _with_llvm(self, required=False): if required or self.options.with_llvm == "auto": return bool(self.options.gandiva) else: - return bool(self.options.with_openssl) + return bool(self.options.with_llvm) def _with_openssl(self, required=False): if required or self.options.with_openssl == "auto": - return bool(self.options.encryption or self.options.with_flight_rpc or self.options.with_s3) + return bool(self.options.encryption or self._with_flight_rpc() or self.options.with_s3) else: return bool(self.options.with_openssl) def requirements(self): if self._with_thrift(): - self.requires("thrift/0.15.0") + self.requires("thrift/0.16.0") if self._with_protobuf(): - self.requires("protobuf/3.20.0") + self.requires("protobuf/3.21.1") if self._with_jemalloc(): self.requires("jemalloc/5.2.1") if self._with_boost(): @@ -266,18 +311,22 @@ def requirements(self): self.requires("gflags/2.2.2") if self._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._with_grpc(): - self.requires("grpc/1.45.2") + self.requires("grpc/1.47.0") if self.options.with_json: self.requires("rapidjson/1.1.0") if self._with_llvm(): self.requires("llvm-core/13.0.0") if self._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.1o") + # aws-sdk-cpp/grpc requires openssl/1.1.1. it uses deprecated functions in openssl/3.0.0 + if self.options.with_s3 or self._with_flight_rpc(): + self.requires("openssl/1.1.1q") else: - self.requires("openssl/3.0.3") + self.requires("openssl/3.0.5") + if self.options.get_safe("with_opentelemetry"): + self.requires("opentelemetry-cpp/1.4.1") if self.options.with_s3: self.requires("aws-sdk-cpp/1.9.234") if self.options.with_brotli: @@ -312,6 +361,8 @@ def source(self): top_level = os.environ.get("ARROW_HOME") shutil.copytree(os.path.join(top_level, "cpp"), os.path.join(self._source_subfolder, "cpp")) + shutil.copytree(os.path.join(top_level, "format"), + os.path.join(self._source_subfolder, "format")) top_level_files = [ ".env", "LICENSE.txt", @@ -341,9 +392,10 @@ def _configure_cmake(self): self._cmake.definitions["ARROW_DEFINE_OPTIONS"] = True self._cmake.definitions["ARROW_DEPENDENCY_SOURCE"] = "SYSTEM" self._cmake.definitions["ARROW_GANDIVA"] = self.options.gandiva - self._cmake.definitions["ARROW_PARQUET"] = self.options.parquet + self._cmake.definitions["ARROW_PARQUET"] = self._parquet() + self._cmake.definitions["ARROW_SUBSTRAIT"] = self.options.get_safe("substrait", False) self._cmake.definitions["ARROW_PLASMA"] = self.options.plasma - self._cmake.definitions["ARROW_DATASET"] = self.options.dataset_modules + self._cmake.definitions["ARROW_DATASET"] = self._dataset_modules() self._cmake.definitions["ARROW_FILESYSTEM"] = self.options.filesystem_layer self._cmake.definitions["PARQUET_REQUIRE_ENCRYPTION"] = self.options.encryption self._cmake.definitions["ARROW_HDFS"] = self.options.hdfs_bridgs @@ -351,7 +403,8 @@ def _configure_cmake(self): self._cmake.definitions["ARROW_BUILD_SHARED"] = self.options.shared self._cmake.definitions["ARROW_BUILD_STATIC"] = not self.options.shared self._cmake.definitions["ARROW_NO_DEPRECATED_API"] = not self.options.deprecated - self._cmake.definitions["ARROW_FLIGHT"] = self.options.with_flight_rpc + self._cmake.definitions["ARROW_FLIGHT"] = self._with_flight_rpc() + self._cmake.definitions["ARROW_FLIGHT_SQL"] = self.options.get_safe("with_flight_sql", False) self._cmake.definitions["ARROW_COMPUTE"] = self._compute() self._cmake.definitions["ARROW_CSV"] = self.options.with_csv self._cmake.definitions["ARROW_CUDA"] = self.options.with_cuda @@ -444,6 +497,24 @@ def _configure_cmake(self): def _patch_sources(self): for patch in self.conan_data.get("patches", {}).get(self.version, []): tools.patch(**patch) + # if tools.Version(self.version) >= "7.0.0": + # for filename in glob.glob(os.path.join(self._source_subfolder, "cpp", "cmake_modules", "Find*.cmake")): + # if os.path.basename(filename) not in [ + # "FindArrow.cmake", + # "FindArrowCUDA.cmake", + # "FindArrowDataset.cmake", + # "FindArrowFlight.cmake", + # "FindArrowFlightSql.cmake", + # "FindArrowFlightTesting.cmake", + # "FindArrowPython.cmake", + # "FindArrowPythonFlight.cmake", + # "FindArrowSubstrait.cmake", + # "FindArrowTesting.cmake", + # "FindGandiva.cmake", + # "FindParquet.cmake", + # "FindPlasma.cmake", + # ]: + # os.remove(filename) def build(self): self._patch_sources() @@ -486,16 +557,23 @@ def package_info(self): self.cpp_info.components["libarrow"].names["pkg_config"] = "arrow" if not self.options.shared: self.cpp_info.components["libarrow"].defines = ["ARROW_STATIC"] - if self.settings.os == "Linux": - self.cpp_info.components["libarrow"].system_libs = ["pthread"] + if self.settings.os in ["Linux", "FreeBSD"]: + self.cpp_info.components["libarrow"].system_libs = ["pthread", "m", "dl", "rt"] - if self.options.parquet: + if self._parquet(): self.cpp_info.components["libparquet"].libs = [self._lib_name("parquet")] self.cpp_info.components["libparquet"].names["cmake_find_package"] = "parquet" self.cpp_info.components["libparquet"].names["cmake_find_package_multi"] = "parquet" self.cpp_info.components["libparquet"].names["pkg_config"] = "parquet" self.cpp_info.components["libparquet"].requires = ["libarrow"] + if self.options.get_safe("substrait", False): + self.cpp_info.components["libarrow_substrait"].libs = [self._lib_name("arrow_substrait")] + self.cpp_info.components["libarrow_substrait"].names["cmake_find_package"] = "arrow_substrait" + self.cpp_info.components["libarrow_substrait"].names["cmake_find_package_multi"] = "arrow_substrait" + self.cpp_info.components["libarrow_substrait"].names["pkg_config"] = "arrow_substrait" + self.cpp_info.components["libarrow_substrait"].requires = ["libparquet", "dataset"] + if self.options.plasma: self.cpp_info.components["libplasma"].libs = [self._lib_name("plasma")] self.cpp_info.components["libplasma"].names["cmake_find_package"] = "plasma" @@ -510,17 +588,24 @@ def package_info(self): self.cpp_info.components["libgandiva"].names["pkg_config"] = "gandiva" self.cpp_info.components["libgandiva"].requires = ["libarrow"] - if self.options.with_flight_rpc: + if self._with_flight_rpc(): self.cpp_info.components["libarrow_flight"].libs = [self._lib_name("arrow_flight")] self.cpp_info.components["libarrow_flight"].names["cmake_find_package"] = "flight_rpc" self.cpp_info.components["libarrow_flight"].names["cmake_find_package_multi"] = "flight_rpc" self.cpp_info.components["libarrow_flight"].names["pkg_config"] = "flight_rpc" self.cpp_info.components["libarrow_flight"].requires = ["libarrow"] - if self.options.dataset_modules: + if self.options.get_safe("with_flight_sql"): + self.cpp_info.components["libarrow_flight_sql"].libs = [self._lib_name("arrow_flight_sql")] + self.cpp_info.components["libarrow_flight_sql"].names["cmake_find_package"] = "flight_sql" + self.cpp_info.components["libarrow_flight_sql"].names["cmake_find_package_multi"] = "flight_sql" + self.cpp_info.components["libarrow_flight_sql"].names["pkg_config"] = "flight_sql" + self.cpp_info.components["libarrow_flight_sql"].requires = ["libarrow", "libarrow_flight"] + + if self._dataset_modules(): self.cpp_info.components["dataset"].libs = ["arrow_dataset"] - if self.options.cli: + if (self.options.cli and (self.options.with_cuda or self._with_flight_rpc() or self._parquet())) or self.options.plasma: binpath = os.path.join(self.package_folder, "bin") self.output.info("Appending PATH env var: {}".format(binpath)) self.env_info.PATH.append(binpath) @@ -529,7 +614,7 @@ def package_info(self): 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 < tools.Version("4.9"): + if self._parquet() and self.settings.compiler == "gcc" and self.settings.compiler.version < tools.Version("4.9"): self.cpp_info.components["libparquet"].requires.append("boost::boost") if tools.Version(self.version) >= "2.0": # FIXME: only headers components is used @@ -560,8 +645,12 @@ def package_info(self): self.cpp_info.components["libarrow"].requires.append("rapidjson::rapidjson") if self.options.with_s3: self.cpp_info.components["libarrow"].requires.append("aws-sdk-cpp::s3") + 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: @@ -576,6 +665,6 @@ def package_info(self): 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_flight_rpc: + if self._with_flight_rpc(): self.cpp_info.components["libarrow_flight"].requires.append("grpc::grpc") self.cpp_info.components["libarrow_flight"].requires.append("protobuf::protobuf") diff --git a/ci/conan/all/patches/7.0.0-0004-remove-find-modules.patch b/ci/conan/all/patches/7.0.0-0004-remove-find-modules.patch index 482bb7cd4d8fd..f0b299479e22f 100644 --- a/ci/conan/all/patches/7.0.0-0004-remove-find-modules.patch +++ b/ci/conan/all/patches/7.0.0-0004-remove-find-modules.patch @@ -20,641 +20,3 @@ 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/FindBrotli.cmake a/cpp/cmake_modules/FindBrotli.cmake -deleted file mode 100644 -index e2670b5..0000000 ---- a/cpp/cmake_modules/FindBrotli.cmake -+++ /dev/null -@@ -1,130 +0,0 @@ --# --# Licensed 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. --# --# Tries to find Brotli headers and libraries. --# --# Usage of this module as follows: --# --# find_package(Brotli) -- --if(ARROW_BROTLI_USE_SHARED) -- set(BROTLI_COMMON_LIB_NAMES -- brotlicommon -- ${CMAKE_SHARED_LIBRARY_PREFIX}brotlicommon${CMAKE_SHARED_LIBRARY_SUFFIX}) -- -- set(BROTLI_ENC_LIB_NAMES -- brotlienc ${CMAKE_SHARED_LIBRARY_PREFIX}brotlienc${CMAKE_SHARED_LIBRARY_SUFFIX}) -- -- set(BROTLI_DEC_LIB_NAMES -- brotlidec ${CMAKE_SHARED_LIBRARY_PREFIX}brotlidec${CMAKE_SHARED_LIBRARY_SUFFIX}) --else() -- set(BROTLI_COMMON_LIB_NAMES -- brotlicommon-static -- ${CMAKE_STATIC_LIBRARY_PREFIX}brotlicommon-static${CMAKE_STATIC_LIBRARY_SUFFIX} -- ${CMAKE_STATIC_LIBRARY_PREFIX}brotlicommon_static${CMAKE_STATIC_LIBRARY_SUFFIX} -- ${CMAKE_STATIC_LIBRARY_PREFIX}brotlicommon${CMAKE_STATIC_LIBRARY_SUFFIX}) -- -- set(BROTLI_ENC_LIB_NAMES -- brotlienc-static -- ${CMAKE_STATIC_LIBRARY_PREFIX}brotlienc-static${CMAKE_STATIC_LIBRARY_SUFFIX} -- ${CMAKE_STATIC_LIBRARY_PREFIX}brotlienc_static${CMAKE_STATIC_LIBRARY_SUFFIX} -- ${CMAKE_STATIC_LIBRARY_PREFIX}brotlienc${CMAKE_STATIC_LIBRARY_SUFFIX}) -- -- set(BROTLI_DEC_LIB_NAMES -- brotlidec-static -- ${CMAKE_STATIC_LIBRARY_PREFIX}brotlidec-static${CMAKE_STATIC_LIBRARY_SUFFIX} -- ${CMAKE_STATIC_LIBRARY_PREFIX}brotlidec_static${CMAKE_STATIC_LIBRARY_SUFFIX} -- ${CMAKE_STATIC_LIBRARY_PREFIX}brotlidec${CMAKE_STATIC_LIBRARY_SUFFIX}) --endif() -- --if(BROTLI_ROOT) -- find_library(BROTLI_COMMON_LIBRARY -- NAMES ${BROTLI_COMMON_LIB_NAMES} -- PATHS ${BROTLI_ROOT} -- PATH_SUFFIXES ${ARROW_LIBRARY_PATH_SUFFIXES} -- NO_DEFAULT_PATH) -- find_library(BROTLI_ENC_LIBRARY -- NAMES ${BROTLI_ENC_LIB_NAMES} -- PATHS ${BROTLI_ROOT} -- PATH_SUFFIXES ${ARROW_LIBRARY_PATH_SUFFIXES} -- NO_DEFAULT_PATH) -- find_library(BROTLI_DEC_LIBRARY -- NAMES ${BROTLI_DEC_LIB_NAMES} -- PATHS ${BROTLI_ROOT} -- PATH_SUFFIXES ${ARROW_LIBRARY_PATH_SUFFIXES} -- NO_DEFAULT_PATH) -- find_path(BROTLI_INCLUDE_DIR -- NAMES brotli/decode.h -- PATHS ${BROTLI_ROOT} -- PATH_SUFFIXES ${ARROW_INCLUDE_PATH_SUFFIXES} -- NO_DEFAULT_PATH) --else() -- find_package(PkgConfig QUIET) -- pkg_check_modules(BROTLI_PC libbrotlicommon libbrotlienc libbrotlidec) -- if(BROTLI_PC_FOUND) -- set(BROTLI_INCLUDE_DIR "${BROTLI_PC_libbrotlicommon_INCLUDEDIR}") -- -- # Some systems (e.g. Fedora) don't fill Brotli_LIBRARY_DIRS, so add the other dirs here. -- list(APPEND BROTLI_PC_LIBRARY_DIRS "${BROTLI_PC_libbrotlicommon_LIBDIR}") -- list(APPEND BROTLI_PC_LIBRARY_DIRS "${BROTLI_PC_libbrotlienc_LIBDIR}") -- list(APPEND BROTLI_PC_LIBRARY_DIRS "${BROTLI_PC_libbrotlidec_LIBDIR}") -- -- find_library(BROTLI_COMMON_LIBRARY -- NAMES ${BROTLI_COMMON_LIB_NAMES} -- PATHS ${BROTLI_PC_LIBRARY_DIRS} -- PATH_SUFFIXES ${ARROW_LIBRARY_PATH_SUFFIXES} -- NO_DEFAULT_PATH) -- find_library(BROTLI_ENC_LIBRARY -- NAMES ${BROTLI_ENC_LIB_NAMES} -- PATHS ${BROTLI_PC_LIBRARY_DIRS} -- PATH_SUFFIXES ${ARROW_LIBRARY_PATH_SUFFIXES} -- NO_DEFAULT_PATH) -- find_library(BROTLI_DEC_LIBRARY -- NAMES ${BROTLI_DEC_LIB_NAMES} -- PATHS ${BROTLI_PC_LIBRARY_DIRS} -- PATH_SUFFIXES ${ARROW_LIBRARY_PATH_SUFFIXES} -- NO_DEFAULT_PATH) -- else() -- find_library(BROTLI_COMMON_LIBRARY -- NAMES ${BROTLI_COMMON_LIB_NAMES} -- PATH_SUFFIXES ${ARROW_LIBRARY_PATH_SUFFIXES}) -- find_library(BROTLI_ENC_LIBRARY -- NAMES ${BROTLI_ENC_LIB_NAMES} -- PATH_SUFFIXES ${ARROW_LIBRARY_PATH_SUFFIXES}) -- find_library(BROTLI_DEC_LIBRARY -- NAMES ${BROTLI_DEC_LIB_NAMES} -- PATH_SUFFIXES ${ARROW_LIBRARY_PATH_SUFFIXES}) -- find_path(BROTLI_INCLUDE_DIR -- NAMES brotli/decode.h -- PATH_SUFFIXES ${ARROW_INCLUDE_PATH_SUFFIXES}) -- endif() --endif() -- --find_package_handle_standard_args( -- Brotli REQUIRED_VARS BROTLI_COMMON_LIBRARY BROTLI_ENC_LIBRARY BROTLI_DEC_LIBRARY -- BROTLI_INCLUDE_DIR) --if(Brotli_FOUND OR BROTLI_FOUND) -- set(Brotli_FOUND TRUE) -- add_library(Brotli::brotlicommon UNKNOWN IMPORTED) -- set_target_properties(Brotli::brotlicommon -- PROPERTIES IMPORTED_LOCATION "${BROTLI_COMMON_LIBRARY}" -- INTERFACE_INCLUDE_DIRECTORIES "${BROTLI_INCLUDE_DIR}") -- add_library(Brotli::brotlienc UNKNOWN IMPORTED) -- set_target_properties(Brotli::brotlienc -- PROPERTIES IMPORTED_LOCATION "${BROTLI_ENC_LIBRARY}" -- INTERFACE_INCLUDE_DIRECTORIES "${BROTLI_INCLUDE_DIR}") -- add_library(Brotli::brotlidec UNKNOWN IMPORTED) -- set_target_properties(Brotli::brotlidec -- PROPERTIES IMPORTED_LOCATION "${BROTLI_DEC_LIBRARY}" -- INTERFACE_INCLUDE_DIRECTORIES "${BROTLI_INCLUDE_DIR}") --endif() -diff --git a/cpp/cmake_modules/FindLz4.cmake a/cpp/cmake_modules/FindLz4.cmake -deleted file mode 100644 -index bc8051f..0000000 ---- a/cpp/cmake_modules/FindLz4.cmake -+++ /dev/null -@@ -1,84 +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. -- --if(MSVC_TOOLCHAIN AND NOT DEFINED LZ4_MSVC_LIB_PREFIX) -- set(LZ4_MSVC_LIB_PREFIX "lib") --endif() --set(LZ4_LIB_NAME_BASE "${LZ4_MSVC_LIB_PREFIX}lz4") -- --if(ARROW_LZ4_USE_SHARED) -- set(LZ4_LIB_NAMES) -- if(CMAKE_IMPORT_LIBRARY_SUFFIX) -- list(APPEND -- LZ4_LIB_NAMES -- "${CMAKE_IMPORT_LIBRARY_PREFIX}${LZ4_LIB_NAME_BASE}${CMAKE_IMPORT_LIBRARY_SUFFIX}" -- ) -- endif() -- list(APPEND LZ4_LIB_NAMES -- "${CMAKE_SHARED_LIBRARY_PREFIX}${LZ4_LIB_NAME_BASE}${CMAKE_SHARED_LIBRARY_SUFFIX}") --else() -- if(MSVC AND NOT DEFINED LZ4_MSVC_STATIC_LIB_SUFFIX) -- set(LZ4_MSVC_STATIC_LIB_SUFFIX "_static") -- endif() -- set(LZ4_STATIC_LIB_SUFFIX "${LZ4_MSVC_STATIC_LIB_SUFFIX}${CMAKE_STATIC_LIBRARY_SUFFIX}") -- set(LZ4_LIB_NAMES -- "${CMAKE_STATIC_LIBRARY_PREFIX}${LZ4_LIB_NAME_BASE}${LZ4_STATIC_LIB_SUFFIX}") --endif() -- --if(LZ4_ROOT) -- find_library(LZ4_LIB -- NAMES ${LZ4_LIB_NAMES} -- PATHS ${LZ4_ROOT} -- PATH_SUFFIXES ${ARROW_LIBRARY_PATH_SUFFIXES} -- NO_DEFAULT_PATH) -- find_path(LZ4_INCLUDE_DIR -- NAMES lz4.h -- PATHS ${LZ4_ROOT} -- NO_DEFAULT_PATH -- PATH_SUFFIXES ${ARROW_INCLUDE_PATH_SUFFIXES}) -- --else() -- find_package(PkgConfig QUIET) -- pkg_check_modules(LZ4_PC liblz4) -- if(LZ4_PC_FOUND) -- set(LZ4_INCLUDE_DIR "${LZ4_PC_INCLUDEDIR}") -- -- list(APPEND LZ4_PC_LIBRARY_DIRS "${LZ4_PC_LIBDIR}") -- find_library(LZ4_LIB -- NAMES ${LZ4_LIB_NAMES} -- PATHS ${LZ4_PC_LIBRARY_DIRS} -- NO_DEFAULT_PATH -- PATH_SUFFIXES ${ARROW_LIBRARY_PATH_SUFFIXES}) -- else() -- find_library(LZ4_LIB -- NAMES ${LZ4_LIB_NAMES} -- PATH_SUFFIXES ${ARROW_LIBRARY_PATH_SUFFIXES}) -- find_path(LZ4_INCLUDE_DIR -- NAMES lz4.h -- PATH_SUFFIXES ${ARROW_INCLUDE_PATH_SUFFIXES}) -- endif() --endif() -- --find_package_handle_standard_args(Lz4 REQUIRED_VARS LZ4_LIB LZ4_INCLUDE_DIR) -- --if(Lz4_FOUND) -- set(Lz4_FOUND TRUE) -- add_library(LZ4::lz4 UNKNOWN IMPORTED) -- set_target_properties(LZ4::lz4 -- PROPERTIES IMPORTED_LOCATION "${LZ4_LIB}" -- INTERFACE_INCLUDE_DIRECTORIES "${LZ4_INCLUDE_DIR}") --endif() -diff --git a/cpp/cmake_modules/FindSnappy.cmake a/cpp/cmake_modules/FindSnappy.cmake -deleted file mode 100644 -index 747df31..0000000 ---- a/cpp/cmake_modules/FindSnappy.cmake -+++ /dev/null -@@ -1,62 +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. -- --if(ARROW_SNAPPY_USE_SHARED) -- set(SNAPPY_LIB_NAMES) -- if(CMAKE_IMPORT_LIBRARY_SUFFIX) -- list(APPEND SNAPPY_LIB_NAMES -- "${CMAKE_IMPORT_LIBRARY_PREFIX}snappy${CMAKE_IMPORT_LIBRARY_SUFFIX}") -- endif() -- list(APPEND SNAPPY_LIB_NAMES -- "${CMAKE_SHARED_LIBRARY_PREFIX}snappy${CMAKE_SHARED_LIBRARY_SUFFIX}") --else() -- set(SNAPPY_STATIC_LIB_NAME_BASE "snappy") -- if(MSVC) -- set(SNAPPY_STATIC_LIB_NAME_BASE -- "${SNAPPY_STATIC_LIB_NAME_BASE}${SNAPPY_MSVC_STATIC_LIB_SUFFIX}") -- endif() -- set(SNAPPY_LIB_NAMES -- "${CMAKE_STATIC_LIBRARY_PREFIX}${SNAPPY_STATIC_LIB_NAME_BASE}${CMAKE_STATIC_LIBRARY_SUFFIX}" -- ) --endif() -- --if(Snappy_ROOT) -- find_library(Snappy_LIB -- NAMES ${SNAPPY_LIB_NAMES} -- PATHS ${Snappy_ROOT} -- PATH_SUFFIXES ${ARROW_LIBRARY_PATH_SUFFIXES} -- NO_DEFAULT_PATH) -- find_path(Snappy_INCLUDE_DIR -- NAMES snappy.h -- PATHS ${Snappy_ROOT} -- NO_DEFAULT_PATH -- PATH_SUFFIXES ${ARROW_INCLUDE_PATH_SUFFIXES}) --else() -- find_library(Snappy_LIB NAMES ${SNAPPY_LIB_NAMES}) -- find_path(Snappy_INCLUDE_DIR -- NAMES snappy.h -- PATH_SUFFIXES ${ARROW_INCLUDE_PATH_SUFFIXES}) --endif() -- --find_package_handle_standard_args(Snappy REQUIRED_VARS Snappy_LIB Snappy_INCLUDE_DIR) -- --if(Snappy_FOUND) -- add_library(Snappy::snappy UNKNOWN IMPORTED) -- set_target_properties(Snappy::snappy -- PROPERTIES IMPORTED_LOCATION "${Snappy_LIB}" -- INTERFACE_INCLUDE_DIRECTORIES "${Snappy_INCLUDE_DIR}") --endif() -diff --git a/cpp/cmake_modules/FindThrift.cmake b/cpp/cmake_modules/FindThrift.cmake -index 750d8ce..e69de29 100644 ---- a/cpp/cmake_modules/FindThrift.cmake -+++ b/cpp/cmake_modules/FindThrift.cmake -@@ -1,144 +0,0 @@ --# Copyright 2012 Cloudera Inc. --# --# Licensed 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. -- --# - Find Thrift (a cross platform RPC lib/tool) --# --# Variables used by this module, they can change the default behaviour and need --# to be set before calling find_package: --# --# Thrift_ROOT - When set, this path is inspected instead of standard library --# locations as the root of the Thrift installation. --# The environment variable THRIFT_HOME overrides this variable. --# --# This module defines --# THRIFT_VERSION, version string of ant if found --# THRIFT_INCLUDE_DIR, where to find THRIFT headers --# THRIFT_LIB, THRIFT library --# THRIFT_FOUND, If false, do not try to use ant -- --function(EXTRACT_THRIFT_VERSION) -- if(THRIFT_INCLUDE_DIR) -- file(READ "${THRIFT_INCLUDE_DIR}/thrift/config.h" THRIFT_CONFIG_H_CONTENT) -- string(REGEX MATCH "#define PACKAGE_VERSION \"[0-9.]+\"" THRIFT_VERSION_DEFINITION -- "${THRIFT_CONFIG_H_CONTENT}") -- string(REGEX MATCH "[0-9.]+" THRIFT_VERSION "${THRIFT_VERSION_DEFINITION}") -- set(THRIFT_VERSION -- "${THRIFT_VERSION}" -- PARENT_SCOPE) -- else() -- set(THRIFT_VERSION -- "" -- PARENT_SCOPE) -- endif() --endfunction(EXTRACT_THRIFT_VERSION) -- --if(MSVC_TOOLCHAIN AND NOT DEFINED THRIFT_MSVC_LIB_SUFFIX) -- if(NOT ARROW_THRIFT_USE_SHARED) -- if(ARROW_USE_STATIC_CRT) -- set(THRIFT_MSVC_LIB_SUFFIX "mt") -- else() -- set(THRIFT_MSVC_LIB_SUFFIX "md") -- endif() -- endif() --endif() --set(THRIFT_LIB_NAME_BASE "thrift${THRIFT_MSVC_LIB_SUFFIX}") -- --if(ARROW_THRIFT_USE_SHARED) -- set(THRIFT_LIB_NAMES thrift) -- if(CMAKE_IMPORT_LIBRARY_SUFFIX) -- list(APPEND -- THRIFT_LIB_NAMES -- "${CMAKE_IMPORT_LIBRARY_PREFIX}${THRIFT_LIB_NAME_BASE}${CMAKE_IMPORT_LIBRARY_SUFFIX}" -- ) -- endif() -- list(APPEND -- THRIFT_LIB_NAMES -- "${CMAKE_SHARED_LIBRARY_PREFIX}${THRIFT_LIB_NAME_BASE}${CMAKE_SHARED_LIBRARY_SUFFIX}" -- ) --else() -- set(THRIFT_LIB_NAMES -- "${CMAKE_STATIC_LIBRARY_PREFIX}${THRIFT_LIB_NAME_BASE}${CMAKE_STATIC_LIBRARY_SUFFIX}" -- ) --endif() -- --if(Thrift_ROOT) -- find_library(THRIFT_LIB -- NAMES ${THRIFT_LIB_NAMES} -- PATHS ${Thrift_ROOT} -- PATH_SUFFIXES "lib/${CMAKE_LIBRARY_ARCHITECTURE}" "lib") -- find_path(THRIFT_INCLUDE_DIR thrift/Thrift.h -- PATHS ${Thrift_ROOT} -- PATH_SUFFIXES "include") -- find_program(THRIFT_COMPILER thrift -- PATHS ${Thrift_ROOT} -- PATH_SUFFIXES "bin") -- extract_thrift_version() --else() -- # THRIFT-4760: The pkgconfig files are currently only installed when using autotools. -- # Starting with 0.13, they are also installed for the CMake-based installations of Thrift. -- find_package(PkgConfig QUIET) -- pkg_check_modules(THRIFT_PC thrift) -- if(THRIFT_PC_FOUND) -- set(THRIFT_INCLUDE_DIR "${THRIFT_PC_INCLUDEDIR}") -- -- list(APPEND THRIFT_PC_LIBRARY_DIRS "${THRIFT_PC_LIBDIR}") -- -- find_library(THRIFT_LIB -- NAMES ${THRIFT_LIB_NAMES} -- PATHS ${THRIFT_PC_LIBRARY_DIRS} -- NO_DEFAULT_PATH) -- find_program(THRIFT_COMPILER thrift -- HINTS ${THRIFT_PC_PREFIX} -- NO_DEFAULT_PATH -- PATH_SUFFIXES "bin") -- set(THRIFT_VERSION ${THRIFT_PC_VERSION}) -- else() -- find_library(THRIFT_LIB -- NAMES ${THRIFT_LIB_NAMES} -- PATH_SUFFIXES "lib/${CMAKE_LIBRARY_ARCHITECTURE}" "lib") -- find_path(THRIFT_INCLUDE_DIR thrift/Thrift.h PATH_SUFFIXES "include") -- find_program(THRIFT_COMPILER thrift PATH_SUFFIXES "bin") -- extract_thrift_version() -- endif() --endif() -- --if(THRIFT_COMPILER) -- set(Thrift_COMPILER_FOUND TRUE) --else() -- set(Thrift_COMPILER_FOUND FALSE) --endif() -- --find_package_handle_standard_args( -- Thrift -- REQUIRED_VARS THRIFT_LIB THRIFT_INCLUDE_DIR -- VERSION_VAR THRIFT_VERSION -- HANDLE_COMPONENTS) -- --if(Thrift_FOUND OR THRIFT_FOUND) -- set(Thrift_FOUND TRUE) -- if(ARROW_THRIFT_USE_SHARED) -- add_library(thrift::thrift SHARED IMPORTED) -- else() -- add_library(thrift::thrift STATIC IMPORTED) -- endif() -- set_target_properties(thrift::thrift -- PROPERTIES IMPORTED_LOCATION "${THRIFT_LIB}" -- INTERFACE_INCLUDE_DIRECTORIES "${THRIFT_INCLUDE_DIR}") -- if(WIN32 AND NOT MSVC_TOOLCHAIN) -- # We don't need this for Visual C++ because Thrift uses -- # "#pragma comment(lib, "Ws2_32.lib")" in -- # thrift/windows/config.h for Visual C++. -- set_target_properties(thrift::thrift PROPERTIES INTERFACE_LINK_LIBRARIES "ws2_32") -- endif() --endif() -diff --git a/cpp/cmake_modules/Findjemalloc.cmake a/cpp/cmake_modules/Findjemalloc.cmake -deleted file mode 100644 -index 84bb81f..0000000 ---- a/cpp/cmake_modules/Findjemalloc.cmake -+++ /dev/null -@@ -1,94 +0,0 @@ --# --# Licensed 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. --# --# Tries to find jemalloc headers and libraries. --# --# Usage of this module as follows: --# --# find_package(jemalloc) --# --# Variables used by this module, they can change the default behaviour and need --# to be set before calling find_package: --# --# JEMALLOC_HOME - --# When set, this path is inspected instead of standard library locations as --# the root of the jemalloc installation. The environment variable --# JEMALLOC_HOME overrides this veriable. --# --# This module defines --# JEMALLOC_INCLUDE_DIR, directory containing headers --# JEMALLOC_SHARED_LIB, path to libjemalloc.so/dylib --# JEMALLOC_FOUND, whether flatbuffers has been found -- --if(NOT "${JEMALLOC_HOME}" STREQUAL "") -- file(TO_CMAKE_PATH "${JEMALLOC_HOME}" _native_path) -- list(APPEND _jemalloc_roots ${_native_path}) --elseif(JEMALLOC_HOME) -- list(APPEND _jemalloc_roots ${JEMALLOC_HOME}) --endif() -- --set(LIBJEMALLOC_NAMES jemalloc libjemalloc.so.1 libjemalloc.so.2 libjemalloc.dylib) -- --# Try the parameterized roots, if they exist --if(_jemalloc_roots) -- find_path(JEMALLOC_INCLUDE_DIR -- NAMES jemalloc/jemalloc.h -- PATHS ${_jemalloc_roots} -- NO_DEFAULT_PATH -- PATH_SUFFIXES "include") -- find_library(JEMALLOC_SHARED_LIB -- NAMES ${LIBJEMALLOC_NAMES} -- PATHS ${_jemalloc_roots} -- NO_DEFAULT_PATH -- PATH_SUFFIXES "lib") -- find_library(JEMALLOC_STATIC_LIB -- NAMES jemalloc_pic -- PATHS ${_jemalloc_roots} -- NO_DEFAULT_PATH -- PATH_SUFFIXES "lib") --else() -- find_path(JEMALLOC_INCLUDE_DIR NAMES jemalloc/jemalloc.h) -- message(STATUS ${JEMALLOC_INCLUDE_DIR}) -- find_library(JEMALLOC_SHARED_LIB NAMES ${LIBJEMALLOC_NAMES}) -- message(STATUS ${JEMALLOC_SHARED_LIB}) -- find_library(JEMALLOC_STATIC_LIB NAMES jemalloc_pic) -- message(STATUS ${JEMALLOC_STATIC_LIB}) --endif() -- --if(JEMALLOC_INCLUDE_DIR AND JEMALLOC_SHARED_LIB) -- set(JEMALLOC_FOUND TRUE) --else() -- set(JEMALLOC_FOUND FALSE) --endif() -- --if(JEMALLOC_FOUND) -- if(NOT jemalloc_FIND_QUIETLY) -- message(STATUS "Found the jemalloc library: ${JEMALLOC_LIBRARIES}") -- endif() --else() -- if(NOT jemalloc_FIND_QUIETLY) -- set(JEMALLOC_ERR_MSG "Could not find the jemalloc library. Looked in ") -- if(_flatbuffers_roots) -- set(JEMALLOC_ERR_MSG "${JEMALLOC_ERR_MSG} in ${_jemalloc_roots}.") -- else() -- set(JEMALLOC_ERR_MSG "${JEMALLOC_ERR_MSG} system search paths.") -- endif() -- if(jemalloc_FIND_REQUIRED) -- message(FATAL_ERROR "${JEMALLOC_ERR_MSG}") -- else(jemalloc_FIND_REQUIRED) -- message(STATUS "${JEMALLOC_ERR_MSG}") -- endif(jemalloc_FIND_REQUIRED) -- endif() --endif() -- --mark_as_advanced(JEMALLOC_INCLUDE_DIR JEMALLOC_SHARED_LIB) -diff --git a/cpp/cmake_modules/Findzstd.cmake a/cpp/cmake_modules/Findzstd.cmake -deleted file mode 100644 -index 3fc14ec..0000000 ---- a/cpp/cmake_modules/Findzstd.cmake -+++ /dev/null -@@ -1,89 +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. -- --if(MSVC AND NOT DEFINED ZSTD_MSVC_LIB_PREFIX) -- set(ZSTD_MSVC_LIB_PREFIX "lib") --endif() --set(ZSTD_LIB_NAME_BASE "${ZSTD_MSVC_LIB_PREFIX}zstd") -- --if(ARROW_ZSTD_USE_SHARED) -- set(ZSTD_LIB_NAMES) -- if(CMAKE_IMPORT_LIBRARY_SUFFIX) -- list(APPEND -- ZSTD_LIB_NAMES -- "${CMAKE_IMPORT_LIBRARY_PREFIX}${ZSTD_LIB_NAME_BASE}${CMAKE_IMPORT_LIBRARY_SUFFIX}" -- ) -- endif() -- list(APPEND ZSTD_LIB_NAMES -- "${CMAKE_SHARED_LIBRARY_PREFIX}${ZSTD_LIB_NAME_BASE}${CMAKE_SHARED_LIBRARY_SUFFIX}" -- ) --else() -- if(MSVC AND NOT DEFINED ZSTD_MSVC_STATIC_LIB_SUFFIX) -- set(ZSTD_MSVC_STATIC_LIB_SUFFIX "_static") -- endif() -- set(ZSTD_STATIC_LIB_SUFFIX -- "${ZSTD_MSVC_STATIC_LIB_SUFFIX}${CMAKE_STATIC_LIBRARY_SUFFIX}") -- set(ZSTD_LIB_NAMES -- "${CMAKE_STATIC_LIBRARY_PREFIX}${ZSTD_LIB_NAME_BASE}${ZSTD_STATIC_LIB_SUFFIX}") --endif() -- --# First, find via if specified ZSTD_ROOT --if(ZSTD_ROOT) -- message(STATUS "Using ZSTD_ROOT: ${ZSTD_ROOT}") -- find_library(ZSTD_LIB -- NAMES ${ZSTD_LIB_NAMES} -- PATHS ${ZSTD_ROOT} -- PATH_SUFFIXES ${ARROW_LIBRARY_PATH_SUFFIXES} -- NO_DEFAULT_PATH) -- find_path(ZSTD_INCLUDE_DIR -- NAMES zstd.h -- PATHS ${ZSTD_ROOT} -- NO_DEFAULT_PATH -- PATH_SUFFIXES ${ARROW_INCLUDE_PATH_SUFFIXES}) -- --else() -- # Second, find via pkg_check_modules -- find_package(PkgConfig QUIET) -- pkg_check_modules(ZSTD_PC libzstd) -- if(ZSTD_PC_FOUND) -- set(ZSTD_INCLUDE_DIR "${ZSTD_PC_INCLUDEDIR}") -- -- list(APPEND ZSTD_PC_LIBRARY_DIRS "${ZSTD_PC_LIBDIR}") -- find_library(ZSTD_LIB -- NAMES ${ZSTD_LIB_NAMES} -- PATHS ${ZSTD_PC_LIBRARY_DIRS} -- NO_DEFAULT_PATH -- PATH_SUFFIXES ${ARROW_LIBRARY_PATH_SUFFIXES}) -- else() -- # Third, check all other CMake paths -- find_library(ZSTD_LIB -- NAMES ${ZSTD_LIB_NAMES} -- PATH_SUFFIXES ${ARROW_LIBRARY_PATH_SUFFIXES}) -- find_path(ZSTD_INCLUDE_DIR -- NAMES zstd.h -- PATH_SUFFIXES ${ARROW_INCLUDE_PATH_SUFFIXES}) -- endif() --endif() -- --find_package_handle_standard_args(zstd REQUIRED_VARS ZSTD_LIB ZSTD_INCLUDE_DIR) -- --if(zstd_FOUND) -- add_library(zstd::libzstd UNKNOWN IMPORTED) -- set_target_properties(zstd::libzstd -- PROPERTIES IMPORTED_LOCATION "${ZSTD_LIB}" -- INTERFACE_INCLUDE_DIRECTORIES "${ZSTD_INCLUDE_DIR}") --endif() diff --git a/ci/conan/all/patches/7.0.0-0005-use-find-package.patch b/ci/conan/all/patches/7.0.0-0005-use-find-package.patch index 085871aaea381..0759339c23ac7 100644 --- a/ci/conan/all/patches/7.0.0-0005-use-find-package.patch +++ b/ci/conan/all/patches/7.0.0-0005-use-find-package.patch @@ -45,7 +45,7 @@ index 2d7baf1..c2e86e0 100644 if(ARROW_MIMALLOC) diff --git a/cpp/cmake_modules/ThirdpartyToolchain.cmake b/cpp/cmake_modules/ThirdpartyToolchain.cmake -index bc38952..ff81d00 100644 +index bc38952..84fc279 100644 --- a/cpp/cmake_modules/ThirdpartyToolchain.cmake +++ b/cpp/cmake_modules/ThirdpartyToolchain.cmake @@ -953,14 +953,7 @@ else() @@ -90,7 +90,23 @@ index bc38952..ff81d00 100644 # TODO: Don't use global includes but rather target_include_directories get_target_property(BROTLI_INCLUDE_DIR Brotli::brotlicommon INTERFACE_INCLUDE_DIRECTORIES) -@@ -1228,10 +1224,13 @@ macro(build_glog) +@@ -1156,6 +1152,15 @@ if(PARQUET_REQUIRE_ENCRYPTION + set(OpenSSL_USE_STATIC_LIBS ON) + set(OPENSSL_USE_STATIC_LIBS ON) + find_package(OpenSSL ${ARROW_OPENSSL_REQUIRED_VERSION} REQUIRED) ++ find_package(OpenSSL REQUIRED CONFIG) ++ message("OPENSSL_FOUND: ${OPENSSL_FOUND}") ++ message("OPENSSL_INCLUDE_DIR: ${OPENSSL_INCLUDE_DIR}") ++ message("OPENSSL_CRYPTO_LIBRARY: ${OPENSSL_CRYPTO_LIBRARY}") ++ message("OPENSSL_CRYPTO_LIBRARIES: ${OPENSSL_CRYPTO_LIBRARIES}") ++ message("OPENSSL_SSL_LIBRARY: ${OPENSSL_SSL_LIBRARY}") ++ message("OPENSSL_SSL_LIBRARIES: ${OPENSSL_SSL_LIBRARIES}") ++ message("OPENSSL_LIBRARIES: ${OPENSSL_LIBRARIES}") ++ message("OPENSSL_VERSION: ${OPENSSL_VERSION}") + endif() + set(ARROW_USE_OPENSSL ON) + endif() +@@ -1228,10 +1233,13 @@ macro(build_glog) endmacro() if(ARROW_USE_GLOG) @@ -104,7 +120,7 @@ index bc38952..ff81d00 100644 endif() # ---------------------------------------------------------------------- -@@ -1300,14 +1299,7 @@ macro(build_gflags) +@@ -1300,17 +1308,11 @@ macro(build_gflags) endmacro() if(ARROW_NEED_GFLAGS) @@ -120,7 +136,22 @@ index bc38952..ff81d00 100644 # TODO: Don't use global includes but rather target_include_directories include_directories(SYSTEM ${GFLAGS_INCLUDE_DIR}) -@@ -1400,6 +1392,7 @@ macro(build_thrift) ++if(0) + if(NOT TARGET ${GFLAGS_LIBRARIES}) + if(TARGET gflags-shared) + set(GFLAGS_LIBRARIES gflags-shared) +@@ -1318,6 +1320,10 @@ if(ARROW_NEED_GFLAGS) + set(GFLAGS_LIBRARIES gflags_shared) + endif() + endif() ++else() ++ set(GFLAGS_LIBRARIES gflags::gflags) ++endif() ++ + endif() + + # ---------------------------------------------------------------------- +@@ -1400,6 +1406,7 @@ macro(build_thrift) endmacro() if(ARROW_WITH_THRIFT) @@ -128,7 +159,7 @@ index bc38952..ff81d00 100644 # We already may have looked for Thrift earlier, when considering whether # to build Boost, so don't look again if already found. if(NOT Thrift_FOUND) -@@ -1412,6 +1405,9 @@ if(ARROW_WITH_THRIFT) +@@ -1412,6 +1419,9 @@ if(ARROW_WITH_THRIFT) endif() # TODO: Don't use global includes but rather target_include_directories include_directories(SYSTEM ${THRIFT_INCLUDE_DIR}) @@ -138,7 +169,7 @@ index bc38952..ff81d00 100644 string(REPLACE "." ";" VERSION_LIST ${THRIFT_VERSION}) list(GET VERSION_LIST 0 THRIFT_VERSION_MAJOR) -@@ -1606,7 +1602,7 @@ if(ARROW_JEMALLOC) +@@ -1606,7 +1616,7 @@ if(ARROW_JEMALLOC) # conflict with the default allocator as well as other jemalloc # installations. # find_package(jemalloc) @@ -147,7 +178,7 @@ index bc38952..ff81d00 100644 set(ARROW_JEMALLOC_USE_SHARED OFF) set(JEMALLOC_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/jemalloc_ep-prefix/src/jemalloc_ep/dist/") -@@ -1664,6 +1660,9 @@ if(ARROW_JEMALLOC) +@@ -1664,6 +1674,9 @@ if(ARROW_JEMALLOC) "${CMAKE_CURRENT_BINARY_DIR}/jemalloc_ep-prefix/src") add_dependencies(jemalloc::jemalloc jemalloc_ep) @@ -157,7 +188,7 @@ index bc38952..ff81d00 100644 list(APPEND ARROW_BUNDLED_STATIC_LIBS jemalloc::jemalloc) endif() -@@ -1671,6 +1670,8 @@ endif() +@@ -1671,6 +1684,8 @@ endif() # mimalloc - Cross-platform high-performance allocator, from Microsoft if(ARROW_MIMALLOC) @@ -166,7 +197,7 @@ index bc38952..ff81d00 100644 message(STATUS "Building (vendored) mimalloc from source") # We only use a vendored mimalloc as we want to control its build options. -@@ -1715,6 +1716,13 @@ if(ARROW_MIMALLOC) +@@ -1715,6 +1730,13 @@ if(ARROW_MIMALLOC) add_dependencies(mimalloc::mimalloc mimalloc_ep) add_dependencies(toolchain mimalloc_ep) @@ -180,7 +211,26 @@ index bc38952..ff81d00 100644 list(APPEND ARROW_BUNDLED_STATIC_LIBS mimalloc::mimalloc) endif() -@@ -2036,10 +2044,21 @@ macro(build_xsimd) +@@ -1999,6 +2021,7 @@ macro(build_rapidjson) + endmacro() + + if(ARROW_WITH_RAPIDJSON) ++if(0) + set(ARROW_RAPIDJSON_REQUIRED_VERSION "1.1.0") + resolve_dependency(RapidJSON + HAVE_ALT +@@ -2011,6 +2034,10 @@ if(ARROW_WITH_RAPIDJSON) + if(RapidJSON_INCLUDE_DIR) + set(RAPIDJSON_INCLUDE_DIR "${RapidJSON_INCLUDE_DIR}") + endif() ++else() ++ find_package(RapidJSON REQUIRED) ++ set(RAPIDJSON_INCLUDE_DIR "${RapidJSON_INCLUDE_DIR}") ++endif() + + # TODO: Don't use global includes but rather target_include_directories + include_directories(SYSTEM ${RAPIDJSON_INCLUDE_DIR}) +@@ -2036,10 +2063,21 @@ macro(build_xsimd) set(XSIMD_VENDORED TRUE) endmacro() @@ -204,7 +254,7 @@ index bc38952..ff81d00 100644 # TODO: Don't use global includes but rather target_include_directories include_directories(SYSTEM ${XSIMD_INCLUDE_DIR}) endif() -@@ -2082,11 +2101,14 @@ macro(build_zlib) +@@ -2082,11 +2120,14 @@ macro(build_zlib) endmacro() if(ARROW_WITH_ZLIB) @@ -219,7 +269,7 @@ index bc38952..ff81d00 100644 endif() macro(build_lz4) -@@ -2140,11 +2162,14 @@ macro(build_lz4) +@@ -2140,11 +2181,14 @@ macro(build_lz4) endmacro() if(ARROW_WITH_LZ4) @@ -234,7 +284,7 @@ index bc38952..ff81d00 100644 endif() macro(build_zstd) -@@ -2205,6 +2230,7 @@ macro(build_zstd) +@@ -2205,6 +2249,7 @@ macro(build_zstd) endmacro() if(ARROW_WITH_ZSTD) @@ -242,7 +292,7 @@ index bc38952..ff81d00 100644 # ARROW-13384: ZSTD_minCLevel was added in v1.4.0, required by ARROW-13091 resolve_dependency(zstd PC_PACKAGE_NAMES -@@ -2232,6 +2258,8 @@ if(ARROW_WITH_ZSTD) +@@ -2232,6 +2277,8 @@ if(ARROW_WITH_ZSTD) get_target_property(ZSTD_INCLUDE_DIR ${ARROW_ZSTD_LIBZSTD} INTERFACE_INCLUDE_DIRECTORIES) include_directories(SYSTEM ${ZSTD_INCLUDE_DIR}) @@ -251,7 +301,7 @@ index bc38952..ff81d00 100644 endif() # ---------------------------------------------------------------------- -@@ -2271,6 +2299,7 @@ macro(build_re2) +@@ -2271,6 +2318,7 @@ macro(build_re2) endmacro() if(ARROW_WITH_RE2) @@ -259,7 +309,7 @@ index bc38952..ff81d00 100644 # Don't specify "PC_PACKAGE_NAMES re2" here because re2.pc may # include -std=c++11. It's not compatible with C source and C++ # source not uses C++ 11. -@@ -2284,6 +2313,8 @@ if(ARROW_WITH_RE2) +@@ -2284,6 +2332,8 @@ if(ARROW_WITH_RE2) # TODO: Don't use global includes but rather target_include_directories get_target_property(RE2_INCLUDE_DIR re2::re2 INTERFACE_INCLUDE_DIRECTORIES) include_directories(SYSTEM ${RE2_INCLUDE_DIR}) @@ -268,7 +318,7 @@ index bc38952..ff81d00 100644 endif() macro(build_bzip2) -@@ -2335,10 +2366,7 @@ macro(build_bzip2) +@@ -2335,10 +2385,7 @@ macro(build_bzip2) endmacro() if(ARROW_WITH_BZ2) @@ -280,7 +330,7 @@ index bc38952..ff81d00 100644 if(NOT TARGET BZip2::BZip2) add_library(BZip2::BZip2 UNKNOWN IMPORTED) -@@ -2390,11 +2418,7 @@ macro(build_utf8proc) +@@ -2390,11 +2437,7 @@ macro(build_utf8proc) endmacro() if(ARROW_WITH_UTF8PROC) @@ -293,7 +343,7 @@ index bc38952..ff81d00 100644 add_definitions(-DARROW_WITH_UTF8PROC) -@@ -3554,33 +3578,12 @@ if(ARROW_WITH_GRPC) +@@ -3554,33 +3597,12 @@ if(ARROW_WITH_GRPC) message(STATUS "Forcing gRPC_SOURCE to Protobuf_SOURCE (${Protobuf_SOURCE})") set(gRPC_SOURCE "${Protobuf_SOURCE}") endif() @@ -328,6 +378,35 @@ index bc38952..ff81d00 100644 endif() # ---------------------------------------------------------------------- +@@ -3770,7 +3792,12 @@ macro(build_google_cloud_cpp_storage) + endmacro() + + if(ARROW_WITH_GOOGLE_CLOUD_CPP) ++if(0) + resolve_dependency(google_cloud_cpp_storage) ++else() ++ find_package(google-cloud-cpp REQUIRED) ++endif() ++ + get_target_property(google_cloud_cpp_storage_INCLUDE_DIR google-cloud-cpp::storage + INTERFACE_INCLUDE_DIRECTORIES) + include_directories(SYSTEM ${google_cloud_cpp_storage_INCLUDE_DIR}) +@@ -4097,11 +4124,15 @@ macro(build_opentelemetry) + endmacro() + + if(ARROW_WITH_OPENTELEMETRY) ++if(0) + set(opentelemetry-cpp_SOURCE "AUTO") + resolve_dependency(opentelemetry-cpp) + get_target_property(OPENTELEMETRY_INCLUDE_DIR opentelemetry-cpp::api + INTERFACE_INCLUDE_DIRECTORIES) + include_directories(SYSTEM ${OPENTELEMETRY_INCLUDE_DIR}) ++else() ++ find_package(opentelemetry-cpp REQUIRED) ++endif() + message(STATUS "Found OpenTelemetry headers: ${OPENTELEMETRY_INCLUDE_DIR}") + endif() + diff --git a/cpp/src/arrow/CMakeLists.txt b/cpp/src/arrow/CMakeLists.txt index 84975e2..7779c08 100644 --- a/cpp/src/arrow/CMakeLists.txt diff --git a/ci/conan/all/patches/7.0.0-0006-install-utils.patch b/ci/conan/all/patches/7.0.0-0006-install-utils.patch new file mode 100644 index 0000000000000..7674174c8e254 --- /dev/null +++ b/ci/conan/all/patches/7.0.0-0006-install-utils.patch @@ -0,0 +1,39 @@ +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/src/arrow/ipc/CMakeLists.txt b/cpp/src/arrow/ipc/CMakeLists.txt +index 495018e..f6cee6f 100644 +--- a/cpp/src/arrow/ipc/CMakeLists.txt ++++ b/cpp/src/arrow/ipc/CMakeLists.txt +@@ -61,8 +61,12 @@ endif() + if(ARROW_BUILD_UTILITIES OR ARROW_BUILD_INTEGRATION) + add_executable(arrow-file-to-stream file_to_stream.cc) + target_link_libraries(arrow-file-to-stream ${ARROW_UTIL_LIB}) ++ install(TARGETS arrow-file-to-stream ${INSTALL_IS_OPTIONAL} ++ DESTINATION ${CMAKE_INSTALL_BINDIR}) + add_executable(arrow-stream-to-file stream_to_file.cc) + target_link_libraries(arrow-stream-to-file ${ARROW_UTIL_LIB}) ++ install(TARGETS arrow-stream-to-file ${INSTALL_IS_OPTIONAL} ++ DESTINATION ${CMAKE_INSTALL_BINDIR}) + + if(ARROW_BUILD_INTEGRATION) + add_dependencies(arrow-integration arrow-file-to-stream) diff --git a/ci/conan/all/patches/8.0.0-0001-cmake.patch b/ci/conan/all/patches/8.0.0-0001-cmake.patch new file mode 100644 index 0000000000000..9e67f4a191208 --- /dev/null +++ b/ci/conan/all/patches/8.0.0-0001-cmake.patch @@ -0,0 +1,35 @@ +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/DefineOptions.cmake b/cpp/cmake_modules/DefineOptions.cmake +index ab7d2ed..6f1e411 100644 +--- a/cpp/cmake_modules/DefineOptions.cmake ++++ b/cpp/cmake_modules/DefineOptions.cmake +@@ -82,7 +82,7 @@ macro(define_option_string name description default) + endmacro() + + # Top level cmake dir +-if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}") ++if(1) + #---------------------------------------------------------------------- + set_option_category("Compile and link") + diff --git a/ci/conan/all/patches/8.0.0-0002-jemalloc.patch b/ci/conan/all/patches/8.0.0-0002-jemalloc.patch new file mode 100644 index 0000000000000..99b92e3308f6f --- /dev/null +++ b/ci/conan/all/patches/8.0.0-0002-jemalloc.patch @@ -0,0 +1,48 @@ +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/src/arrow/CMakeLists.txt b/cpp/src/arrow/CMakeLists.txt +index 690c51a..c518b7d 100644 +--- a/cpp/src/arrow/CMakeLists.txt ++++ b/cpp/src/arrow/CMakeLists.txt +@@ -326,7 +326,7 @@ set(ARROW_TESTING_SRCS + + set(_allocator_dependencies "") # Empty list + if(ARROW_JEMALLOC) +- list(APPEND _allocator_dependencies jemalloc_ep) ++ list(APPEND _allocator_dependencies jemalloc::jemalloc) + endif() + if(ARROW_MIMALLOC) + list(APPEND _allocator_dependencies mimalloc_ep) +diff --git a/cpp/src/arrow/memory_pool.cc b/cpp/src/arrow/memory_pool.cc +index 2fab6f3..1f8f896 100644 +--- a/cpp/src/arrow/memory_pool.cc ++++ b/cpp/src/arrow/memory_pool.cc +@@ -52,7 +52,7 @@ + // Needed to support jemalloc 3 and 4 + #define JEMALLOC_MANGLE + // Explicitly link to our version of jemalloc +-#include "jemalloc_ep/dist/include/jemalloc/jemalloc.h" ++#include "jemalloc/jemalloc.h" + #endif + + #ifdef ARROW_MIMALLOC diff --git a/ci/conan/all/patches/8.0.0-0003-mallctl-takes-size_t.patch b/ci/conan/all/patches/8.0.0-0003-mallctl-takes-size_t.patch new file mode 100644 index 0000000000000..d9f21890416cd --- /dev/null +++ b/ci/conan/all/patches/8.0.0-0003-mallctl-takes-size_t.patch @@ -0,0 +1,35 @@ +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/src/arrow/memory_pool.cc b/cpp/src/arrow/memory_pool.cc +index 1f8f896..37a89da 100644 +--- a/cpp/src/arrow/memory_pool.cc ++++ b/cpp/src/arrow/memory_pool.cc +@@ -767,7 +767,7 @@ MemoryPool* default_memory_pool() { + + Status jemalloc_set_decay_ms(int ms) { + #ifdef ARROW_JEMALLOC +- ssize_t decay_time_ms = static_cast(ms); ++ size_t decay_time_ms = static_cast(ms); + + int err = mallctl("arenas.dirty_decay_ms", nullptr, nullptr, &decay_time_ms, + sizeof(decay_time_ms)); diff --git a/ci/conan/all/patches/8.0.0-0004-use-find-package.patch b/ci/conan/all/patches/8.0.0-0004-use-find-package.patch new file mode 100644 index 0000000000000..e7bc2320c76d9 --- /dev/null +++ b/ci/conan/all/patches/8.0.0-0004-use-find-package.patch @@ -0,0 +1,401 @@ +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/CMakeLists.txt b/cpp/CMakeLists.txt +index aba18c8..bb463d0 100644 +--- a/cpp/CMakeLists.txt ++++ b/cpp/CMakeLists.txt +@@ -721,7 +721,7 @@ if(ARROW_WITH_BZ2) + endif() + + if(ARROW_WITH_LZ4) +- list(APPEND ARROW_STATIC_LINK_LIBS LZ4::lz4) ++ list(APPEND ARROW_STATIC_LINK_LIBS lz4::lz4) + if(Lz4_SOURCE STREQUAL "SYSTEM") + list(APPEND ARROW_STATIC_INSTALL_INTERFACE_LIBS LZ4::lz4) + endif() +@@ -907,8 +907,8 @@ endif() + if(ARROW_JEMALLOC) + add_definitions(-DARROW_JEMALLOC) + add_definitions(-DARROW_JEMALLOC_INCLUDE_DIR=${JEMALLOC_INCLUDE_DIR}) +- list(APPEND ARROW_LINK_LIBS jemalloc::jemalloc) +- list(APPEND ARROW_STATIC_LINK_LIBS jemalloc::jemalloc) ++ list(APPEND ARROW_LINK_LIBS jemalloc) ++ list(APPEND ARROW_STATIC_LINK_LIBS jemalloc) + endif() + + if(ARROW_MIMALLOC) +diff --git a/cpp/cmake_modules/ThirdpartyToolchain.cmake b/cpp/cmake_modules/ThirdpartyToolchain.cmake +index f070323..2e2a03b 100644 +--- a/cpp/cmake_modules/ThirdpartyToolchain.cmake ++++ b/cpp/cmake_modules/ThirdpartyToolchain.cmake +@@ -974,6 +974,7 @@ else() + endif() + + if(ARROW_BOOST_REQUIRED) ++if(0) + resolve_dependency(Boost + HAVE_ALT + TRUE +@@ -982,6 +983,9 @@ if(ARROW_BOOST_REQUIRED) + IS_RUNTIME_DEPENDENCY + # libarrow.so doesn't depend on libboost*. + FALSE) ++else() ++ find_package(Boost REQUIRED CONFIG) ++endif() + + if(TARGET Boost::system) + set(BOOST_SYSTEM_LIBRARY Boost::system) +@@ -1059,6 +1063,7 @@ macro(build_snappy) + endmacro() + + if(ARROW_WITH_SNAPPY) ++if(0) + resolve_dependency(Snappy PC_PACKAGE_NAMES snappy) + if(${Snappy_SOURCE} STREQUAL "SYSTEM" AND NOT snappy_PC_FOUND) + get_target_property(SNAPPY_LIB Snappy::snappy IMPORTED_LOCATION) +@@ -1067,6 +1072,9 @@ if(ARROW_WITH_SNAPPY) + # TODO: Don't use global includes but rather target_include_directories + get_target_property(SNAPPY_INCLUDE_DIRS Snappy::snappy INTERFACE_INCLUDE_DIRECTORIES) + include_directories(SYSTEM ${SNAPPY_INCLUDE_DIRS}) ++else() ++ find_package(Snappy REQUIRED) ++endif() + endif() + + # ---------------------------------------------------------------------- +@@ -1129,7 +1137,7 @@ macro(build_brotli) + endmacro() + + if(ARROW_WITH_BROTLI) +- resolve_dependency(Brotli PC_PACKAGE_NAMES libbrotlidec libbrotlienc) ++ find_package(Brotli REQUIRED) + # TODO: Don't use global includes but rather target_include_directories + get_target_property(BROTLI_INCLUDE_DIR Brotli::brotlicommon + INTERFACE_INCLUDE_DIRECTORIES) +@@ -1169,8 +1177,16 @@ if(PARQUET_REQUIRE_ENCRYPTION + set(BUILD_SHARED_LIBS_KEEP ${BUILD_SHARED_LIBS}) + set(BUILD_SHARED_LIBS ON) + +- find_package(OpenSSL ${ARROW_OPENSSL_REQUIRED_VERSION} REQUIRED) +- set(BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS_KEEP}) ++ find_package(OpenSSL REQUIRED CONFIG) ++ message("OPENSSL_FOUND: ${OPENSSL_FOUND}") ++ message("OPENSSL_INCLUDE_DIR: ${OPENSSL_INCLUDE_DIR}") ++ message("OPENSSL_CRYPTO_LIBRARY: ${OPENSSL_CRYPTO_LIBRARY}") ++ message("OPENSSL_CRYPTO_LIBRARIES: ${OPENSSL_CRYPTO_LIBRARIES}") ++ message("OPENSSL_SSL_LIBRARY: ${OPENSSL_SSL_LIBRARY}") ++ message("OPENSSL_SSL_LIBRARIES: ${OPENSSL_SSL_LIBRARIES}") ++ message("OPENSSL_LIBRARIES: ${OPENSSL_LIBRARIES}") ++ message("OPENSSL_VERSION: ${OPENSSL_VERSION}") ++ set(BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS_KEEP}) + unset(BUILD_SHARED_LIBS_KEEP) + else() + # Find static OpenSSL headers and libs +@@ -1249,10 +1265,14 @@ macro(build_glog) + endmacro() + + if(ARROW_USE_GLOG) ++if(0) + resolve_dependency(GLOG PC_PACKAGE_NAMES libglog) + # TODO: Don't use global includes but rather target_include_directories + get_target_property(GLOG_INCLUDE_DIR glog::glog INTERFACE_INCLUDE_DIRECTORIES) + include_directories(SYSTEM ${GLOG_INCLUDE_DIR}) ++else() ++ find_package(glog REQUIRED) ++endif() + endif() + + # ---------------------------------------------------------------------- +@@ -1321,6 +1341,7 @@ macro(build_gflags) + endmacro() + + if(ARROW_NEED_GFLAGS) ++if(0) + set(ARROW_GFLAGS_REQUIRED_VERSION "2.1.0") + resolve_dependency(gflags + HAVE_ALT +@@ -1339,6 +1360,10 @@ if(ARROW_NEED_GFLAGS) + set(GFLAGS_LIBRARIES gflags_shared) + endif() + endif() ++else() ++ find_package(gflags REQUIRED) ++ set(GFLAGS_LIBRARIES gflags::gflags) ++endif() + endif() + + # ---------------------------------------------------------------------- +@@ -1718,6 +1756,7 @@ if(ARROW_JEMALLOC) + # installations. + # find_package(jemalloc) + ++if(0) + set(ARROW_JEMALLOC_USE_SHARED OFF) + set(JEMALLOC_PREFIX + "${CMAKE_CURRENT_BINARY_DIR}/jemalloc_ep-prefix/src/jemalloc_ep/dist/") +@@ -1778,6 +1817,9 @@ if(ARROW_JEMALLOC) + INTERFACE_INCLUDE_DIRECTORIES + "${CMAKE_CURRENT_BINARY_DIR}/jemalloc_ep-prefix/src") + add_dependencies(jemalloc::jemalloc jemalloc_ep) ++else() ++ find_package(jemalloc REQUIRED) ++endif() + + list(APPEND ARROW_BUNDLED_STATIC_LIBS jemalloc::jemalloc) + endif() +@@ -1786,6 +1828,7 @@ endif() + # mimalloc - Cross-platform high-performance allocator, from Microsoft + + if(ARROW_MIMALLOC) ++if(0) + message(STATUS "Building (vendored) mimalloc from source") + # We only use a vendored mimalloc as we want to control its build options. + +@@ -1834,6 +1877,10 @@ if(ARROW_MIMALLOC) + endif() + add_dependencies(mimalloc::mimalloc mimalloc_ep) + add_dependencies(toolchain mimalloc_ep) ++else() ++ find_package(mimalloc REQUIRED CONFIG) ++ add_dependencies(toolchain mimalloc::mimalloc) ++endif() + + list(APPEND ARROW_BUNDLED_STATIC_LIBS mimalloc::mimalloc) + endif() +@@ -2119,6 +2166,7 @@ macro(build_rapidjson) + endmacro() + + if(ARROW_WITH_RAPIDJSON) ++if(0) + set(ARROW_RAPIDJSON_REQUIRED_VERSION "1.1.0") + resolve_dependency(RapidJSON + HAVE_ALT +@@ -2131,6 +2179,10 @@ if(ARROW_WITH_RAPIDJSON) + if(RapidJSON_INCLUDE_DIR) + set(RAPIDJSON_INCLUDE_DIR "${RapidJSON_INCLUDE_DIR}") + endif() ++else() ++ find_package(RapidJSON REQUIRED) ++ set(RAPIDJSON_INCLUDE_DIR "${RapidJSON_INCLUDE_DIR}") ++endif() + + # TODO: Don't use global includes but rather target_include_directories + include_directories(SYSTEM ${RAPIDJSON_INCLUDE_DIR}) +@@ -2158,8 +2210,14 @@ endmacro() + + if((NOT ARROW_SIMD_LEVEL STREQUAL "NONE") OR (NOT ARROW_RUNTIME_SIMD_LEVEL STREQUAL "NONE" + )) ++if(0) + set(xsimd_SOURCE "BUNDLED") + resolve_dependency(xsimd) ++else() ++ find_package(xsimd) ++ set(XSIMD_INCLUDE_DIR "${xsimd_INCLUDE_DIR}") ++ add_dependencies(toolchain xsimd) ++endif() + # TODO: Don't use global includes but rather target_include_directories + include_directories(SYSTEM ${XSIMD_INCLUDE_DIR}) + endif() +@@ -2202,11 +2260,15 @@ macro(build_zlib) + endmacro() + + if(ARROW_WITH_ZLIB) ++if(0) + resolve_dependency(ZLIB PC_PACKAGE_NAMES zlib) + + # TODO: Don't use global includes but rather target_include_directories + get_target_property(ZLIB_INCLUDE_DIR ZLIB::ZLIB INTERFACE_INCLUDE_DIRECTORIES) + include_directories(SYSTEM ${ZLIB_INCLUDE_DIR}) ++else() ++ find_package(ZLIB REQUIRED) ++endif() + endif() + + macro(build_lz4) +@@ -2260,11 +2322,15 @@ macro(build_lz4) + endmacro() + + if(ARROW_WITH_LZ4) ++if(0) + resolve_dependency(Lz4 PC_PACKAGE_NAMES liblz4) + + # TODO: Don't use global includes but rather target_include_directories + get_target_property(LZ4_INCLUDE_DIR LZ4::lz4 INTERFACE_INCLUDE_DIRECTORIES) + include_directories(SYSTEM ${LZ4_INCLUDE_DIR}) ++else() ++ find_package(lz4 REQUIRED) ++endif() + endif() + + macro(build_zstd) +@@ -2325,6 +2391,7 @@ macro(build_zstd) + endmacro() + + if(ARROW_WITH_ZSTD) ++if(0) + # ARROW-13384: ZSTD_minCLevel was added in v1.4.0, required by ARROW-13091 + resolve_dependency(zstd + PC_PACKAGE_NAMES +@@ -2352,6 +2419,9 @@ if(ARROW_WITH_ZSTD) + get_target_property(ZSTD_INCLUDE_DIR ${ARROW_ZSTD_LIBZSTD} + INTERFACE_INCLUDE_DIRECTORIES) + include_directories(SYSTEM ${ZSTD_INCLUDE_DIR}) ++else() ++ find_package(zstd REQUIRED) ++endif() + endif() + + # ---------------------------------------------------------------------- +@@ -2391,6 +2461,7 @@ macro(build_re2) + endmacro() + + if(ARROW_WITH_RE2) ++if(0) + # Don't specify "PC_PACKAGE_NAMES re2" here because re2.pc may + # include -std=c++11. It's not compatible with C source and C++ + # source not uses C++ 11. +@@ -2411,6 +2482,9 @@ if(ARROW_WITH_RE2) + # TODO: Don't use global includes but rather target_include_directories + get_target_property(RE2_INCLUDE_DIR re2::re2 INTERFACE_INCLUDE_DIRECTORIES) + include_directories(SYSTEM ${RE2_INCLUDE_DIR}) ++else() ++ find_package(re2 REQUIRED) ++endif() + endif() + + macro(build_bzip2) +@@ -2462,6 +2536,7 @@ macro(build_bzip2) + endmacro() + + if(ARROW_WITH_BZ2) ++if(0) + resolve_dependency(BZip2) + if(${BZip2_SOURCE} STREQUAL "SYSTEM") + string(APPEND ARROW_PC_LIBS_PRIVATE " ${BZIP2_LIBRARIES}") +@@ -2474,6 +2549,9 @@ if(ARROW_WITH_BZ2) + INTERFACE_INCLUDE_DIRECTORIES "${BZIP2_INCLUDE_DIR}") + endif() + include_directories(SYSTEM "${BZIP2_INCLUDE_DIR}") ++else() ++ find_package(BZip2 REQUIRED) ++endif() + endif() + + macro(build_utf8proc) +@@ -2517,6 +2595,7 @@ macro(build_utf8proc) + endmacro() + + if(ARROW_WITH_UTF8PROC) ++if(0) + resolve_dependency(utf8proc + REQUIRED_VERSION + "2.2.0" +@@ -2538,6 +2617,10 @@ if(ARROW_WITH_UTF8PROC) + get_target_property(UTF8PROC_INCLUDE_DIR utf8proc::utf8proc + INTERFACE_INCLUDE_DIRECTORIES) + include_directories(SYSTEM ${UTF8PROC_INCLUDE_DIR}) ++else() ++ find_package(utf8proc REQUIRED CONFIG) ++ add_definitions(-DARROW_WITH_UTF8PROC) ++endif() + endif() + + macro(build_cares) +@@ -3702,6 +3785,7 @@ macro(build_grpc) + endmacro() + + if(ARROW_WITH_GRPC) ++if(0) + set(ARROW_GRPC_REQUIRED_VERSION "1.17.0") + if(NOT Protobuf_SOURCE STREQUAL gRPC_SOURCE) + # ARROW-15495: Protobuf/gRPC must come from the same source +@@ -3735,6 +3819,9 @@ if(ARROW_WITH_GRPC) + message(FATAL_ERROR "Cannot find grpc++ headers in ${GRPC_INCLUDE_DIR}") + endif() + endif() ++else() ++ find_package(gRPC REQUIRED CONFIG) ++endif() + endif() + + # ---------------------------------------------------------------------- +@@ -3937,10 +4024,14 @@ macro(build_google_cloud_cpp_storage) + endmacro() + + if(ARROW_WITH_GOOGLE_CLOUD_CPP) ++if(0) + resolve_dependency(google_cloud_cpp_storage) + get_target_property(google_cloud_cpp_storage_INCLUDE_DIR google-cloud-cpp::storage + INTERFACE_INCLUDE_DIRECTORIES) + include_directories(SYSTEM ${google_cloud_cpp_storage_INCLUDE_DIR}) ++else() ++ find_package(google-cloud-cpp REQUIRED) ++endif() + get_target_property(absl_base_INCLUDE_DIR absl::base INTERFACE_INCLUDE_DIRECTORIES) + include_directories(SYSTEM ${absl_base_INCLUDE_DIR}) + message(STATUS "Found google-cloud-cpp::storage headers: ${google_cloud_cpp_storage_INCLUDE_DIR}" +@@ -4261,6 +4352,7 @@ macro(build_opentelemetry) + endmacro() + + if(ARROW_WITH_OPENTELEMETRY) ++if(0) + # cURL is required whether we build from source or use an existing installation + # (OTel's cmake files do not call find_curl for you) + find_curl() +@@ -4269,7 +4361,10 @@ if(ARROW_WITH_OPENTELEMETRY) + get_target_property(OPENTELEMETRY_INCLUDE_DIR opentelemetry-cpp::api + INTERFACE_INCLUDE_DIRECTORIES) + include_directories(SYSTEM ${OPENTELEMETRY_INCLUDE_DIR}) +- message(STATUS "Found OpenTelemetry headers: ${OPENTELEMETRY_INCLUDE_DIR}") ++else() ++ find_package(opentelemetry-cpp REQUIRED) ++endif() ++ message(STATUS "Found OpenTelemetry headers: ${OPENTELEMETRY_INCLUDE_DIR}") + endif() + + # ---------------------------------------------------------------------- +diff --git a/cpp/src/arrow/CMakeLists.txt b/cpp/src/arrow/CMakeLists.txt +index c518b7d..40b4853 100644 +--- a/cpp/src/arrow/CMakeLists.txt ++++ b/cpp/src/arrow/CMakeLists.txt +@@ -584,6 +584,10 @@ foreach(LIB_TARGET ${ARROW_LIBRARIES}) + target_compile_definitions(${LIB_TARGET} PRIVATE ARROW_EXPORTING) + endforeach() + ++if(ARROW_BUILD_SHARED AND WIN32) ++ target_compile_definitions(arrow_shared PRIVATE ARROW_EXPORTING) ++endif() ++ + if(ARROW_WITH_BACKTRACE) + find_package(Backtrace) + +@@ -594,7 +598,7 @@ if(ARROW_WITH_BACKTRACE) + endforeach() + endif() + +-if(ARROW_BUILD_BUNDLED_DEPENDENCIES) ++if(0) + arrow_car(_FIRST_LIB ${ARROW_BUNDLED_STATIC_LIBS}) + arrow_cdr(_OTHER_LIBS ${ARROW_BUNDLED_STATIC_LIBS}) + create_merged_static_lib(arrow_bundled_dependencies diff --git a/ci/conan/all/patches/8.0.0-0005-install-utils.patch b/ci/conan/all/patches/8.0.0-0005-install-utils.patch new file mode 100644 index 0000000000000..98075913ed109 --- /dev/null +++ b/ci/conan/all/patches/8.0.0-0005-install-utils.patch @@ -0,0 +1,65 @@ +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/CMakeLists.txt b/cpp/CMakeLists.txt +index aba18c8..bb463d0 100644 +--- a/cpp/CMakeLists.txt ++++ b/cpp/CMakeLists.txt +@@ -721,7 +721,7 @@ if(ARROW_WITH_BZ2) + endif() + + if(ARROW_WITH_LZ4) +- list(APPEND ARROW_STATIC_LINK_LIBS LZ4::lz4) ++ list(APPEND ARROW_STATIC_LINK_LIBS lz4::lz4) + if(Lz4_SOURCE STREQUAL "SYSTEM") + list(APPEND ARROW_STATIC_INSTALL_INTERFACE_LIBS LZ4::lz4) + endif() +@@ -907,8 +907,8 @@ endif() + if(ARROW_JEMALLOC) + add_definitions(-DARROW_JEMALLOC) + add_definitions(-DARROW_JEMALLOC_INCLUDE_DIR=${JEMALLOC_INCLUDE_DIR}) +- list(APPEND ARROW_LINK_LIBS jemalloc::jemalloc) +- list(APPEND ARROW_STATIC_LINK_LIBS jemalloc::jemalloc) ++ list(APPEND ARROW_LINK_LIBS jemalloc) ++ list(APPEND ARROW_STATIC_LINK_LIBS jemalloc) + endif() + + if(ARROW_MIMALLOC) +diff --git a/cpp/src/arrow/ipc/CMakeLists.txt b/cpp/src/arrow/ipc/CMakeLists.txt +index 495018e..3dcb35d 100644 +--- a/cpp/src/arrow/ipc/CMakeLists.txt ++++ b/cpp/src/arrow/ipc/CMakeLists.txt +@@ -61,9 +61,13 @@ endif() + if(ARROW_BUILD_UTILITIES OR ARROW_BUILD_INTEGRATION) + add_executable(arrow-file-to-stream file_to_stream.cc) + target_link_libraries(arrow-file-to-stream ${ARROW_UTIL_LIB}) ++ install(TARGETS arrow-file-to-stream ${INSTALL_IS_OPTIONAL} ++ DESTINATION ${CMAKE_INSTALL_BINDIR}) + add_executable(arrow-stream-to-file stream_to_file.cc) + target_link_libraries(arrow-stream-to-file ${ARROW_UTIL_LIB}) +- ++ install(TARGETS arrow-stream-to-file ${INSTALL_IS_OPTIONAL} ++ DESTINATION ${CMAKE_INSTALL_BINDIR}) ++ + if(ARROW_BUILD_INTEGRATION) + add_dependencies(arrow-integration arrow-file-to-stream) + add_dependencies(arrow-integration arrow-stream-to-file) diff --git a/ci/conan/all/test_package/CMakeLists.txt b/ci/conan/all/test_package/CMakeLists.txt index 508cb44890427..0df89423c14ef 100644 --- a/ci/conan/all/test_package/CMakeLists.txt +++ b/ci/conan/all/test_package/CMakeLists.txt @@ -20,15 +20,15 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -cmake_minimum_required(VERSION 3.1) +cmake_minimum_required(VERSION 3.8) project(test_package) include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) conan_basic_setup() -find_package(Arrow) +find_package(Arrow REQUIRED) add_executable(${PROJECT_NAME} test_package.cpp) target_link_libraries(${PROJECT_NAME} arrow::arrow) -set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 11) +target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_11) target_compile_definitions(${PROJECT_NAME} PRIVATE WITH_JEMALLOC) diff --git a/ci/conan/config.yml b/ci/conan/config.yml index 75c894c63f602..b38fe36930ca3 100644 --- a/ci/conan/config.yml +++ b/ci/conan/config.yml @@ -21,6 +21,10 @@ # SOFTWARE. versions: + "8.0.1": + folder: all + "8.0.0": + folder: all "7.0.0": folder: all "2.0.0": diff --git a/ci/scripts/conan_build.sh b/ci/scripts/conan_build.sh index f83a85d34f1ca..3b1d9b6c9779c 100755 --- a/ci/scripts/conan_build.sh +++ b/ci/scripts/conan_build.sh @@ -37,6 +37,9 @@ 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}) +fi if [ -n "${ARROW_CONAN_WITH_GLOG:-}" ]; then conan_args+=(--options arrow:with_glog=${ARROW_CONAN_WITH_GLOG}) fi diff --git a/cpp/cmake_modules/ThirdpartyToolchain.cmake b/cpp/cmake_modules/ThirdpartyToolchain.cmake index 9fd5a5df8a2a5..86ad05835311b 100644 --- a/cpp/cmake_modules/ThirdpartyToolchain.cmake +++ b/cpp/cmake_modules/ThirdpartyToolchain.cmake @@ -1703,11 +1703,14 @@ if(ARROW_WITH_PROTOBUF) get_target_property(PROTOBUF_PROTOC_EXECUTABLE ${ARROW_PROTOBUF_PROTOC} IMPORTED_LOCATION) message(STATUS "Found protoc: ${PROTOBUF_PROTOC_EXECUTABLE}") - # Protobuf_PROTOC_LIBRARY is set by all versions of FindProtobuf.cmake - message(STATUS "Found libprotoc: ${Protobuf_PROTOC_LIBRARY}") - get_target_property(PROTOBUF_LIBRARY ${ARROW_PROTOBUF_LIBPROTOBUF} IMPORTED_LOCATION) - message(STATUS "Found libprotobuf: ${PROTOBUF_LIBRARY}") - message(STATUS "Found protobuf headers: ${PROTOBUF_INCLUDE_DIR}") + get_target_property(PROTOBUF_TYPE ${ARROW_PROTOBUF_LIBPROTOBUF} TYPE) + if(NOT STREQUAL "INTERFACE_LIBRARY") + # Protobuf_PROTOC_LIBRARY is set by all versions of FindProtobuf.cmake + message(STATUS "Found libprotoc: ${Protobuf_PROTOC_LIBRARY}") + get_target_property(PROTOBUF_LIBRARY ${ARROW_PROTOBUF_LIBPROTOBUF} IMPORTED_LOCATION) + message(STATUS "Found libprotobuf: ${PROTOBUF_LIBRARY}") + message(STATUS "Found protobuf headers: ${PROTOBUF_INCLUDE_DIR}") + endif() endif() # ---------------------------------------------------------------------- @@ -3942,7 +3945,9 @@ if(ARROW_WITH_GRPC) # grpc++ headers may reside in ${GRPC_INCLUDE_DIR}/grpc++ or ${GRPC_INCLUDE_DIR}/grpcpp # depending on the gRPC version. get_target_property(GRPC_INCLUDE_DIR gRPC::grpc++ INTERFACE_INCLUDE_DIRECTORIES) - if(EXISTS "${GRPC_INCLUDE_DIR}/grpcpp/impl/codegen/config_protobuf.h") + if(GRPC_INCLUDE_DIR MATCHES "^\\$<" + OR # generator expression + EXISTS "${GRPC_INCLUDE_DIR}/grpcpp/impl/codegen/config_protobuf.h") set(GRPCPP_PP_INCLUDE TRUE) elseif(EXISTS "${GRPC_INCLUDE_DIR}/grpc++/impl/codegen/config_protobuf.h") set(GRPCPP_PP_INCLUDE FALSE) diff --git a/dev/tasks/tasks.yml b/dev/tasks/tasks.yml index 6b9b9f36d2010..4b61cf0fcf8d9 100644 --- a/dev/tasks/tasks.yml +++ b/dev/tasks/tasks.yml @@ -209,6 +209,7 @@ tasks: -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_LZ4=True