Register extensions with sqlite3_auto_extension

This commit is contained in:
2026-05-19 22:04:01 +09:00
parent be6364c281
commit a1c1411536
2 changed files with 8 additions and 3 deletions
+7 -3
View File
@@ -4,6 +4,7 @@
extensions,
nameSuffix,
version,
headers,
stdenv,
writeText,
@@ -27,13 +28,14 @@ let
${lib.concatMapStringsSep "\n" (sym: "void ${sym}(void);") shutdownSymbols}
'';
# TODO: how should shutdown be handled with use of sqlite3_auto_extension? Is there a separate place for registering these?
coreInitImpl = writeText "sqlite-core-init.c" ''
#include "${coreInitHeaders}"
#include <sqlite3.h>
int core_init(const char *dummy) {
int err = 0;
${lib.concatMapStringsSep "\n" (sym: "err += ${sym}(dummy);") initSymbols}
return err;
${lib.concatMapStringsSep "\n" (sym: "sqlite3_auto_extension((void(*)(void))${sym});") initSymbols}
return SQLITE_OK;
}
void core_shutdown(void) {
@@ -47,6 +49,8 @@ in stdenv.mkDerivation (finalAttrs: {
src = null;
dontUnpack = true;
buildInputs = [ headers ];
buildPhase = ''
runHook preBuild
"$CC" -c '${coreInitImpl}' -o sqlite-core-init.o
+1
View File
@@ -76,6 +76,7 @@ let
then null
else pkgs.callPackage ./core-init-ext.nix ({
inherit version src;
inherit headers;
inherit extensions;
inherit extraLibraries;
nameSuffix = suffix;