diff --git a/pkgs/development/libraries/arrow-cpp/default.nix b/pkgs/development/libraries/arrow-cpp/default.nix index 1ede4ced5071..36e98bde7030 100644 --- a/pkgs/development/libraries/arrow-cpp/default.nix +++ b/pkgs/development/libraries/arrow-cpp/default.nix @@ -3,21 +3,26 @@ , fetchurl , fetchFromGitHub , fixDarwinDylibNames +, abseil-cpp , autoconf , aws-sdk-cpp , boost , brotli , c-ares , cmake +, crc32c +, curl , flatbuffers , gflags , glog +, google-cloud-cpp , grpc , gtest , jemalloc , libnsl , lz4 , minio +, nlohmann_json , openssl , perl , protobuf @@ -33,9 +38,17 @@ , zstd , enableShared ? !stdenv.hostPlatform.isStatic , enableFlight ? !stdenv.isDarwin # libnsl is not supported on darwin -, enableS3 ? true + # boost/process is broken in 1.69 on darwin, but fixed in 1.70 and + # non-existent in older versions + # see https://github.com/boostorg/process/issues/55 +, enableS3 ? (!stdenv.isDarwin) || (lib.versionOlder boost.version "1.69" || lib.versionAtLeast boost.version "1.70") +, enableGcs ? !stdenv.isDarwin # google-cloud-cpp is not supported on darwin }: +assert lib.asserts.assertMsg + ((enableS3 && stdenv.isDarwin) -> (lib.versionOlder boost.version "1.69" || lib.versionAtLeast boost.version "1.70")) + "S3 on Darwin requires Boost != 1.69"; + let arrow-testing = fetchFromGitHub { owner = "apache"; @@ -115,7 +128,14 @@ stdenv.mkDerivation rec { libnsl openssl protobuf - ] ++ lib.optionals enableS3 [ aws-sdk-cpp openssl ]; + ] ++ lib.optionals enableS3 [ aws-sdk-cpp openssl ] + ++ lib.optionals enableGcs [ + abseil-cpp + crc32c + curl + google-cloud-cpp + nlohmann_json + ]; preConfigure = '' patchShebangs build-support/ @@ -152,6 +172,7 @@ stdenv.mkDerivation rec { "-DPARQUET_BUILD_EXECUTABLES=ON" "-DARROW_FLIGHT=${if enableFlight then "ON" else "OFF"}" "-DARROW_S3=${if enableS3 then "ON" else "OFF"}" + "-DARROW_GCS=${if enableGcs then "ON" else "OFF"}" ] ++ lib.optionals (!enableShared) [ "-DARROW_TEST_LINKAGE=static" ] ++ lib.optionals stdenv.isDarwin [ @@ -183,6 +204,9 @@ stdenv.mkDerivation rec { "TestS3FS.OpenOutputStreamMetadata" "TestS3FS.OpenOutputStreamSyncWrites" "TestS3FSGeneric.*" + ] ++ lib.optionals enableGcs [ + "GcsFileSystem.FileSystemCompare" + "GcsIntegrationTest.*" ]; in lib.optionalString doInstallCheck "-${builtins.concatStringsSep ":" filteredTests}"; @@ -199,7 +223,7 @@ stdenv.mkDerivation rec { '' runHook preInstallCheck - ctest -L unittest -V \ + ctest -L unittest \ --exclude-regex '^(${builtins.concatStringsSep "|" excludedTests})$' runHook postInstallCheck