diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/duckdb')
-rw-r--r-- | nixpkgs/pkgs/development/libraries/duckdb/default.nix | 123 | ||||
-rw-r--r-- | nixpkgs/pkgs/development/libraries/duckdb/version.patch | 58 |
2 files changed, 181 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/duckdb/default.nix b/nixpkgs/pkgs/development/libraries/duckdb/default.nix new file mode 100644 index 000000000000..f02dacb95034 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/duckdb/default.nix @@ -0,0 +1,123 @@ +{ lib +, stdenv +, fetchFromGitHub +, cmake +, ninja +, openssl +, openjdk11 +, unixODBC +, withJdbc ? false +, withOdbc ? false +}: + +let + enableFeature = yes: if yes then "ON" else "OFF"; +in +stdenv.mkDerivation rec { + pname = "duckdb"; + version = "0.8.1"; + + src = fetchFromGitHub { + owner = pname; + repo = pname; + rev = "v${version}"; + hash = "sha256-LEv9yURkYvONObTbIA4CS+umwCRMH8gRQaDtzbCzID4="; + }; + + patches = [ ./version.patch ]; + + postPatch = '' + substituteInPlace CMakeLists.txt --subst-var-by DUCKDB_VERSION "v${version}" + ''; + + nativeBuildInputs = [ cmake ninja ]; + buildInputs = [ openssl ] + ++ lib.optionals withJdbc [ openjdk11 ] + ++ lib.optionals withOdbc [ unixODBC ]; + + cmakeFlags = [ + "-DBUILD_AUTOCOMPLETE_EXTENSION=ON" + "-DBUILD_ICU_EXTENSION=ON" + "-DBUILD_PARQUET_EXTENSION=ON" + "-DBUILD_TPCH_EXTENSION=ON" + "-DBUILD_TPCDS_EXTENSION=ON" + "-DBUILD_FTS_EXTENSION=ON" + "-DBUILD_HTTPFS_EXTENSION=ON" + "-DBUILD_VISUALIZER_EXTENSION=ON" + "-DBUILD_JSON_EXTENSION=ON" + "-DBUILD_JEMALLOC_EXTENSION=ON" + "-DBUILD_EXCEL_EXTENSION=ON" + "-DBUILD_INET_EXTENSION=ON" + "-DBUILD_TPCE=ON" + "-DBUILD_ODBC_DRIVER=${enableFeature withOdbc}" + "-DJDBC_DRIVER=${enableFeature withJdbc}" + ] ++ lib.optionals doInstallCheck [ + # development settings + "-DBUILD_UNITTESTS=ON" + ]; + + doInstallCheck = true; + + preInstallCheck = '' + export HOME="$(mktemp -d)" + '' + lib.optionalString stdenv.isDarwin '' + export DYLD_LIBRARY_PATH="$out/lib''${DYLD_LIBRARY_PATH:+:}''${DYLD_LIBRARY_PATH}" + ''; + + installCheckPhase = + let + excludes = map (pattern: "exclude:'${pattern}'") [ + "[s3]" + "Test closing database during long running query" + "test/common/test_cast_hugeint.test" + "test/sql/copy/csv/test_csv_remote.test" + "test/sql/copy/parquet/test_parquet_remote.test" + "test/sql/copy/parquet/test_parquet_remote_foreign_files.test" + "test/sql/storage/compression/chimp/chimp_read.test" + "test/sql/storage/compression/chimp/chimp_read_float.test" + "test/sql/storage/compression/patas/patas_compression_ratio.test_coverage" + "test/sql/storage/compression/patas/patas_read.test" + "test/sql/json/read_json_objects.test" + "test/sql/json/read_json.test" + "test/sql/copy/parquet/parquet_5968.test" + "test/fuzzer/pedro/buffer_manager_out_of_memory.test" + "test/sql/storage/compression/bitpacking/bitpacking_size_calculation.test" + "test/sql/copy/parquet/delta_byte_array_length_mismatch.test" + "test/sql/function/timestamp/test_icu_strptime.test" + "test/sql/timezone/test_icu_timezone.test" + "test/sql/copy/parquet/snowflake_lineitem.test" + "test/sql/copy/parquet/test_parquet_force_download.test" + "test/sql/copy/parquet/delta_byte_array_multiple_pages.test" + "test/sql/copy/csv/test_csv_httpfs_prepared.test" + "test/sql/copy/csv/test_csv_httpfs.test" + "test/sql/copy/csv/parallel/test_parallel_csv.test" + "test/sql/copy/csv/parallel/csv_parallel_httpfs.test" + "test/common/test_cast_struct.test" + # test is order sensitive + "test/sql/copy/parquet/parquet_glob.test" + # these are only hidden if no filters are passed in + "[!hide]" + # this test apparently never terminates + "test/sql/copy/csv/auto/test_csv_auto.test" + ] ++ lib.optionals stdenv.isAarch64 [ + "test/sql/aggregate/aggregates/test_kurtosis.test" + "test/sql/aggregate/aggregates/test_skewness.test" + "test/sql/function/list/aggregates/skewness.test" + ]; + in + '' + runHook preInstallCheck + + $PWD/test/unittest ${lib.concatStringsSep " " excludes} + + runHook postInstallCheck + ''; + + meta = with lib; { + homepage = "https://github.com/duckdb/duckdb"; + description = "Embeddable SQL OLAP Database Management System"; + license = licenses.mit; + platforms = platforms.all; + maintainers = with maintainers; [ costrouc cpcloud ]; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/duckdb/version.patch b/nixpkgs/pkgs/development/libraries/duckdb/version.patch new file mode 100644 index 000000000000..1f52fdb3b935 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/duckdb/version.patch @@ -0,0 +1,58 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 349af6acf7..7ffec0b4cb 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -196,52 +196,7 @@ if(${CMAKE_SYSTEM_NAME} STREQUAL "SunOS") + set(SUN TRUE) + endif() + +-find_package(Git) +-if(Git_FOUND) +- if (NOT DEFINED GIT_COMMIT_HASH) +- execute_process( +- COMMAND ${GIT_EXECUTABLE} log -1 --format=%h +- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} +- RESULT_VARIABLE GIT_RESULT +- OUTPUT_VARIABLE GIT_COMMIT_HASH +- OUTPUT_STRIP_TRAILING_WHITESPACE) +- endif() +- execute_process( +- COMMAND ${GIT_EXECUTABLE} describe --tags --abbrev=0 +- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} +- OUTPUT_VARIABLE GIT_LAST_TAG +- OUTPUT_STRIP_TRAILING_WHITESPACE) +- execute_process( +- COMMAND ${GIT_EXECUTABLE} describe --tags --long +- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} +- OUTPUT_VARIABLE GIT_ITERATION +- OUTPUT_STRIP_TRAILING_WHITESPACE) +-else() +- message("Git NOT FOUND") +-endif() +- +-if(GIT_RESULT EQUAL "0") +- string(REGEX REPLACE "v([0-9]+).[0-9]+.[0-9]+" "\\1" DUCKDB_MAJOR_VERSION "${GIT_LAST_TAG}") +- string(REGEX REPLACE "v[0-9]+.([0-9]+).[0-9]+" "\\1" DUCKDB_MINOR_VERSION "${GIT_LAST_TAG}") +- string(REGEX REPLACE "v[0-9]+.[0-9]+.([0-9]+)" "\\1" DUCKDB_PATCH_VERSION "${GIT_LAST_TAG}") +- string(REGEX REPLACE ".*-([0-9]+)-.*" "\\1" DUCKDB_DEV_ITERATION "${GIT_ITERATION}") +- +- if(DUCKDB_DEV_ITERATION EQUAL 0) +- # on a tag; directly use the version +- set(DUCKDB_VERSION "${GIT_LAST_TAG}") +- else() +- # not on a tag, increment the patch version by one and add a -devX suffix +- math(EXPR DUCKDB_PATCH_VERSION "${DUCKDB_PATCH_VERSION}+1") +- set(DUCKDB_VERSION "v${DUCKDB_MAJOR_VERSION}.${DUCKDB_MINOR_VERSION}.${DUCKDB_PATCH_VERSION}-dev${DUCKDB_DEV_ITERATION}") +- endif() +-else() +- # fallback for when building from tarball +- set(DUCKDB_MAJOR_VERSION 0) +- set(DUCKDB_MINOR_VERSION 0) +- set(DUCKDB_PATCH_VERSION 1) +- set(DUCKDB_DEV_ITERATION 0) +- set(DUCKDB_VERSION "v${DUCKDB_MAJOR_VERSION}.${DUCKDB_MINOR_VERSION}.${DUCKDB_PATCH_VERSION}-dev${DUCKDB_DEV_ITERATION}") +-endif() ++set(DUCKDB_VERSION "@DUCKDB_VERSION@") + + message(STATUS "git hash ${GIT_COMMIT_HASH}, version ${DUCKDB_VERSION}") + |