From f813994cfe28739aad95c3d2ead0beb350c965d6 Mon Sep 17 00:00:00 2001 From: Phillip Cloud <417981+cpcloud@users.noreply.github.com> Date: Sat, 12 Feb 2022 06:23:04 -0500 Subject: [PATCH] duckdb: patch version --- pkgs/development/libraries/duckdb/default.nix | 39 ++++++++++---- .../libraries/duckdb/version.patch | 51 +++++++++++++++++++ 2 files changed, 81 insertions(+), 9 deletions(-) create mode 100644 pkgs/development/libraries/duckdb/version.patch diff --git a/pkgs/development/libraries/duckdb/default.nix b/pkgs/development/libraries/duckdb/default.nix index 80ff1932ab1..7d12d9fabf2 100644 --- a/pkgs/development/libraries/duckdb/default.nix +++ b/pkgs/development/libraries/duckdb/default.nix @@ -1,9 +1,19 @@ -{ lib, stdenv +{ lib +, stdenv , fetchFromGitHub , cmake , ninja +, openssl +, openjdk11 +, unixODBC +, withHttpFs ? true +, withJdbc ? false +, withOdbc ? false }: +let + enableFeature = yes: if yes then "ON" else "OFF"; +in stdenv.mkDerivation rec { pname = "duckdb"; version = "0.3.2"; @@ -15,17 +25,28 @@ stdenv.mkDerivation rec { sha256 = "sha256-F5YOqDeY3rgcnuu5SNqOfUxhsaXgqvdJZTnD1unI0tc="; }; + patches = [ ./version.patch ]; + postPatch = '' + substituteInPlace CMakeLists.txt --subst-var-by DUCKDB_VERSION "v${version}" + ''; + cmakeFlags = [ - "-DBUILD_FTS_EXTENSION=1" - "-DBUILD_HTTPFS_EXTENSION=1" - "-DBUILD_ICU_EXTENSION=1" - "-DBUILD_REST_EXTENSION=1" - "-DBUILD_TPCDS_EXTENSION=1" - "-DBUILD_TPCH_EXTENSION=1" - "-DBUILD_VISUALIZER_EXTENSION=1" + "-DBUILD_FTS_EXTENSION=ON" + "-DBUILD_HTTPFS_EXTENSION=${enableFeature withHttpFs}" + "-DBUILD_ICU_EXTENSION=ON" + "-DBUILD_ODBC_DRIVER=${enableFeature withOdbc}" + "-DBUILD_PARQUET_EXTENSION=ON" + "-DBUILD_REST_EXTENSION=ON" + "-DBUILD_TPCDS_EXTENSION=ON" + "-DBUILD_TPCH_EXTENSION=ON" + "-DBUILD_VISUALIZER_EXTENSION=ON" + "-DJDBC_DRIVER=${enableFeature withJdbc}" ]; + nativeBuildInputs = [ cmake ninja ]; - buildInputs = [ openssl ]; + buildInputs = lib.optionals withHttpFs [ openssl ] + ++ lib.optionals withJdbc [ openjdk11 ] + ++ lib.optionals withOdbc [ unixODBC ]; meta = with lib; { homepage = "https://github.com/duckdb/duckdb"; diff --git a/pkgs/development/libraries/duckdb/version.patch b/pkgs/development/libraries/duckdb/version.patch new file mode 100644 index 00000000000..1f5491eac23 --- /dev/null +++ b/pkgs/development/libraries/duckdb/version.patch @@ -0,0 +1,51 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 92c097228..5f51929f6 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -157,45 +157,7 @@ if(${CMAKE_SYSTEM_NAME} STREQUAL "SunOS") + set(SUN TRUE) + endif() + +-execute_process( +- COMMAND git log -1 --format=%h +- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} +- RESULT_VARIABLE GIT_RESULT +- OUTPUT_VARIABLE GIT_COMMIT_HASH +- OUTPUT_STRIP_TRAILING_WHITESPACE) +-execute_process( +- COMMAND git describe --tags --abbrev=0 +- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} +- OUTPUT_VARIABLE GIT_LAST_TAG +- OUTPUT_STRIP_TRAILING_WHITESPACE) +-execute_process( +- COMMAND git describe --tags --long +- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} +- OUTPUT_VARIABLE GIT_ITERATION +- OUTPUT_STRIP_TRAILING_WHITESPACE) +- +-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@") + + option(AMALGAMATION_BUILD + "Build from the amalgamation files, rather than from the normal sources."