arrow-cpp: 0.15.1 -> 0.16.0

This switches to explicitly enabling dependency lookups for
optional features (they were not picked up before).
It also enables building of the Parquet command line tools.
This commit is contained in:
Tobias Mayer
2020-02-26 10:23:43 +01:00
parent 4594022ec3
commit 5ddadce27b
3 changed files with 40 additions and 21 deletions
@@ -1,24 +1,24 @@
{ stdenv, lib, fetchurl, fetchFromGitHub, fixDarwinDylibNames, autoconf, boost { stdenv, lib, fetchurl, fetchFromGitHub, fetchpatch, fixDarwinDylibNames, autoconf, boost
, brotli, cmake, double-conversion, flatbuffers, gflags, glog, gtest, lz4, perl , brotli, cmake, flatbuffers, gflags, glog, gtest, lz4, perl
, python, rapidjson, snappy, thrift, uriparser, which, zlib, zstd , python, rapidjson, snappy, thrift, which, zlib, zstd
, enableShared ? true }: , enableShared ? true }:
let let
parquet-testing = fetchFromGitHub { parquet-testing = fetchFromGitHub {
owner = "apache"; owner = "apache";
repo = "parquet-testing"; repo = "parquet-testing";
rev = "a277dc4e55ded3e3ea27dab1e4faf98c112442df"; rev = "46c9e977f58f6c5ef1b81f782f3746b3656e5a8c";
sha256 = "1yh5a8l4ship36hwmgmp2kl72s5ac9r8ly1qcs650xv2g9q7yhnq"; sha256 = "1z2s6zh58nf484s0yraw7b1aqgx66dn2wzp1bzv9ndq03msklwly";
}; };
in stdenv.mkDerivation rec { in stdenv.mkDerivation rec {
pname = "arrow-cpp"; pname = "arrow-cpp";
version = "0.15.1"; version = "0.16.0";
src = fetchurl { src = fetchurl {
url = url =
"mirror://apache/arrow/arrow-${version}/apache-arrow-${version}.tar.gz"; "mirror://apache/arrow/arrow-${version}/apache-arrow-${version}.tar.gz";
sha256 = "1jbghpppabsix2rkxbnh41inj9lcxfz4q94p96xzxshh4g3mhb4s"; sha256 = "1xdp1yni9i1cpml326s78qql1g832m800h7zjlqmk89983g94696";
}; };
sourceRoot = "apache-arrow-${version}/cpp"; sourceRoot = "apache-arrow-${version}/cpp";
@@ -35,6 +35,14 @@ in stdenv.mkDerivation rec {
patches = [ patches = [
# patch to fix python-test # patch to fix python-test
./darwin.patch ./darwin.patch
# Adjust CMake target names to make -DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON work.
# Remove this when updating to the next version.
(fetchpatch {
name = "arrow-use-upstream-cmake-target-names.patch";
url = "https://github.com/apache/arrow/commit/396861b38d2f4e805db7c2ecd2c96fff0ca2678b.patch";
sha256 = "0ki7nx858374anvwyi4szz5hgnnzv4fghdd05c38bzry9rfljgb1";
stripLen = 1;
})
] ++ lib.optionals (!enableShared) [ ] ++ lib.optionals (!enableShared) [
# The shared jemalloc lib is unused and breaks in static mode due to missing -fpic. # The shared jemalloc lib is unused and breaks in static mode due to missing -fpic.
./jemalloc-disable-shared.patch ./jemalloc-disable-shared.patch
@@ -48,7 +56,6 @@ in stdenv.mkDerivation rec {
buildInputs = [ buildInputs = [
boost boost
brotli brotli
double-conversion
flatbuffers flatbuffers
gflags gflags
glog glog
@@ -57,7 +64,6 @@ in stdenv.mkDerivation rec {
rapidjson rapidjson
snappy snappy
thrift thrift
uriparser
zlib zlib
zstd zstd
python.pkgs.python python.pkgs.python
@@ -71,15 +77,28 @@ in stdenv.mkDerivation rec {
''; '';
cmakeFlags = [ cmakeFlags = [
"-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON"
"-DARROW_BUILD_TESTS=ON" "-DARROW_BUILD_TESTS=ON"
"-DARROW_DEPENDENCY_SOURCE=SYSTEM" "-DARROW_DEPENDENCY_SOURCE=SYSTEM"
"-DARROW_PARQUET=ON"
"-DARROW_PLASMA=ON" "-DARROW_PLASMA=ON"
# Disable Python for static mode because openblas is currently broken there. # Disable Python for static mode because openblas is currently broken there.
"-DARROW_PYTHON=${if enableShared then "ON" else "OFF"}" "-DARROW_PYTHON=${if enableShared then "ON" else "OFF"}"
"-Duriparser_SOURCE=SYSTEM" "-DARROW_USE_GLOG=ON"
"-DARROW_WITH_BROTLI=ON"
"-DARROW_WITH_LZ4=ON"
"-DARROW_WITH_SNAPPY=ON"
"-DARROW_WITH_ZLIB=ON"
"-DARROW_WITH_ZSTD=ON"
# Parquet options:
"-DARROW_PARQUET=ON"
"-DPARQUET_BUILD_EXECUTABLES=ON"
"-DTHRIFT_COMPILER=${thrift}/bin/thrift"
"-DTHRIFT_VERSION=${thrift.version}"
] ++ lib.optionals (!enableShared) [ ] ++ lib.optionals (!enableShared) [
"-DARROW_BUILD_SHARED=OFF" "-DARROW_BUILD_SHARED=OFF"
"-DARROW_BOOST_USE_SHARED=OFF"
"-DARROW_GFLAGS_USE_SHARED=OFF"
"-DARROW_PROTOBUF_USE_SHARED=OFF"
"-DARROW_TEST_LINKAGE=static" "-DARROW_TEST_LINKAGE=static"
"-DOPENSSL_USE_STATIC_LIBS=ON" "-DOPENSSL_USE_STATIC_LIBS=ON"
] ++ lib.optional (!stdenv.isx86_64) "-DARROW_USE_SIMD=OFF"; ] ++ lib.optional (!stdenv.isx86_64) "-DARROW_USE_SIMD=OFF";
@@ -1,11 +1,11 @@
diff --git a/cmake_modules/ThirdpartyToolchain.cmake b/cmake_modules/ThirdpartyToolchain.cmake diff --git a/cmake_modules/ThirdpartyToolchain.cmake b/cmake_modules/ThirdpartyToolchain.cmake
--- a/cmake_modules/ThirdpartyToolchain.cmake --- a/cmake_modules/ThirdpartyToolchain.cmake
+++ b/cmake_modules/ThirdpartyToolchain.cmake +++ b/cmake_modules/ThirdpartyToolchain.cmake
@@ -1428,6 +1428,7 @@ if(ARROW_JEMALLOC) @@ -1317,6 +1317,7 @@ if(ARROW_JEMALLOC)
"--with-jemalloc-prefix=je_arrow_" "--with-jemalloc-prefix=je_arrow_"
"--with-private-namespace=je_arrow_private_" "--with-private-namespace=je_arrow_private_"
"--without-export" "--without-export"
+ "--disable-shared" + "--disable-shared"
# Don't override operator new() # Don't override operator new()
"--disable-cxx" "--disable-libdl" "--disable-cxx" "--disable-libdl"
# See https://github.com/jemalloc/jemalloc/issues/1237 # See https://github.com/jemalloc/jemalloc/issues/1237
@@ -1,4 +1,4 @@
{ lib, buildPythonPackage, python, isPy3k, arrow-cpp, cmake, cython, futures, hypothesis, numpy, pandas, pytest, pkgconfig, setuptools_scm, six }: { lib, buildPythonPackage, python, isPy3k, arrow-cpp, cmake, cython, futures, hypothesis, numpy, pandas, pytest, pytest-lazy-fixture, pkgconfig, setuptools_scm, six }:
let let
_arrow-cpp = arrow-cpp.override { inherit python; }; _arrow-cpp = arrow-cpp.override { inherit python; };
@@ -13,7 +13,7 @@ buildPythonPackage rec {
nativeBuildInputs = [ cmake cython pkgconfig setuptools_scm ]; nativeBuildInputs = [ cmake cython pkgconfig setuptools_scm ];
propagatedBuildInputs = [ numpy six ] ++ lib.optionals (!isPy3k) [ futures ]; propagatedBuildInputs = [ numpy six ] ++ lib.optionals (!isPy3k) [ futures ];
checkInputs = [ hypothesis pandas pytest ]; checkInputs = [ hypothesis pandas pytest pytest-lazy-fixture ];
PYARROW_BUILD_TYPE = "release"; PYARROW_BUILD_TYPE = "release";
PYARROW_WITH_PARQUET = true; PYARROW_WITH_PARQUET = true;