duckdb: add update script

use update script to get the git commit sha for latest tag
This commit is contained in:
annalee 2024-03-06 06:28:04 +00:00
parent b8791b1d70
commit c0176f0e60
No known key found for this signature in database
4 changed files with 78 additions and 19 deletions

View file

@ -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;
};
}
})

View file

@ -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}"

View file

@ -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}")

View file

@ -0,0 +1,5 @@
{
"version": "0.10.0",
"rev": "20b1486d1192f9fbd2328d1122b5afe5f1747fce",
"hash": "sha256-qGUq0iYTaLNHKqbXNLRmvqHMqunvIlP991IKb4qdSt4="
}