Register extensions with sqlite3_auto_extension
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user