diff options
author | annalee <150648636+a-n-n-a-l-e-e@users.noreply.github.com> | 2024-03-06 06:28:04 +0000 |
---|---|---|
committer | annalee <150648636+a-n-n-a-l-e-e@users.noreply.github.com> | 2024-03-19 11:46:53 +0000 |
commit | c0176f0e60c08cf33b4280e851e0324c8a09c2d9 (patch) | |
tree | baf3fc0b17b56b656fecf1c2268475ea4eea4b2d /pkgs/development/libraries | |
parent | b8791b1d70c45d4d6e0a13f40540a795b75c590b (diff) | |
download | nixlib-c0176f0e60c08cf33b4280e851e0324c8a09c2d9.tar nixlib-c0176f0e60c08cf33b4280e851e0324c8a09c2d9.tar.gz nixlib-c0176f0e60c08cf33b4280e851e0324c8a09c2d9.tar.bz2 nixlib-c0176f0e60c08cf33b4280e851e0324c8a09c2d9.tar.lz nixlib-c0176f0e60c08cf33b4280e851e0324c8a09c2d9.tar.xz nixlib-c0176f0e60c08cf33b4280e851e0324c8a09c2d9.tar.zst nixlib-c0176f0e60c08cf33b4280e851e0324c8a09c2d9.zip |
duckdb: add update script
use update script to get the git commit sha for latest tag
Diffstat (limited to 'pkgs/development/libraries')
-rw-r--r-- | pkgs/development/libraries/duckdb/default.nix | 44 | ||||
-rwxr-xr-x | pkgs/development/libraries/duckdb/update.sh | 45 | ||||
-rw-r--r-- | pkgs/development/libraries/duckdb/version.patch | 3 | ||||
-rw-r--r-- | pkgs/development/libraries/duckdb/versions.json | 5 |
4 files changed, 78 insertions, 19 deletions
diff --git a/pkgs/development/libraries/duckdb/default.nix b/pkgs/development/libraries/duckdb/default.nix index e6645480d2b2..8f207357a5ce 100644 --- a/pkgs/development/libraries/duckdb/default.nix +++ b/pkgs/development/libraries/duckdb/default.nix @@ -15,23 +15,29 @@ let enableFeature = yes: if yes then "ON" else "OFF"; + versions = lib.importJSON ./versions.json; in -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "duckdb"; - version = "0.10.0"; + inherit (versions) version; src = fetchFromGitHub { - owner = pname; - repo = pname; - rev = "refs/tags/v${version}"; - hash = "sha256-qGUq0iYTaLNHKqbXNLRmvqHMqunvIlP991IKb4qdSt4="; + # to update run: + # nix-shell maintainers/scripts/update.nix --argstr path duckdb + inherit (versions) hash; + owner = "duckdb"; + repo = "duckdb"; + rev = "refs/tags/v${finalAttrs.version}"; }; + outputs = [ "out" "lib" "dev" ]; + patches = [ # remove calls to git and set DUCKDB_VERSION to version (substituteAll { src = ./version.patch; - version = "v${version}"; + version = "v${finalAttrs.version}"; + rev = versions.rev; }) # add missing file needed for httpfs compile # remove on next update @@ -48,22 +54,21 @@ stdenv.mkDerivation rec { ++ lib.optionals withOdbc [ unixODBC ]; cmakeFlags = [ - "-DDUCKDB_EXTENSION_CONFIGS=${src}/.github/config/in_tree_extensions.cmake" + "-DDUCKDB_EXTENSION_CONFIGS=${finalAttrs.src}/.github/config/in_tree_extensions.cmake" "-DBUILD_ODBC_DRIVER=${enableFeature withOdbc}" "-DJDBC_DRIVER=${enableFeature withJdbc}" - ] ++ lib.optionals doInstallCheck [ + ] ++ lib.optionals finalAttrs.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}" + postInstall = '' + mkdir -p $lib + mv $out/lib $lib ''; + doInstallCheck = true; + installCheckPhase = let excludes = map (pattern: "exclude:'${pattern}'") ([ @@ -114,17 +119,20 @@ stdenv.mkDerivation rec { "test/sql/aggregate/aggregates/test_skewness.test" "test/sql/function/list/aggregates/skewness.test" ]); + LD_LIBRARY_PATH = lib.optionalString stdenv.isDarwin "DY" + "LD_LIBRARY_PATH"; in '' runHook preInstallCheck - ./test/unittest ${toString excludes} + HOME="$(mktemp -d)" ${LD_LIBRARY_PATH}="$lib/lib" ./test/unittest ${toString excludes} runHook postInstallCheck ''; + passthru.updateScript = ./update.sh; + meta = with lib; { - changelog = "https://github.com/duckdb/duckdb/releases/tag/v${version}"; + changelog = "https://github.com/duckdb/duckdb/releases/tag/v${finalAttrs.version}"; description = "Embeddable SQL OLAP Database Management System"; homepage = "https://duckdb.org/"; license = licenses.mit; @@ -132,4 +140,4 @@ stdenv.mkDerivation rec { maintainers = with maintainers; [ costrouc cpcloud ]; platforms = platforms.all; }; -} +}) diff --git a/pkgs/development/libraries/duckdb/update.sh b/pkgs/development/libraries/duckdb/update.sh new file mode 100755 index 000000000000..f3acd176ee86 --- /dev/null +++ b/pkgs/development/libraries/duckdb/update.sh @@ -0,0 +1,45 @@ +#!/usr/bin/env nix-shell +#!nix-shell --pure -i bash -p cacert curl jq moreutils nix-prefetch +# shellcheck shell=bash + +set -euo pipefail +cd "$(dirname "${BASH_SOURCE[0]}")" + +nixpkgs=$(while [[ ! -e .git ]]; do [[ ${PWD} != / ]] || exit 1; cd ..; done; echo "${PWD}") + +repo=duckdb +owner=duckdb + +msg() { + echo "$*" >&2 +} + +json_get() { + jq -r "$1" < 'versions.json' +} + +json_set() { + jq --arg x "$2" "$1 = \$x" < 'versions.json' | sponge 'versions.json' +} + +get_latest() { + curl ${GITHUB_TOKEN:+" -u \":$GITHUB_TOKEN\""} -s \ + "https://api.github.com/repos/${owner}/${repo}/releases/latest" | jq -r .tag_name +} + +get_sha() { + curl ${GITHUB_TOKEN:+" -u \":$GITHUB_TOKEN\""} -s \ + "https://api.github.com/repos/${owner}/${repo}/git/ref/tags/$1" | jq -r .object.sha +} + +tag=$(get_latest) +version=${tag/v/} + +[[ ${version} = $(json_get .version) ]] && { msg "${version} is up to date"; exit 0; } + +sha=$(get_sha "${tag}") +sri=$(nix-prefetch -I nixpkgs="${nixpkgs}" -E "duckdb.overrideAttrs { version = \"${version}\"; }") + +json_set ".version" "${version}" +json_set ".rev" "${sha}" +json_set ".hash" "${sri}" diff --git a/pkgs/development/libraries/duckdb/version.patch b/pkgs/development/libraries/duckdb/version.patch index 122ad4295d41..c37354e8908c 100644 --- a/pkgs/development/libraries/duckdb/version.patch +++ b/pkgs/development/libraries/duckdb/version.patch @@ -2,7 +2,7 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt index 2b49e11288..0a4a69b9a0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -244,52 +244,7 @@ if(${CMAKE_SYSTEM_NAME} STREQUAL "SunOS") +@@ -244,52 +244,8 @@ if(${CMAKE_SYSTEM_NAME} STREQUAL "SunOS") set(SUN TRUE) endif() @@ -53,6 +53,7 @@ index 2b49e11288..0a4a69b9a0 100644 - set(DUCKDB_VERSION "v${DUCKDB_MAJOR_VERSION}.${DUCKDB_MINOR_VERSION}.${DUCKDB_PATCH_VERSION}-dev${DUCKDB_DEV_ITERATION}") -endif() +set(DUCKDB_VERSION "@version@") ++set(GIT_COMMIT_HASH "@rev@") message(STATUS "git hash ${GIT_COMMIT_HASH}, version ${DUCKDB_VERSION}") diff --git a/pkgs/development/libraries/duckdb/versions.json b/pkgs/development/libraries/duckdb/versions.json new file mode 100644 index 000000000000..f62eb954c00c --- /dev/null +++ b/pkgs/development/libraries/duckdb/versions.json @@ -0,0 +1,5 @@ +{ + "version": "0.10.0", + "rev": "20b1486d1192f9fbd2328d1122b5afe5f1747fce", + "hash": "sha256-qGUq0iYTaLNHKqbXNLRmvqHMqunvIlP991IKb4qdSt4=" +} |