From dae7661a0da9b5a081fb2097cb5e431ad0b8443c Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Wed, 21 Feb 2018 12:19:33 -0500 Subject: [PATCH] gnu: Add apache-arrow. * gnu/packages/databases.scm (apache-arrow): New variable. --- gnu/packages/databases.scm | 74 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index 87f65404f8..f2e5622731 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -31,6 +31,7 @@ ;;; Copyright © 2015, 2017 Ricardo Wurmus ;;; Copyright © 2017 Kristofer Buffington ;;; Copyright © 2018 Amirouche Boubekki +;;; Copyright © 2018 Joshua Sierles, Nextjournal ;;; ;;; This file is part of GNU Guix. ;;; @@ -58,6 +59,7 @@ (define-module (gnu packages databases) #:use-module (gnu packages bison) #:use-module (gnu packages boost) #:use-module (gnu packages check) + #:use-module (gnu packages cmake) #:use-module (gnu packages compression) #:use-module (gnu packages crypto) #:use-module (gnu packages curl) @@ -92,6 +94,7 @@ (define-module (gnu packages databases) #:use-module (gnu packages textutils) #:use-module (gnu packages tls) #:use-module (gnu packages valgrind) + #:use-module (gnu packages web) #:use-module (gnu packages xml) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) @@ -2738,3 +2741,74 @@ (define-public mongo-tools Monitor read/write activity on a mongo server @end table") (license license:asl2.0))) + +(define-public apache-arrow + (package + (name "apache-arrow") + (version "0.7.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/apache/arrow") + (commit (string-append "apache-arrow-" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1x7sdd8lbs3nfqjql1pcgbkjc19bls56zmgjayshkmablvlc4dy3")))) + (build-system cmake-build-system) + (arguments + `(#:tests? #f + #:phases + (modify-phases %standard-phases + (add-before 'configure 'enter-source-directory + (lambda _ (chdir "cpp") #t)) + (add-after 'unpack 'set-env + (lambda _ + (setenv "BOOST_ROOT" (assoc-ref %build-inputs "boost")) + (setenv "BROTLI_HOME" (assoc-ref %build-inputs "brotli")) + (setenv "FLATBUFFERS_HOME" (assoc-ref %build-inputs "flatbuffers")) + (setenv "JEMALLOC_HOME" (assoc-ref %build-inputs "jemalloc")) + (setenv "RAPIDJSON_HOME" (assoc-ref %build-inputs "rapidjson")) + #t))) + #:configure-flags + (list "-DCMAKE_BUILD_TYPE=Release" + "-DARROW_PYTHON=ON" + + ;; Install to PREFIX/lib (the default is + ;; PREFIX/lib64). + (string-append "-DCMAKE_INSTALL_LIBDIR=" + (assoc-ref %outputs "out") + "/lib") + + ;; XXX These Guix package offer static + ;; libraries that are not position independent, + ;; and ld fails to link them into the arrow .so + "-DARROW_WITH_SNAPPY=OFF" + "-DARROW_WITH_ZLIB=OFF" + "-DARROW_WITH_ZSTD=OFF" + "-DARROW_WITH_LZ4=OFF" + + ;; Building the tests forces on all the + ;; optional features and the use of static + ;; libraries. + "-DARROW_BUILD_TESTS=OFF" + "-DARROW_BUILD_STATIC=OFF"))) + (inputs + `(("boost" ,boost) + ("rapidjson" ,rapidjson) + ("brotli" ,google-brotli) + ("flatbuffers" ,flatbuffers) + ;; Arrow is not yet compatible with jemalloc >= 5: + ;; https://issues.apache.org/jira/browse/ARROW-1141 + ("jemalloc" ,jemalloc-4.5.0) + ("python-3" ,python) + ("python-numpy" ,python-numpy))) + (home-page "https://arrow.apache.org/") + (synopsis "Columnar in-memory analytics") + (description "Apache Arrow is a columnar in-memory analytics layer +designed to accelerate big data. It houses a set of canonical in-memory +representations of flat and hierarchical data along with multiple +language-bindings for structure manipulation. It also provides IPC and common +algorithm implementations.") + (license license:asl2.0)))