duckdb: add update script
use update script to get the git commit sha for latest tag
This commit is contained in:
parent
b8791b1d70
commit
c0176f0e60
@ -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;
|
||||
};
|
||||
}
|
||||
})
|
||||
|
45
pkgs/development/libraries/duckdb/update.sh
Executable file
45
pkgs/development/libraries/duckdb/update.sh
Executable 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}"
|
@ -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}")
|
||||
|
||||
|
5
pkgs/development/libraries/duckdb/versions.json
Normal file
5
pkgs/development/libraries/duckdb/versions.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"version": "0.10.0",
|
||||
"rev": "20b1486d1192f9fbd2328d1122b5afe5f1747fce",
|
||||
"hash": "sha256-qGUq0iYTaLNHKqbXNLRmvqHMqunvIlP991IKb4qdSt4="
|
||||
}
|
Loading…
Reference in New Issue
Block a user