From 3aa93ca79d532a4f2f3729f5d296268855f1b4f2 Mon Sep 17 00:00:00 2001 From: Laurent Aphecetche Date: Mon, 26 Sep 2022 17:30:24 +0200 Subject: arrow: add version 9 and more variants (#32701) * utf8proc: add version 2.7.0 and shared variant * xsimd: add version 8.1.0 * arrow: add version 9.0.0 and more variants --- var/spack/repos/builtin/packages/arrow/package.py | 141 +++++++++++++++------- 1 file changed, 97 insertions(+), 44 deletions(-) (limited to 'var/spack/repos/builtin/packages/arrow') diff --git a/var/spack/repos/builtin/packages/arrow/package.py b/var/spack/repos/builtin/packages/arrow/package.py index 7870a7258a..c9bc1b7b66 100644 --- a/var/spack/repos/builtin/packages/arrow/package.py +++ b/var/spack/repos/builtin/packages/arrow/package.py @@ -2,8 +2,8 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) + from spack.package import * -from spack.pkg.builtin.boost import Boost class Arrow(CMakePackage, CudaPackage): @@ -15,6 +15,7 @@ class Arrow(CMakePackage, CudaPackage): homepage = "https://arrow.apache.org" url = "https://github.com/apache/arrow/archive/apache-arrow-0.9.0.tar.gz" + version("9.0.0", sha256="bb187b4b0af8dcc027fffed3700a7b891c9f76c9b63ad8925b4afb8257a2bb1b") version("8.0.0", sha256="19ece12de48e51ce4287d2dee00dc358fbc5ff02f41629d16076f77b8579e272") version("7.0.0", sha256="57e13c62f27b710e1de54fd30faed612aefa22aa41fa2c0c3bacd204dd18a8f3") version("4.0.1", sha256="79d3e807df4a179cfab1e7a1ab5f79d95f7b72ac2c33aba030febd125d77eb3b") @@ -28,32 +29,67 @@ class Arrow(CMakePackage, CudaPackage): version("0.9.0", sha256="65f89a3910b6df02ac71e4d4283db9b02c5b3f1e627346c7b6a5982ae994af91") version("0.8.0", sha256="c61a60c298c30546fc0b418a35be66ef330fb81b06c49928acca7f1a34671d54") - depends_on("boost@1.60:") - - # TODO: replace this with an explicit list of components of Boost, - # for instance depends_on('boost +filesystem') - # See https://github.com/spack/spack/pull/22303 for reference - depends_on(Boost.with_default_variants) + depends_on("boost@1.60: +filesystem +system") depends_on("cmake@3.2.0:", type="build") - depends_on("flatbuffers build_type=Release") # only Release contains flatc - depends_on("python", when="+python") + depends_on("flatbuffers") + depends_on("llvm@:11 +clang", when="+gandiva @:3", type="build") + depends_on("llvm@:12 +clang", when="+gandiva @:4", type="build") + depends_on("llvm@:13 +clang", when="+gandiva @:7", type="build") + depends_on("llvm@:14 +clang", when="+gandiva @8:", type="build") + depends_on("lz4", when="+lz4") + depends_on("ninja", type="build") + depends_on("openssl", when="+gandiva @6.0.0:") + depends_on("openssl", when="@4.0.0:") + depends_on("orc", when="+orc") + depends_on("protobuf", when="+gandiva") depends_on("py-numpy", when="+python") + depends_on("python", when="+python") depends_on("rapidjson") - depends_on("snappy~shared") - depends_on("zlib+pic") - depends_on("zstd") + depends_on("re2+shared", when="+compute") + depends_on("re2+shared", when="+gandiva") + depends_on("snappy~shared", when="+snappy @9:") + depends_on("snappy~shared", when="@8:") depends_on("thrift+pic", when="+parquet") - depends_on("orc", when="+orc") - + depends_on("utf8proc@2.7.0: +shared", when="+compute") + depends_on("utf8proc@2.7.0: +shared", when="+gandiva") + depends_on("xsimd@8.1.0:", when="@9.0.0:") + depends_on("zlib+pic", when="+zlib @9:") + depends_on("zlib+pic", when="@:8") + depends_on("zstd", when="+zstd @9:") + depends_on("zstd", when="@:8") + + variant("brotli", default=False, description="Build support for Brotli compression") variant( "build_type", default="Release", description="CMake build type", values=("Debug", "FastDebug", "Release"), ) - variant("python", default=False, description="Build Python interface") + variant( + "compute", default=False, description="Computational kernel functions and other support" + ) + variant("gandiva", default=False, description="Build Gandiva support") + variant( + "glog", + default=False, + description="Build libraries with glog support for pluggable logging", + ) + variant( + "hdfs", + default=False, + description="Integration with libhdfs for accessing the Hadoop Filesystem", + ) + variant("ipc", default=True, description="Build the Arrow IPC extensions") + variant("jemalloc", default=False, description="Build the Arrow jemalloc-based allocator") + variant("lz4", default=False, description="Build support for lz4 compression") + variant("orc", default=False, description="Build integration with Apache ORC") variant("parquet", default=False, description="Build Parquet interface") - variant("orc", default=False, description="Build ORC support") + variant("python", default=False, description="Build Python interface") + variant("shared", default=True, description="Build shared libs") + variant("snappy", default=False, description="Build support for Snappy compression") + variant("tensorflow", default=False, description="Build Arrow with TensorFlow support enabled") + variant("zlib", default=False, description="Build support for zlib (gzip) compression") + variant("zstd", default=False, description="Build support for ZSTD compression") root_cmakelists_dir = "cpp" @@ -63,37 +99,54 @@ class Arrow(CMakePackage, CudaPackage): r"(include_directories\()SYSTEM ", r"\1", "cpp/cmake_modules/ThirdpartyToolchain.cmake" ) - def cmake_args(self): - args = [ - "-DARROW_USE_SSE=ON", - "-DARROW_BUILD_SHARED=ON", - "-DARROW_BUILD_STATIC=OFF", - "-DARROW_BUILD_TESTS=OFF", - "-DARROW_WITH_BROTLI=OFF", - "-DARROW_WITH_LZ4=OFF", - ] - - if self.spec.satisfies("+cuda"): - args.append("-DARROW_CUDA:BOOL=ON") - else: - args.append("-DARROW_CUDA:BOOL=OFF") + filter_file( + r'set\(ARROW_LLVM_VERSIONS "10" "9" "8" "7"\)', + 'set(ARROW_LLVM_VERSIONS "11" "10" "9" "8" "7")', + "cpp/CMakeLists.txt", + when="@:2.0.0", + ) - if self.spec.satisfies("+python"): - args.append("-DARROW_PYTHON:BOOL=ON") - else: - args.append("-DARROW_PYTHON:BOOL=OFF") + filter_file( + r"#include ", + r"#include " + "\n" + r"#include ", + "cpp/src/gandiva/engine.cc", + when="@2.0.0", + ) - if self.spec.satisfies("+parquet"): - args.append("-DARROW_PARQUET:BOOL=ON") - else: - args.append("-DARROW_PARQUET:BOOL=OFF") + def cmake_args(self): + args = ["-DARROW_DEPENDENCY_SOURCE=SYSTEM", "-DARROW_NO_DEPRECATED_API=ON"] - if self.spec.satisfies("+orc"): - args.append("-DARROW_ORC:BOOL=ON") + if self.spec.satisfies("+shared"): + args.append(self.define("BUILD_SHARED", "ON")) else: - args.append("-DARROW_ORC:BOOL=OFF") + args.append(self.define("BUILD_SHARED", "OFF")) + args.append(self.define("BUILD_STATIC", "ON")) + + if self.spec.satisfies("@:0.11.99"): + # ARROW_USE_SSE was removed in 0.12 + # see https://issues.apache.org/jira/browse/ARROW-3844 + args.append(self.define("ARROW_USE_SSE", "ON")) + + args.append(self.define_from_variant("ARROW_COMPUTE", "compute")) + args.append(self.define_from_variant("ARROW_CUDA", "cuda")) + args.append(self.define_from_variant("ARROW_GANDIVA", "gandiva")) + args.append(self.define_from_variant("ARROW_GLOG", "glog")) + args.append(self.define_from_variant("ARROW_HDFS", "hdfs")) + args.append(self.define_from_variant("ARROW_IPC", "ipc")) + args.append(self.define_from_variant("ARROW_JEMALLOC", "jemalloc")) + args.append(self.define_from_variant("ARROW_ORC", "orc")) + args.append(self.define_from_variant("ARROW_PARQUET", "parquet")) + args.append(self.define_from_variant("ARROW_PYTHON", "python")) + args.append(self.define_from_variant("ARROW_TENSORFLOW", "tensorflow")) + args.append(self.define_from_variant("ARROW_WITH_BROTLI", "brotli")) + args.append(self.define_from_variant("ARROW_WITH_LZ4", "lz4")) + args.append(self.define_from_variant("ARROW_WITH_SNAPPY", "snappy")) + args.append(self.define_from_variant("ARROW_WITH_ZLIB", "zlib")) + args.append(self.define_from_variant("ARROW_WITH_ZSTD", "zstd")) + + with when("@:8"): + for dep in ("flatbuffers", "rapidjson", "snappy", "zlib", "zstd"): + args.append("-D{0}_HOME={1}".format(dep.upper(), self.spec[dep].prefix)) + args.append("-DZLIB_LIBRARIES={0}".format(self.spec["zlib"].libs)) - for dep in ("flatbuffers", "rapidjson", "snappy", "zlib", "zstd"): - args.append("-D{0}_HOME={1}".format(dep.upper(), self.spec[dep].prefix)) - args.append("-DZLIB_LIBRARIES={0}".format(self.spec["zlib"].libs)) return args -- cgit v1.2.3-60-g2f50