This is an automated email from the ASF dual-hosted git repository.
gangwu pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow.git
The following commit(s) were added to refs/heads/main by this push:
new 18c74b0733 GH-35804: [CI][Packaging][Conan] Synchronize upstream conan
(#39729)
18c74b0733 is described below
commit 18c74b0733c9ff473a211259cf10705b2c9be891
Author: Gang Wu <[email protected]>
AuthorDate: Mon Apr 15 10:07:32 2024 +0800
GH-35804: [CI][Packaging][Conan] Synchronize upstream conan (#39729)
### What changes are included in this PR?
Merged upstream conan using `ci/conan/merge_upstream.sh
../conan-center-index/`
### Are these changes tested?
Will be tested on CI.
### Are there any user-facing changes?
No
* Closes: #35804
Authored-by: Gang Wu <[email protected]>
Signed-off-by: Gang Wu <[email protected]>
---
.env | 9 +-
.../conan_cmake_project_include.cmake} | 28 +-
ci/conan/all/conandata.yml | 50 +-
ci/conan/all/conanfile.py | 596 ++++++++-------------
ci/conan/config.yml | 20 +-
ci/scripts/conan_build.sh | 25 +-
ci/scripts/install_sccache.sh | 2 +-
cpp/cmake_modules/ThirdpartyToolchain.cmake | 6 +
docker-compose.yml | 7 +-
9 files changed, 313 insertions(+), 430 deletions(-)
diff --git a/.env b/.env
index 298c100c09..997801ef86 100644
--- a/.env
+++ b/.env
@@ -100,7 +100,8 @@ VCPKG="a42af01b72c28a8e1d7b48107b33e4f286a55ef6" #
2023.11.20 Release
# use pulled built images in dev/tasks/python-wheels/github.windows.yml.
PYTHON_WHEEL_WINDOWS_IMAGE_REVISION=2024-03-19
-# Use conanio/${CONAN} for "docker-compose run --rm conan". See
-# https://github.com/conan-io/conan-docker-tools#readme for available
-# images.
-CONAN=gcc10
+# Use conanio/${CONAN_BASE}:{CONAN_VERSION} for "docker-compose run --rm
conan".
+# See https://github.com/conan-io/conan-docker-tools#readme and
+# https://hub.docker.com/u/conanio for available images.
+CONAN_BASE=gcc10
+CONAN_VERSION=1.62.0
diff --git a/ci/conan/config.yml
b/ci/conan/all/conan_cmake_project_include.cmake
similarity index 68%
copy from ci/conan/config.yml
copy to ci/conan/all/conan_cmake_project_include.cmake
index be333447f3..a6dee0c434 100644
--- a/ci/conan/config.yml
+++ b/ci/conan/all/conan_cmake_project_include.cmake
@@ -20,18 +20,16 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
-versions:
- "10.0.1":
- folder: all
- "10.0.0":
- folder: all
- "8.0.1":
- folder: all
- "8.0.0":
- folder: all
- "7.0.0":
- folder: all
- "2.0.0":
- folder: all
- "1.0.0":
- folder: all
+if(ARROW_S3)
+ find_package(AWSSDK REQUIRED)
+ # Fix issue where scripts expect a variable called "AWSSDK_LINK_LIBRARIES"
+ # which is not defined by the generated AWSSDKConfig.cmake
+ if(NOT DEFINED AWSSDK_LINK_LIBRARIES)
+ set(AWSSDK_LINK_LIBRARIES "${AWSSDK_LIBRARIES}")
+ endif()
+
+ # Causes logic used for generated .pc file to not run
+ # avoiding instropection of target `aws-cpp-sdk::aws-cpp-sdk`
+ # This is fine because the generated .pc file is not of use
+ set(AWSSDK_SOURCE "conan")
+endif()
diff --git a/ci/conan/all/conandata.yml b/ci/conan/all/conandata.yml
index 7402272a4b..fb75f3995c 100644
--- a/ci/conan/all/conandata.yml
+++ b/ci/conan/all/conandata.yml
@@ -21,6 +21,30 @@
# SOFTWARE.
sources:
+ "15.0.0":
+ url:
"https://www.apache.org/dyn/closer.lua/arrow/arrow-15.0.0/apache-arrow-15.0.0.tar.gz?action=download"
+ sha256: "01dd3f70e85d9b5b933ec92c0db8a4ef504a5105f78d2d8622e84279fb45c25d"
+ "14.0.2":
+ url:
"https://www.apache.org/dyn/closer.lua/arrow/arrow-14.0.2/apache-arrow-14.0.2.tar.gz?action=download"
+ sha256: "1304dedb41896008b89fe0738c71a95d9b81752efc77fa70f264cb1da15d9bc2"
+ "14.0.1":
+ url:
"https://www.apache.org/dyn/closer.lua/arrow/arrow-14.0.1/apache-arrow-14.0.1.tar.gz?action=download"
+ sha256: "5c70eafb1011f9d124bafb328afe54f62cc5b9280b7080e1e3d668f78c0e407e"
+ "14.0.0":
+ url:
"https://www.apache.org/dyn/closer.lua/arrow/arrow-14.0.0/apache-arrow-14.0.0.tar.gz?action=download"
+ sha256: "4eb0da50ec071baf15fc163cb48058931e006f1c862c8def0e180fd07d531021"
+ "13.0.0":
+ url:
"https://www.apache.org/dyn/closer.lua/arrow/arrow-13.0.0/apache-arrow-13.0.0.tar.gz?action=download"
+ sha256: "35dfda191262a756be934eef8afee8d09762cad25021daa626eb249e251ac9e6"
+ "12.0.1":
+ url:
"https://www.apache.org/dyn/closer.lua/arrow/arrow-12.0.1/apache-arrow-12.0.1.tar.gz?action=download"
+ sha256: "3481c411393aa15c75e88d93cf8315faf7f43e180fe0790128d3840d417de858"
+ "12.0.0":
+ url:
"https://www.apache.org/dyn/closer.lua/arrow/arrow-12.0.0/apache-arrow-12.0.0.tar.gz?action=download"
+ sha256: "ddd8347882775e53af7d0965a1902b7d8fcd0a030fd14f783d4f85e821352d52"
+ "11.0.0":
+ url:
"https://www.apache.org/dyn/closer.lua/arrow/arrow-11.0.0/apache-arrow-11.0.0.tar.gz?action=download"
+ sha256: "2dd8f0ea0848a58785628ee3a57675548d509e17213a2f5d72b0d900b43f5430"
"10.0.1":
url:
"https://www.apache.org/dyn/closer.lua/arrow/arrow-10.0.1/apache-arrow-10.0.1.tar.gz?action=download"
sha256: "c814e0670112a22c1a6ec03ab420a52ae236a9a42e9e438c3cbd37f37e658fb3"
@@ -36,12 +60,6 @@ sources:
"7.0.0":
url:
"https://www.apache.org/dyn/closer.lua/arrow/arrow-7.0.0/apache-arrow-7.0.0.tar.gz?action=download"
sha256: "e8f49b149a15ecef4e40fcfab1b87c113c6b1ee186005c169e5cdf95d31a99de"
- "2.0.0":
- url:
"https://www.apache.org/dyn/closer.lua/arrow/arrow-2.0.0/apache-arrow-2.0.0.tar.gz?action=download"
- sha256: "be0342cc847bb340d86aeaef43596a0b6c1dbf1ede9c789a503d939e01c71fbe"
- "1.0.0":
- url:
"https://www.apache.org/dyn/closer.lua/arrow/arrow-1.0.0/apache-arrow-1.0.0.tar.gz?action=download"
- sha256: "86ddb9feb48203a5aaf9cc4f2827525e20a2ca4d7239e492af17e74532ccf243"
patches:
"8.0.1":
- patch_file: "patches/8.0.0-0005-install-utils.patch"
@@ -64,23 +82,3 @@ patches:
- patch_file: "patches/7.0.0-0007-fix-cmake.patch"
patch_description: "use cci package"
patch_type: "conan"
- "2.0.0":
- - patch_file: "patches/2.0.0-0003-fix-shared-msvc.patch"
- patch_description: "make shared enabled in msvc"
- patch_type: "official"
- - patch_file: "patches/2.0.0-0005-gandiva-engine.patch"
- patch_description: "fix grandiva compilation error"
- patch_type: "official"
- - patch_file: "patches/2.0.0-0008-fix-cmake.patch"
- patch_description: "use cci package"
- patch_type: "conan"
- "1.0.0":
- - patch_file: "patches/1.0.0-0003-fix-shared-msvc.patch"
- patch_description: "make shared enabled in msvc"
- patch_type: "official"
- - patch_file: "patches/1.0.0-0005-fix-make12-namespace.patch"
- patch_description: "fix ambiguous `make12` function between std and date"
- patch_type: "official"
- - patch_file: "patches/1.0.0-0006-fix-cmake.patch"
- patch_description: "use cci package"
- patch_type: "conan"
diff --git a/ci/conan/all/conanfile.py b/ci/conan/all/conanfile.py
index 7e87f82e7e..178cd03da1 100644
--- a/ci/conan/all/conanfile.py
+++ b/ci/conan/all/conanfile.py
@@ -21,12 +21,12 @@
# SOFTWARE.
from conan import ConanFile
-from conan.errors import ConanInvalidConfiguration
-from conan.tools.microsoft import is_msvc_static_runtime, is_msvc, check_min_vs
-from conan.tools.files import export_conandata_patches,
apply_conandata_patches, get, copy, rmdir
+from conan.errors import ConanInvalidConfiguration, ConanException
from conan.tools.build import check_min_cppstd, cross_building
-from conan.tools.scm import Version
from conan.tools.cmake import CMake, CMakeDeps, CMakeToolchain, cmake_layout
+from conan.tools.files import apply_conandata_patches, copy,
export_conandata_patches, get, rmdir
+from conan.tools.microsoft import is_msvc, is_msvc_static_runtime
+from conan.tools.scm import Version
import os
import glob
@@ -39,7 +39,8 @@ class ArrowConan(ConanFile):
license = ("Apache-2.0",)
url = "https://github.com/conan-io/conan-center-index"
homepage = "https://arrow.apache.org/"
- topics = ("memory", "gandiva", "parquet", "skyhook", "plasma", "hdfs",
"csv", "cuda", "gcs", "json", "hive", "s3", "grpc")
+ topics = ("memory", "gandiva", "parquet", "skyhook", "acero", "hdfs",
"csv", "cuda", "gcs", "json", "hive", "s3", "grpc")
+ package_type = "library"
settings = "os", "arch", "compiler", "build_type"
options = {
"shared": [True, False],
@@ -48,15 +49,15 @@ class ArrowConan(ConanFile):
"parquet": ["auto", True, False],
"substrait": [True, False],
"skyhook": [True, False],
- "plasma": [True, False],
+ "acero": [True, False],
"cli": [True, False],
"compute": ["auto", True, False],
- "acero": ["auto", True, False],
"dataset_modules": ["auto", True, False],
"deprecated": [True, False],
"encryption": [True, False],
"filesystem_layer": [True, False],
"hdfs_bridgs": [True, False],
+ "plasma": [True, False, "deprecated"],
"simd_level": [None, "default", "sse4_2", "avx2", "avx512", "neon", ],
"runtime_simd_level": [None, "sse4_2", "avx2", "avx512", "max"],
"with_backtrace": [True, False],
@@ -70,8 +71,9 @@ class ArrowConan(ConanFile):
"with_glog": ["auto", True, False],
"with_grpc": ["auto", True, False],
"with_jemalloc": ["auto", True, False],
- "with_mimalloc": ["auto", True, False],
+ "with_mimalloc": [True, False],
"with_json": [True, False],
+ "with_thrift": ["auto", True, False],
"with_llvm": ["auto", True, False],
"with_openssl": ["auto", True, False],
"with_opentelemetry": [True, False],
@@ -91,43 +93,44 @@ class ArrowConan(ConanFile):
"shared": False,
"fPIC": True,
"gandiva": False,
- "parquet": "auto",
+ "parquet": False,
"skyhook": False,
"substrait": False,
- "plasma": False,
+ "acero": False,
"cli": False,
- "compute": "auto",
- "acero": "auto",
- "dataset_modules": "auto",
+ "compute": False,
+ "dataset_modules": False,
"deprecated": True,
"encryption": False,
"filesystem_layer": False,
"hdfs_bridgs": False,
+ "plasma": "deprecated",
"simd_level": "default",
"runtime_simd_level": "max",
"with_backtrace": False,
- "with_boost": "auto",
+ "with_boost": False,
"with_brotli": False,
"with_bz2": False,
"with_csv": False,
"with_cuda": False,
- "with_flight_rpc": "auto",
+ "with_flight_rpc": False,
"with_flight_sql": False,
"with_gcs": False,
- "with_gflags": "auto",
- "with_jemalloc": "auto",
+ "with_gflags": False,
+ "with_jemalloc": False,
"with_mimalloc": False,
- "with_glog": "auto",
- "with_grpc": "auto",
+ "with_glog": False,
+ "with_grpc": False,
"with_json": False,
- "with_llvm": "auto",
- "with_openssl": "auto",
+ "with_thrift": False,
+ "with_llvm": False,
+ "with_openssl": False,
"with_opentelemetry": False,
"with_orc": False,
- "with_protobuf": "auto",
- "with_re2": "auto",
+ "with_protobuf": False,
+ "with_re2": False,
"with_s3": False,
- "with_utf8proc": "auto",
+ "with_utf8proc": False,
"with_lz4": False,
"with_snappy": False,
"with_zlib": False,
@@ -136,283 +139,147 @@ class ArrowConan(ConanFile):
short_paths = True
@property
- def _minimum_cpp_standard(self):
+ 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 "11" if Version(self.version) < "10.0.0" else "17"
@property
def _compilers_minimum_version(self):
return {
- "gcc": "8",
- "clang": "7",
- "apple-clang": "10",
- }
+ "11": {
+ "clang": "3.9",
+ },
+ "17": {
+ "gcc": "8",
+ "clang": "7",
+ "apple-clang": "10",
+ "Visual Studio": "15",
+ "msvc": "191",
+ },
+ }.get(self._min_cppstd, {})
def export_sources(self):
export_conandata_patches(self)
+ copy(self, "conan_cmake_project_include.cmake", self.recipe_folder,
os.path.join(self.export_sources_folder, "src"))
def config_options(self):
if self.settings.os == "Windows":
del self.options.fPIC
- if Version(self.version) < "2.0.0":
- del self.options.simd_level
- del self.options.runtime_simd_level
- elif Version(self.version) < "6.0.0":
- self.options.simd_level = "sse4_2"
- if Version(self.version) < "6.0.0":
- del self.options.with_gcs
- if Version(self.version) < "7.0.0":
- del self.options.skyhook
- del self.options.with_flight_sql
- del self.options.with_opentelemetry
if Version(self.version) < "8.0.0":
del self.options.substrait
+ if is_msvc(self):
+ self.options.with_boost = True
def configure(self):
if self.options.shared:
self.options.rm_safe("fPIC")
- def validate(self):
- if self.info.settings.compiler.cppstd:
- check_min_cppstd(self, self._minimum_cpp_standard)
-
- if self._minimum_cpp_standard == 11:
- if self.info.settings.compiler == "clang" and
self.info.settings.compiler.version <= Version("3.9"):
- raise ConanInvalidConfiguration("This recipe does not support
this compiler version")
- else:
- check_min_vs(self, 191)
- if not is_msvc(self):
- minimum_version =
self._compilers_minimum_version.get(str(self.info.settings.compiler), False)
- if minimum_version and
Version(self.info.settings.compiler.version) < minimum_version:
- raise ConanInvalidConfiguration(
- f"{self.ref} requires C++{self._minimum_cpp_standard},
which your compiler does not support."
- )
-
- if self.options.shared:
- 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.acero == False and not self._acero(True):
- raise ConanInvalidConfiguration("acero 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):
- raise ConanInvalidConfiguration("with_re2 option is required (or
choose auto)")
- if self.options.with_protobuf == False and self._with_protobuf(True):
- 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):
- raise ConanInvalidConfiguration("with_boost options is required
(or choose auto)")
- if self.options.with_openssl == False and self._with_openssl(True):
- raise ConanInvalidConfiguration("with_openssl options is required
(or choose auto)")
- if self.options.with_llvm == False and self._with_llvm(True):
- raise ConanInvalidConfiguration("with_llvm options is required (or
choose auto)")
- if self.options.with_cuda:
- raise ConanInvalidConfiguration("CCI has no cuda recipe (yet)")
- if self.options.with_orc:
- raise ConanInvalidConfiguration("CCI has no orc recipe (yet)")
- if self.options.with_s3 and not self.options["aws-sdk-cpp"].config:
- raise ConanInvalidConfiguration("arrow:with_s3 requires
aws-sdk-cpp:config is True.")
-
- if self.options.shared and self._with_jemalloc():
- if self.options["jemalloc"].enable_cxx:
- raise ConanInvalidConfiguration("jemmalloc.enable_cxx of a
static jemalloc must be disabled")
-
- if Version(self.version) < "6.0.0" and
self.options.get_safe("simd_level") == "default":
- raise ConanInvalidConfiguration(f"In {self.ref}, simd_level
options is not supported `default` value.")
-
def layout(self):
cmake_layout(self, src_folder="src")
- def _compute(self, required=False):
- if required or self.options.compute == "auto":
- return bool(self._parquet()) or bool(self._acero())
- else:
- return bool(self.options.compute)
-
- def _acero(self, required=False):
- if required or self.options.acero == "auto":
- return bool(self._dataset_modules())
- else:
- return bool(self.options.acero)
-
- 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 _plasma(self, required=False):
- if Version(self.version) >= "12.0.0":
- return False
- else:
- return required or self.options.plasma
-
- 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))
- else:
- return bool(self.options.with_jemalloc)
-
- def _with_re2(self, required=False):
- if required or self.options.with_re2 == "auto":
- if self.options.gandiva or self.options.parquet:
- return True
- if Version(self) >= "7.0.0" and (self._compute() or
self._dataset_modules()):
- return True
- return False
- else:
- return bool(self.options.with_re2)
-
- def _with_protobuf(self, required=False):
- if required or self.options.with_protobuf == "auto":
- 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._plasma() or self._with_glog() or
self._with_grpc())
- else:
- return bool(self.options.with_gflags)
-
- def _with_glog(self, required=False):
- if required or self.options.with_glog == "auto":
- return False
- else:
- return bool(self.options.with_glog)
-
- def _with_grpc(self, required=False):
- if required or self.options.with_grpc == "auto":
- return self._with_flight_rpc()
- else:
- return bool(self.options.with_grpc)
-
- def _with_boost(self, required=False):
- if required or self.options.with_boost == "auto":
- if self.options.gandiva:
- return True
- version = Version(self.version)
- if version.major == "1":
- if self._parquet() and self.settings.compiler == "gcc" and
self.settings.compiler.version < Version("4.9"):
- return True
- elif version.major >= "2":
- if is_msvc(self):
- return True
- return False
- else:
- return bool(self.options.with_boost)
-
- def _with_thrift(self, required=False):
- # No self.options.with_thrift exists
- return bool(required or self._parquet())
-
- def _with_utf8proc(self, required=False):
- if required or self.options.with_utf8proc == "auto":
- return bool(self._compute() or self.options.gandiva)
- else:
- return bool(self.options.with_utf8proc)
-
- 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_llvm)
-
- def _with_openssl(self, required=False):
- if required or self.options.with_openssl == "auto":
- return bool(self.options.encryption or self._with_flight_rpc() or
self.options.with_s3)
- else:
- return bool(self.options.with_openssl)
-
- def _with_rapidjson(self):
- if self.options.with_json:
- return True
- if Version(self.version) >= "7.0.0" and self.options.encryption:
- return True
- return False
+ def _requires_rapidjson(self):
+ return self.options.with_json or self.options.encryption
def requirements(self):
- if self._with_thrift():
- self.requires("zlib/1.2.13")
+ if self.options.with_thrift:
self.requires("thrift/0.17.0")
- if self._with_protobuf():
- self.requires("protobuf/3.21.4")
- if self._with_jemalloc():
+ if self.options.with_protobuf:
+ self.requires("protobuf/3.21.9")
+ if self.options.with_jemalloc:
self.requires("jemalloc/5.3.0")
if self.options.with_mimalloc:
self.requires("mimalloc/1.7.6")
- if self._with_boost():
- self.requires("boost/1.80.0")
- if self._with_gflags():
+ if self.options.with_boost:
+ self.requires("boost/1.84.0")
+ if self.options.with_gflags:
self.requires("gflags/2.2.2")
- if self._with_glog():
+ if self.options.with_glog:
self.requires("glog/0.6.0")
if self.options.get_safe("with_gcs"):
self.requires("google-cloud-cpp/1.40.1")
- if self._with_grpc():
+ if self.options.with_grpc:
self.requires("grpc/1.50.0")
- if self._with_rapidjson():
+ if self._requires_rapidjson():
self.requires("rapidjson/1.1.0")
- if self._with_llvm():
+ if self.options.with_llvm:
self.requires("llvm-core/13.0.0")
- if self._with_openssl():
+ if self.options.with_openssl:
# aws-sdk-cpp requires openssl/1.1.1. it uses deprecated functions
in openssl/3.0.0
if self.options.with_s3:
- self.requires("openssl/1.1.1s")
+ self.requires("openssl/1.1.1w")
else:
- self.requires("openssl/1.1.1s")
+ self.requires("openssl/[>=1.1 <4]")
if self.options.get_safe("with_opentelemetry"):
self.requires("opentelemetry-cpp/1.7.0")
if self.options.with_s3:
self.requires("aws-sdk-cpp/1.9.234")
if self.options.with_brotli:
- self.requires("brotli/1.0.9")
+ self.requires("brotli/1.1.0")
if self.options.with_bz2:
self.requires("bzip2/1.0.8")
if self.options.with_lz4:
self.requires("lz4/1.9.4")
if self.options.with_snappy:
self.requires("snappy/1.1.9")
- if Version(self.version) >= "6.0.0" and \
- self.options.get_safe("simd_level") != None or \
+ if self.options.get_safe("simd_level") != None or \
self.options.get_safe("runtime_simd_level") != None:
self.requires("xsimd/9.0.1")
if self.options.with_zlib:
- self.requires("zlib/1.2.13")
+ self.requires("zlib/[>=1.2.11 <2]")
if self.options.with_zstd:
- self.requires("zstd/1.5.2")
- if self._with_re2():
- self.requires("re2/20220601")
- if self._with_utf8proc():
+ self.requires("zstd/1.5.5")
+ if self.options.with_re2:
+ self.requires("re2/20230301")
+ if self.options.with_utf8proc:
self.requires("utf8proc/2.8.0")
if self.options.with_backtrace:
self.requires("libbacktrace/cci.20210118")
+ def validate(self):
+ # Do not allow options with 'auto' value
+ # TODO: Remove "auto" from the possible values for these options
+ auto_options = [option for option, value in self.options.items() if
value == "auto"]
+ if auto_options:
+ raise ConanException("Options with value 'auto' are deprecated.
Please set them true/false or use its default value."
+ f" Please change the following options:
{auto_options}")
+
+ # From
https://github.com/conan-io/conan-center-index/pull/23163#issuecomment-2039808851
+ if self.options.gandiva:
+ if not self.options.with_re2:
+ raise ConanException("'with_re2' option should be True
when'gandiva=True'")
+ if not self.options.with_boost:
+ raise ConanException("'with_boost' option should be True
when'gandiva=True'")
+ if not self.options.with_utf8proc:
+ raise ConanException("'with_utf8proc' option should be True
when'gandiva=True'")
+
+ if self.settings.compiler.get_safe("cppstd"):
+ check_min_cppstd(self, self._min_cppstd)
+
+ minimum_version =
self._compilers_minimum_version.get(str(self.settings.compiler), False)
+ if minimum_version and Version(self.settings.compiler.version) <
minimum_version:
+ raise ConanInvalidConfiguration(
+ f"{self.ref} requires C++{self._min_cppstd}, which your
compiler does not support."
+ )
+
+ if self.options.get_safe("skyhook", False):
+ raise ConanInvalidConfiguration("CCI has no librados recipe (yet)")
+ if self.options.with_cuda:
+ raise ConanInvalidConfiguration("CCI has no cuda recipe (yet)")
+ if self.options.with_orc:
+ raise ConanInvalidConfiguration("CCI has no orc recipe (yet)")
+ if self.options.with_s3 and not
self.dependencies["aws-sdk-cpp"].options.config:
+ raise ConanInvalidConfiguration("arrow:with_s3 requires
aws-sdk-cpp:config is True.")
+
+ if self.options.shared and self.options.with_jemalloc:
+ if self.dependencies["jemalloc"].options.enable_cxx:
+ raise ConanInvalidConfiguration("jemmalloc.enable_cxx of a
static jemalloc must be disabled")
+
+
+ def build_requirements(self):
+ if Version(self.version) >= "13.0.0":
+ self.tool_requires("cmake/[>=3.16 <4]")
+
def source(self):
# START
# This block should be removed when we update upstream:
@@ -435,17 +302,15 @@ class ArrowConan(ConanFile):
return
# END
get(self, **self.conan_data["sources"][self.version],
- filename=f"apache-arrow-{self.version}.tar.gz",
destination=self.source_folder, strip_root=True)
+ filename=f"apache-arrow-{self.version}.tar.gz", strip_root=True)
def generate(self):
- # BUILD_SHARED_LIBS and POSITION_INDEPENDENT_CODE are automatically
parsed when self.options.shared or self.options.fPIC exist
tc = CMakeToolchain(self)
if cross_building(self):
cmake_system_processor = {
"armv8": "aarch64",
"armv8.3": "aarch64",
}.get(str(self.settings.arch), str(self.settings.arch))
- tc.variables["CMAKE_SYSTEM_PROCESSOR"] = cmake_system_processor
if cmake_system_processor == "aarch64":
tc.variables["ARROW_CPU_FLAG"] = "armv8"
if is_msvc(self):
@@ -453,12 +318,10 @@ class ArrowConan(ConanFile):
tc.variables["ARROW_DEPENDENCY_SOURCE"] = "SYSTEM"
tc.variables["ARROW_PACKAGE_KIND"] = "conan" # See
https://github.com/conan-io/conan-center-index/pull/14903/files#r1057938314 for
details
tc.variables["ARROW_GANDIVA"] = bool(self.options.gandiva)
- tc.variables["ARROW_PARQUET"] = self._parquet()
+ tc.variables["ARROW_PARQUET"] = self.options.parquet
tc.variables["ARROW_SUBSTRAIT"] =
bool(self.options.get_safe("substrait", False))
- if Version(self.version) < "12.0.0":
- tc.variables["ARROW_PLASMA"] = bool(self._plasma())
- tc.variables["ARROW_ACERO"] = self._acero()
- tc.variables["ARROW_DATASET"] = self._dataset_modules()
+ tc.variables["ARROW_ACERO"] = bool(self.options.acero)
+ tc.variables["ARROW_DATASET"] = self.options.dataset_modules
tc.variables["ARROW_FILESYSTEM"] = bool(self.options.filesystem_layer)
tc.variables["PARQUET_REQUIRE_ENCRYPTION"] =
bool(self.options.encryption)
tc.variables["ARROW_HDFS"] = bool(self.options.hdfs_bridgs)
@@ -466,12 +329,12 @@ class ArrowConan(ConanFile):
tc.variables["ARROW_BUILD_SHARED"] = bool(self.options.shared)
tc.variables["ARROW_BUILD_STATIC"] = not bool(self.options.shared)
tc.variables["ARROW_NO_DEPRECATED_API"] = not
bool(self.options.deprecated)
- tc.variables["ARROW_FLIGHT"] = self._with_flight_rpc()
+ tc.variables["ARROW_FLIGHT"] = self.options.with_flight_rpc
tc.variables["ARROW_FLIGHT_SQL"] =
bool(self.options.get_safe("with_flight_sql", False))
- tc.variables["ARROW_COMPUTE"] = self._compute()
+ tc.variables["ARROW_COMPUTE"] = bool(self.options.compute)
tc.variables["ARROW_CSV"] = bool(self.options.with_csv)
tc.variables["ARROW_CUDA"] = bool(self.options.with_cuda)
- tc.variables["ARROW_JEMALLOC"] = self._with_jemalloc()
+ tc.variables["ARROW_JEMALLOC"] = self.options.with_jemalloc
tc.variables["jemalloc_SOURCE"] = "SYSTEM"
tc.variables["ARROW_MIMALLOC"] = bool(self.options.with_mimalloc)
tc.variables["ARROW_JSON"] = bool(self.options.with_json)
@@ -479,61 +342,58 @@ class ArrowConan(ConanFile):
tc.variables["ARROW_GCS"] = bool(self.options.get_safe("with_gcs",
False))
tc.variables["BOOST_SOURCE"] = "SYSTEM"
tc.variables["Protobuf_SOURCE"] = "SYSTEM"
- if self._with_protobuf():
- tc.variables["ARROW_PROTOBUF_USE_SHARED"] =
bool(self.options["protobuf"].shared)
+ if self.options.with_protobuf:
+ tc.variables["ARROW_PROTOBUF_USE_SHARED"] =
bool(self.dependencies["protobuf"].options.shared)
tc.variables["gRPC_SOURCE"] = "SYSTEM"
- if self._with_grpc():
- tc.variables["ARROW_GRPC_USE_SHARED"] =
bool(self.options["grpc"].shared)
+ if self.options.with_grpc:
+ tc.variables["ARROW_GRPC_USE_SHARED"] =
bool(self.dependencies["grpc"].options.shared)
- tc.variables["ARROW_USE_GLOG"] = self._with_glog()
+ tc.variables["ARROW_USE_GLOG"] = self.options.with_glog
tc.variables["GLOG_SOURCE"] = "SYSTEM"
tc.variables["ARROW_WITH_BACKTRACE"] =
bool(self.options.with_backtrace)
tc.variables["ARROW_WITH_BROTLI"] = bool(self.options.with_brotli)
tc.variables["brotli_SOURCE"] = "SYSTEM"
if self.options.with_brotli:
- tc.variables["ARROW_BROTLI_USE_SHARED"] =
bool(self.options["brotli"].shared)
+ tc.variables["ARROW_BROTLI_USE_SHARED"] =
bool(self.dependencies["brotli"].options.shared)
tc.variables["gflags_SOURCE"] = "SYSTEM"
- if self._with_gflags():
- tc.variables["ARROW_GFLAGS_USE_SHARED"] =
bool(self.options["gflags"].shared)
+ if self.options.with_gflags:
+ tc.variables["ARROW_GFLAGS_USE_SHARED"] =
bool(self.dependencies["gflags"].options.shared)
tc.variables["ARROW_WITH_BZ2"] = bool(self.options.with_bz2)
tc.variables["BZip2_SOURCE"] = "SYSTEM"
if self.options.with_bz2:
- tc.variables["ARROW_BZ2_USE_SHARED"] =
bool(self.options["bzip2"].shared)
+ tc.variables["ARROW_BZ2_USE_SHARED"] =
bool(self.dependencies["bzip2"].options.shared)
tc.variables["ARROW_WITH_LZ4"] = bool(self.options.with_lz4)
tc.variables["lz4_SOURCE"] = "SYSTEM"
if self.options.with_lz4:
- tc.variables["ARROW_LZ4_USE_SHARED"] =
bool(self.options["lz4"].shared)
+ tc.variables["ARROW_LZ4_USE_SHARED"] =
bool(self.dependencies["lz4"].options.shared)
tc.variables["ARROW_WITH_SNAPPY"] = bool(self.options.with_snappy)
tc.variables["RapidJSON_SOURCE"] = "SYSTEM"
tc.variables["Snappy_SOURCE"] = "SYSTEM"
if self.options.with_snappy:
- tc.variables["ARROW_SNAPPY_USE_SHARED"] =
bool(self.options["snappy"].shared)
+ tc.variables["ARROW_SNAPPY_USE_SHARED"] =
bool(self.dependencies["snappy"].options.shared)
tc.variables["ARROW_WITH_ZLIB"] = bool(self.options.with_zlib)
tc.variables["re2_SOURCE"] = "SYSTEM"
tc.variables["ZLIB_SOURCE"] = "SYSTEM"
tc.variables["xsimd_SOURCE"] = "SYSTEM"
tc.variables["ARROW_WITH_ZSTD"] = bool(self.options.with_zstd)
- if Version(self.version) >= "2.0":
- tc.variables["zstd_SOURCE"] = "SYSTEM"
- tc.variables["ARROW_SIMD_LEVEL"] =
str(self.options.simd_level).upper()
- tc.variables["ARROW_RUNTIME_SIMD_LEVEL"] =
str(self.options.runtime_simd_level).upper()
- else:
- tc.variables["ZSTD_SOURCE"] = "SYSTEM"
+ tc.variables["zstd_SOURCE"] = "SYSTEM"
+ tc.variables["ARROW_SIMD_LEVEL"] = str(self.options.simd_level).upper()
+ tc.variables["ARROW_RUNTIME_SIMD_LEVEL"] =
str(self.options.runtime_simd_level).upper()
if self.options.with_zstd:
- tc.variables["ARROW_ZSTD_USE_SHARED"] =
bool(self.options["zstd"].shared)
+ tc.variables["ARROW_ZSTD_USE_SHARED"] =
bool(self.dependencies["zstd"].options.shared)
tc.variables["ORC_SOURCE"] = "SYSTEM"
- tc.variables["ARROW_WITH_THRIFT"] = self._with_thrift()
+ tc.variables["ARROW_WITH_THRIFT"] = bool(self.options.with_thrift)
tc.variables["Thrift_SOURCE"] = "SYSTEM"
- if self._with_thrift():
- tc.variables["THRIFT_VERSION"] =
bool(self.deps_cpp_info["thrift"].version) # a recent thrift does not require
boost
- tc.variables["ARROW_THRIFT_USE_SHARED"] =
bool(self.options["thrift"].shared)
- tc.variables["ARROW_USE_OPENSSL"] = self._with_openssl()
- if self._with_openssl():
- tc.variables["OPENSSL_ROOT_DIR"] =
self.deps_cpp_info["openssl"].rootpath.replace("\\", "/")
- tc.variables["ARROW_OPENSSL_USE_SHARED"] =
bool(self.options["openssl"].shared)
- if self._with_boost():
+ if self.options.with_thrift:
+ tc.variables["THRIFT_VERSION"] =
bool(self.dependencies["thrift"].ref.version) # a recent thrift does not
require boost
+ tc.variables["ARROW_THRIFT_USE_SHARED"] =
bool(self.dependencies["thrift"].options.shared)
+ tc.variables["ARROW_USE_OPENSSL"] = self.options.with_openssl
+ if self.options.with_openssl:
+ tc.variables["OPENSSL_ROOT_DIR"] =
self.dependencies["openssl"].package_folder.replace("\\", "/")
+ tc.variables["ARROW_OPENSSL_USE_SHARED"] =
bool(self.dependencies["openssl"].options.shared)
+ if self.options.with_boost:
tc.variables["ARROW_USE_BOOST"] = True
- tc.variables["ARROW_BOOST_USE_SHARED"] =
bool(self.options["boost"].shared)
+ tc.variables["ARROW_BOOST_USE_SHARED"] =
bool(self.dependencies["boost"].options.shared)
tc.variables["ARROW_S3"] = bool(self.options.with_s3)
tc.variables["AWSSDK_SOURCE"] = "SYSTEM"
tc.variables["ARROW_BUILD_UTILITIES"] = bool(self.options.cli)
@@ -544,16 +404,18 @@ class ArrowConan(ConanFile):
tc.variables["ARROW_ENABLE_TIMING_TESTS"] = False
tc.variables["ARROW_BUILD_BENCHMARKS"] = False
tc.variables["LLVM_SOURCE"] = "SYSTEM"
- tc.variables["ARROW_WITH_UTF8PROC"] = self._with_utf8proc()
- tc.variables["ARROW_BOOST_REQUIRED"] = self._with_boost()
+ tc.variables["ARROW_WITH_UTF8PROC"] = self.options.with_utf8proc
+ tc.variables["ARROW_BOOST_REQUIRED"] = self.options.with_boost
tc.variables["utf8proc_SOURCE"] = "SYSTEM"
- if self._with_utf8proc():
- tc.variables["ARROW_UTF8PROC_USE_SHARED"] =
bool(self.options["utf8proc"].shared)
+ if self.options.with_utf8proc:
+ tc.variables["ARROW_UTF8PROC_USE_SHARED"] =
bool(self.dependencies["utf8proc"].options.shared)
tc.variables["BUILD_WARNING_LEVEL"] = "PRODUCTION"
if is_msvc(self):
- tc.variables["ARROW_USE_STATIC_CRT"] = "MT" in
str(self.settings.compiler.runtime)
- if self._with_llvm():
- tc.variables["LLVM_DIR"] =
self.deps_cpp_info["llvm-core"].rootpath.replace("\\", "/")
+ tc.variables["ARROW_USE_STATIC_CRT"] = is_msvc_static_runtime(self)
+ if self.options.with_llvm:
+ tc.variables["LLVM_DIR"] =
self.dependencies["llvm-core"].package_folder.replace("\\", "/")
+
+ tc.cache_variables["CMAKE_PROJECT_arrow_INCLUDE"] =
os.path.join(self.source_folder, "conan_cmake_project_include.cmake")
tc.generate()
deps = CMakeDeps(self)
@@ -561,10 +423,11 @@ class ArrowConan(ConanFile):
def _patch_sources(self):
apply_conandata_patches(self)
- if "7.0.0" <= Version(self.version) < "10.0.0":
+ 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",
@@ -576,7 +439,6 @@ class ArrowConan(ConanFile):
"FindArrowTesting.cmake",
"FindGandiva.cmake",
"FindParquet.cmake",
- "FindPlasma.cmake",
]:
os.remove(filename)
@@ -596,129 +458,106 @@ class ArrowConan(ConanFile):
rmdir(self, os.path.join(self.package_folder, "lib", "pkgconfig"))
rmdir(self, os.path.join(self.package_folder, "share"))
- def _lib_name(self, name):
- if is_msvc(self) and not self.options.shared:
- return "{}_static".format(name)
- else:
- return "{}".format(name)
-
- def package_id(self):
- self.info.options.with_gflags = self._with_gflags()
- self.info.options.with_protobuf = self._with_protobuf()
- self.info.options.with_re2 = self._with_re2()
- self.info.options.with_jemalloc = self._with_jemalloc()
- self.info.options.with_openssl = self._with_openssl()
- self.info.options.with_boost = self._with_boost()
- self.info.options.with_glog = self._with_glog()
- self.info.options.with_grpc = self._with_grpc()
-
def package_info(self):
- self.cpp_info.filenames["cmake_find_package"] = "Arrow"
- self.cpp_info.filenames["cmake_find_package_multi"] = "Arrow"
- self.cpp_info.components["libarrow"].libs = [self._lib_name("arrow")]
- self.cpp_info.components["libarrow"].names["cmake_find_package"] =
"arrow"
- self.cpp_info.components["libarrow"].names["cmake_find_package_multi"]
= "arrow"
- self.cpp_info.components["libarrow"].names["pkg_config"] = "arrow"
+ # FIXME: fix CMake targets of components
+
+ self.cpp_info.set_property("cmake_file_name", "Arrow")
+
+ suffix = "_static" if is_msvc(self) and not self.options.shared else ""
+
+ self.cpp_info.components["libarrow"].set_property("pkg_config_name",
"arrow")
+ self.cpp_info.components["libarrow"].libs = [f"arrow{suffix}"]
if not self.options.shared:
self.cpp_info.components["libarrow"].defines = ["ARROW_STATIC"]
if self.settings.os in ["Linux", "FreeBSD"]:
self.cpp_info.components["libarrow"].system_libs = ["pthread",
"m", "dl", "rt"]
- if self._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"
+ if self.options.parquet:
+
self.cpp_info.components["libparquet"].set_property("pkg_config_name",
"parquet")
+ self.cpp_info.components["libparquet"].libs = [f"parquet{suffix}"]
self.cpp_info.components["libparquet"].requires = ["libarrow"]
if not self.options.shared:
self.cpp_info.components["libparquet"].defines =
["PARQUET_STATIC"]
- if self.options.get_safe("substrait", 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", "acero"]
+ if self.options.get_safe("substrait"):
+
self.cpp_info.components["libarrow_substrait"].set_property("pkg_config_name",
"arrow_substrait")
+ self.cpp_info.components["libarrow_substrait"].libs =
[f"arrow_substrait{suffix}"]
+ self.cpp_info.components["libarrow_substrait"].requires =
["libparquet", "dataset"]
+
+ # Plasma was deprecated in Arrow 12.0.0
+ del self.options.plasma
- if self._plasma():
- self.cpp_info.components["libplasma"].libs =
[self._lib_name("plasma")]
- self.cpp_info.components["libplasma"].names["cmake_find_package"]
= "plasma"
-
self.cpp_info.components["libplasma"].names["cmake_find_package_multi"] =
"plasma"
- self.cpp_info.components["libplasma"].names["pkg_config"] =
"plasma"
- self.cpp_info.components["libplasma"].requires = ["libarrow"]
+ if self.options.acero:
+ self.cpp_info.components["libacero"].libs =
[f"arrow_acero{suffix}"]
+ self.cpp_info.components["libacero"].names["cmake_find_package"] =
"acero"
+
self.cpp_info.components["libacero"].names["cmake_find_package_multi"] = "acero"
+ self.cpp_info.components["libacero"].names["pkg_config"] = "acero"
+ self.cpp_info.components["libacero"].requires = ["libarrow"]
if self.options.gandiva:
- self.cpp_info.components["libgandiva"].libs =
[self._lib_name("gandiva")]
- self.cpp_info.components["libgandiva"].names["cmake_find_package"]
= "gandiva"
-
self.cpp_info.components["libgandiva"].names["cmake_find_package_multi"] =
"gandiva"
- self.cpp_info.components["libgandiva"].names["pkg_config"] =
"gandiva"
+
self.cpp_info.components["libgandiva"].set_property("pkg_config_name",
"gandiva")
+ self.cpp_info.components["libgandiva"].libs = [f"gandiva{suffix}"]
self.cpp_info.components["libgandiva"].requires = ["libarrow"]
if not self.options.shared:
self.cpp_info.components["libgandiva"].defines =
["GANDIVA_STATIC"]
- if self._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"
+ if self.options.with_flight_rpc:
+
self.cpp_info.components["libarrow_flight"].set_property("pkg_config_name",
"flight_rpc")
+ self.cpp_info.components["libarrow_flight"].libs =
[f"arrow_flight{suffix}"]
self.cpp_info.components["libarrow_flight"].requires = ["libarrow"]
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"].set_property("pkg_config_name",
"flight_sql")
+ self.cpp_info.components["libarrow_flight_sql"].libs =
[f"arrow_flight_sql{suffix}"]
self.cpp_info.components["libarrow_flight_sql"].requires =
["libarrow", "libarrow_flight"]
- if self._acero():
- self.cpp_info.components["acero"].libs = ["arrow_acero"]
-
- if self._dataset_modules():
+ if self.options.dataset_modules:
self.cpp_info.components["dataset"].libs = ["arrow_dataset"]
+ if self.options.parquet:
+ self.cpp_info.components["dataset"].requires = ["libparquet"]
- if (self.options.cli and (self.options.with_cuda or
self._with_flight_rpc() or self._parquet())) or self._plasma():
+ if self.options.cli and (self.options.with_cuda or
self.options.with_flight_rpc or self.options.parquet):
binpath = os.path.join(self.package_folder, "bin")
self.output.info(f"Appending PATH env var: {binpath}")
self.env_info.PATH.append(binpath)
- if self._with_boost():
+ if self.options.with_boost:
if self.options.gandiva:
# FIXME: only filesystem component is used
self.cpp_info.components["libgandiva"].requires.append("boost::boost")
- if self._parquet() and self.settings.compiler == "gcc" and
self.settings.compiler.version < Version("4.9"):
+ if self.options.parquet and self.settings.compiler == "gcc" and
self.settings.compiler.version < Version("4.9"):
self.cpp_info.components["libparquet"].requires.append("boost::boost")
- if Version(self.version) >= "2.0":
- # FIXME: only headers components is used
-
self.cpp_info.components["libarrow"].requires.append("boost::boost")
- if self._with_openssl():
+ # FIXME: only headers components is used
+
self.cpp_info.components["libarrow"].requires.append("boost::boost")
+ if self.options.with_openssl:
self.cpp_info.components["libarrow"].requires.append("openssl::openssl")
- if self._with_gflags():
+ if self.options.with_gflags:
self.cpp_info.components["libarrow"].requires.append("gflags::gflags")
- if self._with_glog():
+ if self.options.with_glog:
self.cpp_info.components["libarrow"].requires.append("glog::glog")
- if self._with_jemalloc():
+ if self.options.with_jemalloc:
self.cpp_info.components["libarrow"].requires.append("jemalloc::jemalloc")
if self.options.with_mimalloc:
self.cpp_info.components["libarrow"].requires.append("mimalloc::mimalloc")
- if self._with_re2():
+ if self.options.with_re2:
if self.options.gandiva:
self.cpp_info.components["libgandiva"].requires.append("re2::re2")
- if self._parquet():
+ if self.options.parquet:
self.cpp_info.components["libparquet"].requires.append("re2::re2")
self.cpp_info.components["libarrow"].requires.append("re2::re2")
- if self._with_llvm():
+ if self.options.with_llvm:
self.cpp_info.components["libgandiva"].requires.append("llvm-core::llvm-core")
- if self._with_protobuf():
+ if self.options.with_protobuf:
self.cpp_info.components["libarrow"].requires.append("protobuf::protobuf")
- if self._with_utf8proc():
+ if self.options.with_utf8proc:
self.cpp_info.components["libarrow"].requires.append("utf8proc::utf8proc")
- if self._with_thrift():
+ if self.options.with_thrift:
self.cpp_info.components["libarrow"].requires.append("thrift::thrift")
if self.options.with_backtrace:
self.cpp_info.components["libarrow"].requires.append("libbacktrace::libbacktrace")
if self.options.with_cuda:
self.cpp_info.components["libarrow"].requires.append("cuda::cuda")
- if self._with_rapidjson():
+ if self._requires_rapidjson():
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")
@@ -742,9 +581,32 @@ class ArrowConan(ConanFile):
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._with_boost():
+ if self.options.with_boost:
self.cpp_info.components["libarrow"].requires.append("boost::boost")
- if self._with_grpc():
+ if self.options.with_grpc:
self.cpp_info.components["libarrow"].requires.append("grpc::grpc")
- if self._with_flight_rpc():
+ if self.options.with_flight_rpc:
self.cpp_info.components["libarrow_flight"].requires.append("protobuf::protobuf")
+
+ # TODO: to remove in conan v2
+ self.cpp_info.filenames["cmake_find_package"] = "Arrow"
+ self.cpp_info.filenames["cmake_find_package_multi"] = "Arrow"
+ self.cpp_info.components["libarrow"].names["cmake_find_package"] =
"arrow"
+ self.cpp_info.components["libarrow"].names["cmake_find_package_multi"]
= "arrow"
+ if self.options.parquet:
+ self.cpp_info.components["libparquet"].names["cmake_find_package"]
= "parquet"
+
self.cpp_info.components["libparquet"].names["cmake_find_package_multi"] =
"parquet"
+ if self.options.get_safe("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"
+ if self.options.gandiva:
+ self.cpp_info.components["libgandiva"].names["cmake_find_package"]
= "gandiva"
+
self.cpp_info.components["libgandiva"].names["cmake_find_package_multi"] =
"gandiva"
+ if self.options.with_flight_rpc:
+
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"
+ if self.options.get_safe("with_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"
+ if self.options.cli and (self.options.with_cuda or
self.options.with_flight_rpc or self.options.parquet):
+ self.env_info.PATH.append(os.path.join(self.package_folder, "bin"))
diff --git a/ci/conan/config.yml b/ci/conan/config.yml
index be333447f3..3fa90be6f6 100644
--- a/ci/conan/config.yml
+++ b/ci/conan/config.yml
@@ -21,6 +21,22 @@
# SOFTWARE.
versions:
+ "15.0.0":
+ folder: all
+ "14.0.2":
+ folder: all
+ "14.0.1":
+ folder: all
+ "14.0.0":
+ folder: all
+ "13.0.0":
+ folder: all
+ "12.0.1":
+ folder: all
+ "12.0.0":
+ folder: all
+ "11.0.0":
+ folder: all
"10.0.1":
folder: all
"10.0.0":
@@ -31,7 +47,3 @@ versions:
folder: all
"7.0.0":
folder: all
- "2.0.0":
- folder: all
- "1.0.0":
- folder: all
diff --git a/ci/scripts/conan_build.sh b/ci/scripts/conan_build.sh
index b1ee0a8fc2..0ea3fc2919 100755
--- a/ci/scripts/conan_build.sh
+++ b/ci/scripts/conan_build.sh
@@ -30,34 +30,39 @@ export CONAN_HOOK_ERROR_LEVEL=40
conan_args=()
conan_args+=(--build=missing)
if [ -n "${ARROW_CONAN_PARQUET:-}" ]; then
- conan_args+=(--options arrow:parquet=${ARROW_CONAN_PARQUET})
+ conan_args+=(--options arrow/*:parquet=${ARROW_CONAN_PARQUET})
+ conan_args+=(--options arrow/*:with_thrift=${ARROW_CONAN_PARQUET})
+ conan_args+=(--options arrow/*:with_boost=${ARROW_CONAN_PARQUET})
fi
if [ -n "${ARROW_CONAN_WITH_BROTLI:-}" ]; then
- conan_args+=(--options arrow:with_brotli=${ARROW_CONAN_WITH_BROTLI})
+ conan_args+=(--options arrow/*:with_brotli=${ARROW_CONAN_WITH_BROTLI})
fi
if [ -n "${ARROW_CONAN_WITH_BZ2:-}" ]; then
- conan_args+=(--options arrow:with_bz2=${ARROW_CONAN_WITH_BZ2})
+ conan_args+=(--options arrow/*:with_bz2=${ARROW_CONAN_WITH_BZ2})
fi
if [ -n "${ARROW_CONAN_WITH_FLIGHT_RPC:-}" ]; then
- conan_args+=(--options arrow:with_flight_rpc=${ARROW_CONAN_WITH_FLIGHT_RPC})
+ conan_args+=(--options
arrow/*:with_flight_rpc=${ARROW_CONAN_WITH_FLIGHT_RPC})
+ conan_args+=(--options arrow/*:with_grpc=${ARROW_CONAN_WITH_FLIGHT_RPC})
+ conan_args+=(--options arrow/*:with_protobuf=${ARROW_CONAN_WITH_FLIGHT_RPC})
+ conan_args+=(--options arrow/*:with_re2=${ARROW_CONAN_WITH_FLIGHT_RPC})
fi
if [ -n "${ARROW_CONAN_WITH_GLOG:-}" ]; then
- conan_args+=(--options arrow:with_glog=${ARROW_CONAN_WITH_GLOG})
+ conan_args+=(--options arrow/*:with_glog=${ARROW_CONAN_WITH_GLOG})
fi
if [ -n "${ARROW_CONAN_WITH_JEMALLOC:-}" ]; then
- conan_args+=(--options arrow:with_jemalloc=${ARROW_CONAN_WITH_JEMALLOC})
+ conan_args+=(--options arrow/*:with_jemalloc=${ARROW_CONAN_WITH_JEMALLOC})
fi
if [ -n "${ARROW_CONAN_WITH_JSON:-}" ]; then
- conan_args+=(--options arrow:with_json=${ARROW_CONAN_WITH_JSON})
+ conan_args+=(--options arrow/*:with_json=${ARROW_CONAN_WITH_JSON})
fi
if [ -n "${ARROW_CONAN_WITH_LZ4:-}" ]; then
- conan_args+=(--options arrow:with_lz4=${ARROW_CONAN_WITH_LZ4})
+ conan_args+=(--options arrow/*:with_lz4=${ARROW_CONAN_WITH_LZ4})
fi
if [ -n "${ARROW_CONAN_WITH_SNAPPY:-}" ]; then
- conan_args+=(--options arrow:with_snappy=${ARROW_CONAN_WITH_SNAPPY})
+ conan_args+=(--options arrow/*:with_snappy=${ARROW_CONAN_WITH_SNAPPY})
fi
if [ -n "${ARROW_CONAN_WITH_ZSTD:-}" ]; then
- conan_args+=(--options arrow:with_zstd=${ARROW_CONAN_WITH_ZSTD})
+ conan_args+=(--options arrow/*:with_zstd=${ARROW_CONAN_WITH_ZSTD})
fi
version=$(grep '^set(ARROW_VERSION ' ${ARROW_HOME}/cpp/CMakeLists.txt | \
diff --git a/ci/scripts/install_sccache.sh b/ci/scripts/install_sccache.sh
index 0346c0cc9c..136f39b3ae 100755
--- a/ci/scripts/install_sccache.sh
+++ b/ci/scripts/install_sccache.sh
@@ -59,7 +59,7 @@ fi
# Extract only the sccache binary into $PREFIX and ignore README and LICENSE.
# --wildcards doesn't work on busybox.
tar -xzvf $SCCACHE_ARCHIVE --strip-component=1 --directory $PREFIX
--exclude="sccache*/*E*E*"
-chmod u+x $PREFIX/sccache
+chmod a+x $PREFIX/sccache
if [ -n "${GITHUB_PATH}" ]; then
echo "$PREFIX" >> $GITHUB_PATH
diff --git a/cpp/cmake_modules/ThirdpartyToolchain.cmake
b/cpp/cmake_modules/ThirdpartyToolchain.cmake
index 7d54ccccf7..ddea1c399c 100644
--- a/cpp/cmake_modules/ThirdpartyToolchain.cmake
+++ b/cpp/cmake_modules/ThirdpartyToolchain.cmake
@@ -1190,6 +1190,12 @@ if(MSVC AND ARROW_USE_STATIC_CRT)
set(Boost_USE_STATIC_RUNTIME ON)
endif()
set(Boost_ADDITIONAL_VERSIONS
+ "1.84.0"
+ "1.84"
+ "1.83.0"
+ "1.83"
+ "1.82.0"
+ "1.82"
"1.81.0"
"1.81"
"1.80.0"
diff --git a/docker-compose.yml b/docker-compose.yml
index 46717557bc..60edf1420b 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -711,10 +711,11 @@ services:
# Usage:
# docker-compose run --rm conan
# Parameters:
- # CONAN: gcc11, gcc11-armv7, ...
+ # CONAN_BASE: gcc11, gcc11-armv7, ...
+ # CONAN_VERSION: 1.62.0
# See https://github.com/conan-io/conan-docker-tools#readme for
# available images.
- image: conanio/${CONAN}
+ image: conanio/${CONAN_BASE}:${CONAN_VERSION}
user: root:root
shm_size: *shm-size
ulimits: *ulimits
@@ -724,7 +725,7 @@ services:
- .:/arrow:delegated
command: >-
/bin/bash -c "
- /arrow/ci/scripts/install_sccache.sh unknown-linux-musl /usr/local/bin
&&
+ sudo /arrow/ci/scripts/install_sccache.sh unknown-linux-musl
/usr/local/bin &&
/arrow/ci/scripts/conan_setup.sh &&
/arrow/ci/scripts/conan_build.sh /arrow /build"